UNPKG

s7-scl-gen

Version:

S7 PLC SCL 代码自动生成

310 lines (262 loc) 10.7 kB
--- #CPU: AS1 # 指示 CPU 名称是 AS1 #feature: AI # 指示本配置为生成 AI 代码 name: AS1-AI # 相当于上面2条被注释的指令 symbols: # AI文档已有2个内置符号,其内容由本程序自动生成: # - [AI_Proc, FB512] 模拟量主处理函数 # - [AI_Loop, FC512] 主循环调用FC,将这个加入OB1中 # 可以在对上述内置符号的地址进行更改,只要重新定义就可以了,注意保持名称一致 - [AI_Proc, FB600] # 可省略,修改内置AI_Proc地址 - [AI_Loop, FC600] # 可省略,当名称为AI_Loop,指示这是AI主调用FC块,这个要加入到OB中 # 可以把任何符号定义提前在这里,然后在list中对应符号引用项引用即可 - [PIT001, DB100] # 理论GCL转换可以在任何配置文档的任何地方使用 YAML1.1 的锚点和别名,实现数据的利用。 # 为了清晰可读,不建议用锚点和别名 # 如果必须使用,建议如下方式用template专门定义锚点,方便阅读 template: - &tubepress # 设置引用锚点,该锚点表示 & 符号位置所在的值(即右侧或下侧的value)可以在其它地方被引用 $zero: -0.2 $span: 2.6 $AH_limit: 2.5 $WH_limit: 2.0 $WL_limit: -0.05 $AL_limit: -0.1 $dead_zone: 0.01 list: # 模拟量列表 # 该模拟量的说明 # 类型: 字符串字面量 # 可省略,默认为 location + type - comment: 来油入口压力 # 仪表的位置,用于产生报警记录 # 类型: 字符串字面量 location: 来油入口 # 仪表的类型,用于产生报警记录 # 类型: 字符串字面量 # 主要值有: 温度 压力 液位 振动 电流 电压 瞬时流量 …… type: 压力 # AI数据块 # 类型: S7符号定义 | S7符号引用 # 没有该项则忽略转换,只输出 comment DB: PIT001 # 输入值,可省略 # 类型: S7符号定义 | S7符号引用 | SCL表达式 input: [AI01-02, PIW514] # 零点初始值,可省略,默认为 0.0 # 类型: null | 浮点数字面量 $zero: 0 # 量程初始值,可省略,默认为 100.0 # 类型: null | 浮点数字面量 $span: 2.0 # 超限值初始值,可省略 # 类型: null | 浮点数字面量 # 省略或赋值为fasle时,代表该超限报警不启用。 # 以下默认了相关超限报警都允许 $AH_limit: 2.5 $WH_limit: 2.0 $WL_limit: -0.05 $AL_limit: -0.1 # 死区初始值 # 类型: null | 浮点数字面量 $dead_zone: 0.05 # 容错延时,可省略,默认0,即不延时 # 类型: null | 整数字面量 | TIME字面量 # 该设置用于过滤过程值的突变,当为整数值时,代表毫秒数 $FT_time: 3000 # 也可以设置为 `T#3S` - location: 泵进口 type: 压力 DB: [PIT002, DB101] input: [AI01-01, PIW512] # 报警便能初始值 # 类型: null | Bool字面量 # 通常情况下省略,因为对应 $XX_limit 的值在大部分情况下可指示报警启用状态 # $enable_AH 高高报警值 $enable_AH: true # 代表初始时允许AH报警,这时必须定义 $AH_limit # $enable_WH 高警告值 $enable_WH: true # 代表初始时允许WH报警,这时必须定义 $WH_limit # $enable_WL 低警告值 $enable_WL: ~ # 相当于省略,这时由 $WL_limit 决定初始时是否允许WL报警 # $enable_AL 低低报警值 $enable_AL: false # 代表初始时不允许AL报警,可以省略定义 $AL_limit # 报警初始值 # 以下相当于把模板tubepress的部分数据进行更改 $AL_limit: ~ # 引用对象无法删除某个属性,但可以将该属性设置为 null 达到等效作用 $WH_limit: 2.0 # 修改$WH_limit模板的值 # yaml语法"<<: *anchor" 表示将锚点anchor的内容合并在这里 <<: *tubepress - location: 泵进口 type: 温度 DB: [TIT001, DB+] input: [AI01-03, PIW516] # AI通道 $zero: -40.0 $span: 80.0 $AL_limit: 25.0 # enable_AH,enable_WH,enable_WL,enable_AL 4个参数用于运行期间的赋值 # 非$符号开头的参数,约定为运行期间的配置 # 类型: S7符号定义 | S7符号引用 | S7表达式 # 以下例子为运行期间(根据泵运行状态)动态设置是否允许低低报警 enable_AL: 'pump1.run_state' $FT_time: TIME#3M # TIME字面量 - location: 气温 type: 温度 DB: [TIT002, DB+] input: [M485-1, MW100] # M区域 # 这里取消了所有报警 # 以下几项为整数SCL表达式,只能用于初始值 $zero_raw: 0 $span_raw: 27648 $overflow_SP: 28000 $underflow_SP: -500 - location: 1#储罐 type: 液位 DB: [LIT0101, DB+] input: '"RecvDB".Tank1' # SCL表达式,转换程序不检查正确性 $span: 10.0 - comment: 占位 # 在有DB块的情况下,会生成AI数据块 # 在有DB参数的情况下,有以下其它参数之一,则产生运行期间的AI调用 # - input # - enable_AH # - enable_WH # - enable_WL # - enable_AL # 没有 DB 则只输出注释,不会生成AI数据块和运行期间的AI调用 DB: [LIT0102, DB+] # 用户自写SCL代码,放在循环的开始和结束处。 loop_begin: |- // 这里的代码将在 AI_Loop 循环开始时执行 loop_end: |- // 这里的代码将在 AI_Loop 循环结束时执行 options : # 选项,非必需,无需要时可以全部删除或注释掉。 # output_file : 'example.scl' --- # 内容与 AS1-AI 相同,仅仅是CPU中的平台不一样。 name: AS2-AI symbols: # AI文档已有2个内置符号,其内容由本程序自动生成: # - [AI_Proc, FB512] 模拟量主处理函数 # - [AI_Loop, FC512] 主循环调用FC,将这个加入OB1中 # 可以在对上述内置符号的地址进行更改,只要重新定义就可以了,注意保持名称一致 - [AI_Proc, FB600] # 可省略,修改内置AI_Proc地址 - [AI_Loop, FC600] # 可省略,当名称为AI_Loop,指示这是AI主调用FC块,这个要加入到OB中 # 可以把任何符号定义提前在这里,然后在list中对应符号引用项引用即可 - [PIT001, DB100] # 理论GCL转换可以在任何配置文档的任何地方使用 YAML1.1 的锚点和别名,实现数据的利用。 # 为了清晰可读,不建议用锚点和别名 # 如果必须使用,建议如下方式用template专门定义锚点,方便阅读 template: - &tubepress # 设置引用锚点,该锚点表示 & 符号位置所在的值(即右侧或下侧的value)可以在其它地方被引用 $zero: -0.2 $span: 2.6 $AH_limit: 2.5 $WH_limit: 2.0 $WL_limit: -0.05 $AL_limit: -0.1 $dead_zone: 0.01 list: # 模拟量列表 # 该模拟量的说明 # 类型: 字符串字面量 # 可省略,默认为 location + type - comment: 来油入口压力 # 仪表的位置,用于产生报警记录 # 类型: 字符串字面量 location: 来油入口 # 仪表的类型,用于产生报警记录 # 类型: 字符串字面量 # 主要值有: 温度 压力 液位 振动 电流 电压 瞬时流量 …… type: 压力 # AI数据块 # 类型: S7符号定义 | S7符号引用 # 没有该项则忽略转换,只输出 comment DB: PIT001 # 输入值,可省略 # 类型: S7符号定义 | S7符号引用 | SCL表达式 input: [AI01-02, PIW514] # 零点初始值,可省略,默认为 0.0 # 类型: null | 浮点数字面量 $zero: 0 # 量程初始值,可省略,默认为 100.0 # 类型: null | 浮点数字面量 $span: 2.0 # 超限值初始值,可省略 # 类型: null | 浮点数字面量 # 省略或赋值为fasle时,代表该超限报警不启用。 # 以下默认了相关超限报警都允许 $AH_limit: 2.5 $WH_limit: 2.0 $WL_limit: -0.05 $AL_limit: -0.1 # 死区初始值 # 类型: null | 浮点数字面量 $dead_zone: 0.05 # 容错延时,可省略,默认0,即不延时 # 类型: null | 整数字面量 | TIME字面量 # 该设置用于过滤过程值的突变,当为整数值时,代表毫秒数 $FT_time: 3000 # 也可以设置为 `T#3S` - location: 泵进口 type: 压力 DB: [PIT002, DB101] input: [AI01-01, PIW512] # 报警便能初始值 # 类型: null | Bool字面量 # 通常情况下省略,因为对应 $XX_limit 的值在大部分情况下可指示报警启用状态 # $enable_AH 高高报警值 $enable_AH: true # 代表初始时允许AH报警,这时必须定义 $AH_limit # $enable_WH 高警告值 $enable_WH: true # 代表初始时允许WH报警,这时必须定义 $WH_limit # $enable_WL 低警告值 $enable_WL: ~ # 相当于省略,这时由 $WL_limit 决定初始时是否允许WL报警 # $enable_AL 低低报警值 $enable_AL: false # 代表初始时不允许AL报警,可以省略定义 $AL_limit # 报警初始值 # 以下相当于把模板tubepress的部分数据进行更改 $AL_limit: ~ # 引用对象无法删除某个属性,但可以将该属性设置为 null 达到等效作用 $WH_limit: 2.0 # 修改$WH_limit模板的值 # yaml语法"<<: *anchor" 表示将锚点anchor的内容合并在这里 <<: *tubepress - location: 泵进口 type: 温度 DB: [TIT001, DB+] input: [AI01-03, PIW516] # AI通道 $zero: -40.0 $span: 80.0 $AL_limit: 25.0 # enable_AH,enable_WH,enable_WL,enable_AL 4个参数用于运行期间的赋值 # 非$符号开头的参数,约定为运行期间的配置 # 类型: S7符号定义 | S7符号引用 | S7表达式 # 以下例子为运行期间(根据泵运行状态)动态设置是否允许低低报警 enable_AL: 'pump1.run_state' $FT_time: TIME#3M # TIME字面量 - location: 气温 type: 温度 DB: [TIT002, DB+] input: [M485-1, MW100] # M区域 # 这里取消了所有报警 # 以下几项为整数SCL表达式,只能用于初始值 $zero_raw: 0 $span_raw: 27648 $overflow_SP: 28000 $underflow_SP: -500 - location: 1#储罐 type: 液位 DB: [LIT0101, DB+] input: '"RecvDB".Tank1' # SCL表达式,转换程序不检查正确性 $span: 10.0 - comment: 占位 # 在有DB块的情况下,会生成AI数据块 # 在有DB参数的情况下,有以下其它参数之一,则产生运行期间的AI调用 # - input # - enable_AH # - enable_WH # - enable_WL # - enable_AL # 没有 DB 则只输出注释,不会生成AI数据块和运行期间的AI调用 DB: [LIT0102, DB+] # 用户自写SCL代码,放在循环的开始和结束处。 loop_begin: |- // 这里的代码将在 AI_Loop 循环开始时执行 loop_end: |- // 这里的代码将在 AI_Loop 循环结束时执行 options : # 选项,非必需,无需要时可以全部删除或注释掉。 # output_file : 'example.scl' ...