使用计时器来编程
使用计数器来编程
当下需要执行下列操作时,使用计时器指令:

一段时间延时后,触发某个结果。
使某动作在指令时间长度时执行完毕。
对某动作的持续时间进行计时。
在下列应用场合使用计数器:
计数进入或者离开某处的部件数量。
计数某事件发生的次数。
RSLogix5000项目中,计时器和计数器作为输出指令使用。
同计时器相关的数据存储在TIMER结构体的成员中。每个成员都有它们自己的名称并且存储预置值、累计值和状态位数据。
下图为RSLogix5000软件中监视标签窗口中的TIMER结构体图:
预置值(.PRE):需要计时的时间基个数。预置值的范围为0至+2,147,483,647。
累计值(.ACC):计时器已累计的总时间(以毫秒为单位)。
计时器状态位(.EN,.DN和.TT):其功能为通告控制器计时器指令的一些状态:
计时器指令有下列组件:
Timer (计时器):计时器指令存储数据的结构体。
Timer Base(时间基):计时器用来注册事件的单位时间。
计时器指令根据时间来控制操作:
TON指令控制的计时器:当梯级条件由假为真时开始计时;当梯级条件为假时,复位计时器。
注意在上图中,当limit_swithc_1使能(置位)时,2000毫秒内,light_2使能(接通)。
当累计时间到2s,light_2被禁止,light_3使能
当TON指令停止时,light_3仍然使能。
如果当timer_1在计时的时候limit_swithc_1被禁止(清零),light_2也被禁止(断开)
TON指令按下列方式进行工作:
TOF指令控制的计时器:当梯级条件由真为假时开始计时;当梯级条件为真时,复位计时器:
注意在上图中,当limit_swithc_2使能(置位)后再禁止(清零),2000毫秒内,light_2和light_3使能(接通)(timer_2开始计时并且完成位(.DN)被置位)。
当timer_2.ACC到达2000时,light_2和light_3均被禁止(断开)。
TOF指令按下列方式进行工作:
RTO指令的计时器,当梯级条件由假为真时,开始累计时间;当梯级条件变为假时,复位计时器
它在不会复位(丢失)已累计数值的情况下就能开始和停止计时器:
注意在上图中,当limit_swithc_1使能(置位),2500毫秒内,light_1使能(接通)(timer_3开始计时)。
当timer_3.ACC到达2500时,light_1被禁止(断开)此时light_2使能(接能)。
light_2仍然使能(接通)直到timer_3置位。
当limit_swithc_2使能(置位)后,RES指令复位timer_3(清除状态位并且累计数值)。
在timer_3在计时期间如果limit_swithc_2被禁止(清零),light_1仍然使能(接通)。
需要使用RES(复位)指令复位RTO指令的累计值和状态位。
RTO(保持型延时导通计时器)指令
同计数器相关的数据存储在COUNTER结构体的成员中。
每个成员都有它们自己的名称并且存储预置值、累计值和状态位数据。
在RSLogix5000软件的监视标签窗口的COUNTER结构体如下图所示:
预置值(.PRE):要计数的数值。向上计数的最大数值为+2,147,483,647。向下计数的最大数值为-2,147,483,648。
累计值(.ACC):已经计的数值。如果累计值等于50,这意味着事件已经发生了50次。
计数器状态位(.CU、.CD、.OV和.UN):这些状态位的功能是通知控制器计数器指令的状态。
对于计数器指令
即使.DN位置位的情况下,累计仍然递增/递减(也就是说,计数器的数值会大于预置值)。
要清除计数器的累计值,使用RES(复位)指令复位该计数器。
COUNTER数据类型为一个数据块,可以用来进行向上计数、向下计数、从总数中加法或者减法的操作。
计数器的信息存储在COUNTER结构体中。
计数器指令根据事件的数目控制操作:
CTU指令在每次梯级条件变为真时,增加计数值并且此时指令也使能:
注意,在上图中,Limit_Switch_1开关从断开状态切换至接通状态反复切换10次后,此时 .DN状态位使能(置位)并且Red_Light_1被使能(接通)。
如果Limit_Switch_1开关继续从断开状态切换至接通状态,Switch_1_Count接着计数并且.DN状态位仍然使能(置位)。
当Limit_Switch_2使能时,RES指令复位Switch_1_Count(清除状态位和累计)并且Red_Light_1被禁止(断开)。
CTD指令在每次梯级条件变为真时,减少计数值:
图为传送带将部件传送至缓冲区域的程序。
每次当进入一个部件时,limit_switch_1使能并且part_count增加1。
每次当一个部件离开时,limit_switch_2使能并且part_count减少1。
如果在缓冲区域有100个部件(part_count.DN置位),此时,conveyor_A 被使能(接通)并且停止向缓冲区传送部件,直至缓冲区域有空间为止。
RES指令为输出指令,用来复位计时器指令和计数器指令。
当执行RES指令时,引用标签数据类型的计时器指令和计数器指令的累计值和状态位都清零(复位)。下图为RES指令引用计数器指令标签的一个示例: