1.邏輯AND指令:ANDW(FUN 34)/ @ANDW(FUN 34)---WAND/WANDP(FX2)
(1)格式: ANDW S1,S2,D S1,S2:來源通道或數據
D:目的通道或暫存器
(2)意義:ANDW是將兩個十六位元的數值進行邏輯AND運算,並將結果存於目的通道或暫存器中。
(3)舉例:
A.階梯圖 B.程式
|
C.說明:
a.一RUN之後, 30CH被放入數值#9065。
b.當按下00開關時,(2CH)=(30CH) ANDW #36C5 =#1045。
c.結果如下: 200、202、206、212動作,其餘不動作。
d.若結果中的所有位元都為0,則零位旗標25506=1
2.邏輯OR指令:ORW(FUN 35)/ @ORW﹙FUN 35)---WOR/WORP(FX2)
(1)格式: ORW S1,S2,D S1,S2:來源通道或數據
D:目的通道或暫存器
(2)意義:ORW是將兩個十六位元的數值進行邏輯OR運算,並將結果存於目的通道或暫存器中。
(3)舉例:
A.階梯圖 B.程式
|
C.說明:
a.一RUN之後, 30CH被放入數值#9065。
b.當按下00開關時,(2CH)=(30CH) ORW #36C5 =#B6E5。
c.結果如下: 200、202、205、206、207、209、210、212、213、215動作,其餘不動作。
d.若結果中的所有位元都為0,則零位旗標25506=1
3.邏輯互斥或指令:XORW(FUN 36)/@XORW(FUN 36)---WXOR/WXORP(FX2)
(1)格式: XORW S1,S2,D S1,S2:來源通道或數據
D:目的通道或暫存器
(2)意義:XORW是將兩個十六位元的數值進行邏輯互斥或運算,並將結果存於目的通道或暫存器中。
(3)舉例:
A.階梯圖 B.程式
|
C.說明:
a.一RUN之後, 30CH被放入數值#9065。
b.當按下00開關時,(2CH)=(30CH) XORW #36C5 =#A6A0。
c.結果如下: 205、207、209、210、213、215動作,其餘不動作。
d.若結果中的所有位元都為0,則零位旗標25506=1
4.邏輯互斥或非指令:XNRW(FUN 37)/@XNRW(FUN 37)
(1)格式: XNRW S1,S2,D S1,S2:來源通道或數據
D:目的通道或暫存器
(2)意義:XNRW是將兩個十六位元的數值進行邏輯互斥或非運算,並將結果存於目的通道或暫存器中。
(3)舉例:
A.階梯圖 B.程式
|
C.說明:
a.一RUN之後, 30CH被放入數值#9065。
b.當按下00開關時,(2CH)=(30CH) XNRW #36C5 =#595F。
c.結果如下: 200、201、202、203、204、206、208、211、212、214動作,其餘不動作。
d.若結果中的所有位元都為0,則零位旗標25506=1
5.反向碼指令:COM(FUN 29)/@COM(FUN 29)---CML(FX2)
(1)格式: COM D D:目的通道或暫存器
(2)意義:COM是將一個十六位元的通道內的數值反相後,再將結果存回此通道內。
(3)舉例:
A.階梯圖 B.程式
|
C.說明:
a.一RUN之後,2CH被放入數值#9065。此時200、202、205、206、212、215動作,其餘不動作。
b.當按下00開關時, (2CH) =#6F9A。
c.結果如下: 201、203、204、207、208、209、210、211、213、214動作,其餘不動作。
d.若結果中的所有位元都為0,則零位旗標25506=1
二、實習
1.題目說明:
教導式電路設計實例:輸入元件部份有1個學習按鈕、1個動作按鈕及5個教導按鈕,輸出元件則為5個輸出顯示燈。功能如後:先按學習鈕後,使用者可依任何順序一次按下一個教導按鈕(最多十次),之後當按下動作按鈕後,5個對應的顯示燈將依先前的教導鈕的壓按順序重覆顯示。例如教導按鈕按下的順序為0→4→1→2→3→1,則在按下動作鈕後燈的顯示順序為L0→L4→L1→L2→L3→L1。
2.設計步驟
(1)狀態分析:因為按鈕的順序是非固定式的,所以須使用記憶體來記住這些按鈕。在每按一次按鈕時,就將所有的按鈕取入,存在一記憶體位置內,就這樣依次的放入連續的記憶體中。等到按下動作鈕後,再依序從記憶體中取出,輸出給輸出元件就可以了。另外,由於記憶體位置是變動的,所以一定要使用間接定址的方式來存取。
(2)元件編號
|
(3)繪出階梯圖
A.先考慮輸入教導部份:輸入狀態取入是以一個通道為單位,所以取入的輸入不是只有教導按鈕而已,另外還包括學習鈕、動作鈕(05、06)還有未使用的輸入(07∼15),所以不能以MOV直接存入記憶體,而應先將不需要的輸入掩蓋(MASK)掉,方法是使用ANDW指令,如下:
由於0與任何一個狀態(0或1)AND的結果恆為0,所以如上表05∼15不管原有狀態為何,其結果均為0,即被掩蓋(MASK)掉了,只有00∼04保持原來的狀態。
B.每一次存入記憶體後,應將指標加1後再繼續存取,超過十次時應將位置指標歸零,重新儲存。
C.什麼時後取入呢?是當有任何一教導輸入被按時,我們使用微分指令,並將所有教導輸入並聯,以限制一次只能有一個按鈕被按,當按下任一按鈕後,除非放掉再按(微分功能),否則無效。再加上學習鈕後完整的教導輸入如圖。
D.輸出部份仍與前述一樣,只要將記憶體資料一一輸出即可,但是本例中,若使用MOV指令,則一次輸出16位元,所以除了L0∼L4(200∼204)之外,205∼215也會被更動,應予避免。方法如下:
a.先用ANDW 2,#FFE0,31 保留205∼215的狀態於通道31。
b.再用 ORW *DM0100,31,2 將205∼215加入並輸出到通道2。
c.加上動作鈕後完整的輸出如圖:
E.全圖如圖:
(4)撰寫程式並鍵入PLC中:
|
(5)接線
(6)執行