傳送與比較指令

傳送與比較指令

3.3.1 比較指令----------------------CMP

3.3.2 區域比較----------------------ZCP

3.3.3 傳送指令-----------------------MOV

3.3.4 位移動傳送-----------------------SMOV

3.3.5 反向傳送-----------------------CML

3.3.3 成批傳送-----------------------BMOV

3.3.7 多點傳送-----------------------FMOV

3.3.8 數據交換-----------------------XCH

3.3.9 BCD交換-----------------------BCD

3.3.10 BIN傳送------------------------BIN

3.3.1 比較指令CMP

例: [CMP D1 D2 M0]

兩個數D1與D2進行比較,M0開始的三位作為比較結果

當D1>D2時,則M0線圈接通

當D1=D2時,則M1線圈接通

當D1

傳送與比較指令

當執行完指令後,即使條件X0斷開,最後的比較結果M0,M1,M2還是保持上次的比較結果不變。

指令不執行時,想要清除比較結果的話,可使用復位指令。

傳送與比較指令

3.3.2區域比較ZCP

區域比較為三個數進行比較,比較的結果存放在後面的位軟元件及緊隨其後的兩位軟元件中。

例:[ZCP K100 K200 D0 M5]

其中K100、K100、D0是三個要比較的數,M5及緊隨M5後面的兩位M3、M7作為比較結果

具體的比較方法:

當K100>D0時 則M5線圈接通

當K100

當D0最大時 則M7線圈接通

程序舉例:

傳送與比較指令

如上圖所示,當條件X0接通,開始執行比較指令,通過對三個數K100、K120及C30進行比較,把比較結果存放在M3開始的三位軟元件M3、M4、M5裡面

其比較過程如下:

若C30<k100>

若K100<=C30<=K120(即C30在兩個數中間),則M4線圈接通

若C30>K120(即C30最大),則M5線圈接通

我們可以根據線圈M3、M4、M5的通斷情況來判斷這三個數的大小關係。

當執行完指令後,即使條件X0斷開,最後的比較結果M3,M4,M5還是保持上次的比較結果不變。指令不執行時,若要清除比較結果的話,同樣可用復位指令。

區域比較指令是3個數之間的比較,其中第一個比較數一定要小於第二個比較數,這是區域比較的基本規則。

注:CMP與ZCP都是比較指令,其比較結果是位軟元件,當在程序裡使用M7作為比較結果時,跟在其後面的2位軟元件M8、M9被佔用,作為比較結果,為防止重複使用,在編寫下面的程序時務必要注意避開使用。

3.3.3 傳送指令MOV

程序1:

傳送與比較指令

當X0接通,則指令將K100傳送到D10寄存器裡面,即D10=100。只要X0接通,程序掃描一次,指令就執行一次。

此後,即使X0斷開,D10裡的數據保持100不變。

程序2:

傳送與比較指令

如上程序,MOVP指令,同樣也是傳送指令,當條件X1接通時,指令是把D1寄存器數據傳送到D2寄存器裡,然後把0傳到D1寄存器裡。

但是MOVP指令為脈衝型指令,即當條件X1接通時,程序只執行一個掃面週期,第二次掃面時,指令就不會再執行了。

程序3:

傳送與比較指令

當X1接通,則指令將定時器T0當前的計時時間傳送到D20裡面。

定時器、計數器設定值的間接指定示例:

傳送與比較指令

把D10的當前值作為定時器T20的設定定時時間。

位軟元件的傳送:

傳送與比較指令

如上程序,左邊的梯形圖程序可用後邊程序代替。執行結果完全相同。

32位數據的傳送

運算結果以32位輸出的應用指令,必須使用D指令;

傳送與比較指令

如上程序,當指令條件接通,則把D0,D1組成的32位數據寄存器傳送到D10,D11組成的32位數據寄存器裡

C235本身是32位計數器,指令把C235的當前計數值傳送到D20、D20組成的32位數據寄存器裡

注:在下面的所有指令中,可以很多都會涉及到指令後面加“P”,或者指令前面加“D”,其用法都是一樣的,在分析指令時,就不重複講了。

加了“P”之後,指令即脈衝型了,當滿足指令執行條件,指令只執行一個掃面週期,第二次掃描就不執行此指令了。

