使用A5進行MODBUS通訊
一、 A5作為MODBUS從機
正航A5系列PLC(以下簡稱A5)有1~2個RS232/RS485通訊口,默認為MODBUS-RTU從機,可直接使用MODBUS-RTU協議訪問。
A5通訊口的默認設置如下:
MODBUS地址:1;波特率:9600;數據位:8位;停止位:1位;校驗位:無校驗。
若您沒有對A5的通訊進行任何設置,則可以直接按照上面所述的配置與A5進行通訊。
|
0x寄存器 |
1x寄存器 |
3x寄存器 |
4x寄存器 | ||||||||
|
A5內部
寄存器 |
MODBUS
地址 |
A5內部
寄存器 |
MODBUS
地址 |
A5內部
寄存器 |
MODBUS
地址 |
A5內部
寄存器 |
MODBUS
地址 | ||||
|
數字量輸出 |
Q0.0 |
1 |
數字量輸入 |
I0.0 |
1 |
模擬輸入 |
AIW0 |
1 |
中間寄存器 |
VW0 |
1 |
|
Q0.1 |
2 |
I0.1 |
2 |
AIW2 |
2 |
VW2 |
2 | ||||
|
… |
… |
… |
… |
… |
… |
… |
… | ||||
|
Q0.7 |
8 |
I0.7 |
8 |
AIW14 |
8 |
VW14 |
8 | ||||
|
Q1.0 |
9 |
I1.0 |
9 |
AIWX |
對應X/2+1 |
VW16 |
9 | ||||
|
Q1.1 |
10 |
I1.1 |
10 |
模擬輸出 |
AQW0 |
9 |
VW18 |
10 | |||
|
Q1.2 |
11 |
I1.2 |
11 |
AQW2 |
10 |
VW20 |
11 | ||||
|
Q… |
18 |
I… |
… |
AQWX |
對應X/2+9 |
V… |
… | ||||
|
Q15.7 |
19 |
I15.7 |
128 |
|
|
VW1998 |
1000 | ||||
|
QA.B |
對應A*8+B+1 |
IA.B |
對應A*8+B+1 |
|
|
VWX |
對應 X/2+1 | ||||
|
中間繼電器 |
M0.0 |
129 |
|
|
|
|
|
|
|
|
|
|
M0.1 |
130 |
|
|
|
|
|
|
|
| ||
|
M… |
… |
|
|
|
|
|
|
|
| ||
|
M15.7 |
256 |
|
|
|
|
|
|
|
| ||
|
MA.B |
對應A*8+B+129 |
|
|
|
|
|
|
|
| ||
使用MODBUS協議時,A5內部的地址與MODBUS協議規定的地址如上表所示。
二、 A5作為MODBUS主機
A5可以作為MODBUS主機訪問其它MODBUS設備,當然也可以訪問其它A5。
使用A5作為主機時,需要用到MODX指令及SMB95、SMB96和SMB97三個寄存器。
MODX指令的作用是發出用戶指定的MODBUS命令,若收到從機發回的命令,則將收回的內容放置在用戶制定的區域。
SMB95寄存器的0位表示MODBUS是否空閑,1位表示接收的命令是否校驗正確,2位表示是否超時。
SMB96是用戶設定的超時寄存器,以100ms為單位。若值為0,則沒有超時設置。
SMB97表示從A5發出命令到目前為止過了多長時間,以100ms為單位。當SMB97> SMB96時,SMB95的2位置1,0位清0,結束本次MODBUS通訊。
使用A5作為MODBUS主機的具體用法及過程如下:
1、 創建一個參數表,包括MODBUS命令的主要內容
可以使用MOVB指令,也可以使用表指令來構建參數表。
參數表的第一個字節表示此參數表有幾個字節(不包括本字節)。從第二個字節開始是MODBUS指令,具體可以參見MODBUS協議的內容。您可以不必做CRC校驗,MODX指令會自動為您添加CRC校驗字節。
下面是一個參數表的舉例:
|
地址 |
值 |
含義解釋 |
備注 |
|
VB0 |
6 |
本表中有6個字節 |
|
|
VB1 |
1 |
從機地址 |
參見MODBUS協議規定 |
|
VB2 |
3 |
MODBUS命令3(讀4x寄存器) | |
|
VB3 |
0 |
開始地址的高位 | |
|
VB4 |
10 |
開始地址的低位 | |
|
VB5 |
0 |
個數的高位 | |
|
VB6 |
8 |
個數的低位 |
參數表第一個字節表明本參數表有6個字節,從VB1~VB6。具體的值根據不同的命令會有所變化。
第2個字節開始都是由MODBUS協議規定的。本例中的MODBUS命令表示向地址為1的從機讀取從10地址開始的8個保持寄存器(4x寄存器)。
具體的指令如下:
l 梯形圖:


