PLC学习笔记(二)循环遍历

任务

电梯功能需要明确目标楼层,想要利用循环功能实现,但梯形图是与通常的编程语言不同,而更类似汇编语言,需要从本质的位的移动入手。

思路

考虑用一个字节(byte)共计8位(bit)来对有6层的电梯楼层进行外呼与内选登记,则通过从当前楼层根据运行方向,循环遍历楼层得到最近的目标楼层,并进行前往。

实现过程

首先梯形图提供的函数块为循环移位ROR与ROL,分别为循环右移与循环左移,采用循环可以保留数值不丢失;移动需要脉冲信号激发,故首先产生定时脉冲。

产生脉冲

参考怎样在 STEP 7 (TIA Portal) 中编写一个脉冲发生器程序?,例程如下所示,其中Trig_Out为输出脉冲信号。

No.脉冲发生器的功能
1输入 I0.0 “Release” 用于激活此脉冲发生器。
2标志 M0.1 “Out” 初始值为 “False” ,因此,下面一条接通延迟定时器指令 “TON”开始计时。
3当接通延时时间到达的时候,标志 M0.0 “Trig” 将被置位并且输出 Q0.1 “Trig_Out” 获得 “True” 信号。
4M0.0 的”True” 信号将触发上面一条”TON” 指令开始计时。
5当第二次接通延时时间到达的时候,标志 M0.1″Out” 被置位。
6M0.1 的 “True” 信号将断开下面一条 “TON”  指令的计时条件并中断该定时器,同时使标志 “M0.0” 被复位。输出 Q0.1 “Trig_Out” 获得 “False” 信号。
7M0.0 的 “False” 信号将中断上面一条”TON” 指令,并将 M0.1 复位。
8标志 M0.1 的 “False” 信号将重新触发下面一条 “TON” 指令,然后整个过程再次重新开始。

循环移位

在PLC的教程视频中,关于循环移位的例程正是跑马灯,符合需要。

注意问题:

  • 复制过程定时器切记二次修改,否则公用的定时器需要同时满足使能条件才开始工作
  • 使用的函数块FC,故须利用数据块的数据存放,否则无法保留
  • 采用上升沿触发循环移位,否则移位数目不定

问题

当发现循环移位并非根据上升沿脉冲单次触发,与计数器的协调工作使我困惑。

今天突然想到解决方案——先得到不同的计数,再将计数进行移位,判定是否存在楼层。

Leave a comment

Your email address will not be published. Required fields are marked *