西门子定时器小结
使用STEP 7对西门子S7-300系列的PLC编程时,经常使用到定时器,我们平常使用的多为S7定时器,通过查询西门子手册,可知S7定时器是有数量限制的,一般为256个。
在编写程序用,常用到双电控电机控制程序或单电控电机控制程序。对电机启动超时的报警,程序中一般是这么做的:PLC输出启动命令,如果在5S(时间可更改)内没有收到运行反馈的信号,则认为启动超时,停止超时原理同样。程序截图如下:
程序段4是将一个实数转换成S5格式的时间数据类型,程序段5中的S_ODT是一个通电延时定时器,这是一个标准的S7定时器。#TMR_start 这个变量代表定时器编号,在程序中调用双电机电控程序时必须给定时器赋值。如在FC中调用上述的双电机电控程序,如下图:
在调用的FB块中写入T1 及T2,以及T1和T2设置的时间5秒。那么现在就存在一个问题,当现场的电机和阀门很多的情况下,每台电机要占用2个定时器,而定时器的编号只能最大编写到T256,定时器会严重不足。基于这个问题,将FB1(双电控电机程序)中的S7定时器替换为IEC定时器,可以解决S7定时器数量不足的问题,参考西门子手册,STEP7中对IEC定时器的使用是没有数量限制的,但需要调用背景数据块。IEC定时器是通过调用西门子标准的库SFB4实现的,SFB4是接通延时定时器,功能同S_OTD,现仅对SFB4进行调用说明。
需要在原来的FB1程序中调用SFB4,以实现IEC定时器的功能。现简述操作步骤,在原来的FB1中更改定时器类型的方法,首先把接口参数中的OUT中的START_O和STOP_O拖到IN_OUT,如下图所示:
在STAT参数声明中新建两个定时器,分别是启动超时和停止超时定时器,新建一个变量,取名为start_time,数据 类型选择为SFB,会弹出对话框,输入SFB4,点击确定。
同理,新建一个stop_time。
继续在OUT中声明两个变量start_tmr和stop_tmr,如下图
建好以上变量后,将原FB1程序中的程序段4和程序段5替换掉,如下图
这样就完成了FB功能块的修改,然后可以在FC或者OB块中调用刚修改过的使用IEC定时器的FB块。调用时只需写入定时器的时间就可,不需要在定义定时器编号。
生成的背景数据块如下图:
可以看出16.0以后,为SFB4定时器所自动生成的2个定时器背景数据。