-
您的位置:
- 網(wǎng)站首頁
- > 物聯(lián)百科
- > 技術(shù)問答
您的位置:
Modbus協(xié)議可以說是工業(yè)自動化領(lǐng)域應(yīng)用最廣泛的通信協(xié)議。由于其開放性、可擴展性和標(biāo)準(zhǔn)化,它已經(jīng)成為壹個通用的工業(yè)標(biāo)準(zhǔn)。有了它,不同廠家的產(chǎn)品可以簡單可靠地接入網(wǎng)絡(luò),實現(xiàn)系統(tǒng)的集中監(jiān)控和分散控制功能。
目前,Modbus協(xié)議主要使用ASCII、RTU、TCP等,未指定物理層。目前,Modbus常用的接口形式主要有RS-232C、RS485和RS422以及RJ45接口。Modbus的ASCII和RTU協(xié)議規(guī)定了消息和數(shù)據(jù)的結(jié)構(gòu)以及命令和響應(yīng)模式。Modbus數(shù)據(jù)通信采用主/從模式(主/從),即主設(shè)備發(fā)送數(shù)據(jù)請求報文,從設(shè)備在收到正確報文后可以向主設(shè)備發(fā)送數(shù)據(jù)以響應(yīng)請求;主機也可以直接發(fā)送消息修改從機數(shù)據(jù),實現(xiàn)雙向讀寫。
在串行通信中,“波特率”用于描述數(shù)據(jù)傳輸速率。國際上有壹個標(biāo)準(zhǔn)波特率系列:110、300、600、1200、1800、2400、4800、9600、14.4kbps、19.2kbps、28.8kbps、33.6kbps和56kbps。例如,9600bps指每秒傳輸?shù)?600位,包括字符和其他必要位,例如起始位、停止位、奇偶校驗位等。
在自動化領(lǐng)域,我們經(jīng)常使用RTU模式。RTU模式下每個字節(jié)的格式:
編碼系統(tǒng):8位貳進制、十陸進制0-9、A-F
數(shù)據(jù)位:1個起始位
8位數(shù)據(jù),低位優(yōu)先
奇偶校驗時為1位;0位無奇偶校驗
1個帶驗證的停止位;未經(jīng)驗證的2位停止位
錯誤檢查區(qū)域:循環(huán)冗余檢查(CRC)
從機地址設(shè)置:信息地址包括2個字符(ASCII)或8位(RTU),有效的從機設(shè)備地址范圍為0-247(十進制)。
功能代碼設(shè)置:信息幀的功能代碼包括字符(ASCII)或8位(RTU)。有效代碼范圍1-225(十進制);
數(shù)據(jù)區(qū)內(nèi)容:數(shù)據(jù)區(qū)有兩個十陸進制數(shù)據(jù)位,數(shù)據(jù)范圍為00-FF(十陸進制)。根據(jù)網(wǎng)絡(luò)串行傳輸?shù)姆绞剑瑪?shù)據(jù)區(qū)可以由壹對ASCII字符或壹個RTU字符組成。
RTU模式下的消息幀:
Modbus功能代碼:
Modbus功能代碼和數(shù)據(jù)類型對應(yīng)表:
在RTU模式下讀取整個數(shù)據(jù)的示例:
Modbus通訊協(xié)議分析:主機發(fā)送指令,訪問從機地址為1,使用功能代碼03(讀取保持寄存器)。起始地址的高8位和低8位表示要讀取的模擬量的起始地址(起始地址為0)。例如,示例中的起始地址是38,十進制是56。寄存器數(shù)量:高8位和低8位:表示從起始地址讀取的模擬量。這個例子是壹個模擬量。請注意,在返回的信息中,模擬量需要返回兩個字節(jié)。錯誤檢查是CRC檢查。
從站響應(yīng):設(shè)備地址和命令號與上述相同。Bytesreturned(返回字節(jié)):表示數(shù)據(jù)的字節(jié)數(shù),即數(shù)據(jù)1,2是N中N的值。在本例中,返回模擬量的數(shù)據(jù)。因為模擬量需要2個字節(jié),所以總共有2個字節(jié)。數(shù)據(jù)高位和低位字節(jié):41和24代表壹個模擬量的返回值,即十進制的16676。錯誤檢查是CRC檢查。