一、西門子PLC編程指令
1、位邏輯指令
1.1 -||- 常開接點(地址);
1.2 -|/|- 常閉接點(地址);
1.3 XOR 位異或;
1.4 -|NOT|- 信號流反向;
1.5 -( ) 輸出線圈;
1.6 -(#)- 中間輸出;
1.7 -(R) 線圈複位;
1.8 -(S) 線圈置位;
1.9 RS 複位置位(置位複位)觸發器;
1.10 -(N)- RLO下降沿檢測;
1.11 -(P)- PLO上升沿檢測;
1.12 -(SAVE) 將RLO存入BR存儲(chu) 器;
1.13 MEG 地址下降沿檢測;
1.14 POS 地址上升沿檢測;
2、比較指令
2.1 CMP?I 整數比較;
2.2 CMP?D 雙整數比較;
2.3 CMP?R 實數比較
3、轉換指令
3.1 BCD_IBCD碼轉換為(wei) 整數;
3.2 I_BCD 整數轉換為(wei) BCD碼;
3.3 I_DINT 整數轉換為(wei) 雙整數;
3.4 BCD_DIBCD碼轉換為(wei) 雙整數;
3.5 DI_BCD 雙整數轉換為(wei) BCD碼;
3.6 DI_REAL 雙整數轉換為(wei) 浮點數;
3.7 INV_I 整數的二進製反碼;
3.8 INV_DI 雙整數的二進製反碼;
3.9 NEG_I 整數的二進製補碼;
3.10 NEG_DI 雙整數的二進製補碼;
3.11 NEG_R 浮點數求反;
3.12 ROUND 舍入為(wei) 雙整數;
3.13 TRUNC 舍去小數取整為(wei) 雙整數;
3.14 CEIL 上取整;
3.15 FLOOR 下取整;
4、計數器指令
4.1 S_CUD 加減計數;
4.2 S_CU 加計數器;
4.3 S_CD 減計數器;
4.4 -(SC) 計數器置初值;
4.5 -(CU) 加計數器線圈;
4.6 -(CD) 減計數器線圈;
5、數據塊指令
5.1 -(OPN) 打開數據塊:DB或DI;
6、邏輯控製指令
6.1 -(JMP) 無條件跳轉;
6.2 -(JMP) 條件跳轉;
6.3 -(JMPN) 若非則跳轉;
6.4 LABEL 標號;
7、整數算術運算指令
7.1 ADD_I 整數加法;
7.2 SUB_I 整數減法;
7.3 MUL_I 整數乘法;
7.4 DIV_I 整數除法;
7.5 ADD_DI 雙整數加法;
7.6 SUB_DI 雙整數減法;
7.7 MUL_DI 雙整數乘法;
7.8 DIV_DI 雙整數除法 ;
7.9 MOD_DI 回送餘(yu) 數的雙整數
8、浮點算術運算指令
8.1 基礎指令
8.1.1 ADD_R 實數加法;
8.1.2 SUB_R 實數減法;
8.1.3 MUL_R 實數乘法;
8.1.4 DIV_R 實數除法;
8.1.5 ABS 浮點數絕對值運算;
8.2 擴展指令
8.2.1 SQR 浮點數平方;
8.2.2 SQRT 浮點數平方根;
8.2.3 EXP 浮點數指數運算;
8.2.4 LN 浮點數自然對數運算;
8.2.5 SIN 浮點數正弦運算;
8.4.6 COS 浮點數餘(yu) 弦運算;
8.2.7 TAN 浮點數正切運算;
8.2.8 ASIN 浮點數反正弦運算;
8.2.9 ACOS 浮點數反餘(yu) 弦運算;
8.2.10ATAN 浮點數反正切運算;
9、賦值指令
9.1 MOVE 賦值;
10、程序控製指令
10.1 -(Call) 從(cong) 線圈調用FC/SFC(無參數);
10.2 CALL_FB 從(cong) 方塊調用FB;
10.3 CALL_FC 從(cong) 方塊調用FC;
10.4 CALL_SFB 從(cong) 方塊調用SFB;
10.5 CALL_SFC 從(cong) 方塊調用SFC;
10.6 -(MCR<) 主控繼電器接通;
10.7 -(MCR>) 主控繼電器斷開;
10.8 -(MCRA) 主控繼電器啟動;
10.9 -(MCRD) 主控繼電器停止;
10.10 -(RET) 返回;
11、移位和循環指令
11.1 移位指令;
11.1.1 SHR_I 整數右移;
11.1.2 SHR_DI 雙整數右移;
11.1.3 SHL_W 字左移;
11.1.4 SHR_W 字右移;
11.1.5 SHL_DW 雙字左移;
11.1.6 SHR_DW 雙字右移;
11.2 循環指令
11.2.1 ROL_DW 雙字左循環;
11.2.2 ROR_DW 雙字右循環;
12、狀態位指令
12.1 OV -||- 溢出異常位;
12.2 OS -||- 存儲(chu) 溢出異常位;
12.3 UO -||- 無序異常位;
12.4 BR -||- 異常位二進製結果;
12.5 ==0-||- 結果位等於(yu) "0";
12.6 <>0-||- 結果位不等於(yu) "0";
12.7 >0-||- 結果位大於(yu) "0";
12.8 <0-||- 結果位小於(yu) "0";
12.9 >=0-||- 結果位大於(yu) 等於(yu) "0";
12.10 <=0-||- 結果位小於(yu) 等於(yu) "0";
13、定時器指令
13.1 S_PULSE 脈衝(chong) S5定時器;
13.2 S_PEXT 擴展脈衝(chong) S5定時器;
13.3 S_ODT 接通延時S5定時器;
13.4 S_ODTS 保持型接通延時S5定時器;
13.5 S_OFFDT 斷電延時S5定時器;
13.6 -(SP) 脈衝(chong) 定時器線圈;
13.7 -(SE) 擴展脈衝(chong) 定時器線圈;
13.8 -(SD) 接通延時定時器線圈;
13.9 -(SS) 保持型接通延時定時器線圈;
13.10 -(SF) 斷開延時定時器線圈;
14、字邏輯指令
14.1 WAND_W 字和字相"與(yu) ";
14.2 WOR_W 字和字相"或";
14.3 WAND_DW 雙字和雙字相"與(yu) ";
14.4 WOR_DW 雙字和雙字相"或";
14.5 WXOR_W 字和字相"異或";
14.6 WXOR_DW 雙字和雙字相"異或“
二、三菱FX係列PLC的基本邏輯指令
1、取指令與(yu) 輸出指令(LD/LDI/LDP/LDF/OUT)
1.1 LD(取指令) 一個(ge) 常開觸點與(yu) 左母線連接的指令,每一個(ge) 以常開觸點開始的邏輯行都用此指令;
1.2 LDI(取反指令) 一個(ge) 常閉觸點與(yu) 左母線連接指令,每一個(ge) 以常閉觸點開始的邏輯行都用此指令;
1.3 LDP(取上升沿指令) 與(yu) 左母線連接的常開觸點的上升沿檢測指令,僅(jin) 在指定位元件的上升沿(由OFF→ON)時接通一個(ge) 掃描周期;
1.4 LDF(取下降沿指令) 與(yu) 左母線連接的常閉觸點的下降沿檢測指令;
1.5 OUT(輸出指令) 對線圈進行驅動的指令,也稱為(wei) 輸出指令;
2、取指令與(yu) 輸出指令的使用說明:
2.1 LD、LDI指令既可用於(yu) 輸入左母線相連的觸點,也可與(yu) ANB、ORB指令配合實現塊邏輯運算;
2.2 LDP、LDF指令僅(jin) 在對應元件有效時維持一個(ge) 掃描周期的接通;
2.3 LD、LDI、LDP、LDF指令的目標元件為(wei) X 、Y 、M 、T、C、S;4)OUT指令可以連續使用若幹次(相當於(yu) 線圈並聯),對於(yu) 定時器和計數器,在OUT指令之後應設置常數K或數據寄存器;
2.4 OUT指令目標元件為(wei) Y、M、T、C和S,但不能用於(yu) X;
3、觸點串聯指令(AND/ANI/ANDP/ANDF)
3.1 AND(與(yu) 指令) 一個(ge) 常開觸點串聯連接指令,完成邏輯“與(yu) ”運算;
3.2 ANI(與(yu) 反指令) 一個(ge) 常閉觸點串聯連接指令,完成邏輯“與(yu) 非”運算;
3.3 ANDP 上升沿檢測串聯連接指令;
3.4 ANDF 下降沿檢測串聯連接指令;
4、觸點串聯指令的使用的使用說明:
4.1AND、ANI、ANDP、ANDF都指是單個(ge) 觸點串聯連接的指令,串聯次數沒有限製,可反複使用;
4.2 AND、ANI、ANDP、ANDF的目標元元件為(wei) X、Y、M、T、C和S;
4.3 OUT M101指令之後通過T1的觸點去驅動Y4稱為(wei) 連續輸出;
5、觸點並聯指令(OR/ORI/ORP/ORF)
5.1 OR(或指令) 用於(yu) 單個(ge) 常開觸點的並聯,實現邏輯“或”運算;
5.2 ORI(或非指令) 用於(yu) 單個(ge) 常閉觸點的並聯,實現邏輯“或非”運算;
5.3 ORP 上升沿檢測並聯連接指令;
5.4 ORF 下降沿檢測並聯連接指令;
6、觸點並聯指令的使用說明:
6.1 OR、ORI、ORP、ORF指令都是指單個(ge) 觸點的並聯,並聯觸點的左端接到LD、LDI、LDP或LPF處,右端與(yu) 前一條指令對應觸點的右端相連。觸點並聯指令連續使用的次數不限;
6.2 OR、ORI、ORP、ORF指令的目標元件為(wei) X、Y、M、T、C、S;
7、塊操作指令(ORB / ANB)
7.1 ORB(塊或指令) 用於(yu) 兩(liang) 個(ge) 或兩(liang) 個(ge) 以上的觸點串聯連接的電路之間的並聯;
7.2 ORB指令的使用說明:
7.2.1 幾個(ge) 串聯電路塊並聯連接時,每個(ge) 串聯電路塊開始時應該用LD或LDI指令;
7.2.2 有多個(ge) 電路塊並聯回路,如對每個(ge) 電路塊使用ORB指令,則並聯的電路塊數量沒有限製;
7.2.3 ORB指令也可以連續使用,但這種程序寫(xie) 法不推薦使用,LD或LDI指令的使用次數不得超過8次,也就是ORB隻能連續使用8次以下;
7.2.4 ANB(塊與(yu) 指令) 用於(yu) 兩(liang) 個(ge) 或兩(liang) 個(ge) 以上觸點並聯連接的電路之間的串聯;
8、ANB指令的使用說明:
8.1 並聯電路塊串聯連接時,並聯電路塊的開始均用LD或LDI指令;
8.2多個(ge) 並聯回路塊連接按順序和前麵的回路串聯時,ANB指令的使用次數沒有限製。也可連續使用ANB,但與(yu) ORB一樣,使用次數在8次以下;
9、置位與(yu) 複位指令(SET/RST)
9.1 SET(置位指令) 它的作用是使被操作的目標元件置位並保持;
9.2 RST(複位指令) 使被操作的目標元件複位並保持清零狀態,SET、RST指令的使用,當X0常開接通時,Y0變為(wei) ON狀態並一直保持該狀態,即使X0斷開Y0的ON狀態仍維持不變;隻有當X1的常開閉合時,Y0才變為(wei) OFF狀態並保持,即使X1常開斷開,Y0也仍為(wei) OFF狀態;
9.3 SET 、RST指令的使用說明:SET指令的目標元件為(wei) Y、M、S,RST指令的目標元件為(wei) Y、M、S、T、C、D、V 、Z。RST指令常被用來對D、Z、V的內(nei) 容清零,還用來複位積算定時器和計數器;
9.4 對於(yu) 同一目標元件,SET、RST可多次使用,順序也可隨意,但最後執行者有效;
10、微分指令(PLS/PLF)
10.1 PLS(上升沿微分指令) 在輸入信號上升沿產(chan) 生一個(ge) 掃描周期的脈衝(chong) 輸出;
10.2 PLF(下降沿微分指令) 在輸入信號下降沿產(chan) 生一個(ge) 掃描周期的脈衝(chong) 輸出;
10.3 PLS、PLF指令的目標元件為(wei) Y和M;
10.4 使用PLS時,僅(jin) 在驅動輸入為(wei) ON後的一個(ge) 掃描周期內(nei) 目標元件ON,M0僅(jin) 在X0的常開觸點由斷到通時的一個(ge) 掃描周期內(nei) 為(wei) ON,使用PLF指令時隻是利用輸入信號的下降沿驅動,其它與(yu) PLS相同;
11、主控指令(MC/MCR)
11.1 MC(主控指令) 用於(yu) 公共串聯觸點的連接,執行MC後,左母線移到MC觸點的後麵;
11.2 MCR(主控複位指令) 它是MC指令的複位指令,即利用MCR指令恢複原左母線的位置;
在編程時常會(hui) 出現這樣的情況,多個(ge) 線圈同時受一個(ge) 或一組觸點控製,如果在每個(ge) 線圈的控製電路中都串入同樣的觸點,將占用很多存儲(chu) 單元,使用主控指令就可以解決(jue) 這一問題,MC、MCR指令利用MC N0 M100實現左母線右移,使Y0、Y1都在X0的控製之下,其中N0表示嵌套等級,在無嵌套結構中N0的使用次數無限製,利用MCR N0恢複到原左母線狀態,如果X0斷開則會(hui) 跳過MC、MCR之間的指令向下執行;
MC、MCR指令的使用說明:
A:MC、MCR指令的目標元件為(wei) Y和M,但不能用特殊輔助繼電器,MC占3個(ge) 程序步,MCR占2個(ge) 程序步;
B:主控觸點在梯形圖中與(yu) 一般觸點垂直,主控觸點是與(yu) 左母線相連的常開觸點,是控製一組電路的總開關(guan) ,與(yu) 主控觸點相連的觸點必須用LD或LDI指令;
C:MC指令的輸入觸點斷開時,在MC和MCR之內(nei) 的積算定時器、計數器、用複位/置位指令驅動的元件保持其之前的狀態不變,非積算定時器和計數器,用OUT指令驅動的元件將複位,22中當X0斷開,Y0和Y1即變為(wei) OFF;
D:在一個(ge) MC指令區內(nei) 若再使用MC指令稱為(wei) 嵌套,嵌套級數最多為(wei) 8級,編號按N0→N1→N2→N3→N4→N5→N6→N7順序增大,每級的返回用對應的MCR指令,從(cong) 編號大的嵌套級開始複位;
12、堆棧指令(MPS/MRD/MPP)
堆棧指令是FX係列中新增的基本指令,用於(yu) 多重輸出電路,為(wei) 編程帶來便利,在FX係列PLC中有11個(ge) 存儲(chu) 單元,它們(men) 專(zhuan) 門用來存儲(chu) 程序運算的中間結果,被稱為(wei) 棧存儲(chu) 器;
12.1 MPS(進棧指令) 將運算結果送入棧存儲(chu) 器的第一段,同時將先前送入的數據依次移到棧的下一段;
12.2 MRD(讀棧指令) 將棧存儲(chu) 器的第一段數據(最後進棧的數據)讀出且該數據繼續保存在棧存儲(chu) 器的第一段,棧內(nei) 的數據不發生移動;
12.3 MPP(出棧指令) 將棧存儲(chu) 器的第一段數據(最後進棧的數據)讀出且該數據從(cong) 棧中消失,同時將棧中其它數據依次上移;
堆棧指令的使用說明:
A:堆棧指令沒有目標元件;
B:MPS和MPP必須配對使用;
C:由於(yu) 棧存儲(chu) 單元隻有11個(ge) ,所以棧的層次最多11層;
13、邏輯反、空操作與(yu) 結束指令(INV/NOP/END)
13.1 INV(反指令) 執行該指令後將原來的運算結果取反,反指令的使用如圖10所示,如果X0斷開,則Y0為(wei) ON,否則Y0為(wei) OFF,使用時應注意INV不能象指令表的LD、LDI、LDP、LDF那樣與(yu) 母線連接,也不能象指令表中的OR、ORI、ORP、ORF指令那樣單獨使用;
13.2 NOP(空操作指令) 不執行操作,但占一個(ge) 程序步,執行NOP時並不做任何事,有時可用NOP指令短接某些觸點或用NOP指令將不要的指令覆蓋,當PLC執行了清除用戶存儲(chu) 器操作後,用戶存儲(chu) 器的內(nei) 容全部變為(wei) 空操作指令;
13.3 END(結束指令) 表示程序結束,若程序的最後不寫(xie) END指令,則PLC不管實際用戶程序多長,都從(cong) 用戶程序存儲(chu) 器的第一步執行到最後一步,若有END指令,當掃描到END時,則結束執行程序,這樣可以縮短掃描周期,在程序調試時,可在程序中插入若幹END指令,將程序劃分若幹段,在確定前麵程序段無誤後,依次刪除END指令,直至調試結束;
三、FX係列PLC的步進指令
1、步進指令(STL/RET)
步進指令是專(zhuan) 為(wei) 順序控製而設計的指令,在工業(ye) 控製領域許多的控製過程都可用順序控製的方式來實現,使用步進指令實現順序控製既方便實現又便於(yu) 閱讀修改,FX2N中有兩(liang) 條步進指令:STL(步進觸點指令)和RET(步進返回指令),STL和RET指令隻有與(yu) 狀態器S配合才能具有步進功能,如STL S200表示狀態常開觸點,稱為(wei) STL觸點,它在梯形圖中的符號為(wei) -|| ||- ,它沒有常閉觸點;
我們(men) 用每個(ge) 狀態器S記錄一個(ge) 工步,例STL S200有效(為(wei) ON),則進入S200表示的一步(類似於(yu) 本步的總開關(guan) ),開始執行本階段該做的工作,並判斷進入下一步的條件是否滿足。一旦結束本步信號為(wei) ON,則關(guan) 斷S200進入下一步,如S201步,RET指令是用來複位STL指令,執行RET後將重回母線,退出步進狀態;
2、狀態轉移圖
一個(ge) 順序控製過程可分為(wei) 若幹個(ge) 階段,也稱為(wei) 步或狀態,每個(ge) 狀態都有不同的動作,當相鄰兩(liang) 狀態之間的轉換條件得到滿足時,就將實現轉換,即由上一個(ge) 狀態轉換到下一個(ge) 狀態執行,我們(men) 常用狀態轉移圖(功能表圖)描述這種順序控製過程,用狀態器S記錄每個(ge) 狀態,X為(wei) 轉換條件,如當X1為(wei) ON時,則係統由S20狀態轉為(wei) S21狀態;狀態轉移圖中的每一步包含三個(ge) 內(nei) 容:本步驅動的內(nei) 容,轉移條件及指令的轉換目標,步驅動Y0,當X1有效為(wei) ON時,則係統由S20狀態轉為(wei) S21狀態,X1即為(wei) 轉換條件,轉換的目標為(wei) S21步;
3、步進指令的使用說明
3.1 STL觸點是與(yu) 左側(ce) 母線相連的常開觸點,某STL觸點接通,則對應的狀態為(wei) 活動步;
3.2 與(yu) STL觸點相連的觸點應用LD或LDI指令,隻有執行完RET後才返回左側(ce) 母線;
3.3 STL觸點可直接驅動或通過別的觸點驅動Y、M、S、T等元件的線圈;
3.4 由於(yu) PLC隻執行活動步對應的電路塊,所以使用STL指令時允許雙線圈輸出(順控程序在不同的步可多次驅動同一線圈);
3.5 STL觸點驅動的電路塊中不能使用MC和MCR指令,但可以用CJ指令;
3.6 在中斷程序和子程序內(nei) ,不能使用STL指令;