
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>閱讀更多 Mr丶小白糖 的文章