在PLC程序中使用定时器
2006/10/12 9:35:00
1 引言 对于搞工控的人士来说,一定对定时器不会陌生,甚至可以说,每时每刻都离不开定时器。无论是为了滤除信号的抖动,还是定期循环执行特定的任务,还是在规定的时刻自动采样数据,还是历经一定的工艺过程后中止任务的执行,诸如此类等等、等等,都要借助定时器来完成。在各种PLC系统中,也大都提供了丰富灵活的定时指令,但要真正用好定时器,让它恰如其分地发挥它应有的作用,并非是一件容易的事情。笔者想结合自己的经验和体会,来着重探讨一下西门子PLC系统中的各种定时器,以及如何构筑符合自己需要的定时器。 在西门子的S7-300和S7-400系列PLC系统中,有5条定时器指令,根据我们的实际需要,可以灵活选择使用。但是,如果定时的预置时间特别长,就不能简单地直接使用基本定时器指令了,而这要用到集成在STEP7软件中的功能块;或者定时的精度要求特别高,比如间隔特定的时间重复采样,这样的任务可能使用时间中断OB块应该更可靠。所以我们应该根据控制任务,选择使用合适的定时器。 2 使用基本定时器指令 在STEP7中,基本定时器指令共有5条,分别是:延时接通型定时器,保持型延时接通定时器,脉冲型定时器,扩展脉冲型定时器和延时断开型定时器。它们的预置值数据类型都是S5TIME类型,参见图1,所以最大定时预置值是999×0.01 =9,990 秒或999×10 =9999 秒,即2小时46分钟30秒(取决于选取的时基)。我们分别来看一下这5类定时器: 2.1 延时接通型定时器 顾名思义,触发信号 “0”到“1”的跳变(上升沿)启动定时器开始计时,定时器的状态保持为“0”,直到预置的时间达到,定时器才会输出“1”。如果在定时运行过程中,触发信号复位为“0”,或复位输入端有上升沿信号,那么,定时器终止定时运行,输出仍为“0”信号。正确使用该定时器,关键要确保启动信号是可以保持的信号。 2.2 保持型延时接通定时器 它与延时接通型定时器的功能差不多,唯一的区别是触发信号不必是保持的信号,一个瞬时脉冲信号足以触发定时器的运行,并且能走完定时值,输出为“1”信号。如果循环使用时要注意给它复位,如果没有复位输入端的上升沿信号,或没有新的启动触发信号,它的输出始终保持为“1”。 2.3 脉冲型定时器 输出脉冲的最大宽度是预置的时间值。它的启动运行也需要触发信号 “0”到“1”的跳变(上升沿),而且运行过程中,触发信号必须保持为“1”信号,如果触发信号变为“0”,定时器就停止计时运行,输出也复位为“0”。只要计时运行中,输出就为高电平保持型。 2.4 扩展脉冲型定时器 它是脉冲定时器的扩展,就像保持型延时接通定时器是延时接通型定时器的扩展一样,它也不需要触发信号在计时运行过程中保持为“1”,即使信号变为“0”,计时照常运行,直到预置时间到,除非触发信号又有新的跳变,计时重新开始进行。 2.5 延时断开型定时器 与延时接通型定时器相反,它是计时过程中,输出为“1”信号,直到预置定时时间达到,定时器复位为“0”信号。与之显著不同的是,触发信号的“1”到“0”的跳变(下降沿)触发定时器计时运行,且运行过程中触发信号必须保持为“0”,否则定时器终止运行。 3 使用集成在系统的功能块库来实现定时 集成在STEP7软件中,有许多功能库,在库中有些功能块是与计时相关的。比如:SF3"TP"对应基本定时器中的脉冲型定时器;SFB4 "TON"对应延时接通型定时器;SFB5 "TOF"对应延时断开型定时器。但这些功能块的预置定时值却是32位的TIME数据类型,计时精度是1ms。最大的定时值可以达到24天20小时31分23秒648毫秒,这样极大地扩展了计时的范围。 这三个功能块的参数是类似的,下面以SFB4 "TON"为例作介绍,参照图3,IN端是触发信号输入端,它的上升沿触发定时器运行;PT是 预置定时时间,是TIME数据类型;Q端是输出端,可以得到定时器的状态;ET是当前计时值输出端。 此外,在STEP7标准功能块中,还有其他类型的定时器,比如说软件型延时接通定时器FC80“TONR”。它的特性与普通的定时器没什么不同,所不同的是它每步累加的时间是OB1上次循环扫描的执行时间,这一点要特别注意。 4 使用时间中断OB块 在STEP7中,有两类组织块与时间有关。分别是时间中断组织块OB10到OB17和延时中断组织块OB20到OB23。前者可以执行一次,或间隔一定的时间(比如:每分钟、每小时、每天、每周等等)来自动执行,后者则是延时设定的时间后执行设定的任务。 使用时间中断组织块时,我们只要把要执行的程序代码编写到选中的OB块中,然后激活该OB块就可以了。有两种方法可以激活OB块的中断运行。其一是在做硬件配置时,选中CPU的属性选项卡,参照图4,选择“Time-of-Day Interrupts”标签,特别注意要选中“Active”复选框,在“Execution”的下拉框中选择执行的时间间隔。完成这些选项后也就激活了该时间中断。其二是调用系统功能块来完成时间的设定和组织块的激活,其中SFC28 "SET_TINT"是设定时间中断,SFC30 "ACT_TINT." 是激活时间中断的执行。 延时中断组织块的执行只有调用系统功能块来实现了。分别有3个系统功能块与之对应,它们是:SFC32 (SRT_DINT)激活延时中断,SFC33 (CAN_DINT)取消延时中断和SFC34 (QRY_DINT)查询延时中断。 由于中断组织块的优先级比较高,不会被低优先级的任务所打断,可以把一些对时间要求比较苛刻的任务放到中断组织块中来执行,这样可以更充分地保证特定任务的可靠运行。 5 使用其它方法构造定时器 构造定时器还可以采用一些非常规的方法,比如说,我们可以用加法构造递加定时器,用加法构造递减定时器。参照图5,我们用整数加法构造出了计时长度为65535秒的定时器。当然,我们可以还使用计数器对时钟脉冲进行计数,灵活地构造定时器。 6 结束语 以上介绍了使用定时器的各种各样的方法,归根结底目的只有一个:为我们的生产生活服务。根据我们的实际情况来选择合适的方法,如果基本的定时器可以满足要求,我们没有必要非要舍近求远,以炫耀我们的编程技巧,因为那样只能是哗众取宠,有些情况下可能是事半功倍的。记住:简单的是最可靠的。 参考文献 [1] 西门子公司. Ladder Logic (LAD) for S7-300 and S7-400 Programming. [2] 西门子公司. System and Standard Functions for S7-300/400. 作者简介 刘安杰(1969年) 男 工程师 现致力于数控机床的开发和组态软件的应用设计。
提交
查看更多评论
其他资讯
SEW-EuroDrive Movitrac07
浅谈变频器在不同运行模式下的参数设定和接线
欧陆调功器资料
西门子远程访问诊断的应用
Siemens NC刀库管理