附 錄 一: FATEK 通訊協定
附 錄 一: FATEK 通訊協定
x通訊協定( Protocol )是 永宏 PLC 主機上各通訊埠在標準通訊模式下均適用之通訊協 定,任何對 PLC 之資料存取( 自 PLC 內部讀出或由外界寫入 PLC) 或運作、控制等,除在硬體連線及通訊參數設定必需通訊雙方一致外, 在通訊訊息格式( Message format)方面亦必需符合本通訊協定之格式 PLC 才能正確回應。在介紹通訊協定之前首先需了解永宏 PLC 和與其通訊之週邊設備間之角色與互動關係。
1.1 主僕定位與通訊互動關係
在永宏 PLC 之通訊架構上, 永宏 PLC 是被定位為僕系統( SLAVE) 而任何與永宏 PLC 連線之週邊設備均為主系統( MASTER ), 也就是說任何週邊設備與永宏 PLC 間之通訊均是由主系統( 週邊設備) 來主動發出命令, 僕系統( 永宏 PLC) 只有在收到命令訊息後才依該命令之要求回應訊息給主系統, 而不能主動發出訊息給主系統,如下之關係圖所示:
僕系統
( 永宏 PLC)
主系統
( 週邊設備)
命令訊息
回應訊息
1.2 永宏 PLC 通訊訊息格式
x宏 PLC 之通訊訊息格式無論是命令訊息( 主系統發出)或回應訊息(僕系統發出)均可概分為 6 個資料欄位, 如下圖之範例:
傳遞方向
最先發出 最後送出
↓ ↓
開頭 字元 | 僕站 號碼 | 命令 號碼 | 本文資料 | 偵誤值 Checksum | 結尾 字元 | |||
STX | H | L | H | L | 可為 0 ~ 500 個 ASCII 字元 | H | L | ETX |
➀ ➁ ➂ ➃ ➄ ➅
欄位名稱→
ASCII 字元→
取 LRC
➀開頭字元( STX ): ASCII 碼之開始字元 STX 之 16 進制碼數為 02H, 無論命令或回應訊息 之開頭字元均為 STX,接收方以此判知傳輸資料之開頭。
➁僕站號碼 : 為兩位數之 16 進制數值, 在永宏 PLC 通訊系統中之網路架構採用主僕系統在整個網路系統中只有一個主系統,但可以有 254 個僕系統,每個僕系統均有一個獨一無二之站號, 分別為 1 ~ FEH(站號 0 則當作對所有僕系統作廣播下命令 ), 當主系統欲對僕系統下命令時是以站號來指定由那個 PLC,或所有 PLC( 廣播時) 來接收這個命令。在回應訊息中, 僕系統會將自己的站號回應給主系統, 以供主系統確認是它所指定的那個僕站( PLC)所送回之訊息。
註: PLC 之站號在出廠時均設為 1 (第 1 站 ),站號之更改設定必須透 過 FP-08 或
WinProladder 來執行。
➂命令號碼 : 為兩位數之 16 進制數值,所謂命令號碼係由主系統要求僕系統所執行之動作類別, 例如要求讀取或寫入單點狀態、填入或讀取暫存器資料、強制設定、運轉、 停止….. 等, 如同站號一般, 在回應訊息中, 僕系統 亦會將其 自主系統 接收之命 令號碼原 原本本地 隨同本文 資料一併 傳 回主系統。
➃本文資料 : 本文資料可為 0(無本文資料) ~ 500 個 ASCII 字元, 在命令訊息中此欄位資料 用以指定 命令所要 運作或存 取之對象 (位址) 或要寫入 之 數值。在回應訊息中本欄位之開頭為一個錯誤碼字元,在正 常( 沒有錯誤)情況下此錯誤碼必為字元 0( 30H ), 其後跟著才是要回應給主系統之狀態或數值等本文資料。 當有錯誤時, 本開頭字元不再是 0 , 而代之以錯誤碼, 同時其後不再有其他本文資料(即本文資料僅為一個字元之錯誤碼 ),請 參閱第 3 節之說明。
➄偵誤值(CHECKSUM):偵誤值係將前述➀~ ➃各欄位之所有 ASCII 字元之 16 進制數值以
〝縱式餘數查核法〞 LRC( Longitudinal Redundancy Check)計 算產出一個 Byte 長度(兩個 16 進制數值 00 ~ FF)之偵誤值。 當接收端收到訊息後依同樣之計算法則將➀~ ➃欄位之所有字元算出其偵誤值 ,兩者值 相同表傳 輸之資料 正確,否 則即有傳 輸錯誤發 生。本通訊協定 LRC 偵誤值之計算方法是將各 ASCII 字元之 16 進制數碼值( 8 位元長度) 從頭至尾依序相加, 但不考慮進位, 因此最終結果仍為 8 位元長度之偵誤值。
➅結尾字元( ETX ): ASCII 碼之結尾字元 ETX 之 16 進制數碼為 03H, 無論命令或回應訊息 之結尾字元均為 ET X,當接收方 收到 ETX 字元後便知該次通訊已結束,可開始處理該命令或資料了。
1.3 永宏 PLC 之通訊錯誤碼
在通訊過程中無論是主系統命令、位址、數值範圍等之軟體或操作上的錯誤以及硬體上 之問題均可能造成僕系統無法處理主系統所下達之命令,此時僕系統仍會回應訊息給主系統
(但前提是僕系統收到的必須是正確的通訊, 亦即無 Checksum 錯誤之命令, 否則不會有任何回應 ),無 論主系統下的命令碼或本文資料為何, 在錯誤發生時僕系統所回應之訊息格式都是一樣的,除必有之開頭字元 STX 和結尾字元 ETX 及偵誤值外,並將其所收到之站號和 命令碼原原本本地回應給主系統,同時僕系統會判斷該錯誤是屬何種錯誤而將該錯誤代碼回 應給主系統,下圖為永宏 PLC 之通訊錯誤之回應訊息格式。
● 下表為永宏 PLC 通訊錯誤碼及其說明:
錯 誤 碼 | 說 明 |
0 | 通訊正常( 沒有錯誤情形發生) |
2 | 不合法數值( 如 10 進制格式中有 16 進制數字) |
4 | 不合法之命令格式( 含不合法之命令碼 ),或 通訊命令無法執行 |
5 | 不能啟動( 下 RUN 命令但 Ladder Checksum 不合) |
6 | 不能啟動( 下 RUN 命令但 PLC ID≠Ladder ID) |
7 | 不能啟動( 下 RUN 命令但程式語法錯誤) |
9 | 不能啟動( 下 RUN 命令,但 Ladder 之程式指令 PLC 無法執行) |
A | 不合法之位址 |
1.4 通訊命令功能詳述
本節針對永宏 PLC 通訊協定中所提供之通訊命令碼逐一舉例說明主系統之命令訊息及僕系統之回應訊息格式(只舉通訊成功之例子,若有通訊錯誤情況請參考第 1.3 節之說明 )。
1.4.1 元件類別及其指定方法
通訊功能中最主要的功能在於讀取或寫入 PLC 內部元件(單點或暫存器) 之狀態或數值資料。因為首先您必須明瞭 PLC 內部到底有哪些元件可供您運用, 以及如何來指定它們。下表為永宏 PLC 可供您存取之單點與暫存器及其位址指定方法( 關於元件之特性大小範圍及意義請參考基礎功能篇手冊第 2. 1 節之說明 )。
元件 類別 | 代號 | 名 稱 | 單點位址指定 ( 5 個字元) | 16 位元暫存器指定 ( 6 個字元) | 32 位元暫存器指定 ( 7 個字元) |
單點狀態 | X | 輸入接點 | X0000 ~ X9999 | WX0000 ~ WX9984 | DWX0000 ~ DWX9968 |
Y | 輸出繼電器 | Y0000 ~ Y9999 | WY0000 ~ WY9984 | DWY0000 ~ DWY9968 | |
M | 內部繼電器 | M0000 ~ M9999 | WM0000 ~ WM9984 | DWM0000 ~ DWM9968 | |
S | 步進繼電器 | S0000 ~ S9999 | WS0000 ~ WS9984 | DWS0000 ~ DWS9968 | |
T | 計時器接點 | T0000 ~ T9999 | WT0000 ~ WT9984 | DWT0000 ~ DWT9968 | |
C | 計數器接點 | C0000 ~ C9999 | WC0000 ~ WC9984 | DWC0000 ~ DWC9968 | |
暫存器資料 | TMR | 計時器暫存器 | − | RT 0000 ~ RT 9999 | DRT0000 ~ DRT9998 |
CTR | 計數器暫存器 | − | RC0000 ~ RC9999 | DRC0000 ~ DRC9998 | |
HR | 資料暫存器 | − | R00000 ~ R65535 | DR00000 ~ DR65534 | |
DR | 資料暫存器 | − | D00000 ~ D65535 | DD00000 ~ DD65534 | |
FR | 檔案暫存器 | − | F00000 ~ F 65535 | DF00000 ~ DF65534 |
● 單點狀態( X, Y, M, S)可以將連續 16 個或 32 個狀態組成 16 位元或 32 位元暫存器來用,如上表之 WX△△△△或 DWX△△△△,但△△△△必須為 8 的倍數。
● 由上表可知單點位址指定需 5 個位元, 16 位元暫存器位址指定均為 6 個字元,而 32 位元暫存器之位址指定必為 7 個字元。
● 上表之元件位址範圍( Boundary)為永宏 PLC 元件之最大範圍, 因各系列 PLC 機種之元件多寡不一, 範圍亦不盡相同,使用者需自行注意其所使用機型 PLC 之元件大小範圍
(例如 PLC 之 X、Y 位址範圍為 0000 ~ 0255, S 位址為 0000 ~ 0999 ), 又如若通訊命令位元之元件位址指定超出該 PLC 之範圍, PLC 將回應 error A(不合法位址 ),同 時不執行該命令。
1.4.2 通訊命令說明
● 下表為永宏 PLC 通訊協定所提供之通訊命令一覽表:
命 令 號 碼 | 功 能 敘 述 | 一 次 通 訊 可 處理 之 訊 息 長 度 | 備 註 |
40 | PLC 概略系統狀態讀取 | − | |
41 | PLC 之 RUN/STOP 控制 | − | |
42 | 單一個單點之運作控制 | 1 點 | |
43 | 連續多個單點之抑/ 致能狀態讀取 | 1 ~ 256 點 | |
44 | 連續多個單點之狀態讀取 | 1 ~ 256 點 | |
45 | 連續多個單點之狀態寫入 | 1 ~ 256 點 | |
46 | 連續多個暫存器之資料讀取 | 1 ~ 64Words | |
47 | 連續多個暫存器之資料寫入 | 1 ~ 64Words | |
48 | 任意單點/ 暫存器混合之狀態/ 資料讀取 | 1 ~ 64 點或 Words | |
49 | 任意單點/ 暫存器混合之狀態/ 資料寫入 | 1 ~ 32 點或 Words | |
4E | 測試回傳 | 0 ~ 256 字元 | |
53 | PLC 詳細系統狀態讀取 | − |
註 1: 在本文訊息中單點狀態之表示是以一個字元來表示( 1 表示 ON, 0 表 OFF ),而
16 位元暫存器資料則以 4 個字元來表示一個 Word 的數值( 0000H~ FFFFH )。
註 2:在 32 位元暫存器時, 其資料為 D W(連 續兩個 Word ), 故須以 8 個字元來表示, 因此若元件為 32 位元暫存器, 則一個元件需以 2W 計, 例如命令碼 46 和 47 在 16 位元元件一次最多可處理 64 個,但若為 32 位元元件則一次最多只能處理 32 個。
註 3 :在任意單點/ 暫存器混合運作之命令( 48 , 49 )中,其訊息長度為單點和 Word數之總和,兩者總數不得超過 64 W(命令 48 )及 32 W(命令 49 ), 亦即多一個 點,所容許之 Word 數便少一個,反之亦同,而 32 位元元件因其訊息長度是一個元件佔用 2 個 Words,故多一個 32 位元件,則所容許之單點或 Word 數就少 2 個, 例如命令 48, 其訊息長度可為 1 ~ 64 W, 假設其讀取 20 個 32 位元元件,則其訊息已佔用 40 個 Words,只剩 24W 可供單點或 16 位元暫存器使用, 因此本例在一次通訊中命令碼最多只能讀取 44 個元件( 20 個 32 位元元件, 24 個單 點或 16 位元元件 )。
註 4: 上表中之連續單點或連續暫存器運作(讀取或寫入)係指運作之對象元件不只一 個, 且為連續號碼, 因此在指定這些運作對象時, 無需一一列舉其元件號碼, 只需指定其起始號碼及元件之個數 N 即可, 但其運作對象只能為單點或暫存器之 一, 不能混合。
註 5 :相對於連續多點之運作, 任意( Random)多個運作對象, 同樣可在一次通訊中 讀取或寫入多個單點和暫存 器,但因 其號碼可為非連續故必須一一列舉其單點或暫存器號碼, 也因此容許將單點和暫存器混合運作。
● 命令碼 40( PLC 概略系統狀態讀取) | |
格式 | |
MASTER S E 命 T 0 1 4 0 C 7 T 站 令 命令 X X 號 碼 H L H L H L 站 命 偵 S 錯 STATU STATU STATU 偵 E PLC 號 令 誤 T 0 1 4 0 誤 S S S 誤 T 回應 碼 值 X 碼 1 2 3 值 X H L H L H L H L H L H L B0: RUN/STOP B1: BAT LOW/正常 B2: Ladder checksum error/正常 B3:使用 MEMORY STATUS 1: PACK/未使用 B4: WDT Timeout/正常 B5:設定 ID/未設 ID STATUS 2: 保留供未來使用 B6: 緊急停機/正常 (LADDER B7: 0(保留供未來使用) 程式容量) STATUS 3: 為 0(保留供未來使用) | |
範例 | 假設 PLC 有使用 MEMORY PACK,PLC 和 MEMORY PACK 均設定 ID,而狀態均正常, |
且 PLC 在 RUN 情況下, MASTER 以命令碼 40 去讀取 PLC 之系統狀態將得到如下結果 ( B5, B3, B0 為 1,其餘為 0,故 STATUS 為 29H)。 MASTER S E T 0 1 4 0 C 7 T 命令 X X 02H 30H 31H 34H 30H 43H 37H 03H PLC S E T 0 1 4 0 0 2 9 0 0 0 0 2 2 T 回應 X X 02H 30H 31H 34H 30H 30H 32H 39H 30H 30H 30H 30H 30H 32H 32H |
H | L | ||||||
B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |
● 命令碼 41( PLC 之 RUN/STOP 控制) | |
格式 | |
MASTER S 控 E 命 T 0 1 4 1 制 C 7 T 站 令 命令 X 碼 X 號 碼 H L H L H L PLC 站 命 S 錯 偵 E 號 令 T 0 1 4 1 誤 誤 T 回應 碼 X 碼 值 X H L H L H L 0: STOP 控制碼 1: RUN | |
範例 | 將 PLC 啟動( RUN) |
MASTER S E T 0 1 4 1 1 F 9 T 命令 X X 02H 30H 31H 34H 31H 31H 46H 39H 03H PLC S E T 0 1 4 1 0 F 8 T 回應 X X 02H 30H 31H 34H 31H 30H 46H 38H 03H |
● 命令碼 42( 單一個單點運作控制) | |
格式 | x命令可對命令中所指定之單點作抑能、致能、設定、清除等四種運作。 |
MASTER S 運 偵 E 命 T 0 1 4 2 作 單點號碼 誤 T 站 令命令 X 碼 值 X 號 碼 H L H L H L 站 命 S 錯 偵 E PLC 號 令 T 0 1 4 2 誤 誤 T 回應 碼 X 碼 值 X H L H L H L 1:抑能( Disable) 2:致能( Enable) 運作碼 3:設定( Set) 4:清除( Reset) | |
範例 | 下圖通訊格式為將單點 X1 6 抑能之範例。 |
MASTER S E T 0 1 4 2 1 X 0 0 1 6 1 9 T 命令 X X 02H 30H 31H 34H 32H 31H 58H 30H 30H 31H 36H 31H 39H 03H PLC S E T 0 1 4 2 0 F 9 T 回應 X X 02H 30H 31H 34H 32H 30H 46H 39H 03H |
● 命令碼 43( 多個連續單點之抑/致能狀態讀取)
格式 用以讀取自命令中所指定之單點開始往高位之連續 N 個單點之抑/致能狀態。
MASTER S 個
T 0 1 4 3 數
命令 X N
H L H L
站 命
PLC
起始單點號 碼
偵 E
誤 T 站
值 X 號
H L
S
命令碼
錯 狀 狀
狀 偵 E
號 令 T 0 1
4 3 誤 態 態
‧‧‧‧ 態 誤 T
回應 碼
X 碼 0 1
H L H L
N 值 X H L
個數 N:
兩位數之 Hex 數值,其範圍可為
1≤N≤256( N=00H 時表 256 個)
範例 設 Y10 開始至 Y16 之連續 7 個單點中,Y10,Y12,Y16 為抑能,其他均為致能情況,下圖為讀取 Y10~Y16 連續 7 個單點之抑/致能狀態之結果。
S | E | ||||||||||||||||||||||||||||||
T | 0 1 | 4 3 | 0 7 | Y 0 0 1 0 | 4 B | T | |||||||||||||||||||||||||
X | X | ||||||||||||||||||||||||||||||
02H | 30H | 31H | 34H | 33H | 30H | 37H | 59H | 30H | 30H | 31H | 30H | 34H | 42H | 03H | |||||||||||||||||
S T X 02H | E T X 03H | ||||||||||||||||||||||||||||||
0 1 | 4 3 | 0 30H | 1 31H | 0 30H | 1 31H | 0 30H | 0 30H | 0 30H | 1 31H | 4 D | |||||||||||||||||||||
30H | 31H | 34H | 33H | 34H | 44H |
MASTER
命令
PLC
回應
● 命令碼 44( 多個連續單點狀態讀取) | |
格式 | |
MASTER 命令
PLC 回應 兩位數之 Hex 數值,其範圍可為個數 N: 1≤N≤256( N=00H 時表 256 個) | |
範例 | 讀取自 X50 開始連續 6 個輸入點( 即 X50~X55)狀態, 並假設 X50, X52 和 X55 之狀 |
態為 0,而 X51, X53 和 X54 之狀態為 1,下圖為其通訊結果。 MASTER 命令 PLC 回應 X55 狀態 X54 狀態 沒有錯誤 X53 狀態 X52 狀態 N=6 X51 狀態 X50 狀態 |
S T X | E T X | 站號 | 命令碼 | |||||||||||||||||||||||||
0 | 1 | 4 | 4 | 個數 N | 起始單點號 碼 | 偵誤 值 | ||||||||||||||||||||||
H | L | H | L | H | L | |||||||||||||||||||||||
站號 | 命令碼 | S T X | 錯誤碼 | 狀態 0 | 狀態 1 | ‧‧‧‧ | 狀態 N | Y T X | ||||||||||||||||||||
0 | 1 | 4 | 4 | 偵 誤值 | ||||||||||||||||||||||||
H | L | H | L | H | L |
S | E | |||||||||||||||||||||||||||||
T | 0 1 | 4 4 | 0 6 | X 0 0 5 0 | 4 E | T | ||||||||||||||||||||||||
X | X | |||||||||||||||||||||||||||||
02H | 30H | 31H | 34H | 34H | 30H | 36H | 58H | 30H | 30H | 35H | 30H | 34H | 44H | 03H | ||||||||||||||||
S T X 02H | E T X 03H | |||||||||||||||||||||||||||||
0 1 | 4 4 | 0 30H | 0 30H | 1 31H | 0 30H | 1 31H | 1 31H | 0 30H | 1 E | |||||||||||||||||||||
30H | 31H | 34H | 34H | 31H | 44H |
● 命令碼 45( 多個連續單點狀態寫入)
格式
MASTER S 個
T 0 1 4 5 數
命令
起始單點號 碼
狀 狀 狀 偵 E 命態 態 ‧‧‧‧ 態 誤 T 站 令
PLC
X N
H L H L
站 命
0 1 N 值 X 號
H L
S
碼
錯 偵 E
號 令
回應 碼
T 0 1 X
H L
4 5 誤 誤 T
碼 值 X
H L H L
個數 N:
兩位數之 Hex 數值,其範圍可為
1≤N≤256( N=00H 時表 256 個)
範例 自 Y0 開始連續寫入 4 個輸出點( Y0~Y3)的狀態,分別是 Y0 和 Y3 為 1, Y1 和 Y2 為
0。
Y0 狀態
Y1 狀態
Y2 狀態
Y3 狀態
S T X 02H | 1 31H | 0 30H | 0 30H | 1 31H | E T X 03H | |||||||||||||||||||||||
0 1 | 4 5 | 0 4 | Y 0 0 0 0 | 0 B | ||||||||||||||||||||||||
30H | 31H | 34H | 35H | 30H | 34H | 59H | 30H | 30H | 30H | 30H | 30H | 42H | ||||||||||||||||
S T X 02H | 0 30H | E T X 03H | ||||||||||||||||||||||||||
0 1 | 4 5 | F C | ||||||||||||||||||||||||||
30H | 31H | 34H | 35H | 46H | 43H |
MASTER
命令
PLC
回應
● 命令碼 46( 多個連續暫存器資料讀取) | |
格式 | |
‧‧‧ MASTER S 個 起始暫存器號 偵 E 命 T 0 1 4 6 數 誤 T 命令 X N 碼(6 或 7 個字) 值 X 站 令 號 碼 H L H L ‧‧‧ H L ‧‧‧ ‧‧‧ 站 命 S 錯 偵 E PLC 號 令 T 0 1 4 6 誤 資料1 ‧‧‧‧ 資料N 誤 T 回應 碼 X 碼(4 或8 位數) (4 或8 位數) 值 X H L H L ‧‧‧ ‧‧‧ H L ● 個數 N 為兩位數之 Hex 數值,其範圍可為 01H~ 40H 或 20H( 32 位元元件時) ● 16 位元暫存器號碼為 6 個字元,而其資料為 4 個字元之 Hex 數值(可表示 0000H~FFFFH) ● 32 位元暫存器號碼為 7 個字元, 而其資枓為 8 個字元之 Hex 數值( 可表示 00000000H~ FFFFFFFFH) | |
範例 | 讀取 16 位元暫存器 R12 開始之連續 3 個 16 位元xxx( x X00, X00, X00)之資料 |
MASTER S E T 0 1 4 6 0 3 R 0 0 0 1 2 7 5 T 命令 X X 02H 30H 31H 34H 36H 30H 33H 52H 30H 30H 30H 31H 32H 37H 35H 03H PLC S E T 0 1 4 6 0 1 0 A 5 7 F C 4 0 0 0 1 8 9 T 回應 X X 02H 30H 31H 34H 36H 30H 31H 30H 41H 35H 37H 46H 43H 34H 30H 30H 30H 31H 38H 39H 03H R12 R13 R14 之 之 之 資 資 資 料 料 料 ● 由上例 PLC 之回應可知 R12=10A5H, R13=7FC4H, R14=0001H |
● 命令碼 47( 多個連續暫存器資料寫入) | |
格式 | |
‧‧‧ ‧‧‧ ‧‧‧ MASTER S 個 起始暫存器號 資料1 資料N 偵 E 命 T 0 1 4 7 數 ‧‧‧ 誤 T 命令 X N 碼(6 或 7 個字) (4 或8 位數) (4 或8 位數) 值 X 站 令 號 碼 H L H L ‧‧‧ ‧‧‧ ‧‧‧ H L 站 命 S 錯 偵 E PLC 號 令 T 0 1 4 7 誤 誤 T 回應 碼 X 碼 值 X H L H L H L ● 個數 N 為兩位數之 Hex 數值,其範圍可為 01H~ 40H 或 20H( 32 位元元件時) ● 16 位元暫存器號碼為 6 個字元, 而其資料為 4 個字元( 可表示 0000H~FFFFH) ● 32 位元暫存器號碼為 7 個字元, 而其資枓為 8 個字元( 可表示 00000000H~FFFFFFFFH) | |
xx | 將 16 位元暫存器 WY8 寫入 AAAAH,而 WY24 寫入 5555H。因 WY8 和 WY24 為連續(即 |
自 WY8 起連續 2 個暫存器), 故為多個連續暫存器寫入之格式。 起始元件號碼 WY8 資料 WY24 資料 MASTER S E T 0 1 4 7 0 2 W Y 0 0 0 8 A A A A 5 5 5 5 8 0 T 命令 X X 02H 30H 31H 34H 37H 30H 32H 57H 59H 30H 30H 30H 38H 41H 41H 41H 41H 35H 35H 35H 35H 38H 30H 03H PLC S E T 0 1 4 7 0 F F T 回應 X X 02H 30H 31H 34H 37H 30H 46H 45H 03H |
● 命令碼 48( 多個任意單點狀態或暫存器資料混合讀取)
格式 |
S T X
MASTER
命令
0 1 4 8
‧‧‧
錯誤碼
S T X
‧‧‧‧‧‧
個 元件 1 號碼數 (5 或6 或7 個字) N
‧‧‧
E T X
元件號碼 N 偵 命
(5 或6 或7 個字) 誤 站 令
值 號 碼
H L H L
‧‧‧
‧‧‧ H L ➀
站 命
PLC 號 令
回應 碼
0 1 4 8
H L H L
‧‧‧ | ‧‧‧‧‧‧ | ‧‧‧ | E T X | ||||||||||||
元件 1 資料 (1 或4 或8 位數) | 元件N 資料 (1 或4 或8 位數) | 偵 誤值 | |||||||||||||
‧‧‧ | ‧‧‧ | H | L |
➀
● 個數 N 為兩位數之 Hex 數值,用以表示讀取元件之總數,其範圍可為 01H~ 40H( 參閱註 3)
● 元件為單點時,其元件號碼為 5 個字元,而回應狀態則僅一個位數( 1 或 0)
● 元件為 16 位元暫存器時,其元件號碼為 6 個字元,而回應資料為 4 個字元之 Hex 數值
● 元件為 32 位元暫存器時,其元件號碼為 7 個字元,而回應資枓為 8 個字元之 Hex 數值
範例 | 讀取 R1, Y9 和 DWM0(即 M31~M0)三個元件之狀態或資料 |
E T X
03H
元件 1 元件 2 元件 3
S T X
02H
MASTER
命令
0 1 4 8
0 3 R 0 0 0 0 1
Y 0 0 0 9 D W M 0 0 0 0 3 F
PLC
回應
30H 31H 34H 38H 30H 33H 52H 30H 30H 30H 30H 31H 41H 41H 41H 41H 41H 44H 57H 4DH 30H 30H 30H 30H 33H 46H
元件 2 狀態
➀
S T X
02H
0 1 4 8
30H 31H 34H 37H
元件 1 資料 元件 3 資料
0 30H | 1 31H | E T X 03H | ||||||||||||||||
5 C 3 4 | 0 0 3 5 4 7 B A | C 5 | ||||||||||||||||
35H | 43H | 33H | 34H | 30H | 30H | 33H | 35H | 34H | 37H | 42H | 41H | 43H | 35H |
➀
● 由上 PLC 回應例可知 R1=5C34H,而 Y9 狀態為 1(〝ON〞), DWM0=3547BAH
● 命令碼 49( 多個任意單點狀態或暫存器資料混合寫入) | |
格式 | |
MASTER 命令 ➀ 站 命 ‧‧‧ 號 令 偵 E 碼 元件N 資料 誤 T (1 或4 或8 位數) 值 X ➀ ‧‧‧ H L PLC S 錯 偵 E T 0 1 4 9 誤 誤 T 回應 X 碼 值 X H L H L H L ● 個數 N 為兩位數之 Hex 數值,用以表示寫入元件之總數,其範圍可為 01H~ 40H( 參閱註 3) ● 元件為單點時,其元件號碼為 5 個字元,而其狀態則只佔一個位數( 0 或 1) ● 元件為 16 位元暫存器時,其元件號碼為 6 個字元,而其資料為 4 位數之 Hex 數值 ● 元件為 32 位元暫存器時,其元件號碼為 7 個字元,而其資枓為 8 位數之 Hex 數值 | |
範例 | 將單點 Y0 設為 1, Y1 設為 0, 16 位元暫存器 WM8 設為 5555H, 32 位元暫存器 DR2 設 |
為 FFH。 元件 1 狀態 元件 2 狀態 元件 1 元件 2 元件 3 元件 3 資料
MASTER 命令 ➀ 元件 4 元件 4 資料 E D R 0 0 0 0 2 0 0 0 0 0 0 F F 3 C T X ➀ 44H 52H 30H 33H 30H 30H 32H 30H 30H 30H 30H 30H 30H 46H 46H 33H 43H 03H PLC S E T 0 1 4 9 0 0 0 T 回應 X X 02H 30H 31H 34H 39H 30H 30H 30H 03H |
S T X | ‧‧‧ | ‧‧‧ | ‧‧‧‧‧‧‧‧‧‧‧ | ‧‧‧ | ||||||||||||||||||||
0 1 | 4 9 | 個數 N | 元件 1 號碼 (5 或6 或7 個字) | 元件 1 資料 (1 或4 或8 個字) | 元件N 號碼 (5 或6 或7 個字) | |||||||||||||||||||
H | L | H | L | ‧‧‧ | ‧‧‧ | ‧‧‧ |
S T X 02H | 1 31H | 0 44H | ||||||||||||||||||||||||||||
0 1 | 4 9 | 0 4 | Y 0 0 0 0 | Y 0 0 0 1 | W M 0 0 0 8 | 5 5 5 5 | ||||||||||||||||||||||||
30H | 31H | 34H | 39H | 30H | 34H | 59H | 30H | 30H | 30H | 30H | 59H | 30H | 30H | 30H | 31H | 57H | 4DH | 30H | 30H | 30H | 38H | 35H | 35H | 35H | 35H |
格式 |
● 命令碼 4E( 測試回傳 loop back)
本命令碼 PLC 會將所收到之 MASTER 命令原原本本地回應回去。主要功能是用於測試通訊回路之用, 對 PLC 之運作無任何影響。
S T X
MASTER
命令
0 1 4 E
偵 命
E T X
測試資料 X
誤 站 令
值 號 碼
H L H L H L
0 1 4 6
H L H L
E T X
測試資料 X
S T X
站 命 偵
PLC 號 令 誤
回應 碼 值
H L
兩訊息完全相同
範例 | 將測試資料〝ABCDEFG〞以命令碼 4E 使 PLC 作測試回傳之情形。 |
S T X
02H
MASTER
命令
0 1 4 E B 8
E T X
03H
G
47H
F
46H
E
45H
D
44H
C
43H
B
42H
A
41H
PLC
回應
D
44H
C
43H
B
42H
30H 31H 34H 45H
42H 38H
A
41H
S T X
02H
0 1 4 E
30H 31H 34H 45H
B 8
E T X
03H
G
47H
F
46H
E
45H
42H 38H
● 命令碼 53( PLC 詳細系統狀態讀取) | |
格式 | |
MASTER S E 命 T 0 1 5 3 C B T 站 令 命令 X X 號 碼 H L H L H L 站 命 偵 S 錯 偵 E PLC 號 令 誤 T 0 1 5 3 誤 STATUS STATUS STATUS STATUS STATUS STATUS ‧‧‧‧‧‧‧‧ STATUS 誤 T 回應 碼 值 X 碼 1 2 3 4 5 6 64 值 X H L H L H L H L H L H L H L H L H L H L STATUS 1 STATUS 15 STATUS 16 STATUS 17 STATUS 18 STATUS 2 STATUS 19 STATUS 20 STATUS 21 STATUS 22 STATUS 23 STATUS 3 STATUS 24 STATUS 25 STATUS 26 STATUS 27 STATUS 28 STATUS 4 STATUS 29 ․ STATUS 5 ․ STATUS 6 ․ STATUS 7 ․ ~ ․ ~ ~ ~ STATUS 8 ․ ․ STATUS 9 ․ ․ STATUS 10 STATUS 64 STATUS 11 STATUS 12 STATUS 13 STATUS 14 |
B0: RUN/STOP B1:保留 B2: Ladder checksum error/正常 B3:有 MEMORY PACK/未使用 B4: WDT Time out/正常 B5:設定 ID/未設 ID B6: 緊急停機/正常 B7:保留 |
主機 TYPE 00H: MA 01H: MC 其他值: 預留 |
主機之 I/O 點數 00H: 10 點 01H: 14 點 02H: 20 點 ․ ․ |
OS Version of PLC 40H: V4.0X 41H: V4.1X ․ ․ |
Ladder Size Hi-Byte |
Ladder Size Lo-Byte |
Discrete input Hi-Byte |
Discrete input Lo-Byte |
Discrete output Hi-Byte |
Discrete output Lo-Byte |
Register input Hi-Byte |
Register input Lo-Byte |
Register output Hi-Byte |
Register output Lo-Byte |
M Relay Hi-Byte |
M Relay Lo-Byte |
S Relay Hi-Byte |
S Relay Lo-Byte |
L Relay Hi-Byte |
L Relay Lo-Byte |
R Register Hi-Byte |
R Register Lo-Byte |
D Register Hi-Byte |
D Register Lo-Byte |
Timer Hi-byte |
Timer Lo-byte |
Counter Hi-Byte |
Counter Lo-Byte |
․ ․ ․ |
● 命令碼 53( PLC 詳細系統狀態讀取) | |
範例 | 假設 PLC 為 FBS-20MC,OS 版本為 V4.0X,程式容量 32K words,未插 MEMORY PACK, |
有設定 ID,CPU 狀態均正常且為 RUN 模式,則 Master 去讀取 PLC 之詳細系統狀態會得 到如下之結果: 20 點 S E MC 之 OS Ladder Size MASTER T 0 1 5 3 C B T 命 機型 CPU V4.0 =32KW DI=256 命令 X X 站 令 STATUS STATUS STATUS STATUS STATUS STATUS STATUS 號 碼 1 2 STATUS 4 5 6 7 8 02H 30H 31H 35H 33H 43H 42H 03H 3 ➀ 站 命 偵 S PLC 號 令 誤 T 0 1 5 3 0 2 1 0 1 0 2 4 0 8 0 0 0 0 1 0 0 回應 碼 值 X 02H 30H 31H 35H 33H 30H 32H 31H 30H 31H 30H 32H 33H 31H 33H 33H 38H 30H 30H 31H 30H 30H M Relay S Relay L Relay R Register DO=256 IR=64 OR=64 = 2002 = 1000 = 0 = 8072
STATUS STATUS STATUS STATUS STATUS STATUS STATUS STATUS STATUS STATUS STATUS STATUS STATUS STATUS 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ➀ ➁ D Register = 4096 Timer=256 Counter=256 預 x STATUS STATUS STATUS STATUS STATUS STATUS STATUS STATUS 23 24 25 26 27 28 29 30 ➁ |
0 1 | 0 0 | 0 0 | 6 4 | 0 0 | 6 4 | 0 7 | D 2 | 0 3 | E 8 | 0 0 | 0 0 | 1 F | 8 8 | |||||||||||||||
30H | 31H | 30H | 30H | 30H | 30H | 36H | 34H | 30H | 30H | 36H | 34H | 30H | 37H | 44H | 32H | 30H | 33H | 45H | 38H | 30H | 30H | 30H | 30H | 31H | 46H | 38H | 38H |
‧‧‧‧ | E T X 03H | |||||||||||||||||||||||
1 0 | 0 0 | 0 1 | 0 0 | 0 1 | 0 0 | 0 0 | 0 0 | 0 0 | 0 0 | 偵誤值 | ||||||||||||||
30H | 43H | 30H | 30H | 30H | 31H | 30H | 30H | 30H | 31H | 30H | 30H | 30H | 30H | 30H | 30H | 30H | 30H | 30H | 30H |