数据处理指令包括数据移动指令、交换/填充存储器指令及移位指令等。数据移动指令非常有用,特别在数据初始化、数据运算和通信时经常用到。
1.数据移动指令
数据移动指令也称传送指令。数据移动指令有字节、字、双字和实数的单个数据移动指令,还有以字节、字、双字为单位的数据块移动指令,用以实现各存储器单元之间的数据移动和复制。
单个数据移动指令一次完成一个字节、字或双字的传送。以下仅以移动字节指令为例说明移动指令的使用方法,移动字节指令格式见表4-18。
表4-18 移动字节指令格式
当使能端输入EN有效时,将输入端IN中的字节移动至OUT指定的存储器单元输出。输出端ENO的状态和使能端EN的状态相同。
【例4-24】VB0中的数据为20,程序如图4-56所示,试分析运行结果。
图4-56 移动字节指令应用举例
【解】当I0.0闭合时,执行移动字节指令,VB0和VB1中的数据都为20,同时Q0.0输出高电平;当I0.0闭合后断开,VB0和VB1中的数据都仍为20,但Q0.0输出低电平。
移动字、双字和实数指令的使用方法与移动字节指令类似,在此不再说明。
【关键点】读者若将输出VB1改成VW1,则程序出错。因为移动字节的操作数不能为字。
2.成块移动指令(BLKMOV)
成块移动指令即一次完成N个数据的成块移动,成块移动指令是一个效率很高的指令,应用很方便,有时使用一条成块移动指令可以取代多条移动指令,其指令格式见表4-19。
表4-19 成块移动指令格式
【例4-25】编写一段程序,将VB0开始的4个字节的内容移动至VB10开始的4个字节存储单元中,VB0~VB3的数据分别为5、6、7、8。
【解】程序运行结果如图4-57所示。
图4-57 成块移动字节程序示例
数组1的数据:5678
数据地址:VB0 VB1 VB2 VB3
数组2的数据:5678
数据地址:VB10 VB11 VB12 VB3
成块移动指令还有成块移动字和成块移动双字,其使用方法和成块移动字节类似,只不过其数据类型不同而已。(www.daowen.com)
3.字节交换指令(SWAP)
字节交换指令用来实现字中高、低字节内容的交换。当使能端(EN)输入有效时,将输入字IN中的高、低字节内容交换,结果仍放回字IN中。其指令格式见表4-20。
表4-20 字节交换指令格式
【例4-26】如图4-58所示的程序,若QB0=FF,QB1=0,在接通I0.0的前后,PLC的输出端的指示灯有何变化?
图4-58 交换字节指令程序示例
【解】执行程序后,QB1=FF,QB0=0,因此运行程序前PLC的输出端的QB0.0~QB0.7指示灯亮,执行程序后QB0.0~QB0.7指示灯灭,而QB1.0~QB1.7指示灯亮。
4.填充存储器指令(FILL)
填充存储器指令用来实现存储器区域内容的填充。当使能端输入有效时,将输入字IN填充至从OUT指定单元开始的N个字存储单元。
填充存储器指令可归类为表格处理指令,用于数据表的初始化,特别适合于连续字节的清零,填充存储器指令格式见表4-21。
表4-21 填充存储器指令格式
【例4-27】编写一段程序,将从VW0开始的10个字存储单元清零。
【解】程序如图4-59所示。FILL是表指令,使用比较方便,特别是在程序的初始化时,常使用FILL指令,将要用到的数据存储区清零。在编写通信程序时,通常在程序的初始化时,将数据发送缓冲区和数据接受缓冲区的数据清零,就要用到FILL指令。此外,表指令中还有FIFO、LIFO等指令,请读者参考相关手册。
图4-59 填充存储器指令程序示例
当然也可以使用BLKMOV指令完成以上功能。
【例4-28】如图4-60所示为电动机Y-△起动的电气原理图,请编写程序。
图4-60 电气原理图
【解】前10s,Q0.0和Q0.1线圈得电,星形起动,从第10~11s只有Q0.0得电,从11s开始,Q0.0和Q0.2线圈得电,电动机为三角形运行。梯形图如图4-61所示。
图4-61 电动机Y-△起动梯形图
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。