-
-
-
szzunzheng | 当前状态:离线
总积分:180 2025年可用积分:0
注册时间: 2007-06-06
最后登录时间: 2009-10-12
-
-
OpenPLC的计数器和定时器
szzunzheng 发表于 2007/12/1 9:35:53 975 查看 0 回复 [上一主题] [下一主题]
手机阅读
计数器和定时器是作为输出元素进入OpenPLC的,这些元素是布尔逻辑元素。每个计数器和定时器可以在其它的布尔逻辑表达式中处理状态位,状态位表示定时器或者计数器是否已经计数到达终点。对于计数或计时的结果,OpenPLC有另外的元素单独存储累计量,该量可以在计数或者计时的过程中不断改变。对先进的程序操作来说,可以用布尔逻辑表达式直接控制计数器和定时器的状态位,并且还有处理数据或改变累计值的指令。
3.3.1 计数器指令
许多PLC的计数器是从最大值向零来计算的,计数器有一个状态位,当计数器的结果是“0”时,该位的状态会变化。OpenPLC程序包括一个指令,对累计值进行初始化,同时可以将预先设定的值放到累计值中,也可以然后将积累值递减到零。也有PLC用正向计数的。每次执行时,OpenPLC会将数据与预设定的数值进行比较,如果等于或大于预设数值,则改变状态。此外,还有清零和向预测方向递减的指令。
C5:3的结构:
图3.9 OpenPLC的计数器指令及其所处理的计数器元素数据结构
OpenPLC的计数器或定时器有三个字,其中,两个16位的字分别表示累计数和预设数,另外还有一些状态位,每个状态位或字都可以由用户程序分别访问。 OpenPLC的用户程序有三个计数器指令。一个是COUNT UP,开始正向计数,COUNT DOWN,开始递减计数。RESET,复位,将累计数清零,并清除所有的状态位。
程序员必须输入计数器的预设值后,才能开始COUNTUP 或COUNTDOWN计数。预设值是一个范围在-32768到+32767之间的一个数。如果正向计数超过32767,它将溢出到-32768,如果向下计数超过-32768,则会溢出到+32767。对于同一个计数器的不同的操作应该采用同一个预设值,因为程序再执行的时候,每次进入定时器指令,预设值都会刷新。
OpenPLC的计数器数据结构有5个状态位,状态位可以由用户程序的布尔逻辑指令,如图3.9。DN 为1时,表示累计数达到或超过预设值。CU(COUNT UP)和CD(COUNT DOWN)表示计数器最近一次使用这个数据结构的指令,OV(OVERFLOW)和UN(UNDERFLOW)一旦数据超出范围,即保持。如果OV和UN 位为“ON”,DN位的状态有可能会出错,因为累计值已经无效。布尔逻辑可以控制这个值,但最好避免这样做,因为可能会使计数失效。
图3.9 给出了一个有简单的逻辑表达式控制的COUNT UP指令,该指令访问一个单一的输入映像位(I:4.3),另一个横档在计数器的DN为“ON”时,将一个位文件的位(B3/2)设为“ON”,但计数器必须没有溢出。如果另一个输入映像状态为“ON”的话,RESET指令将会把计数器的累计值和状态位也清零。其它的数据指令可以操作计数器的预设和累计值。如MOVE指令,算术操作和COMPARE指令等,都是其中的例子。图3.9也示出了计数器的三个数据字结构的格式。
3.2 定时器
定时器指令实际是计时单元,当其输入逻辑状态为真时,开始计数。与计数器类似,每个定时器需要至少一个数据字的内存来存放累计的时间值和一个状态位表示“计时完成”的状态。
与计数器不同的是,大部分定时器在当其控制逻辑停止又重新启动时,都会自动启动,因此,复位指令可能是不需要的。但也有一种保持计时器,当停止时,他们停止计时,但保持时间,当再启动时,将继续接下去计时。这种定时器就需要一个复位指令来控制。
与计数器类似,有的控制器采用递减计时,但大部分是采用递增计时,这样所计的时间会与预先设定的值进行比较,当到达零或者设定值时,定时器的状态位改变。有的定时器还有一些辅助状态位表示“定时器在工作”。
定时器可以选择时间单位的大小,因为定时器只有在他们运行的时候才能够检查状态,因此,程序越长,定时器的精度越低。比如,一个程序的执行时间是50毫秒,则定时器的时间精度为±50mS,即使定时器所用的时间单元小于50mS。
有的OpenPLC控制器提供实时时钟的功能,OpenPLC不需要从用户程序的指令就可跟踪时间。用户程序可以包含访问时间和改变时间的指令。
OpenPLC 的定时器实际上是对时间单元进行计数的计数器。其预设值必须是正的,从0到+32767之间。这个值代表时间单元的数量。OpenPLC的时间基本单元为 0.01秒,最大可以到1秒。定时器只能正向计时,到达预设值时将停止。定时器只有三个状态位,DN(DONE),TT(TIMER TIMING),和EN(ENABLED)。EN位反映定时器的控制逻辑。