S7-1200的定时器为IEC定时器,用户程序中可以使用的定时器数量仅仅受CPU的存储器容量限制。
使用定时器需要使用定时器相关的背景数据块或者数据类型为IEC_TIMER(或TP_TIME、TON_TIME、TOF_TIME、TONR_TIME)的DB块变量,不同的上述变量代表着不同的定时器。
注:S7-1200的IEC定时器没有定时器号(即没有T0、T37这种带定时器号的定时器)。
S7-1200包含四种定时器:
生成脉冲定时器(TP)
接通延时定时器(TON)
关断延时定时器(TOF)
时间累加器(TONR)
还包含复位定时器(RT)和加载持续时间(PT)这两个指令。
指令位置参见图1,定时器引脚参考表1,定时器使用及时序图参考表2。 这四种定时器又都有功能框和线圈型两种,区别参见常见问题3。
图1 指令位置
表1定时器引脚汇总
输入的变量 | |||
---|---|---|---|
名称 | 说明 | 数据类型 | 备注 |
IN | 输入位 | BOOL | TP、TON、TONR:0=禁用定时器,1=启用定时器 TOF:0=启用定时器,1=禁用定时器 |
PT | 设定的时间输入 | TIME | |
R | 复位 | BOOL | 仅出现在TONR指令 |
输出的变量 | |||
名称 | 说明 | ||
Q | 输出位 | BOOL | |
ET | 已计时的时间 | TIME |
表2定时器使用及时序图
指令 | 说明 | 时序图 |
---|---|---|
生成脉冲 |
| |
接通延时 LAD: 或-( TON )- SCL:TON |
| |
关断延时 LAD: 或-( TOF )- SCL:TOF |
| |
时间累加器 LAD: 或-( TONR )- SCL:TONR |
| |
复位定时器 LAD:-(RT)- SCL:RESET_TIMER |
| |
加载持续时间 LAD:-(PT)- SCL:PRESET_TIMER |
|
S7-1200 定时器创建
S7-1200定时器创建有以下几种方法:
1. 功能框指令直接拖入块中,自动生成定时器的背景数据块,该块位于“系统块>程序资源”中,参见图2。
图2 自动生成定时器的背景数据块
2. 功能框指令直接拖入FB块中,生成多重背景,参见图3。
图3 多重背景
3. 功能框指令直接拖入FB、FC块中,生成参数实例,从TIA博途V14开始,参见图4。
图4 参数实例
4.在DB块、FB的静态变量、FC和FB的INOUT变量中新建IEC_TIMER、TP_TIME、TON_TIME、TOF_TIME、TONR_TIME(后面四个从TIA博途V11开始)类型变量,在程序中将功能框定时器指令拖入块中时,在弹出的“调用选项”页面点击“取消”按钮,之后将该建好的变量填入指定位置。对于线圈型指令,这是shouxuan方法。
(1)DB块中新建IEC_TIMER等类型变量(LAD/FBD),如果是IEC_TIMER等类型变量的数组,S7-1200从V2.0版本开始支持,参见图5~图7。
图5 DB块中的定义
图6 功能框定时器使用
图7 线圈型定时器使用
(2)FB的静态变量中新建IEC_TIMER等类型变量(LAD/FBD),如果是IEC_TIMER等类型变量的数组,S7-1200从V2.0版本开始支持,参见图8。
图8 静态变量中定义
(3)FC和FB的INOUT变量中新建IEC_TIMER等类型变量(LAD/FBD),如果是IEC_TIMER等类型变量的数组,S7-1200从V2.0版本开始支持,从TIA博途V14开始支持IEC_TIMER等类型变量的变长数组(ARRAY[#]),参见图9。
图9 INOUT中定义
(4) 以上三种方法的SCL版本,从TIA博途V14开始支持,参见图10。
图10 SCL中使用
从以上4个示例可以看出,IEC_TIMER、TP_TIME、TON_TIME、TOF_TIME、TONR_TIME五种数据类型没有本质的区别,可以互换使用,为使得程序明确,建议只使用定时器对应名字的数据类型。
5.在插入DB时,选择IEC_TIMER类型的数据块,将该数据块填在指令上方。此种方法生成的数据块等同于种的背景数据块,位于“系统块>程序资源”中,从TIA博途V11开始,线圈型指令同样适用,参见图11。
图11 新建IEC_TIMER类型DB