计时器还有一个重要的用途,就是用于时间的累计。如果计时器的梯级条件是断断续续的情形,只要梯级条件成立,就开始时间累计;梯级条件不成立,就停止时间累计,最好的选择是采用保持型的计时器指令RTO来完成。如图5-17所示的梯级逻辑编程,就是累计时的一种编写方式。
图5-17 累计时梯级逻辑
保持型计时器累加值使用梯级条件对计时器复位,复位的梯级条件可用ONS指令加以限制,以确保只会执行一次,否则在复位的梯级条件没有取消时,计时器不能开始计时,一般情形,复位指令最好确定只能执行一次。
这里有一个典型的时间累计的例子,要求编程采集一个发动机运行的累计时间为机组保养提供依据,当发动机的转速超过1100转/分钟,算作发动机的正常运行时间,将这个时间进行累计;当发动机转速不到1100转/分钟,发动机不算正常运行时间,不做时间积累,这是一个允许梯级条件断断续续的计时累积,比较指令的判断结果作为梯级条件,决定是否进行计时累积,梯级逻辑编写如图5-18所示。
图5-18 发动机累计时梯级逻辑
当时间累积达到设定的预定值,计时器的完成位Timer-Totalize DN置位,给出机组保养有关的提示。
是否只有断断续续的时间累计才会用到保持型计时器RTO指令呢?也不尽然,出于一些特殊的目的或需求,有时也会用到RTO指令。
在现场运行程序实例中,摘过来两个这样的梯级,如图5-19所示。这是一个电动机连续运行和停止的时间累计,运行或停止的梯级条件满足,连续时间达到1h,计时器的完成位DN将执行相应的动作;不足1h梯级条件消失,指令未使能,计时器常开使能位令计时器复位。(www.xing528.com)
乍看来,这是利用计时器梯级条件不满足,用计时器未使能状态来给计时器复位,为什么编程者不采用TON指令来完成呢?如前面的讨论,我们已经知道,当TON指令的梯级条件消失的时候,计时器的累加值是复位的。在这个实例中,满足的需求显然是:除非梯级逻辑自己判断的不足1h的运行或停止的梯级条件消失可以复位外,其他外在的原因引起的计时器累加值复位都是不允许的。
图5-19 连续累计时梯级逻辑编程
这里重要的差别在于,RTO指令的累加值不受预扫描和后扫描的影响,它的累加值在经历了预扫描和后扫描之后,仍然能够继续积累而不会被清零。你可以试着将控制器从编程状态切换到运行状态,反复进行几次,可以观察到控制器在编程状态时会停止累计时间,在运行状态会继续累计时间,累计值在运行和编程反复切换的过程中不会被清除。如果是TON指令的话,每次从控制器运行切换到编程状态,它的累加值会静止在当前的数值,一旦控制器从编程切换到运行,程序的预扫描作用就会将累加值清除为零,然后重新开始计时。只有在线调试时,才知道自己什么地方考虑不周,如果对指令有足够详尽地理解,就会迅速反应过来,知道自己缺失在何处。
从保持型计时器RTO运行的状态波形图中,我们早已了解它的累加值是不能利用梯级条件的消失来复位的,保持型计时器和保持型指令计数器一样,必须要用专用的复位指令RES来复位。
说到复位指令RES,有一件事不能不再次提及,这就是对断延时指令TOF,千万不可用复位指令。不知是出于习惯还是什么原因,通常我们说的置位,就是把这个位地址设为1;而我们说的复位,就是把这个地址设为0。当使用复位指令RES时,它的复位操作是令所有位为0。但是TOF的初始状态可不是0,大家已经看过它工作的波形图了。可以说除了TOF指令,其余指令的复位状态都是0,只有它是个特例。在编程满足需求时,如果你想给它复位的话,设法消除它的梯级条件就可以了。前面在介绍TOF指令时,已经提到不能使用RES复位,但是想来不会被注意,往往在面对真实的应用时,人们才会恍然大悟。
从以上编程的一些实例来看,大家可以明白,选择什么样的计时器指令来满足你的需求是大有讲究的,计时器指令看起来简单,运用起来却是非常灵活的,许多例程的编写,只有通过现场调试,不断地改进,才能找到最佳的解决方案。
每种控制器产品都有计时器,但是它们的用法未必相同,如果你使用的是Logix控制器,那么享受功能齐全的计时器给你带来编程乐趣吧。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。