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定时器使用及时序图
指令 | 说明 | 时序图 |
---|---|---|
生成脉冲 | IN从“0”变为“1”,定时器启动,Q立即输出“1”;当ET<PT时,IN的改变不影响Q的输出和ET的计时; 当ET=PT时,ET立即停止计时,如果IN为“0”,则Q输出“0”,ET回到0;如果IN为“1”,则Q输出“1”,ET保持。 | |
接通延时 LAD: 或-( TON )- SCL:TON | IN从“0”变为“1”,定时器启动; 当ET=PT时,Q立即输出“1”,ET立即停止计时并保持; 在任意时刻,只要IN变为“0”,ET立即停止计时并回到0,Q输出“0”。 | |
关断延时 LAD: 或-( TOF )- SCL:TOF | 只要IN为“1”时,Q即输出为“1”。 IN从“1”变为“0”,定时器启动; 当ET=PT时,Q立即输出“0”,ET立即停止计时并保持。 在任意时刻,只要IN变为“1”,ET立即停止计时并回到0。 | |
时间累加器 LAD: 或-( TONR )- SCL:TONR | 只要IN为“0”时,Q即输出为“0”。IN从“0”变为“1”,定时器启动; 当ET<PT时,IN为“1”时,则ET保持计时,IN为“0”时,ET立即停止计时并保持。 当ET=PT时,Q立即输出“1”,ET立即停止计时并保持,直到IN变为“0”,ET回到0。 在任意时刻,只要R为“1”时,Q输出“0”,ET立即停止计时并回到0。R从“1”变为“0”时,如果此时IN为“1”,定时器启动。 | |
复位定时器 LAD:-(RT)- SCL:RESET_TIMER | 指令前的运算结果为"1"时使得*定时器的ET立即停止计时并回到0。 TP指令:激活RT至取消激活RT过程中,Q和IN保持一致。取消激活RT时,如果IN为"1", ET则立即开始计时。 TON指令:当ET=PT时激活RT,Q立即输出"0"。取消激活RT时,如果IN为"1", ET则立即开始计时。 TOF指令:激活RT至取消激活RT过程中,Q和IN保持一致。 TONR指令:R与RT或的结果取代之前的R。 | |
加载持续时间 LAD:-(PT)- SCL:PRESET_TIMER | 指令前的运算结果为"1"时使得*定时器的新设定值立即生效。(在定时器计时过程中,实时修改方框定时器的PT引脚的值在此次计时中不能生效) |
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开始)类型变量,在程序中将功能框定时器指令拖入块中时,在弹出的“调用选项”页面点击“取消”按钮,之后将该建好的变量填入*位置。对于线圈型指令,这是可以选择方法。
(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
1. 为什么定时器不计时?
答:可能原因如下:
(1)定时器的输入位需要有电平信号的跳变,定时器才会开始计时。如果保持不变的信号作为输入位是不会开始计时的。TP、TON、TONR需要IN从“0”变为“1”启动,TOF需要IN从“1”变为“0”启动。
(2)定时器的背景数据块重复使用。
(3)只有在定时器功能框的Q点或ET连接变量,或者在程序中使用背景DB(或IEC_TIMER类型的变量)中的Q点或者ET,定时器才会开始计时,并且更新定时时间。参考表3。
表3 定时器的使用
示例 | 计时与否 |
---|---|
不计时 原因:定时器功能框的Q或ET既没有连接变量,也没有使用背景数据块的Q或者ET | |
计时 原因:定时器功能框的Q连接变量 | |
计时 原因:定时器功能框的ET连接变量 | |
计时 原因:使用背景数据块的Q | |
计时 使用背景数据块的ET | |
2. 如何编程自复位定时器并产生脉冲?
答:正确答案参考表4,同时附上2种常见错误编程方式。
原因:S7-1200的定时器的时间更新发生在定时器功能框的Q点或ET连接变量时,或者在程序中使用背景DB(或IEC_TIMER类型的变量)中的Q点或者ET时。即如果程序中多次使用同一背景DB的Q点,或者既使用定时器功能框的Q点或ET连接变量,又使用背景DB的Q点,以上两种情况都会造成定时器在一个扫描周期内的多次更新,可能造成定时器不能正常使用的情况。
表4 自复位定时器示例
示例 | 正确与否 |
---|---|
正确 | |
错误 多次使用同一背景DB的Q点 | |
错误 同时使用背景DB的Q点以及定时器功能框的Q点连接变量 |
正确方法的流程,将程序根据指令分为两部分,如图12所示:
图12 分解正确指令
阶段1.初始"DB2".脉冲=False,于是"DB2".脉冲取反为True,触发计时器开始计时,输出的"DB2".脉冲=False,状态不变;定时时间不到,则始终在阶段1;
阶段2.当定时时间到发生在①所处的位置,在TON处定时器更新,Q输出True,因此输出的"DB2".脉冲=True,等到下周期时"DB2".脉冲取反为False,导致输出的"DB2".脉冲=False,等再到下周期时就回到了阶段1;
阶段3.当定时时间到发生在②所处的位置,不影响定时器的更新,需要到下一周期才会改变输出,就回到了阶段2。
从上可知,定时器实现了自复位,并且"DB2".脉冲=True只保持一个周期,形成了脉冲。
以**个错误方法解释一下为什么这种方法不能实现自复位定时器并产生脉冲,如图13所示,将程序根据指令分为三部分:
图13 分解错误指令
阶段1.初始**行"IEC_Timer_0_DB".Q=False,触发计时器开始计时,*二行,当定时时间不到,"IEC_Timer_0_DB".Q=False保持不变,输出的"DB2".脉冲=False;定时时间不到,则始终在阶段1;
阶段2.当定时时间到发生在①所处的位置,在**行的"IEC_Timer_0_DB".Q处定时器更新,更新后,"IEC_Timer_0_DB".Q=True,取反为False,此时作为TON的输入,使得定时器复位,*二行的"IEC_Timer_0_DB".Q=False,输出的"DB2".脉冲=False,到下周期时就回到了阶段1;
阶段3.当定时时间到发生在②所处的位置,在*二行的"IEC_Timer_0_DB".Q处定时器更新,更新后,"IEC_Timer_0_DB".Q=True,输出的"DB2".脉冲=True,等到下周期时,"IEC_Timer_0_DB".Q=True,取反为False,此时作为TON的输入,使得定时器复位,*二行的"IEC_Timer_0_DB".Q=False,输出的"DB2".脉冲=False,等再到下周期时就回到了阶段1;
阶段4.当定时时间到发生在③所处的位置,不影响定时器的更新,需要到下一周期才会改变输出,就回到了阶段2。
从上可知无论定时器时间到发生在哪个点,定时器都可以实现自复位,但是只有当定时时间到发生在②所处的位置时,"DB2".脉冲=True只保持一个周期,形成了脉冲,而在①和③时"DB2".脉冲始终为False无法形成脉冲。在正常程序中②的执行时间在整个扫描周期中占比很小,因此只有很低的概率可以实现脉冲。所以不能使用此种方法,*二个错误方法与之类似。
3. 如何使用定时器实现精确定时?
答:不能做到。
举例来说,定时1s的接通延时定时器,当程序扫描到定时器功能框的Q点或ET时或者扫描到背景DB(或IEC_TIMER类型的变量)中的Q点或者ET时,如果时间为997ms,只会继续定时等下一次扫描,而下一次扫描到可能就是1003ms,此时定时器接通。也就是说几乎不可能正好1s接通,如果再配合计数器实现更长时间的定时,误差只会越来越大。
所以精确定时还是推荐使用循环中断(OB30)配合计数器来实现。
4. 定时器指令中,功能框和线圈型的区别?
答:原理上是完全一样的,细微区别:
(1) 功能框定时器上可以定义Q点或ET,在程序中可以不必出现背景DB(或IEC_TIMER类型的变量)中的Q点或者ET;而线圈型定时器必须使用背景DB(或IEC_TIMER类型的变量)中的Q点或者ET;
(2) 功能框定时器在使用时可以自动提示生成背景块,或者选择不生成;而线圈型定时器只能通过手动方式建立背景块;
(3) 线圈型定时器如果出现在网络段中间时不影响RLO的变化,如图14所示,"DB46".Static_1和I1.0同步变化。
图14 线圈型定时器示例
词条
词条说明
安全设置寻址风险OPC UA 支持过程和生产层级中的不同系统之间以及这些系统与控制与企业层级中的系统之间的数据交换。这同样将导致信息安全风险。因此,OPC UA 提供了一系列安全防护机制:OPC UA 服务器和客户端的身份验证。检查用户的身份。在 OPC UA 服务器和客户端间,对已签名/加密的数据进行交换。仅在**有必要的情况下,才应绕过这些安全策略:调试过程中在没有外部以太网连接的独立项目中例
函数代码 01 – 读输出状态函数使用该函数可以从从站中读取各个位。起始地址驱动程序并不检查位起始地址参数,因此将参数原封不动地发送出去。位数对于位数(线圈数),允许 1 和 2040 之间的任何值(对于 ET 200S 1SI Modbus,位数较多为 2008)。SEND 源 DBSEND 源区域的结构:地址名称类型初始值注释+0.0地址BYTEB#16
创建一个项目操作步骤要创建新项目,请按以下步骤操作:在“项目”(Project) 菜单中,选择“新建”(New) 命令。“创建新项目”(Create a new project) 对话框随即打开。输入一个项目名称和路径,或接受系统建议的设置。单击“创建”(Create) 按钮。结果新项目即会创建并显示在项目树中。
分段分段传输 TCP/IP 数据的完整标准以太网帧的时间可达 125 µs。这也就意味着,无法将 PROFINET IO 数据的循环时间缩短到*时间。在性能升级过程中,可通过分段机制将 TCP/IP 帧拆分为多个子帧。这些帧段将分为多个发送时钟传送到目标设备中,并在目标设备重新组装为原 TCP/IP 帧。分段机制可显著缩短循环时间,低至 250 µs。发送时钟越短,TCP/IP 数据所
公司名: 上海腾希电气技术有限公司
联系人: 田礼科
电 话: 021-37660026
手 机: 13681875601
微 信: 13681875601
地 址: 上海松江上海市松江区广富林路4855弄星月大业**88号4楼
邮 编:
网 址: shtxjd.cn.b2b168.com
公司名: 上海腾希电气技术有限公司
联系人: 田礼科
手 机: 13681875601
电 话: 021-37660026
地 址: 上海松江上海市松江区广富林路4855弄星月大业**88号4楼
邮 编:
网 址: shtxjd.cn.b2b168.com