本探頭使用的是基于 RS485 硬件接口 ModbusRTU 通訊協議。支持 03 和 06 兩個功能碼。
03 功能碼:讀取單個或多個保持寄存器
主機(PLC、PC 等設備)發送:
地址 03 起始地址高位 起始地址低位 寄存器數量高位 寄存器數量低位 CRCL CRCH
從機回復:
地址 03 字節數 n*2 數據 1 高位 數據 1 低位 …… 數據 n 高位 數據 n 低位 CRCL CRCH
06 功能碼:修改單個保持寄存器
主機(PLC、PC 等設備)發送:
地址 06 地址寄存器高位 地址寄存器低位 修改數值高位 修改數值低位 CRCL CRCH
從機回復
地址 06 地址寄存器高位 地址寄存器低位 修改數值高位 修改數值低位 CRCL CRCH
被測氣體示例:
請先瀏覽系統參數表中的“數據發送模式”參數。
假設本機地址為 1,數據發送模式為:被動-2。
讀取 SO2 實時濃度寄存器指令示例:
主機發送:01 03 00 00 00 01 84 0A
從機回復:01 03 02 00 64 B9 AF (SO2 實時濃度為 100,需按小數點位數
縮小,即需除以 10,實際濃度為 100÷10=10.0ppm)
修改 CH4 低報寄存器指令示例:
主機發送:04 06 00 05 00 FA 19 DD
從機回復:04 06 00 05 00 FA 19 DD(把 CH4 的低報修改為 0xFA,即 250,
實際低報值為 250÷10=25.0%LEL)
部分寄存器地址表:氣體參數
名稱
地址
備注
通道一 實時濃度
0x0000 03 功能碼:讀取實時濃度
06 功能碼:調零
狀態
0x0001 03 功能碼:讀取當前狀態
06 功能碼:標定
量程
0x0002 限制最小 0x0064,即最小限制 100
01 06 00 02 03 E8 CRCL CRCH
修改 0x0002 內容為 0x03E8,即 1000
單位
0x0003 0x0000-0x0012,即 0-18,共 19 個單位
0-空,1-ppm,2-pphm,3-ppb,4-%LEL,
5-%VOL,6-ug/m3,7-mg/m3,8-g/m3,
9-mg/L,10-%RH,11-℃,12-Nm3/h,
13-MPa,14-KPa,15-Pa,16-mm,17-m3/h,
18-M/S
精度
0x0004 0x0000-0x0004;即 0-4,最多 4 位小數
低報
0x0005 0-0xFFFF,即 0-65535
高報
0x0006 0-0xFFFF,即 0-65535
回差
0x0007 0-0xFFFF,即 0-65535
氣體名稱第 2、1 字符 0x0008 單個字符范圍 0x0000-0x007F
氣體名稱第 4、3 字符 0x0009 單個字符范圍 0x0000-0x007F
氣體名稱第 6、5 字符 0x000A 單個字符范圍 0x0000-0x007F
氣體名稱第 8、7 字符 0x000B 單個字符范圍 0x0000-0x007F
4mA DAC 值
0x0010 限制最大 0x0F9F,即 3999
20mA DAC 值
0x0011 限制最大 0x0F9F,即 3999
報警模式
0x0012 取值范圍:0x0001,0x0002,0x0003,
0x0004。以下情況不報警:
模式 1:V<L<H,濃度值<低報值<高報值
模式 2:L<V<H,低報值<濃度值<高報值
模式 3:H<V<L,高報值<濃度值<低報值
模式 4:H<L<V,高報值<低報值<濃度值
傳感器信號類型
0x0013 0-正信號,1-負信號
讀取濃度比例
或
寫強制輸出電流標志
0x001B 03 功能碼:讀取當前濃度與量程的比例
06 功能碼:
0-隨濃度比例輸出
4-強制輸出 4mA
20-強制輸出 20mA
其他值:報錯誤碼 03
部分寄存器地址表:系統參數
名稱
地址
備注
系統參數 本機地址
0x0080 0x0001-0x00C7,即 1-199 號
與外部設備通信波特率 0x0081 0x0000-0x0008,即 0-8
0-2400
,
1-4800
,
2-9600
,
3-14400
,
4-19200
,
5-38400
,
6-56000
,
7-57600
,
8-115200
數據發送模式
0x0082 0x0000,0x0001,0x0002
0x0000:單地址的被動發送模式,一臺
檢測儀僅有一個 ModbusRTU 通訊地址,
顯示為“被動-1”,此檢測儀通訊地址即
為系統設置界面下的“本機地址”。氣
體 1 寄存器地址范圍:0x0000-0x001F;
氣體 2 寄存器地址范圍:0x0020-0x003F;
氣體 3 寄存器地址范圍:0x0040-0x005F;
氣體 4 寄存器地址范圍:0x0060-0x007F;
0x0001:多地址的被動發送模式,一臺
檢測儀有多個 ModbusRTU 通訊地址,顯
示為“被動-2”,例如檢測儀系統設置界
面下的“本機地址”為 5,則氣體 1 的通
訊 地 址 為 5 , 寄 存 器 地 址 范 圍 :
0x0000-0x001F;氣體 2 的通訊地址為 6,
寄存器地址范圍:0x0000-0x001F;氣體
3 的通訊地址為 7,寄存器地址范圍:
0x0000-0x001F;氣體 4 的通訊地址為 8,
寄存器地址范圍:0x0000-0x001F;
0x0002:單地址的主動發送模式,數據
協議為 ModbusRTU 協議,一條數據包含
4 個氣體的實時濃度,不含小數點①,發
送間隔由“數據主動發送間隔”控制。
數據格式見②。
數據主動發送間隔
0x0083 0x0005-0xEA5F,即 5-59999 秒(約 16.666
小時)
恢復出廠設置對象
0x0084 0x0000-0x0005,即 0-5
0-氣體 1,1-氣體 2,2-氣體 3,3-氣體 4,
4-系統參數,5-全部參數
語言
0x0085 0x0000,0x0001,即 0 和 1
0-簡體中文,1-English
開機倒計時
0x0086 0x0000-0x012B,即 0-299 秒,5 分鐘
開機自檢
0x0087 0x0000,0x0001,即 0 和 1
0-開機不自檢,1-自檢
版本號
0x0088 (只讀)十進制 10=V1.0
主動上傳開關
0x0089 0x0000,0x0001,即 0 和 1
設為主動上傳模式時有效
0-停止主動上傳
1-啟用主動上傳(上電默認狀態)
設為出廠參數
0x00EE 0-設為出廠值,非 0-設為當前值
①、不含小數點,即數據傳輸時都是傳輸整數,例如一個氣體的量程為 10.00ppm,實時濃
度為 0.12,在傳輸時會傳輸 12,而不是 0.12,可以理解為放大了 100 倍傳輸,接收端收到
數據后要響應的縮小 100 倍。各個氣體的小數點位數可以根據量程上的小數點位數獲得。
②、單地址的主動發送模式通信示例:
上圖是一個四合一的有毒氣體檢測儀,包含了四種氣體,100.0ppm 的 SO2,
50.00mg/m3 的 VOCs,30.00%VOL 的 O2,還有 100.0%LEL 的 CH4,在系統菜單下,
給每個氣體分配了一個序號,SO2 為 1,VOCs 為 2,O2 為 3,CH4 為 4。
例如系統設置界面下的“本機地址”為 1,則檢測儀會間隔“數據主動發送
間隔”時間主動的通過 RS485 接口向外發送數據,格式如下:
01 03 10 00 64 06 C2 08 16 02 28 00 01 00 02 00 01 00 03 CRCL CRCH
0x01:本機地址;
0x03:功能碼;
0x10:后續有 0x10 個字節是數據,即 16 個數據;
0x0064:SO2 的無小數點的實時濃度,100,實際濃度除以 10,即 10.0ppm;
0x06C2:VOCs 的無小數點的實時濃度,1730,實際濃度除以 100,即 17.30mg/m3;
0x0816:O2 的無小數點的實時濃度,2070,實際濃度除以 100,即 20.70%VOL;
0x0044:CH4 的無小數點的實時濃度,552,實際濃度除以 10,即 55.2%VOL;
0x0001:SO2 的運行狀態,正常;
0x0002:VOCs 的運行狀態,低報;
0x0001:O2 的運行狀態,正常;
0x0003:CH4 的運行狀態,高報;
CRCL:CRC16 冗余校驗碼低字節;
CRCH:CRC16 冗余校驗碼高字節。
Modbus 錯誤碼(10 進制)
功能碼
說明
01
非法功能。對于服務器(或從站)來說,詢問中接收到的功能碼是不可允許的
操作,可能是因為功能碼僅適用于新設備而被選單元中不可實現同時,還指出
服務器(或從站)在錯誤狀態中處理這種請求,例如:它是未配置的,且要求
返回寄存器值。
02
非法數據地址。對于服務器(或從站)來說,詢問中接收的數據地址是不可允
許的地址,特別是參考號和傳輸長度的組合是無效的。對于帶有 100 個寄存器
的控制器來說,偏移量 96 和長度 4 的請求會成功,而偏移量 96 和長度 5 的請
求將產生異常碼 02。
03
非法數據值。對于服務器(或從站)來說,詢問中包括的值是不可允許的值。
該值指示了組合請求剩余結構中的故障。例如:隱含長度是不正確的。modbus
協議不知道任何特殊寄存器的任何特殊值的重要意義,寄存器中被提交存儲的
數據項有一個應用程序期望之外的值。
04
從站設備故障。當服務器(或從站)正在設法執行請求的操作時,產生不可重
新獲得的差錯。
05
確認。與編程命令一起使用,服務器(或從站)已經接受請求,并且正在處理
這個請求,但是需要長持續時間進行這些操作,返回這個響應防止在客戶機(或
主站)中發生超時錯誤,客戶機(或主機)可以繼續發送輪詢程序完成報文來
確認是否完成處理。
06
從屬設備忙。與編程命令一起使用。服務器(或從站)正在處理長持續時間的程序
命令。張服務器(或從站)空閑時,用戶(或主站)應該稍后重新傳輸報文。
08
CRC16 碼校驗錯誤,從站接收來自服務器(或主機)的數據后,計算數據的校
驗碼異常,表明接收的數據本身的校驗碼是錯誤的,或者在傳輸過程中數據發
生了變化,導致校驗失敗。
更多技術問題聯系陳工:18948359132(微信同號)