UNPKG

s7-scl-gen

Version:

S7 PLC SCL 代码自动生成

203 lines (170 loc) 7.1 kB
--- #CPU: AS1 # 指示属于哪一个CPU #feature: valve # 指示本配置为生成 valve 代码 name: AS1-valve # 相当于上面2条被注释的指令 symbols: # 系统已有2个内置符号,其内容自动生成: # - [Valve_Proc, FB513] 阀门主处理函数块 # - [Valve_Loop, FC513] 主调用函数 # 可以在对上述内置符号的地址进行更改,只要重新定义就可以了,注意保持名称一致 # 以下为自定义符号 - [AI11-01, PIW672] - [AI11-02, PIW674] - [DI01-01, I0.0] - [DI01-02, I+] - [DI01-03, I+] - [DI01-04, I+] - [DI01-05, I+] - [DI01-06, I+] - [DI01-07, I+] - [DI01-08, I+] - [DI02-01, I+] - [DI02-02, I+] - [DO01-01, Q0.0] - [DO01-02, Q+] - [DO01-03, Q+] - [DO02-01, Q2.0] - [DO02-02, Q+] - [DO02-03, Q+] - [DO02-04, Q+] list : # 没有阀位时,AI 可直接设置为断线值S7_AI_MIN_WORD # 没有远程信号时,remote可不赋值,其值默认为TRUE,如果要避免其它过程改变它,可以显式赋值为 true # 没有故障信号时,error可不赋值,其值默认为FALSE,如果要避免其它过程改变它,可以显式赋值为 false # 必须有开到位和关到位信号,否则会导致 close_action open_action 无法撤销信号,转译的SCL可能工作不正常 # 以下常量可以直接使用 # S7_ZERO := 0; # S7_SPAN := 27648; # S7_AI_MIN := -32768; # S7_AI_MIN_WORD := W#16#8000; # S7_AI_MAX := 32767; # S7_AI_MAX_WORD := W#16#7FFF; - comment: A阀门 2DO回路,开与关都是得电动作、失电停止 DB: [MGV-1201A, DB111] # 阀门DB块 类型: S7符号定义 | S7符号引用 # 以下7项类型: S7符号定义 | S7符号引用 | SCL表达式 AI: AI11-01 # 阀位信号输入 # 以下6项类型: S7符号定义 | S7符号引用 | SCL表达式 # 值类型为 boolean,SLC符号与表达式结果必须也是 boolean CP: DI01-01 # 关到位信号 可省略,将没有关位状态 OP: DI01-02 # 开到位信号 可省略,将没有开位状态 error: DI01-03 # 错误信号 可省略,默认为false remote: DI01-04 # 远程信号 可省略,默认为true close_action: DO01-01 # 关阀线圈 可省略 open_action: DO01-02 # 开阀线圈 可省略 # 容错区间初始值,也叫死区,用于报警和定位指定阀位 # 通常省略,默认为0.5 # 类型: null | 浮点数字面量 $FT_zone: 0.8 # 动作时间,可省略,默认100000(100秒),单位毫秒 # 类型: null | 整数字面量 | TIME字面量 # 指示完成某个阀动作的最长时间,比如开阀、关阀等,以实际设备为准 # 该值将用于无阀位时判断是否离线,发出动作信号并经过该时间后是否到达指定阀状态 $action_time: 10000 # 设置最长动作时间为10秒,也可以用 TIME#10S # 信号时间,可省略,默认500(0.5秒),单位毫秒 # 指示停止等信号要保持持续的最短时间 # 有阀位时在该时间后判断阀是否动作 # 类型: null | 整数字面量 | TIME字面量 $signal_time: TIME#1S # 设置最短信号时间为1秒,也可以用 1000 - comment: B阀门 3DO回路,开与关信号会执行机构自保持,故必须有停止信号 DB: [MGV-1201B, DB+] AI: ~ # 没有AI过程值时,可省略,省略时禁用行程命令,并将强制赋断线值以保证PLC运行期间不被改变 CP: DI01-05 OP: DI01-06 error: '"DI01-07" and "DI01-08"' remote: TRUE # 没有remote过程值时,必须赋值TRUE,也可以象下方C阀门一样省略,会默认为TRUE close_action: DO02-01 open_action: DO02-02 stop_action: DO02-03 - comment: C阀门 1DO回路 DB: [MGV-1201C, DB+] AI: AI11-02 CP: DI02-01 OP: DI02-02 # 控制信号输出 # 类型: S7符号定义 | S7符号引用 | SCL表达式 # 值类型为 boolean,SLC符号与表达式结果必须也是 boolean # 得电开阀、失电关阀(通过常闭触点可翻转信号) control_action: DO02-04 - comment: D阀门 最简用例 DB: [MGV-1201D, DB+] # 本阀门只能关阀 close_action: DO01-03 # 用户自写SCL代码,放在循环的开始和结束处。 loop_begin: |- // 这里的代码将在 Valve_Loop 循环开始时执行 loop_end: |- // 这里的代码将在 Valve_Loop 循环结束时执行 options : # 选项,非必需,无需要时可以全部删除或注释掉。 # output_file : 'example.scl' --- # 内容与 AS1-valve 相同,仅仅是CPU中的平台不一样。 name: AS2-valve symbols: # 系统已有2个内置符号,其内容自动生成: # - [Valve_Proc, FB513] 阀门主处理函数块 # - [Valve_Loop, FC513] 主调用函数 # 可以在对上述内置符号的地址进行更改,只要重新定义就可以了,注意保持名称一致 # 以下为自定义符号 - [AI11-01, PIW672] - [AI11-02, PIW674] - [DI01-01, I0.0] - [DI01-02, I+] - [DI01-03, I+] - [DI01-04, I+] - [DI01-05, I+] - [DI01-06, I+] - [DI01-07, I+] - [DI01-08, I+] - [DI02-01, I+] - [DI02-02, I+] - [DO01-01, Q0.0] - [DO01-02, Q+] - [DO01-03, Q+] - [DO02-01, Q2.0] - [DO02-02, Q+] - [DO02-03, Q+] - [DO02-04, Q+] list: # 以下常量可以直接使用 # S7_ZERO : Int := 0; # S7_SPAN : Int := 27648; # S7_AI_MIN : Int := -32768; # S7_AI_MIN_WORD : Word := WORD#16#8000; # S7_AI_MAX : Int := 32767; # S7_AI_MAX_WORD : Word := WORD#16#7FFF; - comment: A阀门 2DO回路,开与关都是得电动作、失电停止 DB: [MGV-1201A, DB111] # 阀门DB块 类型: S7符号定义 | S7符号引用 AI: AI11-01 # 阀位信号输入 CP: DI01-01 # 关到位信号 可省略,将没有关位状态 OP: DI01-02 # 开到位信号 可省略,将没有开位状态 error: DI01-03 # 错误信号 可省略,默认为false remote: DI01-04 # 远程信号 可省略,默认为true close_action: DO01-01 # 关阀线圈 可省略 open_action: DO01-02 # 开阀线圈 可省略 $FT_zone: 0.8 $action_time: 10000 # 设置最长动作时间为10秒,也可以用 TIME#10S $signal_time: TIME#1S # 设置最短信号时间为1秒,也可以用 1000 - comment: B阀门 3DO回路,开与关信号会执行机构自保持,故必须有停止信号 DB: [MGV-1201B, DB+] AI: ~ # 没有AI过程值时,可省略,省略时禁用行程命令,并将强制赋断线值以保证PLC运行期间不被改变 CP: DI01-05 OP: DI01-06 error: '"DI01-07" and "DI01-08"' remote: TRUE # 没有remote过程值时,必须赋值TRUE,也可以象下方C阀门一样省略,会默认为TRUE close_action: DO02-01 open_action: DO02-02 stop_action: DO02-03 - comment: C阀门 1DO回路 DB: [MGV-1201C, DB+] AI: AI11-02 CP: DI02-01 OP: DI02-02 control_action: DO02-04 - comment: D阀门 最简用例 DB: [MGV-1201D, DB+] close_action: DO01-03 loop_begin: |- // 这里的代码将在 Valve_Loop 循环开始时执行 loop_end: |- // 这里的代码将在 Valve_Loop 循环结束时执行 ...