l 語句表
NETWORK 0
//首先創建一個表,MODBUS主機命令。
//本例中,創建了一個命令,訪問地址為1的從機
//MODBUS命令為3(讀中間寄存器),從地址10開始,8個寄存器。
LD SM0.1
MOVB 6,VB0
MOVB 1,VB1
MOVB 3,VB2
MOVB 0,VB3
MOVB 10,VB4
MOVB 0,VB5
MOVB 8,VB6
2、 設定通訊參數
為A5設定波特率、奇偶校驗等通訊參數。需注意的是,當作為MODBUS主站時,是不需要設定地址的。具體設定方法請參見第三節。
3、 設定超時時間
當A5作為主機發送命令給從機后,等待從機回答。若一定時間沒有回復,則主機可以認為從機接收錯誤或從機故障。等待時間可以由SMB96設置,時間單位為100ms,因此等待時間可以從0.1秒(100ms)至25.5秒調整。若SMB96=0,則沒有超時限制。
l 梯形圖:


l 語句表
NETWORK 1
//設定超時時間為2S(100ms為單位),如果2S內沒有反饋,則失敗
LD SM0.1
MOVB 20,SMB96
4、 使用MODX指令通訊
準備好通訊內容和設置好通訊后,就可以使用MODX指令進行通訊了。MODX指令包含三個參數:參數一表示使用哪個通訊口(目前A5系列只有0口支持MODBUS主機),參數二表示發送內容參數表,參數三表示接收內容放置位置。例如:
l 梯形圖:


l 語句表
NETWORK 2
//每隔0.5秒,如果上次讀取完成,再次讀取。
//讀取來的數據放在VB100開始的寄存器中
LD SM0.5
AN SM95.0
EU
MODX 0,VB0,VB100
上面的語句表示,A5從0號通訊口發送VB0開始的參數命令,并將接收到的從機回復內容放置在VB101開始的地址區域,而VB100表示接收到的字節個數。
5、 查詢SMB95的狀態以判斷通訊結果
使用MODX指令后,您可以根據SMB95字節的內容來判斷目前的通訊狀態。
|
SM位 |
描述 |
|
SM95.0 |
當MODBUS功能空閑時,此位為0,等待從機回復時,此位為1 |
|
SM95.1 |
該位表示是否校驗錯誤。當收到的從機回復校驗錯誤時,此位=1 |
|
SM95.2 |
該位表示是否超時,1=超時 |
|
SM95.3 |
保留 |
|
SM95.4 |
保留 |
|
SM95.5 |
保留 |
|
SM95.6 |
保留 |
|
SM95.7 |
保留 |
SMB95寄存器的0位表示MODBUS是否空閑,1位表示接收的命令是否校驗正確,2位表示是否超時。
若SM95.0=1,則說明從機還沒有回復。若SM95.0=0,則說明從機已回復或已超時。
若SM95.1=1,則說明返回的信息校驗錯誤。
若SM95.2=1,說明等待已超時。
若SMB95=0,說明從機已回復信息并校驗正確。從機回復的信息內容已放置在VB100開始的表中。
6、 從機返回結果分析
當SMB95=0時,說明從機返回結果正確。假設VB100開始的內容如下:
|
地址 |
數值 |
|
VB100 |
19 |
|
VB101 |
1 |
|
VB102 |
3 |
|
VB103 |
16 |
|
VB104 |
0 |
|
VB105 |
0 |
|
VB106 |
0 |
|
VB107 |
0 |
|
VB108 |
0 |
|
VB109 |
0 |
|
VB110 |
0 |
|
VB111 |
0 |
|
VB112 |
0 |
|
VB113 |
0 |
|
VB114 |
0 |
|
VB115 |
0 |
|
VB116 |
0 |
|
VB117 |
0 |
|
VB118 |
0 |
|
VB119 |
0 |
|
VB120 |
228 |
|
VB121 |
89 |
VB100表示從機返回的數據有19字節(不包含CRC校驗的最后兩個字節)。VB101表示從機地址為1,VB102表示MODBUS命令號為3,VB103表示數據長度16字節。VB104~VB119是16字節的數據長度,表示主機想讀取的8個字(16字節)的數據值。VB120和VB121是從機返回的CRC校驗值,您可以不必關心。
三、 調整通訊設置
通訊的波特率、數據位、停止位、校驗位等設置可以在SMB30中設置,最低兩位表示協議類型可設置為“00”(從機),當A5執行MODX指令時,會自動將其設置為“10”(主機)。
四、 注意事項
l A5只支持MODBUS-RTU,不支持MODBUS-ASCII。若您需要使用MODBUS-ASCII,可以使用A5的自由口通訊模式來編程實現。
l MODBUS使用的是big endian模式,而A5使用的是little endian模式。所以當A5使用命令3讀取另一臺A5時,讀取的字高字節和低字節是相反的。因此使用MODBUS命令3讀取的對應關系如下圖所示:

本文標簽:使用A5進行MODBUS通訊
* 由于無法獲得聯系方式等原因,本網使用的文字及圖片的作品報酬未能及時支付,在此深表歉意,請《使用A5進行MODBUS通訊》相關權利人與機電之家網取得聯系。










