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