“四选一”程序是《自学自会plc指令——三菱FX2N编程技术及应用》(莫操君编著)的一个试验模型,它是实际问题的提炼,描述的是:<?xml:namespace prefix = o />
给定四个输入X0、X1、X2、X3,四个输出Y0、Y1、Y2、Y3;每个输入对应一个输出,但每次最多仅允许一个输出接通;四个输入中,每次仅有一个接通,才允许有对应输出。
并且,假定当输入X0~X3全部断开时,输出Y0~Y3保持前一状态不变;参见表1。
表1输入输出的一一对应关系
序号 |
输入 |
输出 |
说明 |
备注 |
1 |
X0 |
Y0 |
X0单个接通、Y0接通 |
输出Y0~Y3中,不允许有两个或两个以上同时接通 |
2 |
X1 |
Y1 |
X1单个接通、Y1接通 | |
3 |
X2 |
Y2 |
X2单个接通、Y2接通 | |
4 |
X3 |
Y3 |
X3单个接通、Y3接通 |
当输出是继电器、接触器信号时,虽然在外电路中,可以通过互锁等连结方式,来保证输入信号的唯一性,但作为PLC程序,仍必须考虑信号的正确与否,以保证在接线错误、程序调试时强制接通元件等情况下,系统能够正常工作。
所以,对于该问题的编程思路,可以是:
(1)判断信号是否正确;
(2)根据输入信号状态决定输出。
而且假定,当先有一个输入接通(例如X0)、对应输出Y0接通时,X0不断开、再接通X1时,输出状态保持不变,即:Y0接通、Y1~Y3断开。
而为了简化问题,当再次只有一个输入接通时,其动作情况暂不作要求,可以是立即转换到对应输出;实际编程时,可根据系统情况作出规定。
1.判别是否只有一个输入接通
对于输入信号数量的判别,《自学自会PLC指令——三菱FX2N编程技术及应用》(下称文献[1])分别用SUM、ADD、FOR、LD=、INC等指令进行了介绍。
按照文献[1]的思想,试验时可以寻求一个问题的不同解法,以熟悉指令和积累编程经验,故本文试用移位指令来进行编程,参见图1。
图1程序,当X0~X3中,只有一个接通时,M100接通;而当有两个或两个以上接通时,M20接通,M100断开。由于本问题,仅需要判断是否只有一个输入接通,而不需要具体数量,故图1程序能够满足使用要求。
但是对于图1的程序,随着输入接通个数的增加,M11、M12、M13均可以接通。
为了方便使用,如果设想,当只有一个输入接通时、则仅M10接通,而两个输入接通时、仅M11接通,三个输入接通时、仅M12接通,四个输入接通时、仅M13接通,能否做到呢?为此,试编制一个程序如图2所示。
图2中,为便于试验观察,特设定Y4~Y7作为M10~M13的动作指示。手头没有PLC时,也可以用软件仿真来验证结果。
这样,当图1中的M100接通、或者图2中的M10接通,就表示输入信号正确,允许有对应输出继电器接通。
于是,可以进行第2步的程序编制了。