UNPKG

s7-scl-gen

Version:

S7 PLC SCL 代码自动生成

168 lines (146 loc) 5.64 kB
--- # 指令`CPU`指示属于哪个PLC/PCS系统 # 可以指定多个,单个时可以不用数组写法 #CPU: AS1 # 指示这是一个 CPU 功能,使用该CPU的其它配置文档都共享的资源、信息和指令 # 比如输出文件夹,共用的符号和包含等 # 所有`CPU`指令相同的配置文件,会在生成代码时: # 统一检查资源冲突情况、统一资源分配、自动合并符号表,避免占用同一DB块、同一连接等 #feature: CPU name: AS1-CPU # 相当于上面2个被注释的指令 # 运行平台 # 可取值: step7 portal pcs # step7 平台时可省略该指令 # 目前暂时只有 step7 支持所有功能,portal 和 pcs 平台仅支持部分功能 platform: step7 # CPU型号,可省略。 # 如果有对应的 modbusTCP 配置文档,该指令必须填写(因为采用OUC通信)。 # 目前已定义可以OUC通信的型号有: # IM151-8_PN/DP # CPU31x-2_PN/DP # CPU314C-2_PN/DP # CPU317-2_PN/DP # IM154-8_PN/DP # CPU319-3_PN/DP # CPU315T-3_PN/DP # CPU317T-3_PN/DP # CPU317TF-3_PN/DP # CPU412-2_PN # CPU414-3_PN/DP # CPU416-3_PN/DP # CPU412-5H_PN/DP # CPU414-5H_PN/DP # CPU416-5H_PN/DP # CPU417-5H_PN/DP # CPU410-5H # 类型: 字符串 device: CPU410-5H # host IP 目前用暂不上,保留 # 类型: 字符串 host: sample.my.host # 类型: 字符串 IP: 192.168.10.10 attributes: # 用于包含文件PE.scl的转换 tag_postfix_number: '0101' # includes, files 的文件为用户自行指定,生成程序不会检查其中的错误。 includes: # includes 用来包含到该类型转换后的输出文件中,会解析文件中的符号定义 # 可参照本示例写出其它自定义接收块函数。 - JSFLow.scl # 指示将配置目录下的 JSFlow.scl 文件包含进来 # (该文件包含 JS_flow 的定义和接收DB块的数据结构,用于一诺的智能流量表) - PE.scl # 另一个要包含的文件 files: # files 仅仅是复制该文件到输出文件夹中 - ..//README.md # 复制说明文件,也可以复件其它的手工代码的SCL、AWL文件 # reference_symbols部分是CPU中比较特殊的符号 # 主要用于已在step7项目中已经存在的符号,比如涉及 step7 库中的符号 # 建议把实际CPU中使用的符号也集中列在这里,以便转换器检查符号与地址冲突。 # 由于这些符号已经在CPU中实际存在,所以转换器不会将它们输出到用于导入的符号定义文件中 # 系统已经内置了如下的reference_symbols: # TP TON TOF # GET PUT # P_RCV P_SEND P_RCV_RK P_SND_RK # TSEND TRCV TCON TDISCON # CNT2_CTR CNT2_WR CNT2_RD DIAG_RD reference_symbols: - [ATH, FC94, FC94, Ascii To HEX] # CPU文档下 symbols 定义其它文档需要共享的自定义符号 # 类型: 数组 symbols: # Clock_Byte 是一个特定的符号,仅在CPU配置下有效。 # 只有显式配置了该符号(本例为MB10),转换程序才会自动生成以下符号: # - [Clock_Byte, MB10, ~, clock memory] # - [Clock_10Hz, M10.0] # - [Clock_5Hz, M10.1] # - [Clock_2.5Hz, M10.2] # - [Clock_2Hz, M10.3] # - [Clock_1.25Hz, M10.4] # - [Clock_1Hz, M10.5] # - [Clock_0.625Hz, M10.6] # - [Clock_0.5Hz, M10.7] # 没有配置 Clock_Byte 时,则不产生任何时钟存储器符号 - [Clock_Byte, MB10] # 设置时钟存储器为MB10,请务必保证该值与在step7项目中的设定一致 - [JS_flow, FB100, ~, 智能表头接收处理] # 提供 JSFLow.scl 文件中对应的符号 # 自定义符号 - [vw1, MW1000] # 测试MW - [vd1, Md1000, Real] # 测试同地址 MD - [auto_data1, mw+] # 测试自动地址 - [auto_data2, M+] - [auto_data3, M+] - [auto_data4, M+] - [auto_data5, MD+, DInt] - [PE0101, DB961] list: # CPU配置的列表为一般性 FC OB 代码(自定义SCL) # 本配置列表的目的是为了列明CPU的调用关系 # 所有 OB 或 FC 块不能有参数,块内部建议仅使用简单的调用代码 # 更复杂的代码更适合放在 includes 或 files 中 - comment: 初始化 block: [init, FC10] code: |- # 该FC的代码 M100.0 := TRUE; M100.1 := TRUE; M100.2 := TRUE; M100.3 := TRUE; M100.4 := TRUE; - comment: 重启 block: [COMPLETE RESTART, OB100] code: '"init"();' - comment: 0.1S 循环 block: [Cyclic interrupt, OB30] code: '"AI_loop"();' - comment: 主循环 block: [main, OB1] title: Main Program Sweep (Cycle) code: |- # OB1的代码 "Interlock_Loop"(); // 报警 "PI_Loop"(); "PV_Loop"(); "SC_Loop"(); "Timer_Loop"(); "Valve_Loop"(); options: # 选项,非必需,无需要时可以全部删除或注释掉。 # output_dir 指令指示所有属于该 CPU 的S7代码输出文件夹 # 该指令仅用在 CPU 文档中,可省略,默认为 {{cpu_name}} # 类型: 字符串 # 可以在字符串中使用以下替换: # - {{cpu_name}} 会自动替换为当前配置的 CPU 名称 # - {{platform}} 会自动替换为当前配置的 platform # - {{device}} 会自动替换为当前配置的 device output_dir: SCL_{{cpu_name}}_{{platform}}_{{device}} # 输出CPU配置文件名,可省略,默认值是 `CPU.scl` # 类型: 字符串 output_file: 'main.scl' --- name: AS2-CPU platform: portal files: - filename: ..//example/*.scl # 复制指定文件夹下的所有SCL文件,并指定文本格式 IE: utf8 OE: utf8 line_ending: LF attributes: # 用于包含文件PE.scl的转换 tag_postfix_number: '0201' includes: - PE.scl symbols: - [PE0201, DB961] ... # YAML语法,指示一个文档结束