「原创分享」简单好用的传送指令功能,你学会了吗?
PLC的各种功能指令中,传送指令的使用非常频繁,且相对简单。一说到简单,我猜已经有很多人蠢蠢欲动,迫不及待地想征服这个传送指令了。那么,废话不多说,我们开始这次的学习分享吧!
在学习各种传送指令之前,我们得先了解什么是传送指令!
一、传送指令是什么
区别于信息传递中的数据通信,我们今天讲的PLC中的数据传送指令是针对PLC内部软元件之间的数据传送。基于之前所学的各种软元件,确切地说,传送指令是应用于各种字元件之间的数据传送。
每个字元件都存有自己的数据,有的字元件非常霸道,想把自己的数据霸占别的字元件,在别的字元件上也存上自己的数据,这个霸占的过程就是通过传送指令实现的。传送指令就像是各个字元件之间数据战争的武器 ,你霸占我,我霸占你,枪林弹雨,烽火连天。
在三菱FX 2N中,传送指令有 MOV、SMOV、CML、BMOV、FMOV 五种,它们传送数据的形式各不相同。那到底有哪些不同呢?我们接着往下看。
二、MOV传送指令
从编程手册中可以看到,MOV指令的操作数源址(S·)可以适用于所有的字元件,即S可以是任何的字元件,包括各种组合位元件、常数K、H等,而操作数终址(D·)除了不能是KnX、K、H外,可适用于其他字元件。且源址和终址都可进行变址寻址。
当驱动条件X0成立时,PLC将源址S中的数据传送到终址D中,此时S的内容不变,而D的内容变得和S一样。这就像我上文提到了,霸道S将自己的数据硬塞给D,并把D原来的数据给挤掉了,简直是欺元件太甚!
MOV指令比较简单,它是功能指令中应用最多的基本功能指令。MOV指令可以通过组合位元件的形式对各种位元件进行清零和置位,或者对各种字元件进行读写操作。
如下图所示,执行MOV K15 K2Y0后,将K15用二进制数表示,并控制Y0~Y7的状态。此时Y0~Y3的状态变为1(ON),Y4~Y7的状态变为0(OFF)。
再如MOV D10 D20,将D10的内容传送到D20中,若D10的内容为(H98),则执行该指令后D20的内容也变为(H98)。
依次类推,MOV C0 D10 、MOV T0 D20、DMOV D0 D5等指令的理解相信难不倒大家,例如MOV T0 D20:将定时器T0的当前值传送到D20中……
MOV指令更多的应用,还是要结合实际的案例分析才能深刻体会,本身该该指令的理解也不难,所以,在这里我不再过多阐述。
三、SMOV数位传送指令
所谓数位(digit),就是以4个二进制数组成的数据量,类似于字节由8位二进制数组成,字由16为二进制数组成。 显然,一个字节可以由两个数位组成,一个字可以由4个数位组成。
基于对数位的理解,SMOV数位传送指令就是将数据按数位为单位进行传送。从编程手册中可以看到,SMOV指令的动作为SMOV S· m1 m2 D· n,其中S、D是数据传送的源址和终址,这个和MOV指令类似。
上文提到,一个字可以由4个数位组成,依此将这4个数位从右到左排列,编号分别为K1、K2、K3、K4,如上图所示。
这样我们就可以很快地解读SMOV指令。如SMOV D0 K4 K2 D10 K2 : 将D0寄存器按数位划分,从K4开始的连续2个数位的内容传送到D10的K2、K1两个数位中,如下图所示。所以,在传送数据的时候,连续数位是按从左到右排的,当m1=K4时,最多可以传送4个连续数位K4、K3、K2、K1的内容;当m1=K3时,最多可以传送3个连续数位K3、K2、K1的内容,依次类推。
显然,m1、m2、n之间有着一定的约束关系,即只有当m1≥m2,n≥m2,SMOV指令才有意义。例如SMOV S· m1 m2 D· n 中,若m1=K2,对S而言,只有K2、K1的内容可以传送,K4、K3的内容无法传送。
另外,SMOV指令执行有两种模式:BCD码执行模式和十六进制数执行模式。当特殊继电器M8168=OFF时,SMOV指令执行BCD码模式;当特殊继电器M8168=ON时,SMOV指令执十六进制数模式。
所谓BCD码其实就是十进制数,如上图所示,当M8168=OFF时,将D0的内容(K9864)中的“986”传送到D10中。显然,此时D0的内容只能为K0000~K9999。只有当SMOV指令执行十六进制数执行模式时,D0中的内容可以为H0000~HFFFF。
SMOV数位传送指令的理解也不难,在应用的过程中注意m1、m2、n的大小就行了。
四、CML取反传送指令
CML取反传送指令,顾名思义,就是将数据取反后再传送。所谓取反,就是将“1”变为“0”,将“0”变为“1”,如下图所示,执行指令CML D0 D10 ,若D0的内容为(K13),将K13转换为二进制数后取反,再传送到D10中。
CML反传送指令更为简单,在这里我也不再过多讲解。
五、BMOV成批传送指令
BMOV成批传送指令,和上文的几种传送指令有比较大的区别,因为它所传送的数据比较多,是用于多个字元件之间数据传送。简单理解就是将首地址为S的n个字元件的数据传送到以D为首地址的字元件中,其中n是传送字元件的个数,n≤512。
例如BMOV D0 D10 K10 :将D9~D0的数据分别传送到D19~D10中。
在应用BMOV指令时要注意的两点,一是字元件的编号重复问题。如下图所示,执行指令BMOV D10 D11 K5 ,若按编号小的元件开始传送,先是D10的内容传送到D11中,然后D11的内容传送到D12中,D12的内容传送到D13中……显然,传送完毕后D15~D10的内容相同,均为D10的内容。
根据以上字元件编号重复的问题,在三菱FX 2N中,作出以下规定:
(1)当源址编号大于终址编号时,其传送顺序从编号小的到编号大的;
(2)当源址编号小于终址编号时,其传送顺序从编号大的到编号小的;
所以上图的指令BMOV D10 D11 K5中,源址D10小于终址D11,其传送顺序从编号大的开始,也就是先把D14的内容传送到D15中,然后把D13的内容传送到D14中……这样就不会造成D11~D14的内容无法传送的问题。
在应用BMOV指令时要注意的另外一点是数据传送方向的问题。BMOV指令不仅可以将源址的数据传送给终址,也可以调转方向,将终址的数据传送给源址,也就是说BMOV指令可以双向传送数据。
BMOV指令的数据传送方向是由特殊继电器M8024的状态决定的,当M8024=OFF时,传送方向是从源址传向终址;当M8024=ON时,传送方向是从终址传向源址。
六、FMOV多点传送指令
知道了BMOV成批传送指令后,再来看FMOV多点传送指令会简单很多,如果说MOV指令是一对一、BMOV指令是多对多,那么FMOV指令就是一对多。
如上图的编程手册所示,当驱动条件X0成立时,将字元件S的内容传送到起始地址为D的n个字元件中。像上文所说的,数据的传送就像是字元件之间的相互霸占,而各种指令就是数据传送的武器。MOV指令就像是手枪,霸道S通过MOV指令只能将自己的数据传送给一个D,把D原来的数据给挤掉;FMOV指令就像是M416步枪,霸道S通过FMOV指令将自己的数据传送给一批D,把n个D原来的数据都给挤掉。可见FMOV指令的威力有多大。
不管是什么传送指令,其归根结底也就是数据的传送,我们只有在理解了这些指令的含义之后,才能理解它们在梯形图中的作用。另外,我所分享的内容也只不是皮毛,想要熟练掌握这些传送指令,还是要结合实际程序案例分析。
那么,这次的学习分享就到这里啦,共勉!
注:本文章内容都是基于三菱FX PLC 所写
选自《三菱FX系列PLC功能指令详解》第二章第12~16课时
(技成培训原创,作者:杨思慧,未经授权不得转载,违者必究!)
↓免费学习资料
详解几个使用频率较高的S7-200SMART PLC传送指令,PLC编程不慌张
在编写程序的过程中,经常会碰到存储区中的数值需要改变,或者数据在PLC中存储位置需要改变,这就需要用到传送指令。
首先我们介绍一下标准的一对一传送指令:MOV指令 ;将IN端输入数据复制一份移至OUT输出端,数据类型不同需要用的传送指令也不同,有如下几种。
说明:
1.只要检测到EN条件闭合,就发生数据传送,每个扫描周期执行一次。
2.值的传送过程为IN复制到OUT,OUT中原本数据被覆盖掉,IN中数据仍然保留。
3.对IN的参数可以是常数也可以是变量,对OUT必须是变量。IN为常数时,通常称为赋值。
4.每种指令对应的数据类型必须匹配,否则会发生错误。
5.对定时器和计数器用字传送指令,传送的是当前值。
6.实数传送即浮点数传送,因为浮点数都是32位,所以操作数也为VD。不能与双字传送混用。
7.ENO为能流输出,可以再接其它指令,如常开,常闭,输出,置位,复位等。不接指令时不得延长否则编译报错。
立即传送指令
移动字节立即读取指令读取物理输入 IN 的状态,并将结果写入存储器地址 OUT 中,但不更新过程映像寄存器。
传送字节立即写入指令从存储器地址 IN 读取数据,并将其写入物理输出 OUT 以及相应的过程映像位置。
块传送指令
将相邻的几个数据同时传送到另外几个相邻的寄存器中。块传送应避免地址重叠,否则容易发送数据传输错误。
以BLKMOV_B为例说明指令的执行过程:将IN(VB0)开始的N(5)个数据复制到OUT(VB5)开始的N(5)个寄存器中,N为1-255。三种块传送原理相同,只是存储空间大小不同而已。
字填充指令
将IN中字类型的存储器或常数写入从地址OUT开始的N个字寄存器中。N的范围是1—255。
典型应用:批量清零,初始化。
交换指令
每执行一次,将IN中的字寄存器的高字节和低字节交换一下。
字交换方法:两个字要进行互换,没有直接指令,可以使用传送指令进行交换。
比如要将VW100和VW102中的数据互换,可用如下程序实现:
免责声明:本文转自网络,版权归原作者所有,如涉及作品版权问题,请及时与我们联系删除,谢谢!
相关问答
plc数据传送指令是什么啊?实在看不懂?
你这是看的西门子PLC的资料书吧?而且还是200的PLC西门子PLC中的传送指令就是MOVES7300\400\1200\1500程序中的MOVE指令一样200和200SMART中的MOVE指...
西门子plc数据传送指令应用?
1楼正解。如你所言,常开触点I0.0常闭触点I0.1和传送指令MOV_B组成网络1,当MOV_B指令前的条件满足时,会将值1赋给QB0,也就是将Q0.0置1。这时你若按下常闭触...
PLC什么是传送和比较指令,作用是什么?
传送是MOV,作用是将数值传送至数据寄存器这些软元件上,如【MOVK1D1】就是将K1传到D1这里了,是覆盖性的,也可以将软元件的数值传到软元件上,如【MOVD1D2】这...
plc传送指令的本意是什么?
1.PLC传送指令的本意是为了实现自动化控制系统中不同设备之间的信息传递和协调操作。2.传送指令的原因是因为在自动化控制系统中,不同设备之间需要进行信息...
plc数据传送指令是什么啊?实在看不懂?
这个指令是常用指令一般plc都是mov传送。具体功能可以把数据送到另外一个存储区例如,xomovk100d0这句就是x0接通把常熟十进制100送到D0存起来。K100也可...
西门子plc传送指令求高手详解,通俗易懂最好?
比如A是数字5,B是数据快块传送指令A到B就是把数字5送到数据块中比如A是数字5,B是数据快块传送指令A到B就是把数字5送到数据块中
三菱plc批量传送指令的使用方法?
操作方法01我们首先需要编写一个开关用于将一组数据传送至三个寄存器:这个开关使用X0,在左母线右侧输入LDX0,即可输入该触点。02我们以传送三组数据为例...
西门子plc的传送指令于传送地址?
mov-b用于字节的传送,例如:利用mov-b将VB0的值传送给VB2。mov-w用于字的传送,例如:利用mov-w将Vw0的值传送给Vw2。mov-dw用于双字的传送,例如:利用mov-.....
西门子PLC指令MOV-B传送指令?
三菱plc中的传送指令怎样可以实现像西门子那样例如西门子的2#01101000通过mov三菱的也有传送指令(MOV)。比如你想让三菱PLC的Y0到Y7都有输出,那你在三菱plc...
三菱plc怎么发送程序?
三菱PLC可以通过编写程序并将其上传到PLC中来发送程序。首先,需要使用三菱PLC编程软件(如GXWorks2)编写程序。然后,将PLC与计算机连接,并使用编程软件将程...