三菱PLC(主要以主流FX系列和Q/L系列為例)的編程指令非常豐富,涵蓋基本邏輯控制、數據處理、運算、流程控制、通信、定位等多個方面。以下按功能分類對一些常用和重要的指令進行詳細介紹(使用中文指令名,括號內為常見助記符):
一、 基本邏輯指令 (LD, LDI, AND, ANI, OR, ORI, OUT, SET, RST)
- LD (取): 讀取常開觸點狀態。若對應軟元件為ON,則觸點導通。例如:
LD X0
讀取輸入點X0狀態。 - LDI (取反): 讀取常閉觸點狀態。若對應軟元件為OFF,則觸點導通。例如:
LDI X1
。 - AND (與): 串聯常開觸點。例如:
LD X0 AND X1
表示X0與X1都ON時通路。 - ANI (與非): 串聯常閉觸點。例如:
LD X0 ANI X1
表示X0 ON且X1 OFF時通路。 - OR (或): 并聯常開觸點。例如:
LD X0 OR X1
表示X0或X1任一個ON時通路。 - ORI (或非): 并聯常閉觸點。例如:
LD X0 ORI X1
表示X0 ON或X1 OFF時通路。 - OUT (輸出): 驅動線圈(繼電器輸出Y,輔助繼電器M,定時器T,計數器C等)。例如:
OUT Y0
。 - SET (置位): 將目標位元件置為ON并保持(鎖定)。一旦置位,即使條件斷開,狀態仍保持ON,直到被復位。例如:
SET M0
。 - RST (復位): 將目標位元件置為OFF并保持(解鎖),或清除定時器當前值和計數器當前值。例如:
RST M0
,RST C0
。
二、 堆棧與主控指令 (MPS, MRD, MPP, MC, MCR)
- MPS (入棧): 存儲運算中間結果(狀態)。用于處理復雜的串并聯分支。
- MRD (讀棧): 讀取棧頂存儲的中間結果,不影響堆棧。用于分支點之后的公共部分。
- MPP (出棧): 讀取并清除棧頂存儲的中間結果。通常用于分支的結束。
- MC (主控): 條件成立時,激活主控起點到主控結束點之間的程序。相當于一個總開關。
- MCR (主控復位): 主控塊的結束點。MCR后的指令不受主控條件影響。
三、 定時器指令 (T)
- 定時器 (T): 設定時間達到后,其常開觸點閉合,常閉觸點斷開。
- 工作原理:
- 線圈(如
OUT T0 K50
)被驅動時開始計時。 K50
表示設定時間(如100ms單位定時器K50=5秒,單位由T編號決定)。- 計時過程中當前值增加。當前值 ≥ 設定值時,定時器觸點動作。
- 線圈斷開時,當前值復位為0。
- 線圈(如
- 類型:普通定時器(通電延時ON),積算定時器(斷電保持當前值)。
- 工作原理:
四、 計數器指令 (C)
- 計數器 (C): 輸入脈沖達到設定次數后,其常開觸點閉合,常閉觸點斷開。
- 工作原理(增計數):
- 計數輸入: 由OFF→ON變化時,計數當前值+1。
- 復位輸入(RST指令): 為ON時,將當前值清零,計數器觸點復位。
- 當前值 ≥ 設定值(如
OUT C0 K10
)時,計數器觸點動作。
- 類型:16位增計數器(普通型,電池后備/鎖存型),32位增減雙向計數器等。
- 工作原理(增計數):
五、 數據處理指令
- MOV (傳送):
MOV S D
將源操作數S中的數據復制到目標操作數D中。例如:MOV D0 D10
。 - ADD (加):
ADD S1 S2 D
將S1和S2相加,結果存入D。例如:ADD D0 D1 D2
(D2 = D0 + D1)。 - SUB (減):
SUB S1 S2 D
將S1減去S2,結果存入D。例如:SUB D0 D1 D2
(D2 = D0 - D1)。 - MUL (乘):
MUL S1 S2 D
將S1乘以S2,結果存入D(注意結果占用多個寄存器)。例如:MUL D0 D1 D2
。 - DIV (除):
DIV S1 S2 D
將S1除以S2,商存入D,余數存入D的下一個寄存器。例如:DIV D0 D1 D2
(商存D2,余數存D3)。 - INC (加1):
INC D
目標操作數D的值+1。 - DEC (減1):
DEC D
目標操作數D的值-1。 - AND (與):
AND S1 S2 D
S1和S2進行位與位邏輯與操作,結果存入D。 - OR (或):
OR S1 S2 D
S1和S2進行位與位邏輯或操作,結果存入D。 - XOR (異或):
XOR S1 S2 D
S1和S2進行位與位邏輯異或操作,結果存入D。 - CMP (比較):
CMP S1 S2
比較S1和S2的大小,結果驅動特殊繼電器(M8020零標志, M8021小于標志, M8022大于標志)。 - ZCP (區間比較):
ZCP S S1 S2 D
比較源S與下限S1、上限S2構成的區間,驅動3個連續目標位元件D(表示小于), D+1(表示范圍內), D+2(表示大于)。
六、 移位與循環指令
- SFTR (位右移), SFTL (位左移): 對n位組成的移位寄存器進行位移動。常用于流水線控制、狀態切換。
- ROR (循環右移), ROL (循環左移): 對16/32位數據進行循環位移。
- SFR (右移), SFL (左移): 帶進位標志的位移指令。
七、 流程控制指令 (CJ, CALL, SRET, IRET, EI, DI, FEND, END)
- CJ (條件跳轉):
CJ Pn
當驅動條件滿足時,跳過中間程序,跳轉到指定指針Pn
處執行。 - CALL (子程序調用):
CALL Pn
當驅動條件滿足時,調用指定的子程序(以Pn
為標號)。 - SRET (子程序返回): 位于子程序末尾,執行此指令時返回主程序
CALL
指令后的下一條指令。 - FEND (主程序結束): 表示主程序結束,其后可為子程序或中斷程序。
- IRET (中斷返回), EI (允許中斷), DI (禁止中斷): 用于中斷服務程序的控制與管理。
- END (程序掃描結束): 表示程序結束。PLC每次掃描執行到END就回到第0步,處理I/O刷新后開始下一掃描周期。
八、 方便指令 (應用指令)
- ALT (交替輸出): 每次輸入條件從OFF變ON時,目標元件狀態翻轉一次(ON變OFF或OFF變ON)。常用于單按鈕啟動/停止。
- HSC (高速計數器): 用于處理高頻脈沖輸入的專用計數器。
- PLSY (脈沖輸出): 用于控制步進電機或伺服電機,發出指定頻率和數量的脈沖(FX系列常用)。
- PLSR (加減速脈沖輸出): 帶加減速控制的脈沖輸出指令(FX系列常用)。
- DRVA (絕對定位), DRVI (增量定位): Q/L系列定位模塊常用定位指令。
- RS (串行通信): 用于無協議通信的發送/接收指令。
- FROM/TO (緩沖存儲器讀寫): 用于讀寫特殊功能模塊(如模擬量模塊、通信模塊)內部的數據寄存器(BFM)。
九、 模擬量指令 (通過FROM/TO配合特殊模塊)
雖然嚴格來說不是單一指令,但對模擬量處理至關重要:
- 讀模擬量輸入: 使用
FROM
指令讀取模擬量輸入模塊對應通道的BFM(AD轉換值)。 - 寫模擬量輸出: 使用
TO
指令將數據寫入模擬量輸出模塊對應通道的BFM(設置DA輸出值)。
十、 時鐘與比較指令
- TCMP (時間比較): 將當前時間(小時、分鐘、秒)與設定的時間值進行比較。
- TZCP (時間段比較): 判斷當前時間是否在設定的兩個時間點構成的區間內。
重要說明:
- 操作數表示:
S
通常代表源操作數(Source, 如D0, K10, H0A, X0等),D
通常代表目標操作數(Destination, 如D10, Y0, M0等)。n
通常代表數量或數據長度。 - 數據長度: 三菱PLC指令區分16位和32位操作。指令符號前加
D
表示32位操作(如MOV
是16位,DMOV
是32位)。指令符號后加P
表示脈沖執行型(只在驅動條件從OFF變ON的上升沿執行一次)。例如:DMOVP D0 D10
(在上升沿將D0/D1的32位值傳到D10/D11)。 - 支持情況: 具體指令的支持情況取決于PLC的具體型號和系列(FX1S/FX1N/FX3U/FX5U/Q系列等)及CPU的版本。務必查閱相應型號的編程手冊。
- 編程手冊: 最全面、最準確的指令信息源是您所使用的具體三菱PLC型號的《編程手冊》或《指令手冊》。 手冊中會詳細列出每條指令的功能、操作數說明、用法示例、占用步數、支持的型號等關鍵信息。
總結:
三菱PLC提供了從最基本的開關量控制到復雜數據處理、高速計數、精密定位、網絡通信等全方位的編程指令集。掌握這些核心指令是進行有效PLC程序設計的基礎。對于復雜的工程應用,務必深入研讀具體型號的官方編程手冊,并根據項目需求選擇合適的指令進行編程。