加了“D”之後,指令即32位型指令,即把原13位寄存器與其後面一個13位寄存器組合成32位寄存器使用。

3.3.4位移動指令SMOV

程序舉例1:

SMOV D1 K4 K2 D2 K3

∕ ∣ \

D1的第四位 傳2位 傳到D2的第三位

第四位 第三位 第二位 第一位

\ ∣ ∣ /

D1= 0 1 2 3

\ \

第四位 第三位 第二位 第一位

\ ∣ ∣ /

D2= 0 0 1 0

如上:若D1=123,則指令分別將D1的第四位及第三位(0,1)傳到D2的第三位及第二位中,D2的其他位數據不變.

程序舉例2:

傳送與比較指令

3.3.5 反向傳送

希望將可編程控制器的輸出以邏輯反向輸出時,可以使用。

[CML D1 K1Y0] 把D1的每位取反(0變1,1變0)後,傳到K1Y0

傳送與比較指令

當條件X0接通,指令執行:

傳送與比較指令

D0由13位二進制數組成,K1Y0是Y0-Y3組成的4位二進制數

執行指令後,把D0的前4位二進制的狀態一一傳送給Y0-Y3.

反向輸入的讀取:

傳送與比較指令

左圖的兩個程序可用右邊的程序代替。結果完全一樣。

某些應用指令在某些場合能用很方便、很簡化的方式編寫程序。

3.3.6 成批傳送BMOV

將指定的軟元件為開頭的N點數據向以目標指定的軟元件為開頭的N點軟元件成批傳送。

傳送與比較指令

上圖當條件X0接通,指令將執行圖右邊的變化

將D5的數據傳送到D10裡面

將D3的數據傳送到D11裡面

將D7的數據傳送到D12裡面

帶有為指定的位軟元件時,源和目標要採用相同的位數。

傳送與比較指令

上圖中K1M0是4位組合,K1Y0也是4位組合,其執行結果如右圖所示

特殊繼電器M8024能控制BMOV指令的傳送方向:

如下程序:

傳送與比較指令

當X0接通時,特殊繼電器M8024線圈接通,此時傳送結果為D10向D5傳送

D11向D3傳送

D12向D7傳送

3.3.7 多點傳送FMOV

將指定的軟元件的內容向以目標指定的軟元件為開頭的N點軟元件進行傳送。

N點軟元件的內容都一樣。

傳送與比較指令

傳送與比較指令

當條件X0接通,K0傳送到D0-D9一共10個每一個寄存器中

如要把一系列的數據寄存器清0,或者賦相同的值,用此指令會比較方便。

3.3.8 交換指令XCH

XCH指令使目標間的數據相互交換

傳送與比較指令

執行前 D10=100 → 執行後 D11=120

D10=120 D11=100

交換指令的特殊用法:

如下程序:

傳送與比較指令

傳送與比較指令

當特殊繼電器M8130線圈接通時,去交換的兩個數據相同時,低8位與高8位可以交換。

32位指令的情況也一樣。

3.3.9 BCD交換

指令將源數據的BCD碼傳給目標地址

如下程序:

傳送與比較指令

當指令條件X0接通,則指令將D12的BCD碼傳給K2Y0

若D12=34 ,則BCD上面程序執行過程見下圖:

傳送與比較指令

當K2Y0被用作七段顯示器上的輸出點時,則Y0--Y3能顯示數字“4”,Y4--Y7能顯示數字“3”。

一般一個七段顯示器只能顯示一個數字,並且需要由4個輸出點來控制,若要顯示一個2位數,則須有2個顯示器來顯示。如上程序,要顯示“34”這個2位數,則3用一個顯示器來顯示,4用另外一個顯示器來顯示。

3.3.10 BIN傳送

程序舉例:

傳送與比較指令

當條件X0接通,則指令把K2X0的BIN碼傳到D13裡面

傳送與比較指令

注:當數據源不是BCD碼時,會發生運算錯誤。

數據的比較還有下面幾種:

傳送與比較指令

如上程序,比較條件前面為“>”符號,則當D0寄存器的數據大於3時,此條件成立,Y001線圈就接通

傳送與比較指令

如上程序,比較條件前面為“

還有“=”、“>=”、“<=”等符號都是把比較當作條件來使用,當滿足此比較條件時,此條件和觸點一樣接通。

/<k100>


分享到:


相關文章: