發(fā)布者:虹潤集團(tuán)
Modbus是一種串行通信協(xié)議,是Modicon公司(現(xiàn)在的施耐德電氣 Schneider Electric)于1979年為使用可編程邏輯控制器(PLC)通信而發(fā)表。Modbus已經(jīng)成為工業(yè)領(lǐng)域通信協(xié)議的業(yè)界標(biāo)準(zhǔn)(De facto),并且現(xiàn)在是工業(yè)電子設(shè)備之間常用的連接方式。
Modbus是一種串行通信協(xié)議,是Modicon公司(現(xiàn)在的施耐德電氣Schneider Electric)于1979年為使用可編程邏輯控制器(PLC)通信而發(fā)表。Modbus已經(jīng)成為工業(yè)領(lǐng)域通信協(xié)議的業(yè)界標(biāo)準(zhǔn)(De facto),并且現(xiàn)在是工業(yè)電子設(shè)備之間常用的連接方式。 [1]Modbus比其他通信協(xié)議使用的更廣泛的主要原因有:
Modbus允許多個(gè) (大約240個(gè)) 設(shè)備連接在同一個(gè)網(wǎng)絡(luò)上進(jìn)行通信,舉個(gè)例子,一個(gè)測(cè)量溫度和濕度的裝置,并且將結(jié)果發(fā)送給計(jì)算機(jī)。在數(shù)據(jù)采集與監(jiān)視控制系統(tǒng)(SCADA)中,Modbus通常用來連接監(jiān)控計(jì)算機(jī)和遠(yuǎn)程終端控制系統(tǒng)(RTU)。
Modbus協(xié)議目前存在用于串口、以太網(wǎng)以及其他支持互聯(lián)網(wǎng)協(xié)議的網(wǎng)絡(luò)的版本。
大多數(shù)Modbus設(shè)備通信通過串口EIA-485物理層進(jìn)行。
對(duì)于串行連接,存在兩個(gè)變種,它們?cè)跀?shù)值數(shù)據(jù)表示不同和協(xié)議細(xì)節(jié)上略有不同。Modbus RTU是一種緊湊的,采用二進(jìn)制表示數(shù)據(jù)的方式,Modbus ASCII是一種人類可讀的,冗長的表示方式。這兩個(gè)變種都使用串行通信(serial communication)方式。RTU格式后續(xù)的命令/數(shù)據(jù)帶有循環(huán)冗余校驗(yàn)的校驗(yàn)和,而ASCII格式采用縱向冗余校驗(yàn)的校驗(yàn)和。被配置為RTU變種的節(jié)點(diǎn)不會(huì)和設(shè)置為ASCII變種的節(jié)點(diǎn)通信,反之亦然。
對(duì)于通過TCP/IP(例如以太網(wǎng))的連接,存在多個(gè)Modbus/TCP變種,這種方式不需要校驗(yàn)和計(jì)算。
對(duì)于所有的這三種通信協(xié)議在數(shù)據(jù)模型和功能調(diào)用上都是相同的,只有封裝方式是不同的。
Modbus有一個(gè)擴(kuò)展版本Modbus Plus(Modbus+或者M(jìn)B+),不過此協(xié)議是Modicon專有的,和Modbus不同。它需要一個(gè)專門的協(xié)處理器來處理類似HDLC的高速令牌旋轉(zhuǎn)。它使用1Mbit/s的雙絞線,并且每個(gè)節(jié)點(diǎn)都有轉(zhuǎn)換隔離裝置,是一種采用轉(zhuǎn)換/邊緣觸發(fā)而不是電壓/水平觸發(fā)的裝置。連接Modbus Plus到計(jì)算機(jī)需要特別的接口,通常是支持ISA(SA85),PCI或者PMCIA總線的板卡。
Modbus協(xié)議是一個(gè)master/slave架構(gòu)的協(xié)議。有一個(gè)節(jié)點(diǎn)是master節(jié)點(diǎn),其他使用Modbus協(xié)議參與通信的節(jié)點(diǎn)是slave節(jié)點(diǎn)。每一個(gè)slave設(shè)備都有一個(gè)唯一的地址。在串行和MB+網(wǎng)絡(luò)中,只有被指定為主節(jié)點(diǎn)的節(jié)點(diǎn)可以啟動(dòng)一個(gè)命令(在以太網(wǎng)上,任何一個(gè)設(shè)備都能發(fā)送一個(gè)Modbus命令,但是通常也只有一個(gè)主節(jié)點(diǎn)設(shè)備啟動(dòng)指令)。
一個(gè)ModBus命令包含了打算執(zhí)行的設(shè)備的Modbus地址。所有設(shè)備都會(huì)收到命令,但只有指定位置的設(shè)備會(huì)執(zhí)行及回應(yīng)指令(地址0例外,指定地址0的指令是廣播指令,所有收到指令的設(shè)備都會(huì)運(yùn)行,不過不回應(yīng)指令)。所有的Modbus命令包含了檢查碼,以確定到達(dá)的命令沒有被破壞?;镜腗odBus命令能指令一個(gè)RTU改變它的寄存器的某個(gè)值,控制或者讀取一個(gè)I/O端口,以及指揮設(shè)備回送一個(gè)或者多個(gè)其寄存器中的數(shù)據(jù)。
有許多modems和網(wǎng)關(guān)支持Modbus協(xié)議,因?yàn)镸odbus協(xié)議很簡單而且容易復(fù)制。它們當(dāng)中一些為這個(gè)協(xié)議特別設(shè)計(jì)的。有使用有線、無線通信甚至短消息和GPRS的不同實(shí)現(xiàn)。不過設(shè)計(jì)者需要克服一些包括高延遲和時(shí)序的問題。
幾乎所有的實(shí)現(xiàn)都是官方標(biāo)準(zhǔn)的某種變體。不同的供應(yīng)商設(shè)備之間可能無法正確的通信。一些主要的變化有:
數(shù)據(jù)類型
IEEE標(biāo)準(zhǔn)的浮點(diǎn)數(shù)
32位整型數(shù)
8位數(shù)據(jù)
混合數(shù)據(jù)類型
整數(shù)中的位域
multipliers to change data to/from integer. 10, 100, 1000, 256 ...
協(xié)議擴(kuò)展
16位的從站地址
32位的數(shù)據(jù)大?。?個(gè)地址 = 返回32位數(shù)據(jù))
字交換數(shù)據(jù)
Modbus是在1970年末為可編程邏輯控制器通信開發(fā)的,這些有限的數(shù)據(jù)類型在那個(gè)時(shí)代是可以被PLC理解的,大型二進(jìn)制對(duì)象數(shù)據(jù)是不支持的。
對(duì)節(jié)點(diǎn)而言,沒有一個(gè)標(biāo)準(zhǔn)的方法找到數(shù)據(jù)對(duì)象的描述信息,舉個(gè)例子,確定一個(gè)寄存器數(shù)據(jù)是否表示一個(gè)介于30-175度之間的溫度。
由于Modbus是一個(gè)主/從協(xié)議,沒有辦法要求設(shè)備“報(bào)告異常”(構(gòu)建在以太網(wǎng)的TCP/IP協(xié)議之上,被稱為open-mbus除外)- 主節(jié)點(diǎn)必須循環(huán)的詢問每個(gè)節(jié)點(diǎn)設(shè)備,并查找數(shù)據(jù)中的變化。在帶寬可能比較寶貴的應(yīng)用中,這種方式在應(yīng)用中消耗帶寬和網(wǎng)絡(luò)時(shí)間,例如在低速率的無線鏈路上。
Modbus在一個(gè)數(shù)據(jù)鏈路上只能處理247個(gè)地址,這種情況限制了可以連接到主控站點(diǎn)的設(shè)備數(shù)量(再一次指出以太網(wǎng)TCP/IP除外)
Modbus傳輸在遠(yuǎn)端通訊設(shè)備之間緩沖數(shù)據(jù)的方式進(jìn)行,有對(duì)通信一定是連續(xù)的限制,避免了傳輸中的緩沖區(qū)漏洞的問題
Modbus協(xié)議自身提供針對(duì)未經(jīng)授權(quán)的命令或截取數(shù)據(jù)沒有安全性。
咨詢電話 0599-7821390
商務(wù)郵箱 hrgs@hrgs.com.cn
直接掃碼
虹潤微信客服
虹潤官方微信
fjhongrun