1 適用范圍
S-CGQM以及S-CGXO系列(系統(tǒng)版本7.03以后)監(jiān)控主機ModBus從站接口。
(1)主機按鍵設(shè)置:改主機的ModBus從規(guī)約為“RS-ModBus規(guī)約”
操作步驟:按確認(rèn)鍵,在主機界面找到“2基礎(chǔ)參數(shù)設(shè)置”,按確認(rèn)鍵進入,密碼默認(rèn)0000長按確認(rèn)鍵進入子菜單,找到“ModBus從規(guī)約”或者“485口通信規(guī)約”,按確認(rèn)鍵修改為“RS-ModBus規(guī)約”,長按確認(rèn)鍵保存。
(2)主機按鍵設(shè)置ModBus從地址;
如果同時與多臺主機通訊,則需修改主機的ModBus從地址保證從地址不沖突,ModBus從地址對應(yīng)主機32個通道的第1個通道(ModBus從地址1表明主機通道1地址為1,通道2地址為2,依次類推),因此在與多臺主機同時通訊時,可將主機的ModBus從地址依次設(shè)置為1,33,65,97,32N+1,......
操作步驟:按確認(rèn)鍵,在主機界面找到“2基礎(chǔ)參數(shù)設(shè)置”,按確認(rèn)鍵進入,密碼默認(rèn)0000長按確認(rèn)鍵進入子菜單,找到“3ModBus從地址”,修改地址,默認(rèn)地址為1。
2 通訊基本參數(shù)
編 碼 |
8位二進制 |
數(shù)據(jù)位 |
8位 |
奇偶校驗位 |
無 |
停止位 |
1位 |
錯誤校驗 |
CRC(冗余循環(huán)碼) |
波特率 |
4800bit/s |
3數(shù)據(jù)幀格式定義
采用Modbus RTU 通訊規(guī)約,格式如下:
初始結(jié)構(gòu) ≥4 字節(jié)的時間
地址碼 = 1 字節(jié)
功能碼 = 1 字節(jié)
數(shù)據(jù)區(qū) = N 字節(jié)
錯誤校驗 = 16 位CRC 碼
結(jié)束結(jié)構(gòu) ≥4 字節(jié)的時間
地址碼:主機的通道地址,在通訊網(wǎng)絡(luò)中是唯一的(出廠默認(rèn)0x01)。
功能碼:主機所發(fā)指令功能指示,本變送器只用到功能碼0x03(讀取寄存器數(shù)據(jù))。
數(shù)據(jù)區(qū):數(shù)據(jù)區(qū)是具體通訊數(shù)據(jù),注意16bits數(shù)據(jù)高字節(jié)在前!
CRC碼:二字節(jié)的校驗碼。
主機問詢幀結(jié)構(gòu):
地址碼 |
功能碼 |
寄存器起始地址 |
寄存器長度 |
校驗碼低位 |
校驗碼高位 |
1字節(jié) |
1字節(jié) |
2字節(jié) |
2字節(jié) |
1字節(jié) |
1字節(jié) |
從機應(yīng)答幀結(jié)構(gòu):
地址碼 |
功能碼 |
有效字節(jié)數(shù) |
數(shù)據(jù)一區(qū) |
第二數(shù)據(jù)區(qū) |
第N數(shù)據(jù)區(qū) |
校驗碼 |
1字節(jié) |
1字節(jié) |
N*2字節(jié) |
2字節(jié) |
2字節(jié) |
2字節(jié) |
2字節(jié) |
4寄存器地址
寄存器地址 |
PLC或者組態(tài)地址 |
內(nèi)容 |
操作 |
0000 |
40001 |
模擬量2原始值(16位無符號整形) |
只讀 |
0001 |
40002 |
模擬量1原始值(16位有符號整形) |
只讀 |
5通訊協(xié)議示例以及解釋
舉例1:讀取通道01的模擬量1/2(以溫濕度為例),ModBus從地址設(shè)置為2
問詢幀:
地址碼 |
功能碼 |
起始地址 |
數(shù)據(jù)長度 |
校驗碼低位 |
校驗碼高位 |
0x02 |
0x03 |
0x00 0x00 |
0x00 0x02 |
0xC4 |
0x38 |
應(yīng)答幀: (例如讀到溫度為-10.1℃,濕度為65.8%RH)
地址碼 |
功能碼 |
返回有效字節(jié)數(shù) |
模擬量2原始值 |
模擬量1原始值 |
校驗碼低位 |
校驗碼高位 |
0x02 |
0x03 |
0x04 |
0x02 0x92 |
0xff 0x9b |
0x69 |
0x3D |
模擬量2表示濕度,模擬量1表示溫度;
溫度計算:
當(dāng)溫度低于 0 ℃ 時溫度數(shù)據(jù)以補碼的形式上傳。
溫度:FF9B H(十六進制)= -101 => 溫度 = -10.1℃
濕度計算:
濕度:0292 (十六進制)代表10進制數(shù)658,則代表濕度值為65.8%
=> 濕度 = 65.8%RH
舉例2:讀取通道03的模擬量1/2(以溫濕度為例),ModBus從地址設(shè)置為10
問詢幀:
地址碼 |
功能碼 |
起始地址 |
數(shù)據(jù)長度 |
校驗碼低位 |
校驗碼高位 |
0x0C |
0x03 |
0x00 0x00 |
0x00 0x02 |
0xC5 |
0x16 |
應(yīng)答幀: (例如讀到溫度為-10.1℃,濕度為65.8%RH)
地址碼 |
功能碼 |
返回有效字節(jié)數(shù) |
模擬量2原始值 |
模擬量1原始值 |
校驗碼低位 |
校驗碼高位 |
0x0C |
0x03 |
0x04 |
0x02 0x92 |
0xff 0x9b |
0x86 |
0xFD |
模擬量2表示濕度,模擬量1表示溫度;
溫度計算:
當(dāng)溫度低于 0 ℃ 時溫度數(shù)據(jù)以補碼的形式上傳。
溫度:FF9B H(十六進制)= -101 => 溫度 = -10.1℃
濕度計算:
濕度:0292 (十六進制)代表10進制數(shù)658,則代表濕度值為65.8%
=> 濕度 = 65.8%RH