基于模型的PLC程序设计四 上升沿和RS触发器处理

来源:互联网 发布:三星mirrorlink软件 编辑:程序博客网 时间:2024/06/06 04:12

控制描述

有时在状态机中需要处理信号的上升沿或下降沿,状态机自带事件触发,可以用来模拟沿触发,但生成的PLC程序很啰嗦,所以呢,我们自己在状态机中写个沿触发。下面是控制要求的描述:

直接上图,在传送带上每隔一定距离有一块灰色样品,需要每5样品抽取一个,按下Start按钮后,传送带移动,当CapSensor传感器,计数器计数,当计数到5时,传送带停止,汽缸Cylinder伸出,伸出到位信号PistonOut感应到,代表样品被推到Testing station位置,然后汽缸返回到PistonIn位,传送带继续前进,当抽取的样品是2块时,系统停止。当再次按Start按钮,重复上述过程。下面是具体的情况:

  1. 按下EStop急停按钮时,系统立刻停止,排除故障后,在按下Start按钮,从上次停止的工序处继续动作。
  2. 按下Stop按钮时,完成一次循环后停止,一次循环抽取2个样本。
  3. CapSensor需要用到上升沿。

状态机描述



简要说明此状态机:

HandleSignal和Work是并行状态,前面我们介绍的单不状态,也就是同一时刻只有一个状态是激活的。并行状态可以同时激活。

HandleSignal中du事件中,PositiveCapSensor控制上升沿触发的,避免用状态机自带的事件。

HandleSignal中的Stop状态,相当于PLC中的RS,用来锁存Stop按钮的信号,当按下Stop按钮后,需要一直等到相关条件满足后才能释放。


Work状态中,主要关注历史状态,看Process状态下面点的H字符。主要是处理按钮急停按钮后,再次按Start按钮,可以从上次退出的工序重新执行。上面两个状态中,新加了个[In(Work.Init)] 和 [PistonIn && NumSamples >= 2 && in(HandleSignal.Stop.Set)], 其中的In(Work.Init)代表当Work.Init状态激活后,那么[In(Work.Init)]条件满足,Stop信号复位,In(HandleSignal.Stop.Set)同样,当处于HandleSignal.Stop.Set时,说明Stop按钮在置位状态,那么条件满足。


根据状态机自动生成PLC程序

此次的状态机较复杂,我们选择自动生成PLC程序,程序较长,作为演示,我们只看调用。


此次的状态机较复杂,我们选择自动生成程序,上面是自动生成的程序。打开博途,从1处选择〔添加新的外部文件〕,右键程序名,选择〔从源生成块〕,然后会在2处出现Chart〔FB1〕,把它拖到OB1中。这里我们说说ssMethodType管脚,这个管脚是Int类型,但只能给0和1,0时,是给程序初始化,当1时,相当于自动开始,所以可以用它来作自动手动切换,当切换到自动时,赋值1,当切换到手动是,赋值0。Matlab中自动程序的过程,我们下次再见。