首页 理论教育 PAC编程:逻辑运算指令入门

PAC编程:逻辑运算指令入门

更新时间:2025-01-18 工作计划 版权反馈
【摘要】:逻辑运算指令是字操作指令,对一个字中的每个位进行逻辑操作,可用来完成位的批量处理,也是传统控制器产品常用的编程手段。逻辑运算指令的执行,基本上是寄存器的运算方式,留有很多硬件模式的处理痕迹。

逻辑运算指令是字操作指令,对一个字中的每个位进行逻辑操作,可用来完成位的批量处理,也是传统控制器产品常用的编程手段。逻辑运算指令的执行,基本上是寄存器的运算方式,留有很多硬件模式的处理痕迹。当一个硬件控制系统升级到可编程控制系统时,很多相应的硬件逻辑门的处理就转变成了逻辑运算处理。

逻辑运算指令如下:

●AND与逻辑运算指令;

●OR或逻辑运算指令;

●XOR异或逻辑运算指令;

●NOT求反逻辑运算指令。

逻辑运算是针对字来操作的,但我们需要查看的却是位,可在数据表中,将操作对象的标签从十进制显示方式改为二进制显示方式,这样可以得到离散量的表达形式,看起来更直观。下面梯形图中的逻辑运算对象的标签在数据表中是改成了二进制显示方式的。

逻辑运算在实际运用中比较常见的是位的异或运算,利用这个运算关系可以判断出位状态是否发生变化,这正是很多运行状况所需要的判断,编写梯级逻辑如图6-25所示。

当梯级条件成立时,输入字Input1与参考字Refrence1进行异或运算,输入字Input2与参考字Refrence2进行异或运算,每个字的所有位同时参加异或运算,相同结果为0,不同结果为1。只要结果字Result1_XOR或Result2_XOR中的任何一个位是不同结果为1,也即字中的任何一位状态发生了改变,则比较指令的梯级条件成立,将找到位Find1或Find2置位并锁定。

根据产生的结果不同,Find1或Find2所控制的后续梯级逻辑还要作相应处理。此处使用大于指令GRT可判断字的结果是非0的情况;使用不等于指令ENQ也可判断字的结果是非0的情况。

异或的运算属于字操作指令,一次只能处理一个字,当我们需要很多个字进行异或运算比较时,不得不重复地进行如上操作,耗用了大量梯级逻辑,这在早期梯形图逻辑中是很常见的。在后面的第12章特殊指令中,我们将看到异或操作数组处理的威力,不过相应的那条指令并不直接称为异或数组运算,但它所完成的任务却实实在在是异或数据的批量操作。

在第12章特殊指令中,我们将讨论数组操作的诊断检测指令DDT的批量数据比较结果的处理方法,其比较结果的记录及时而完整。(www.xing528.com)

还有一种处理需求是,不但需要判断比较对象的不同,还要改写参考量,令参考量与刚发生改变的比较对象一致,等待下一次的比较,如图6-26所示的梯级逻辑。

当梯级条件成立时,输入字Input3与参考字Referce3进行异或运算,输入字Input4与参考字Refrence4进行异或运算,每个字的所有位同时参加异或运算,相同结果为0,不同结果为1。只要结果字Result3_XOR或Result4_XOR中的任何一个位是不同结果为1,也即字中的任何一位状态发生了改变,则比较指令的梯级条件成立,将找到位Find1或Find2置位并锁定。然后将输入字传送到参考字,修改后的参考字将作为下次的比较参考。

找到位Find3或Find4作为某个梯级条件,用来控制因发生变化而要执行的动作。

完成这种需求的数组处理指令是DTR,这是一条输入指令,用来监视数据的变化,一旦数据发生变化,将产生梯级条件为真,用来控制后面的输出指令。DTR指令将在后面第12章特殊指令中讨论。

978-7-111-36030-8-Chapter06-24.jpg

图6-25 异或比较梯级逻辑

978-7-111-36030-8-Chapter06-25.jpg

图6-26 异或比较参数修改梯级逻辑

从以上两例逻辑运算来看,异或运算只是单一的运算,通过这样的逻辑运算得到一个结果,这很像硬件寄存器的处理方式,要有更多的判断和处理,还需要配合其他梯级的逻辑编写。异或运算一旦进化成数组处理方式,不但可以进行批量的处理,还具有判断和记录的功能,在后面的章节我们会继续讨论。

在任何算术逻辑运算中,不管是源字还是目标字,使用短整型字或整型字是很不合算的,因为这样的数据类型进入CPU处理之前要换成CPU能处理的基本数据单元,处理之后的数据仍为基本数据单元,还要换为指定的短整型字或整型字,这个过程不但需要耗用额外的数据单元来缓存数据,还要耗用时间来转换,这种时间空间的消耗可能超乎了你的想象,比起使用基本数据单元操作数,内存耗用和时间消耗竟然多达10倍以上,这就是我们在很多手册中看到反复强调要使用双整型字和实数字的原因。在编程软件的指令集介绍中,可以看到大多数指令可使用的数据类型列表中,双整型字和实数字是用黑体字显示的,表示推荐使用的数据类型,请留意。

所有涉及字以及字数组的指令操作都是同样的道理,有关字操作的指令,源地址和目标地址的数据类型选择必须基于这样的考虑。千万不要以为使用更短的数据类型可以节省空间,这是极大的误解。当我们不得不使用单整型字时,大多是因为需要跟传统的处理器PLC5或SLC500进行数据的交换,一般情况下应该尽可能地避免使用非基本数据单元的数据处理,尽可能地使用双整型字和实数字。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