s7-scl-gen
Version:
S7 PLC SCL 代码自动生成
168 lines (146 loc) • 5.64 kB
YAML
# 指令`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语法,指示一个文档结束