movs 数据传送指令_PLC中简单好用的传送指令功能,你学会了吗?
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課時
(技成培訓原創,作者:楊思慧,未經授權不得轉載,違者必究!)
如何0基礎學習PLC?
關注回復?“?工控全套?”?
獲取更多工控案例與電氣軟件大全!
你的分享、點贊、在看我都喜歡總結
以上是生活随笔為你收集整理的movs 数据传送指令_PLC中简单好用的传送指令功能,你学会了吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哪个公园能开电瓶车北京
- 下一篇: python 装饰器分类_Python