这种定时器你会用吗?
这种定时器你会用吗?
1、定时器的分类
在西门子S7-200SMARTCPU中分别有接通延时定时器TON、保持型接通延时定时器TONR、关断延时定时器TOF三种。但由于在STEP7 Micro/WINSMART里定时器的调用总数限制在256,并且S7-200SMART子程序多次调用时不能使用定时器;可以使用开始间隔时间指令(BGN_ITIME)和计算间隔时间指令CAL_ITIME两条指令,可实现对位信号的计时功能;并且可以在子程序中进行多次调用。
2、认识时间间隔定时器
▲ 图1:时间间隔定时器(左侧为开始间隔时间指令,右侧为计算间隔时间指令)
①开始间隔时间指令:当指令EN端条件满足时(需要使用沿脉冲信号)捕捉EN接通的时刻,读取内置1毫秒计数器的当前值,并将该值存储在OUT 中;其数据类型为DWORD。
②计算间隔时间指令:计算当前时间与IN 端地址中提供的时间差,将差值存储在OUT中;其数据类型亦为DWORD。双字毫秒值的大计时间隔为 或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/WINSMART软件创建一个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数据类型,并且单位为毫秒,需要进行二次运算后才是我们实际需要的运行时间。