当I0.0 =True(1)的时候,两个指令都得到了能流。计时器指令按照自己的属性进行计时。传送指令把源地址数据传送到目的地址,无论目的地址原来有什么值都执行传送更新目的地址。
当I0.0 =False(0)的时候,两个指令都没有了能流。计时器在没有能流的时候把当前值写成0,把计时器位写成False(0)。这个指令在False(0)的时候不是什么都不做的,而是在做False(0)时应该做的事情。有这样特点的指令还有输出线圈指令等。传送指令在没有能流的时候不再传送,不再理会目的地址。大量位于能流Zui右侧的指令都有这个特点。
三、双线圈
不追究这个词的历史背景了。反正大家都知道在一个程序里面对同一个线圈出现过两次输出线圈就是双线圈。
双线圈不会当作是一种错误程序。它完全可以按照程序的行为作出解释。也就是说它没有语法错误,可能会导致逻辑执行错误。
如图3所示的例子,可能作者希望自动动作时的三个步骤Q0.0得电。切换到点动的时候又可以控制Q0.0。结果,由于出现了双线圈,影响了期望的动作。这是双线圈Zui显著的错误使用。
图3程序
对于输出点Q,总是按照一个周期中Zui后一个输出指令刷新输出到物理点的。
下面举一个案例,看看怎么处理比较好?
有一个输出点,根据工艺已经做好了程序并且调试成功。程序片段如图4所示。
图4程序
突然甲方来了一个要求,要求Q0.0在原来的基础上并联一个现场按钮,无论Q0.0是否动作,现场按钮按下时,Q0.0都要为True(1)。现场按钮松开时,不影响原来的程序作用。要求,Q0.1不受现场按钮影响。于是如图5所示做了如下修改。
图5程序
Ok!程序没有问题。要是改成如图6所示的程序,结果会怎样?同样,这个程序也可以完成上述任务。
图6程序
这是一个双线圈的程序。第二个输出线圈由于带有第一个线圈的执行结果,触点先继承了前面所有的逻辑,在此逻辑下增加了一个现场按钮。解决了Q0.0的需求,又没有对Q0.1有任何的影响。程序却非常简单。
再看一个双线圈使用的例子。如图7所示:
图7程序
先看网络1 23。“报警”和“运行中”两个信号由于有公共相似的逻辑,用一个线圈把公共部分记录下来,再在下面的程序多次使用这样的公共部分。为了使程序简单一点,不用在报警和运行的线圈前都把相同的公共部分重复写一次。网络4才是Q输出点Zui终要达成的控制逻辑目的。Q只是在前面的工作中临时客串,义务送了一个人情。临时变量的影子也悄悄地在这个例子中流露出来。
四、多重赋值
多重赋值是说明一个地址,在程序多个地方都有出现对其写入的操作。双线圈是一种典型的多重赋值。执行写入的主动操作者可以是用户程序,可以是系统行为,可以是来自通讯端口改写。还可以是其他。
在早先一些PLC还不允许出现双线圈的时代,要绕过双线圈的规则,有这样的一种方法。程序开头对线圈复位。后面的自动程序需要什么步骤输出线圈,就用置位指令代替线圈指令。Zui终扫描结束输出物理信号的时候取决于是否对线圈置位,如图8所示,程序在“步1”、“步2”、“步7”,这三个步骤时输出。
图8程序