一、產(chǎn)品介紹及參數(shù)
智能數(shù)字傳感器采用高精度土壤硝酸鹽離子電極, RS-485接口輸出,支持標準Modbus RTU工業(yè)數(shù)據(jù)總線協(xié)議,能夠完成硝酸鹽離子數(shù)據(jù)采集、校準及自動溫度補償?shù)裙δ?,用戶可自定義查詢子地址,設置傳輸波特率。S-CGHNO3智能數(shù)字傳感器參數(shù):
型號 | S-CGHNO3 |
探頭 | 復合電極(帶溫補) |
反應時間 | 1 秒內(nèi)完成 90% 讀數(shù) |
溫度范圍 | 0 ~ 50°C |
量程范圍 | 0.1ppm ~ 18000ppm |
分辨率 | ±2% |
輸出接口 | 全數(shù)字輸出(浮點),接口RS-485 |
傳輸協(xié)議 | Modbus RTU |
功能碼 | 支持 03 04 06 |
自定義定地址 | 支持 1 ~ 254地址范圍 |
自定義波特率 | 支持115200, 57600, 38400, 28800, 19200, 14400, 9600, 4800, 2400, 1200,8N1 |
校準 | 命令方式校準/軟件校準 |
溫度補償 | 自動補償 |
補償器件 | PT100/PT1000鉑熱電阻 |
自動識別 | 特征碼查詢識別 |
工作電壓 | 5V±0.2V DC |
預熱時間 | ≤ 1s |
系統(tǒng)功耗 | ≤ 210 mW |
ESD人體靜電防護 | 支持 |
防護等級 | IP54 |
傳感器壽命 | 68個月(視土質(zhì)狀況而定) |
二、產(chǎn)品資源
《用戶手冊》 | 1份 |
《自動校準軟件》 | 1份 |
三、使用Modbus通訊協(xié)議與傳感器通訊
3.1 Modbus協(xié)議Modbus是由Modicon(現(xiàn)為施耐德電氣公司的一個品牌)在1979年發(fā)明的,是一個真正用于工業(yè)現(xiàn)場的總線協(xié)議。為更好地普及和推動Modbus在基于以太網(wǎng)上的分布式應用,目前施耐德公司已將Modbus協(xié)議的所有權(quán)移交給IDA(Interface for Distributed Automation,分布式自動化接口)組織,并成立了Modbus-IDA組織,為Modbus今后的發(fā)展奠定了基礎。在中國,Modbus已經(jīng)成為國家標準GB/T19582-2008
3.2 傳感器通訊波特率
在次使用傳感器時,傳感器使用的默認波特率為9600 Baud,8 Data bits, None Parity, 1 Stop Bit,您可以通過Modbus RTU命令寫波特率寄存器進行設置,命令寫入后將在下一次上電時生效。
表3.2.1 波特率寄存器
寄存器 名稱 | 類型 | 大小 | 起始 地址 | 讀功 能碼 | 寫功 能碼 | 數(shù)據(jù)-波特率 | 默認值 | 存儲模式 |
波特率 | 4X | 16 Bit | 0x0001 | 0x03 | 0x06 | 見表 4.2.2 | 0x0000 | 大端模式 (Big-Endian) |
表3.2.2 寄存器數(shù)據(jù)與波特率關系
寄存器數(shù)據(jù) | 對應波特率 |
0x0000 | 115200 Baud |
0x0001 | 57600 Baud |
0x0002 | 38400 Baud |
0x0003 | 28800 Baud |
0x0004 | 19200 Baud |
0x0005 | 14400 Baud |
0x0006 | 9600 Baud |
0x0007 | 4800 Baud |
0x0008 | 2400 Baud |
0x0009 | 1200 Baud |
其他 | 自動恢復到出廠設置值 |
(1)將波特率修改為9600 Baud (0x0006),默認傳感器子地址為0x01
主機發(fā)送請求:
地址 (8 Bit) | 功能碼 (8 Bit) | 起始寄存器地址高位 (8 Bit) | 起始寄存器地址低位 (8 Bit) | 數(shù)據(jù)高位 (8 Bit) | 數(shù)據(jù)低位 (8 Bit) | CRC高位 | CRC低位 |
0x01 | 0x06 | 0x00 | 0x01 | 0x00 | 0x06 | 0x58 | 0x08 |
地址 (8 Bit) | 功能碼 (8 Bit) | 起始寄存器地址高位 (8 Bit) | 起始寄存器地址低位 (8 Bit) | 數(shù)據(jù)高位 (8 Bit) | 數(shù)據(jù)低位 (8 Bit) | CRC高位 | CRC低位 |
0x01 | 0x06 | 0x00 | 0x01 | 0x00 | 0x06 | 0x58 | 0x08 |
傳感器進行正常應答后,將傳感器重新上電,使用9600 Baud連接傳感器即可。
3.3 傳感器子地址
在次使用傳感器時,傳感器使用的默認子地址為0x01,您可以通過Modbus RTU命令寫子地址寄存器進行設置,命令寫入后將在下一次上電時生效。
表3.3.1 子地址寄存器
寄存器 名稱 | 類型 | 大小 | 起始 地址 | 讀功 能碼 | 寫功 能碼 | 數(shù)據(jù)范圍 | 默認值 | 存儲模式 |
子地址 | 4X | 16 Bit | 0x0002 | 0x03 | 0x06 | 0x00~0xFE | 0x0001 | 大端模式 (Big-Endian) |
3.3.1 修改地址寄存器示例
(1)將地址修改為0x08 ,默認傳感器地址為0x01
主機發(fā)送請求:
地址 (8 Bit) | 功能碼 (8 Bit) | 起始寄存器地址高位 (8 Bit) | 起始寄存器地址低位 (8 Bit) | 數(shù)據(jù)高位 (8 Bit) | 數(shù)據(jù)低位 (8 Bit) | CRC高位 | CRC低位 |
0x01 | 0x06 | 0x00 | 0x02 | 0x00 | 0x08 | 0x29 | 0xCC |
地址 (8 Bit) | 功能碼 (8 Bit) | 起始寄存器地址高位 (8 Bit) | 起始寄存器地址低位 (8 Bit) | 數(shù)據(jù)高位 (8 Bit) | 數(shù)據(jù)低位 (8 Bit) | CRC高位 | CRC低位 |
0x01 | 0x06 | 0x00 | 0x02 | 0x00 | 0x08 | 0x29 | 0xCC |
傳感器進行正常應答后,將傳感器重新上電,使用子地址 0x08連接傳感器即可。
3.4 獲取銨離子濃度
通過Modbus RTU 協(xié)議可以訪問硝酸根離子(NO3)值寄存器來獲取當前所測量的NO3值數(shù)據(jù),NO3數(shù)據(jù)由2個16 bit的輸入寄存器進行存儲,按照小端模式(Little-Endian,即x86體系模式)的單精度浮點數(shù)(即C/C++ 中的float類型, 32 Bit)進行表示。
表3.4.1 NO3寄存器
寄存器 名稱 | 類型 | 大小 | 起始 地址 | 讀功 能碼 | 寫功 能碼 | 數(shù)據(jù)范圍 | 存儲模式 |
NH4值1 | 3X | 16 Bit | 0x0001 | 0x04 | - | -2^128 ~ +2^128 | 單精度浮點數(shù) |
NH4值2 | 3X | 16 Bit | 0x0002 | 0x04 | - |
(1)默認傳感器地址為0x01,電極放置在硝酸根離子為 14.078314 ppm 的溶液當中進行測量
主機發(fā)送請求:
地址 (8 Bit) | 功能碼 (8 Bit) | 起始寄存器地址高位 (8 Bit) | 起始寄存器地址低位 (8 Bit) | 寄存器數(shù)量高位 (8 Bit) | 寄存器數(shù)量低位 (8 Bit) | CRC高位 | CRC低位 |
0x01 | 0x04 | 0x00 | 0x01 | 0x00 | 0x02 | 0x20 | 0x0B |
地址 (8 Bit) | 功能碼 (8 Bit) | 字節(jié)數(shù) (8 Bit) | 數(shù)據(jù)位[0] (8 Bit) | 數(shù)據(jù)位[1] (8 Bit) | 數(shù)據(jù)位[2] (8 Bit) | 數(shù)據(jù)位[3] (8 Bit) | CRC高位 | CRC低位 |
0x01 | 0x04 | 0x04 | 0xC6 | 0x40 | 0x61 | 0x41 | 0x2F | 0x78 |
應答數(shù)據(jù)說明:
在傳感器應答中,數(shù)據(jù)位[0]至數(shù)據(jù)位[3]共4個字節(jié)構(gòu)成了32位小端模式下的Float類型的數(shù)據(jù)即為14.078314。
編程提示:
以上述數(shù)據(jù)為例,C語言當中可進行如下轉(zhuǎn)換操作
注意:樣例代碼為x86 PC 或 小端模式ARM處理器平臺
#Include typedef union { unsigned char Hex[4]; float Val; }THex2Float; int main() { THex2Float t; t.Hex[0] = 0xC6; /* 數(shù)據(jù)位[0] */ t.Hex[1] = 0x40; /* 數(shù)據(jù)位[1] */ t.Hex[2] = 0x61; /* 數(shù)據(jù)位[2] */ t.Hex[3] = 0x41; /* 數(shù)據(jù)位[3] */ printf("%f", t.Val); /* t.Val 值將被輸出為 14.078314 */ return 0; } |
表3.4.1 NO3溫度寄存器
寄存器 名稱 | 類型 | 大小 | 起始 地址 | 讀功 能碼 | 寫功 能碼 | 數(shù)據(jù)范圍 | 存儲模式 |
NO3溫度1 | 3X | 16 Bit | 0x0003 | 0x04 | - | -2^128 ~ +2^128 | 單精度浮點數(shù) |
NO3溫度2 | 3X | 16 Bit | 0x0004 | 0x04 | - |
主機發(fā)送請求:
地址 (8 Bit) | 功能碼 (8 Bit) | 起始寄存器地址高位 (8 Bit) | 起始寄存器地址低位 (8 Bit) | 寄存器數(shù)量高位 (8 Bit) | 寄存器數(shù)量低位 (8 Bit) | CRC高位 | CRC低位 |
0x01 | 0x04 | 0x00 | 0x03 | 0x00 | 0x02 | 0xB1 | 0xCB |
地址 (8 Bit) | 功能碼 (8 Bit) | 字節(jié)數(shù) (8 Bit) | 數(shù)據(jù)位[0] (8 Bit) | 數(shù)據(jù)位[1] (8 Bit) | 數(shù)據(jù)位[2] (8 Bit) | 數(shù)據(jù)位[3] (8 Bit) | CRC高位 | CRC低位 |
0x01 | 0x04 | 0x04 | 0xC6 | 0x40 | 0x61 | 0x41 | 0x2F | 0x78 |
應答數(shù)據(jù)說明:
在傳感器應答中,數(shù)據(jù)位[0]至數(shù)據(jù)位[3]共4個字節(jié)構(gòu)成了32位小端模式下的Float類型的數(shù)據(jù)即為14.078314。
四、接線說明
若您手中的傳感器的接口端使用引線的方式,則連線規(guī)則如表4.1所示線纜顏色 | 說明 |
紅 | 供電電源,VCC +5V |
黑/藍 | 電源地線,GND |
綠 | RS-485 A+端子(T/A) |
黃 | RS-485 B-端子(T/B) |
注意:將電源與地連接錯誤將有可能損毀傳感器設備。
所有評論僅代表網(wǎng)友意見,與本站立場無關。