工業(yè)控制已從單機(jī)控制走向集中監(jiān)控、集散控制,如今已進(jìn)入網(wǎng)絡(luò)時(shí)代,工業(yè)控制器連網(wǎng)也為網(wǎng)絡(luò)管理提供了方便。Modbus就是工業(yè)控制器的網(wǎng)絡(luò)協(xié)議中的一種。
丨Modbus通信協(xié)議簡(jiǎn)介
Modbus協(xié)議,首先從字面理解它包括Mod和Bus兩部分,首先它是一種bus,即總線協(xié)議,和I2C、SPI類似,總線就意味著有主機(jī),有從機(jī),這些設(shè)備在同一條總線上。
Modbus支持單主機(jī),多個(gè)從機(jī),最多支持247個(gè)從機(jī)設(shè)備。關(guān)于Mod,因?yàn)檫@種協(xié)議最早被用在PLC控制器中,準(zhǔn)確的說(shuō)是Modicon公司的PLC控制器,這也是Mod-Bus名稱的由來(lái)。
后來(lái)Modicon被施耐德(Schneider)收購(gòu),Modbus協(xié)議廣泛應(yīng)用在工業(yè)控制器、HMI和傳感器上,逐漸被其他廠商所接受,成為了一種主流的通訊協(xié)議,用于和外圍設(shè)備進(jìn)行通訊。
Modbus在7層OSI參考模型中屬于第七層應(yīng)用層,數(shù)據(jù)鏈路層有兩種:基于標(biāo)準(zhǔn)串口協(xié)議和TCP協(xié)議,物理層可使用3線232、2線485、4線422,或光纖、網(wǎng)線、無(wú)線等多種傳輸介質(zhì)。
Modbus協(xié)議是一種請(qǐng)求/應(yīng)答方式的交互過(guò)程,主機(jī)主動(dòng)發(fā)起通訊請(qǐng)求,從機(jī)響應(yīng)主機(jī)的請(qǐng)求,從機(jī)在沒(méi)有收到主機(jī)的請(qǐng)求時(shí),不會(huì)主動(dòng)發(fā)送數(shù)據(jù),從機(jī)之間不會(huì)進(jìn)行通訊。
目前關(guān)于Modbus比較權(quán)威的官方標(biāo)準(zhǔn)文檔有兩個(gè):
1.modbus_application_protocol_specification_v1.1b3.pdf
2.基于Modbus協(xié)議的工業(yè)自動(dòng)化網(wǎng)絡(luò)規(guī)范GB-T19582.1-2008.pdf
*大部分的書(shū)籍和網(wǎng)絡(luò)資料都是翻譯自這兩篇文檔,文末獲取標(biāo)準(zhǔn)文檔下載方法。
丨Modbus 通信協(xié)議特點(diǎn)
(1)標(biāo)準(zhǔn)、開(kāi)放,用戶可以免費(fèi)、放心地使用Modbus協(xié)議,不需要交納許可證費(fèi),也不會(huì)侵犯知識(shí)產(chǎn)權(quán)。
(2)Modbus可以支持多種電氣接口,如RS-232、RS-485等,還可以在各種介質(zhì)上傳送,如雙絞線、光纖、無(wú)線等。
(3)Modbus的幀格式簡(jiǎn)單、緊湊,通俗易懂。用戶使用容易,廠商開(kāi)發(fā)簡(jiǎn)單。
丨Modbus4種數(shù)據(jù)類型
Modbus協(xié)議規(guī)定,進(jìn)行讀寫(xiě)操作的數(shù)據(jù)類型,按照讀寫(xiě)屬性和類型可分為以下4種:
1.離散量輸入(Discretes Input ):1位,只讀
2.線圈(Coils):1位,讀寫(xiě)
3.輸入寄存器(Input Registers ):16位,只讀
4.保持寄存器(Holding Registers):16位,讀寫(xiě)
丨Modbus協(xié)議版本
Modbus協(xié)議目前存在用于串口、以太網(wǎng)以及其他支持互聯(lián)網(wǎng)協(xié)議的網(wǎng)絡(luò)的版本。
大多數(shù)Modbus設(shè)備通信通過(guò)串口EIA-485物理層進(jìn)行。
對(duì)于串行連接,存在兩個(gè)變種,它們?cè)跀?shù)值數(shù)據(jù)表示不同和協(xié)議細(xì)節(jié)上略有不同。Modbus RTU是一種緊湊的,采用二進(jìn)制表示數(shù)據(jù)的方式,Modbus ASCII是一種人類可讀的,冗長(zhǎng)的表示方式。這兩個(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ì)于通過(guò)TCP/IP(例如以太網(wǎng))的連接,存在多個(gè)Modbus/TCP變種,這種方式不需要校驗(yàn)和計(jì)算。
對(duì)于所有的這三種通信協(xié)議在數(shù)據(jù)模型和功能調(diào)用上都是相同的,只有封裝方式是不同的。
Modbus有一個(gè)擴(kuò)展版本ModbusPlus(Modbus+或者M(jìn)B+),不過(guò)此協(xié)議是Modicon專有的,和Modbus不同。它需要一個(gè)專門(mén)的協(xié)處理器來(lái)處理類似HDLC的高速令牌旋轉(zhuǎn)。它使用1Mbit/s的雙絞線,并且每個(gè)節(jié)點(diǎn)都有轉(zhuǎn)換隔離裝置,是一種采用轉(zhuǎn)換/邊緣觸發(fā)而不是電壓/水平觸發(fā)的裝置。連接Modbus Plus到計(jì)算機(jī)需要特別的接口,通常是支持ISA(SA85),PCI或者PMCIA總線的板卡。
所以當(dāng)我們提及Modbus協(xié)議時(shí),要確定是哪種模式,不同的模式之間區(qū)別還是很大的。
丨Modbus數(shù)據(jù)幀格式
首先我們要知道一幀正常的MODBUS數(shù)據(jù)幀包含的內(nèi)容有:地址域 + 功能碼 + 數(shù)據(jù) + 差錯(cuò)校驗(yàn),再者無(wú)論是上述哪種協(xié)議版本,Modbus幀格式都是一樣的:
主要包括:
1.地址域:即主站要訪問(wèn)的從站地址,其范圍0~247
2.功能碼:即主站想要對(duì)從站進(jìn)行何種操作。
3.數(shù)據(jù):如果主站的請(qǐng)求是讀數(shù)據(jù),那么該“數(shù)據(jù)”要包含的信息有:從哪里開(kāi)始讀數(shù)據(jù) + 讀多少數(shù)據(jù)。如果主站的請(qǐng)求是向從站寫(xiě)數(shù)據(jù),那么該“數(shù)據(jù)”要包含的信息有:從哪里開(kāi)始寫(xiě)數(shù)據(jù) + 寫(xiě)多少個(gè)字節(jié)數(shù)據(jù) + 要寫(xiě)的具體數(shù)據(jù)。
4.差錯(cuò)校驗(yàn):為了保證數(shù)據(jù)傳輸?shù)恼_性,Modbus協(xié)議會(huì)在數(shù)據(jù)幀最后面加上兩個(gè)字節(jié)的差錯(cuò)校驗(yàn)。
丨Modbus功能碼
Modbus功能碼,是寫(xiě)在主機(jī)請(qǐng)求數(shù)據(jù)幀中的,決定主機(jī)進(jìn)行讀還是寫(xiě)操作,是讀線圈、離散量還是寄存器,是寫(xiě)單個(gè)寄存器還是多個(gè)寄存器等等,決定主機(jī)請(qǐng)求什么類型的數(shù)據(jù)。
主要包括3類功能碼:公共功能碼、用戶定義功能碼和保留功能碼
1.公共功能碼
·是較好地被定義的功能碼
·保證是唯一的
·MODBUS 組織可改變的
·公開(kāi)證明的
·具有可用的一致性測(cè)試
·MB IETF RFC 中證明的
·包含已被定義的公共指配功能碼和未來(lái)使用的未指配保留供功能碼
2.用戶定義功能碼
·有兩個(gè)用戶定義功能碼的定義范圍, 即65至72和十進(jìn)制100至110
·用戶沒(méi)有 MODBUS 組織的任何批準(zhǔn)就可以選擇和實(shí)現(xiàn)一個(gè)功能碼
·不能保證被選功能碼的使用是唯一的
·如果用戶要重新設(shè)置功能作為一個(gè)公共功能碼,那么用戶必須啟動(dòng) RFC,以便將改變引入公共分類中,并且指配一個(gè)新的公共功能碼。
3.保留功能碼
·一些公司對(duì)傳統(tǒng)產(chǎn)品通常使用并且對(duì)公共使用是無(wú)效的功能碼。
實(shí)際最常用的是公共功能碼中的4個(gè)功能碼:03/04/06/10
0x03:讀多個(gè)保持寄存器
0x04:讀輸入寄存器
0x06:寫(xiě)單個(gè)保持寄存器
0x10:寫(xiě)多個(gè)保持寄存器
因?yàn)镻LC主要控制的是繼電器觸點(diǎn),所以在PLC上還會(huì)經(jīng)常對(duì)線圈(Coils)進(jìn)行讀寫(xiě)。這里需要特別注意的一點(diǎn)是:寫(xiě)保持寄存器,需要區(qū)分0x06寫(xiě)單個(gè)寄存器和0x10寫(xiě)多個(gè)寄存器,而讀保持寄存器不區(qū)分讀單個(gè)和讀多個(gè),當(dāng)需要讀單個(gè)保持寄存器時(shí),也是使用0x03指令,指定讀取數(shù)量為1。
以上就是關(guān)于Modbus協(xié)議的一些基礎(chǔ)知識(shí),如果您想要獲取*Modbus權(quán)威的官方標(biāo)準(zhǔn)文檔,可關(guān)注微信公眾號(hào)【恩智測(cè)控NGI】,并在后臺(tái)發(fā)送“Modbus協(xié)議”即可。
審核編輯:湯梓紅
-
控制器
+關(guān)注
關(guān)注
114文章
17489瀏覽量
188395 -
通信
+關(guān)注
關(guān)注
18文章
6261瀏覽量
139049 -
ModBus協(xié)議
+關(guān)注
關(guān)注
3文章
188瀏覽量
34869
發(fā)布評(píng)論請(qǐng)先 登錄
邁向工業(yè)4.0的第一步:從Modbus無(wú)線傳輸開(kāi)始


什么是Modbus TCP協(xié)議

Modbus協(xié)議轉(zhuǎn)換:讓工業(yè)設(shè)備輕松“對(duì)話”

告別協(xié)議沖突!Modbus轉(zhuǎn)Profinet助力風(fēng)速風(fēng)向儀無(wú)縫對(duì)接
DLT645協(xié)議和Modbus協(xié)議有什么區(qū)別
興達(dá)易控modbus協(xié)議轉(zhuǎn)換網(wǎng)關(guān)配置步驟

EtherCAT轉(zhuǎn)modbus TCP借協(xié)議轉(zhuǎn)換網(wǎng)關(guān)模塊打通倍福PLC與上位機(jī)鏈路

聊聊Modbus協(xié)議的短板:是時(shí)候?qū)で筇娲藛幔?/a>

評(píng)論