智聯(lián)物聯(lián)技術(shù)分享,本期為大家介紹工業(yè)通訊常用的主流協(xié)議Modbus協(xié)議。
Modbus協(xié)議的前身叫做Mod協(xié)議,常被用于Modicon公司的PLC控制器中,后來Modicon被Schneider收購后隨之改名為我們?nèi)缃袼煜さ膍odbus協(xié)議,現(xiàn)如今廣泛應(yīng)用在物聯(lián)網(wǎng)的控制器、HMI和傳感器中與其他工控終端設(shè)備進(jìn)行通訊,Modbus已然成為了工業(yè)通訊應(yīng)用中主流的常用協(xié)議。
通過Modbus協(xié)議可以使控制器之間經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其他設(shè)備之間進(jìn)行通信。Modbus協(xié)議還可以讓不同品牌的控制設(shè)備進(jìn)行組網(wǎng),方便運營商對設(shè)備進(jìn)行集中監(jiān)控管理。
Modbus協(xié)議定義了控制器能認(rèn)識使用的消息結(jié)構(gòu),描述控制器對其它設(shè)備的請求訪問過程,對來自其它設(shè)備的請求進(jìn)行回應(yīng),以及偵測錯誤數(shù)據(jù)并記錄。Modbus協(xié)議制定了內(nèi)容的公共格式與消息域格局。
Modbus協(xié)議Modbus協(xié)議功能碼
Modbus協(xié)議的功能碼用于表示信息幀的功能,03、04、06、16最為常用。
功能碼03的名稱是讀取保持寄存器內(nèi)容,在一個或多個保持寄存器中取得當(dāng)前的二進(jìn)制值。
功能碼04的名稱是讀取輸入寄存器內(nèi)容,在一個或多個輸入寄存器中取得當(dāng)前的二進(jìn)制值。
功能碼06的名稱是預(yù)置單寄存器,把具體二進(jìn)制值裝入一個保持寄存器。
功能碼16的名稱是預(yù)置多個寄存器,把具體的二進(jìn)制值裝入一串連續(xù)的保持寄存器。
Modbus協(xié)議功能碼Modbus協(xié)議03、04功能碼
03讀取保持寄存器內(nèi)容和04讀取輸入寄存器內(nèi)容兩者之間到底存在著哪些功能差異呢?Modbus協(xié)議被常用于PLC通信的輸入輸出數(shù)字量信號以及模擬量信號。Modbus協(xié)議的04功能碼輸入寄存器就是從模擬量信號輸入引申出來的,即輸入寄存器只能從模擬量信號輸入端改變寄存器,而主機(jī)則不能通過下發(fā)指令改變輸入寄存器的數(shù)據(jù);而保持寄存器則是用于輸出模擬量信號的,主機(jī)是可以改變寄存器數(shù)據(jù),對于主機(jī)來說輸入寄存器是只讀的,而保持寄存器是可以讀寫的。當(dāng)主機(jī)用06、16功能碼的指令去預(yù)置輸入寄存器的時候,設(shè)備會返回一個代碼為0x81的錯誤代碼,即企圖寫只讀寄存器。
Modbus協(xié)議Modbus協(xié)議的TCP、RTU、ASCII
Modbus RTU和Modbus ASCII協(xié)議基于串口通訊,如RS232或RS485等工業(yè)串口進(jìn)行數(shù)據(jù)透傳。
ModbusTCP協(xié)議則基于以太網(wǎng)通信,如雙絞線、光纖、無線上傳送。
常見應(yīng)用在PLC可編程邏輯控制器之間的通信中,由于PLC的開放性,可應(yīng)用于現(xiàn)場設(shè)備、智能終端、儀器儀表中。
Modbus協(xié)議的映射地址
在使用Modbus協(xié)議經(jīng)常會遇到3xxxx,4xxxx的寄存器數(shù)據(jù)類型,Modbus映射地址都是從0開始的,比如30009代表的是輸入寄存器,這樣的映射地址格式常用于PLC系統(tǒng)與組態(tài)軟件中。
Modbus協(xié)議映射地址-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2909文章
44557瀏覽量
372754 -
MODBUS
+關(guān)注
關(guān)注
28文章
1799瀏覽量
76947 -
PLC通信協(xié)議
+關(guān)注
關(guān)注
0文章
3瀏覽量
1711
發(fā)布評論請先 登錄
相關(guān)推薦
評論