首页 理论教育 编写PAC编程基本教程数组位比较指令FBC

编写PAC编程基本教程数组位比较指令FBC

时间:2023-10-26 理论教育 版权反馈
【摘要】:位比较指令FBC是位对位的进行比较,针对一批位数据来操作,是处理能力较强的数组操作指令,因而指令的参数项较为复杂,如图12-1所示的指令界面。指令运行结果如图12-2所示,将源数组Array_Dint1与参考数组Array_Dint2进行比较,找到6个不匹配的位,顺序将对应的位置记录在结果文件中,请注意结果数组中记录的数值是由Control_FBC1.POS提供的位置值。数组处理的FBC指令并不在意数据对比数量的增加,对于这条指令来说,只是要修改一下数组长度。图12-5 FBC指令执行后的数据结果

编写PAC编程基本教程数组位比较指令FBC

位比较指令FBC是位对位的进行比较,针对一批位数据来操作,是处理能力较强的数组操作指令,因而指令的参数项较为复杂,如图12-1所示的指令界面。指令的执行是将源数组Array_Dint1和参考数组Array_Dint2中的双整数位对位地进行位逻辑的比较,这是一个寄存器的操作,发现位状态不同时,将对应的结果记录在结果数组Array_Dint3中。不同于我们之前学习的数组操作指令,这条指令的参数有3个操作数组和两个控制结构数据标签。

3个操作数组:

●源数组 比较对象,来自采集对象,是一组变化的信息,此为双整字数组。

●参考数组 参考量,事先设定的参照信息,是一组固定的信息,与源数组同等长度,共用同一个控制结构体,此为双整数数组。

●结果数组 记录源数组和参考数组对比不匹配结果的位号,在进行新的一轮比较之前,由于不能确定能否全部覆盖之前的旧记录,最好先清除结果数组,以保证结果可靠。此为双整字数组。

978-7-111-36030-8-Chapter12-1.jpg

图12-1 指令界面

两个控制结构数据标签:

●比较数组的控制结构数据标签 设定比较的模式,记录比较时的状态和位置,该长度设置指的是参加比较的位的数量而不是数组字的长度。

-每次记录一个不匹配模式 将禁止位IN设置为1。每当梯级条件跳变一次,指令搜索下一个不匹配位,如果发现一个不匹配的位,找到位FD置位,并记录不匹配位置,指令停止执行,直到找到位FD复位。

-整体模式 将禁止位设置为0。当梯级条件跳变时,指令执行将所有的位一次比较完毕,如果存在一个以上的不匹配位,找到位FD置位,并记录所有的不匹配位。

978-7-111-36030-8-Chapter12-2.jpg

图12-2 指令运行后数组的数据记录

●结果数组的控制结构数据标签 记录不匹配的比较结果,每当找到一个不匹配的位,便将该位的所在位置,即POS所指的位置值,依次记录下来。该长度一般与比较数组的控制结构数据标签的长度相等,以保证所有的位的不匹配结果都能记录下来。

指令运行结果如图12-2所示,将源数组Array_Dint1与参考数组Array_Dint2进行比较,找到6个不匹配的位,顺序将对应的位置记录在结果文件中,请注意结果数组中记录的数值是由Control_FBC1.POS提供的位置值。这是采用整体模式运行的结果。(www.xing528.com)

源数组和参考数组都必须定义为双整字数组,即使参加比较的位才16位,消耗不到一个双整字,也不能定义为一个双整字,而是应该定义为1个字长的双整字数组。在键入地址的时候,一定要键入数组的第0个双整字或某个起始双整字,而不是数组的标签名。

结果数组定义为双整字数组,其长度应该与被比较位的个数一致,每个比较位的位置记录都需要一个双整字来表达,在清除的时候,应该采用FLL指令来清除。

978-7-111-36030-8-Chapter12-3.jpg

图12-3 异或运算实例

FBC指令不同于DDT指令,它不修改参考数组,且参考数组的数据是事先设定并固定不变的。

让我们重新审视第6章逻辑运算中的异或运算实例,如图12-3所示,一共耗用了4个梯级才完成了两个双整字的运算,对比结果的尚未进行处理,仅仅能知道双整字的一个以上的位发生了改变,不能对哪些位有变化准确进行判定,否则还需耗用大量的梯级逻辑。如果要运算10个双整字,20个双整字,甚至更多的字,大量的重复性的梯级逻辑无疑是一个负担,且不说增加了控制器的资源耗用,无论是编程人员编写或是维护人员的解读都是异常繁琐。

数组处理的FBC指令并不在意数据对比数量的增加,对于这条指令来说,只是要修改一下数组长度。一条FBC指令就完成了我们在逻辑运算中的异或运算4个梯级的工作,要比较的字越多,数组处理的优势就越发明显,最重要的是,将比较结果整理归档成一个文件,为后续的数据处理提供了简洁而集中的信息。

编写一段梯级逻辑,完成两个双整字64位数组的比较,采用整体模式,如果找到一个以上不匹配的位,将比较结果COP到数据结果缓冲数组,交给后面的执行代码处理,如图12-4所示编写的梯级逻辑。

978-7-111-36030-8-Chapter12-4.jpg

图12-4 对64位进行比较的梯级逻辑

如图12-5所示是FBC指令执行后在数据表中所看到的数据结果。结果数组所提供的信息可以作为后续梯级逻辑处理的判断梯级条件。

978-7-111-36030-8-Chapter12-5.jpg

图12-5 FBC指令执行后的数据结果

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

我要反馈