这种定时器你会用吗?
肖菲
发布于2023-12-11 16:39
298
16
标签:PLC,西门子PLC,西门子S7-200SMART
一、 导读
(1)定时器的分类
在西门子S7-200SMART CPU中分别有接通延时定时器TON、保持型接通延时定时器TONR、关断延时定时器TOF三种。但由于在 STEP 7 Micro/WIN SMART里定时器的调用总数限制在256,并且S7-200 SMART子程序多次调用时不能使用定时器;因此可以使用开始间隔时间指令(BGN_ITIME)和计算间隔时间指令CAL_ITIME两条指令,可实现对位信号的计时功能;并且可以在子程序中进行多次调用。(更多PLC课程免费试看)
(2)认识时间间隔定时器
图1:时间间隔定时器(左侧为开始间隔时间指令,右侧为计算间隔时间指令)
①开始间隔时间指令:当指令EN端条件满足时(需要使用沿脉冲信号)捕捉EN接通的时刻,读取内置 1 毫秒计数器的当前值,并将该值存储在 OUT 中;其数据类型为DWORD。
②计算间隔时间指令:计算当前时间与 IN 端地址中提供的时间差,然后将差值存储在 OUT 中;其数据类型亦为DWORD。双字毫秒值的最大计时间隔为2^32或 49.7 天。 根据 BGN_ITIM 指令的执行时间,CAL_CITIM 指令会自动处理在最大间隔内发生的一毫秒定时器翻转。
二、定时器应用
接下来我们通过一个简单的应用程序来充分理解时间间隔指令;如图2所示。
当程序段1中BGN_ITIM指令的EN导通一个扫描周期时,系统将会读取该扫描周期内接通的具体时间,存放在OUT地址VD0中。同时程序段2中 CAL_CITIM指令会计算OUT中地址VD4和IN端地址VD0的差值,从而得到EN端接通的实际时间,并且该时间单位为毫秒。
图2:LAD控制图
三、定时器在子程序中的应用
在很多实际应用中会建立子程序用于多次调用,并且会用到定时器、计数器等指令。但由于200SMART系列PLC的定时器不能用于子程序的多次调用,此时就可以用到时间间隔指令了;具体操作我们可以参考以下示例程序。
(1) 打开STEP 7 Micro/WIN SMART软件创建一个SBR_0的子程序,在子程序变量表中,建立变量,如图3所示。
图3:子程序变量表
(2) 在子程序程序编辑区调用BGN_ITIM 指令和CAL_CITIM 指令,如图4所示。注意,在子程序中不能使用沿脉冲信号,因此需要在MAIN主程序中使用沿脉冲信号。
图4:子程序
(3) 选择MAIN主程序,打开项目树中的“调用子程序”将建好的子程序SBR_0拖至MAIN主程序中,并给各形式参数分配实参,并且可以实现多次调用;执行不同的条件,便可以实现对应的时间记录如图5所示。
图5:MAIN主程序
该程序实现的功能是:
程序段1:V20.0 从接通到断开这一过程的计时,计时结果(单位:毫秒)在VD4 中查看。
程序段2:V20.1 从接通到断开这一过程的计时,计时结果(单位:毫秒)在VD12 中查看。
四、结语
时间间隔指令实际应用比较少,通过子程序进行时间的记录,采用时间间隔指令是其中一种方法,在使用该方法时,需要注意两点:一是在BGN_ITIM 指令的EN端需要使用脉脉冲信号触发,而在子程序中又不能使用沿脉冲信号,因此在主程序对该形式参数赋实参时,务必加沿脉冲指令,否则CAL_CITIM指令OUT将没有值。二是CAL_CITIM指令OUT地址为DWORD数据类型,并且单位为毫秒,需要进行二次运算后才是我们实际需要的运行时间。