limaotaizi 发表于 2018-12-18 11:36:14

plc如何实现延时队列

场景:
   就是一个输入口来一个信号,就启动一个延时,延时到了,就向输出口输出一个脉冲
   但在这个延时还没到的时候,可能这个输入口又来一个(或多个)信号,这样又要启动一个(或多个)延时,延时到了,这个输出口再输出一个脉冲
问题:
   因为这个期间来的信号是不确定的,并且是一直循环的,用固定的定时器循环来用就很土了
   PLC有没有类似FIFO的功能,我只要把延时时长加入到延时队列,他就会自动计时,时间到了,就会触发我来输出脉冲
   或者如何实现会比较简洁,谢谢先!~

shawn_bu 发表于 2018-12-18 11:40:55

PLC没玩过,单片机可以用简单的状态机实现。

longlong105 发表于 2018-12-18 12:43:29

S7-200 是有fifo 堆栈的

modbus 发表于 2018-12-18 13:02:16

FIFO已经是PLC的标配功能了

limaotaizi 发表于 2018-12-18 13:32:00

如果有FIFO的话,如何实现这个功能?

xlian541426 发表于 2018-12-19 13:40:34

精度要求多少,可以交流

nanfang2000 发表于 2018-12-19 14:10:10

这不是软timer的概念吗?单片机程序里很多这种实现。复杂点用个红黑树实现,很多开源的。简单点就用个数组或者链表实现。精度不高的话只需要一个硬件定时器

nanfang2000 发表于 2018-12-19 14:11:01

如果上rtos比如freertos这个更是标配功能了

yamqqqq 发表于 2018-12-19 19:23:32

本帖最后由 yamqqqq 于 2018-12-19 19:25 编辑

可以做得到,编程实现。但是数量还是有限制的,因为plc的软元件有数量限制

Error.Dan 发表于 2018-12-19 19:47:02

用计数器做比较好,基本上PLC里面计数器用的比较少,起码我用的不多,很多时候都是INC VBXX搞定。

就是一个固定的时基给N个计数器计数,然后需要用你的触发条件做计时器的使能,然后计数器输出直接给外部输出。
这里复位和使能后的自保可能要想一下,,还有就是输出的地方,脉冲宽度可能需要额外的处理,其他的很简单,计数器自带比较功能这样更简单。

如果你要的时间间隔都是固定的话,这种是最简单的,如果是动态的延时也可以做。

hefq 发表于 2018-12-19 23:10:04

喷松香吗

xlian541426 发表于 2018-12-20 09:01:48

看一下人家要求,比如检测输送带上面过来信号,可能由于技术原因,不能马上在这里处理,而是继续在输送带上走一段距离后再处理,而这中间可能有无数个产品过来,而在另外一个点就要对这些采样的数据进行处理

modbus 发表于 2018-12-20 09:28:34

Error.Dan 发表于 2018-12-19 19:47
用计数器做比较好,基本上PLC里面计数器用的比较少,起码我用的不多,很多时候都是INC VBXX搞定。

就是一 ...

我也是很少用计数器,都是用INC和比较指令

豪爵太子 发表于 2018-12-26 10:30:47

用一个接通延时定时器的常开触点去触发FIFO指令就行了。{:smile:}
页: [1]
查看完整版本: plc如何实现延时队列