1. 儀器協議
在線監測儀器與數采儀之間通信協議采用Modbus RTU标準,數采儀作為Modbus主機,每台在線監測儀器作為Modbus從機。
圖1 Modbus主從通信系統結構
協議适用接口描述:
(1)适用于RS-485通訊接口通訊;
(2)每個RS-485接口可以同時連接多個在線監測儀器。
(3)适用于RS-232通訊接口通訊;
2. 協議層次
在線監測儀器與數采儀之間通訊協議采用Modbus RTU标準,可承載在多種通訊接口上。
圖2 Modbus RTU協議層次圖
3. 通信協議
在線監測儀器與數采儀之間通信協議采用Modbus RTU标準,通過Modbus寄存器定義通信數據内容。
3.1 Modbus RTU
3.1.1 報文幀結構
圖3 Modbus RTU串行鍊路PDU
表1 Modbus報文結構表
名稱 |
類型 |
長度(字節) |
描述 |
設備地址 |
byte |
1 |
對應儀器中的設備地址,用于區分挂在同一個485總線下不同在線監測儀器。取值範圍1~127 |
功能碼 |
BYTE |
1 |
功能碼定義見6.1.2 |
數據 |
BYTE[n] |
N |
變長數據,伴随功能碼、應答模式不同而不同 |
CRC |
WORD |
2 |
Modbus CRC16校驗結果 |
3.1.2 功能碼定義
表2 Modbus功能碼定義表
代碼 |
功能 |
數據類型 |
備注 |
0x03 |
讀 |
整形、浮點、字符 |
讀多個寄存器 |
0x10 |
寫 |
整形、浮點、字符 |
寫多個寄存器 |
0x06 |
寫 |
整形、浮點、字符 |
寫單個寄存器 |
3.1.3 報文應答格式
3.1.3.1 功能碼(0x03)讀
主機請求:
設備地址 |
功能碼 |
寄存器地址 |
寄存器數量 |
CRCH |
CRCL |
1B |
1B |
2B |
2B |
1B |
1B |
設備地址:主控闆地址,為0x01-0xF7可選
功能碼:為0x03
寄存器地址:要讀取數據的存放開始地址。
寄存器數量:要讀取的寄存器的個數
從機應答:
設備地址 |
功能碼 |
寄存器地址 |
數據字節數 |
數據 |
CRCH |
CRCL |
1B |
1B |
2B |
2B |
... |
1B |
1B |
設備地址:下位機地址,為0x01-0xF7可選
功能碼:為0x03
數據字節數:寄存器數量×2
數據:N =(寄存器數量×2)BYTE
錯誤應答:
設備地址(1BYTE) 出錯功能碼 錯誤類型(1BYTE) CRC校驗
注意出錯功能碼是功能碼BYTE最高位取反得到。例如0x03 出錯功能碼為0x83
錯誤類型:
01 非法功能
02 非法數據地址
03 非法數據值
04 從站設備故障
05 确認
06 從屬設備忙
注:以上錯誤類型為Modbus RTU标準含義。
示例:
讀取命令:
01 03 00 00 00 02 C4 0B (設備地址01)
02 03 00 00 00 02 C4 38 (設備地址02)
其中設備地址(01) 功能碼(03) 寄存器起始地址(00 00) 寄存器數量(00 02 即指數據長度為2個字) CRC校驗(C4 0B)
應答報文:
01 03 04 41 CB 42 B7 EF 27
設備地址(01) 功能碼(03) 數據字節數(04) 讀取數據(實際為16進制數42 B7 41 CB對應的浮點型數據為91.63) CRC校驗(EF 27)。
3.1.3.2 功能碼(0x10)寫
主機請求:
設備地址 |
功能碼 |
寄存器地址 |
寄存器數量 |
字節數 |
DATA |
CRCH |
CRCL |
1B |
1B |
2B |
2B |
1B |
... |
1B |
1B |
設備地址:主控闆地址,為0x01-0xF7可選
功能碼:為0x10
寄存器地址:要讀取數據的存放開始地址
寄存器數量:要寫入寄存器的個數
字節數:寫入數據的字節數
數據:要寫入的數據
注意如寫一個寄存器,則寄存器數量為1,字節數為2,數據為一個WORD。
從機應答:
設備地址 |
功能碼 |
寄存器地址 |
寄存器數量 |
CRCH |
CRCL |
1B |
1B |
2B |
2B |
1B |
1B |
示例:
主機發送:01 10 00 6B 00 02 04 00 0F 06 08 86 51
從機回複:01 10 00 6B 00 02 30 14
錯誤應答: 設備地址(1BYTE) 出錯功能碼 錯誤類型(1BYTE) CRC校驗
注意出錯功能碼是功能碼BYTE最高位取反得到。例如0x03出錯功能碼為0x83
錯誤類型:
01 非法功能
02 非法數據地址
03 非法數據值
04 從站設備故障
05 确認
06 從站設備忙
注:以上錯誤類型為Modbus RTU标準含義。
3.1.3.3 功能碼(0x06)寫
主機請求:
設備地址 |
功能碼 |
寄存器地址 |
DATA |
CRCH |
CRCL |
1B |
1B |
2B |
2B |
1B |
1B |
從機應答:
設備地址 |
功能碼 |
寄存器地址 |
DATA |
CRCH |
CRCL |
1B |
1B |
2B |
2B |
1B |
1B |
3.1.4 應用規約
表3 Modbus數據類型定義表
數據類型 |
描述及要求 |
BYTE |
無符号單字節整型(字節,8位) |
WORD |
無符号2字節整型(字,16位) |
DWORD |
無符号4字節整型(雙字,32位) |
FLOAT |
4字節浮點數型(字節,32位)IEEE 754 标準 |
DOUBLE |
8字節浮點數型(字節,64位) |
BYTE[n] |
N字節 |
STRING |
GBK編碼,采用0終結符,若無數據,則放一個0終結符 |
DATE |
日期類型6字節 年(BYTE)-月(BYTE)-日(BYTE)-時(BYTE)-分(BYTE)-秒(BYTE)。 其中:年=byte 2000, 月:1-12,日:1-31,時:0-23 分:0-59 秒:0-59 數值格式:BCD碼 |
數據字節序定義:
協議采用大端模式(big-endian)來傳遞WORD、DWORD、FLOAT、DOUBLE。對于DWORD、FLOAT、DOUBLE,字間順序也按照大端模式(big-endian)排列(也就是Modbus的Swap模式)。
名稱 |
寄存器偏移 |
數據類型 |
寄存器描述 |
讀寫 |
單位 |
備注 |
關鍵參數 |
0x2200 |
WORD |
消解溫度 |
R |
攝氏度 | |
0x2201 |
WORD |
消解時長 |
R |
分鐘 | ||
0x2204 |
FLOAT |
量程下限 |
R |
毫克/升 | ||
0x2205 | ||||||
0x2206 |
FLOAT |
量程上限 |
R |
毫克/升 | ||
0x2207 | ||||||
0x2208 |
FLOAT |
曲線斜率k |
R | |||
0x2209 | ||||||
0x220A |
FLOAT |
曲線截距b |
R | |||
0x220B | ||||||
0x2210 |
FLOAT |
标液一濃度 |
R |
毫克/升 |
零标 | |
0x2211 | ||||||
0x2212 |
FLOAT |
标液一 測量過程值 |
R |
信号值 | ||
0x2213 | ||||||
0x2214 |
FLOAT |
标液二濃度 |
R |
毫克/升 |
量标 | |
0x2215 | ||||||
0x2216 |
FLOAT |
标液二 測量過程值 |
R |
信号值 | ||
0x2217 |
讀取消解溫度的例子
請求報文: 01 03 22 00 00 01 8E 72
應答報文: 01 03 02 00 64 B9 AF
00 64 表示的是讀取消解溫度的值,消解溫度是100度
2.工作狀态
名稱 |
寄存器偏移 |
數據類型 |
寄存器描述 |
讀寫 |
備注 |
工作狀态 |
0x2000 |
WORD |
工作狀态 |
R |
16位整形 |
測量模式 |
0x2002 |
DWORD |
測量模式 |
R |
1連續測量 2周期測量 3定點測量 4觸發測量 5調試模式 |
告警位圖 |
0x2004 |
DWORD |
告警位圖 |
R |
8個寄存器,表示128種告警。從低到高依次對應告警位0~15 |
儀器工作狀态定義表
編碼 |
描述 |
備注 |
1 |
離線/調試 | |
2 |
待機 | |
3 |
測量 | |
4 |
維護 | |
5 |
清洗 | |
6 |
故障 | |
7 |
零點校準 | |
8 |
量程校準 | |
9 |
預留 | |
10 |
預留 | |
11 |
标樣核查 | |
12~99 |
可擴展 | |
2.1讀取工作狀态的例子
請求報文: 01 03 20 00 00 01 8F CA
應答報文: 01 03 02 00 02 39 85
00 02 表示工作狀态是2,查表可以知道工作的狀态在待機狀态。
2.2 讀取測量模式的例子
請求報文: 01 03 20 02 00 01 2E 0A
應答報文: 01 03 02 00 02 39 85
00 02 表示測量的模式是2,查表可以知道模式的狀态就是周期模式。
報警值 |
描述 |
針對方法 |
0x00 |
無故障 |
通用 |
0x01 |
缺試劑告警 |
通用 |
0x02 |
缺水樣告警 |
通用 |
0x04 |
缺空白水告警 |
通用 |
0x08 |
缺标液 |
通用 |
0x10 |
備用 |
通用 |
0x20 |
标定異常告警 |
通用 |
0x40 |
超量程告警 |
通用 |
0x80 |
加熱異常 |
通用 |
0x100 |
低試劑預警 |
通用 |
0x200 |
超上限告警 |
通用 |
0x400 |
超下限告警 |
通用 |
0x800 |
儀表内部其它異常 |
通用 |
3.反向控制
名稱 |
寄存器偏移 |
數據類型 |
寄存器描述 |
讀寫 |
備注 |
遠程控制命令 |
0x2C00 |
WORD |
遠程控制命令碼 |
W | |
0x2C01 |
BYTE[n] |
遠程控制命令參數 |
W |
當遠程控制命令碼為時間校準命令時,該字段為6字節的DATE | |
... | |||||
0x2CFF |
編碼 |
名稱 |
參數 |
返回說明 |
1 |
啟動測量 |
無 |
執行成功/失敗 |
2 |
停止測量 |
無 |
執行成功/失敗 |
3 |
清洗 |
無 |
執行成功/失敗 |
4 |
标定 |
1,被動觸發 2,周期标定 |
執行成功/失敗 |
5 |
标液一校準 |
标液一校準 |
執行成功/失敗 |
6 |
标液二校準 |
标液二校準 |
執行成功/失敗 |
7 |
預留 |
無 | |
8 |
時間校準 |
Date類型 |
返回儀器設定後的時間 |
9 |
标樣核查 |
1 标樣一核查 2 标樣二核查 |
執行成功/失敗 |
11~99 |
可擴展 |
無 |
3.1 反向控制的例子
操作名稱 |
示例報文 |
備注 |
啟動測量 |
請求報文:01 10 2c 00 00 01 02 00 01 8a 52 應答報文:01 10 2c 00 00 01 09 59 | |
停止測量 |
請求報文:01 10 2c 00 00 01 02 00 02 ca 53 應答報文:01 10 2c 00 00 01 09 59 | |
清洗 |
請求報文:01 10 2c 00 00 01 02 00 03 0b 93 應答報文:01 10 2c 00 00 01 09 59 | |
标定 |
請求報文:01 10 2c 00 00 02 04 00 04 00 01 bf 6f 應答報文:01 10 2c 00 00 02 49 58 00 01表示被動觸發标定 |
零點和量标一起标定 |
标液一校準 |
請求報文:01 10 2c 00 00 01 02 00 05 8b 91 應答報文:01 10 2c 00 00 01 09 59 |
零标 |
标液二校準 |
請求報文:01 10 2c 00 00 01 02 00 06 cb 90 應答報文:01 10 2c 00 00 01 09 59 |
量标 |
4.讀取數據
名稱 |
寄存器偏移 |
數據類型 |
寄存器描述 |
讀寫 |
備注 |
測量數據 |
0x1000 |
DATE |
數據時間 |
R |
測量啟動時間 |
0x1001 | |||||
0x1002 | |||||
0x1005 |
FLOAT |
測量數值 |
R | ||
0x1006 | |||||
0x1007 |
WORD |
預留 |
R | ||
0x1008 |
WORD |
數據标識 |
R | ||
零點校準數據 |
0x5200 |
WORD |
備用 |
R | |
0x5201 |
DATE |
零點數據時間 |
R | ||
0x5202 | |||||
0x5203 | |||||
0x5204 |
float |
零點濃度 |
R | ||
0x5205 | |||||
0x5206 |
float |
零點吸光度值 |
R | ||
0x5207 | |||||
量程校準數據 |
0x5208 |
WORD |
備用 |
R | |
0x5209 |
DATE |
量程校準數據時間 |
R | ||
0x520A | |||||
0x520B | |||||
0x520C |
FLOAT |
量程校準液濃度 |
R | ||
0x520D | |||||
0x520E |
FLOAT |
量程校準吸光度 |
R | ||
0x520F | |||||
0x5210 |
WORD |
備用 |
R | ||
标液核查數據 |
0x5211 |
DATE |
标樣核查數據時間 |
R | |
0x5212 | |||||
0x5213 | |||||
0x5214 |
FLOAT |
标樣核查測量濃度值 |
R | ||
0x5215 | |||||
0x5216 |
FLOAT |
标樣核查測量數值吸光度 |
R | ||
0x5217 | |||||
0x5218 |
FLOAT |
标樣核查标準濃度值 |
R |
已知标液的濃度值 | |
0x5219 |
儀器測量數據時間定義表
數據類型 |
描述及要求 |
DATE |
日期類型6字節 年(BYTE)-月(BYTE)-日(BYTE)-時(BYTE)-分(BYTE)-秒(BYTE)。 其中:年=byte 2000, 月:1-12,日:1-31,時:0-23 分:0-59 秒:0-59 數值格式:BCD碼 |
數據标識表
标識 |
标識定義 |
說明 |
N |
正常 |
測量數據正常有效 |
T |
超上限 |
監測濃度超儀器測量上限 |
L |
超下限 |
監測濃度超儀器下限或小于檢出限 |
D |
儀器故障 |
儀器故障 |
B |
儀器離線 |
儀器離線(數據通信正常) |
M |
維護調試數據 |
在線監控(監測)儀器儀表處于維護(調試)期間産生的數據 |
CZ |
标液一校準(零點校準) |
零點校準 |
CS |
标液二校準 |
标液校準 |
SC |
标液核查 |
标液核查 |
4.1 讀取數據報文
請求報文:01 03 10 00 00 0B 00 CD
應答報文:01 03 16 17 01 01 00 00 00 00 00 00 00 40 00 00 00 00 0000 4E 00 00 00 00 C3B9
17 01 01 00 00 00表示數據時間2017-01-01 00:00:00
40 00 00 00表示數據通道1測量值為2.0
00 4E表示數據标示“N”正常
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!