海水養殖鹽度水質傳感器
附錄 數據通訊
?
- 數據格式
Modbus通信默認的數據格式為:9600、n、8、1(波特率9600bps、1個起始位、8個數據位、無校驗、1個停止位)。
波特率等參數可以定制。
- 信息幀格式(xx代表一個字節)
- 讀數據指令幀:
06 03 xx xx xx xx xx xx
地址 功能碼 寄存器地址 寄存器數量 CRC校驗碼(低字節在前)
- 讀數據應答幀:
06 03 xx xx……xx xx xx
地址 功能碼 字節數 應答數據 CRC校驗碼(低字節在前)
- 寫數據指令幀:
06 06 xx xx xx xx xx xx
地址 功能碼 寄存器地址 寫入數據 CRC校驗碼(低字節在前)
- 寫數據應答幀(同寫數據指令幀):
06 06 xx xx xx xx xx xx
地址 功能碼 寄存器地址 寫入數據 CRC校驗碼(低字節在前)
- 寄存器地址
寄存器地址 | 名稱 | 說明 | 寄存器個數 | 訪問方式 |
40001 (0x0000) | 測量值+溫度 | 4個雙字節整數,分別為測量值、測量值小數位數、溫度值、溫度值小數位數。 | 4(8字節) | 讀 |
44097 (0x1000) | 零點校準 | 在空氣中校準,寫入數據為0。 | 1(2字節) | 寫 |
44101 (0x1004) | 斜率校準
| 在已知的標準溶液(20%滿量程—滿量程)中校準,寫入數據為標準溶液實際值×10。 | 1(2字節) | 寫 |
44103 (0x1006) | 零點校準值 | 讀出數據為零點偏移量。 | 1(2字節) | 讀 |
44105 (0x1008) | 斜率校準值 | 讀出數據為斜率值×1000。 | 1(2字節) | 讀 |
44113 (0x1010) | 溫度校準 | 在溶液中校準,寫入數據為實際溫度值×10;讀出數據為溫度校準偏移量×10。 | 1(2字節) | 寫/讀 |
48195 (0x2002) | 傳感器地址 | 默認為6,寫入數據范圍1-127。 | 1(2字節) | 寫/讀 |
48225 (0x2020) | 恢復出廠 | 校準值恢復出廠設置,寫入數據為0。 | 1(2字節) | 寫 |
注意:
- 寄存器地址為根據Modbus協議定義的帶寄存器類型的寄存器起始地址(括號中的16進制表示的實際的寄存器起始地址)。
- 更改傳感器地址時,返回指令中的傳感器地址為更改后的新地址。
- 讀取數據時返回測量值的數據定義:
xx xx xx xx xx xx xx xx
2字節測量值 2字節測量值小數位數 2字節溫度值 2字節溫度小數位數
數據類型默認為:雙字節整型,高字節在前;其他如浮點數類型可選。
- 命令示例
- 設置設備ID地址:
作用:設置電極的Modbus設備地址;
將設備地址06改為01,范例如下
請求幀:06 06 20 02 00 01 E3 BD
應答幀:01 06 20 02 00 01 E2 0A
- 開始測量指令
作用:獲取測量探頭的鹽度值和溫度;溫度的單位為攝氏度,鹽度的值為PSU;
請求幀:06 03 00 00 00 04 45 BE
應答幀:06 03 08 01 02 00 01 00 B0 00 01 14 B4
讀數示例:
鹽度值 | 溫度值 |
01 02 00 01 | 00 B0 00 01 |
如:鹽度值 01 02 表示十六進制讀數鹽度值,00 01 表示鹽度數值帶1位小數點,轉換成十進制為25.8。
溫度值00 B0 表示十六進制讀數溫度值,00 01表示溫度數值帶1位小數點,轉換成十進制為17.6。
- 校準指令
零點校準
作用:設定電極的鹽度零點校準值;此處零點校準在空氣中進行;
請求幀:06 06 10 00 00 00 8C BD
應答幀:06 06 10 00 00 00 8C BD
斜率校準
作用:設定電極的鹽度斜率校準值;此處斜率值以實際標準溶液數值為準,以50PSU為示例參看校準;
請求幀:06 06 10 04 01 F4 CD 6B
應答幀:06 06 10 04 01 F4 CD 6B
- 錯誤響應
如果傳感器不能正確執行上位機命令,則會返回如下格式信息:
定義 | 地址 | 功能碼 | CODE | CRC校驗 |
數據 | ADDR | COM+80H | xx | CRC 16 |
字節數 | 1 | 1 | 1 | 2 |
- CODE:01 – 功能碼錯
03 – 數據錯
- COM:接收到的功能碼
海水養殖鹽度水質傳感器