s7-scl-gen
Version:
S7 PLC SCL 代码自动生成
130 lines (102 loc) • 5.27 kB
YAML
#CPU: AS1 # 指示属于哪一个CPU
#feature: timer # 指示本配置为生成 timer 代码
name: AS1-timer # 相当于上面2条被注释的指令
# 关于timer
# 每一个计时器的DB有以下内容上传至HMI:
# - enable 允许计时
# - reset 计时清零,本字段自动复位
# - count 计时总秒数,本字段可HMI更改以改变计时数值
# - hours 计时小时数,本字段可HMI更改以改变计时数值
# - minutes 计时分钟秒数,本字段可HMI更改以改变计时数值
# - seconds 计时秒数,本字段可HMI更改以改变计时数值
# 额外代码
includes:
symbols:
# timer文档已有2个内置符号,其内容由本程序自动生成:
# - [Timer_Proc, FB520] 计时器主处理函数
# - [Timer_Loop, FC520] 主循环调用FC,将这个加入OB1中
# 可以在对上述内置符号的地址进行更改,只要重新定义就可以了,注意保持名称一致
list: # 计时器列表
- comment: 泵运行时间 # 类型:字符串
# timer数据块
# 类型: S7符号定义 | S7符号引用
DB: [pump_runtime, DB501]
# 允许信号,为假时停止计时,为真时继续计时
# BOOL 类型:S7符号定义|S7符号引用|SCL表达式
enable: [DI04-01, I12.0] # 由泵的运行信号控制计时
# 重置,为真时将计时清零
# BOOL 类型:S7符号定义|S7符号引用|SCL表达式
reset: 'NOT "DI04-01"' # 泵停止时计时清零
# BOOL 类型:S7符号定义|S7符号引用|SCL表达式
PPS: [DI04-02, I12.1] # 由硬件输入秒脉冲
- comment: 信号发送器
DB: [signal_timer, DB502]
enable: '"sender".work_flag' # 注意,转换器不对SCL表达式做检查
PPS: GPS.PPS # 注意,转换器不对SCL表达式做检查
# 没有reset参数,计时会一直累计下去。可通过HMI清零
- comment: 风机运行时间
DB: [fan_runtime, DB503]
# 如省略 enable 参数,可由HMI控制计时
# 使用计数器生成,要求每个 timer 的 PPS 参数必须赋值一个秒脉冲输入信号
# 如省略 PPS 参数,转换器会自动采用内置时钟存储器 "Clock_1Hz",但有一个前提:
# 必须在CPU中打开时钟存储器,并必须在CPU配置文档中打开对应的 "Clock_Byte" 内置符号
# 如果上一行前提不满足,在step7中编译代码时会出错。
# 用户自写SCL代码,放在循环的开始和结束处。
loop_begin: |-
// 这里的代码将在 Timer_Loop 循环开始时执行
loop_end: |-
// 这里的代码将在 Timer_Loop 循环结束时执行
options : # 选项,非必需,无需要时可以全部删除或注释掉。
# output_file : 'example.scl'
# 内容与 AS1-timer 相同,仅仅是CPU中的平台不一样。
name: AS2-timer
# 关于timer
# 每一个计时器的DB有以下内容上传至HMI:
# - enable 允许计时
# - reset 计时清零,本字段自动复位
# - count 计时总秒数,本字段可HMI更改以改变计时数值
# - hours 计时小时数,本字段可HMI更改以改变计时数值
# - minutes 计时分钟秒数,本字段可HMI更改以改变计时数值
# - seconds 计时秒数,本字段可HMI更改以改变计时数值
# 额外代码
includes:
symbols:
# timer文档已有2个内置符号,其内容由本程序自动生成:
# - [Timer_Proc, FB520] 计时器主处理函数
# - [Timer_Loop, FC520] 主循环调用FC,将这个加入OB1中
# 可以在对上述内置符号的地址进行更改,只要重新定义就可以了,注意保持名称一致
list: # 计时器列表
- comment: 泵运行时间 # 类型:字符串
# timer数据块
# 类型: S7符号定义 | S7符号引用
DB: [pump_runtime, DB501]
# 允许信号,为假时停止计时,为真时继续计时
# BOOL 类型:S7符号定义|S7符号引用|SCL表达式
enable: [DI04-01, I12.0] # 由泵的运行信号控制计时
# 重置,为真时将计时清零
# BOOL 类型:S7符号定义|S7符号引用|SCL表达式
reset: 'NOT "DI04-01"' # 泵停止时计时清零
# BOOL 类型:S7符号定义|S7符号引用|SCL表达式
PPS: [DI04-02, I12.1] # 由硬件输入秒脉冲
- comment: 信号发送器
DB: [signal_timer, DB502]
enable: '"sender".work_flag' # 注意,转换器不对SCL表达式做检查
PPS: GPS.PPS # 注意,转换器不对SCL表达式做检查
# 没有reset参数,计时会一直累计下去。可通过HMI清零
- comment: 风机运行时间
DB: [fan_runtime, DB503]
# 如省略 enable 参数,可由HMI控制计时
# 使用计数器生成,要求每个 timer 的 PPS 参数必须赋值一个秒脉冲输入信号
# 如省略 PPS 参数,转换器会自动采用内置时钟存储器 "Clock_1Hz",但有一个前提:
# 必须在CPU中打开时钟存储器,并必须在CPU配置文档中打开对应的 "Clock_Byte" 内置符号
# 如果上一行前提不满足,在step7中编译代码时会出错。
# 用户自写SCL代码,放在循环的开始和结束处。
loop_begin: |-
// 这里的代码将在 Timer_Loop 循环开始时执行
loop_end: |-
// 这里的代码将在 Timer_Loop 循环结束时执行
options : # 选项,非必需,无需要时可以全部删除或注释掉。
# output_file : 'example.scl'
...