電話:0755-84805790
傳真:0755-89258770
業(yè)務咨詢:13632638280
郵箱: 602566016@qq.com
QQ:602566016
RTU采集模塊 單片機開發(fā),采用MODBUS通訊協(xié)議
單片機開發(fā)應用中MODBUS協(xié)議
此協(xié)議定義了一個智能采集模塊認識使用的消息結構,而不管它們是經(jīng)過何種網(wǎng)絡進行通信的。它描述了一控制器請求訪問其它設備的過程,如果回應來自其它設備的請求,以及怎樣偵測錯誤并記錄。它制定了消息域格局和內(nèi)容的公共格式。
當在一Modbus網(wǎng)絡上通信時,此協(xié)議決定了每個控制器須要知道它們的設備地址,識別按地址發(fā)來的消息,決定要產(chǎn)生何種行動。如果需要回應,控制器將生成反饋信息并用Modbus協(xié)議發(fā)出。在其它網(wǎng)絡上,包含了Modbus協(xié)議的消息轉(zhuǎn)換為在此網(wǎng)絡上使用的幀或包結構。這種轉(zhuǎn)換也擴展了根據(jù)具體的網(wǎng)絡解決節(jié)地址、路由路徑及錯誤檢測的方法。
1、單片機開發(fā)在Modbus網(wǎng)絡上轉(zhuǎn)輸
標準的Modbus口是使用一RS-232C兼容串行接口,它定義了連接口的針腳、電纜、信號位、傳輸波特率、奇偶校驗。控制器能直接或經(jīng)由Modem組網(wǎng)??刂破魍ㄐ攀褂弥鳌獜募夹g,即僅一設備(主設備)能初始化傳輸(查詢)。其它設備(從設備)根據(jù)主設備查詢提供的數(shù)據(jù)作出相應反應。典型的主設備:主機和可編程儀表。典型的從設備:可編程控制器。
主設備可單獨和從設備通信,也能以廣播方式和所有從設備通信。如果單獨通信,從設備返回一消息作為回應,如果是以廣播方式查詢的,則不作任何回應。Modbus協(xié)議建立了主設備查詢的格式:設備(或廣播)地址、功能代碼、所有要發(fā)送的數(shù)據(jù)、一錯誤檢測域。
從設備回應消息也由Modbus協(xié)議構成,包括確認要行動的域、任何要返回的數(shù)據(jù)、和一錯誤檢測域。如果在消息接收過程中發(fā)生一錯誤,或從設備不能執(zhí)行其命令,從設備將建立一錯誤消息并把它作為回應發(fā)送出去。
2、在其它類型網(wǎng)絡上轉(zhuǎn)輸
在其它網(wǎng)絡上,控制器使用對等技術通信,故任何控制都能初始和其它控制器的通信。這樣在單獨的通信過程中,控制器既可作為主設備也可作為從設備。提供的多個內(nèi)部通道可允許同時發(fā)生的傳輸進程。
在消息位,Modbus協(xié)議仍提供了主—從原則,盡管網(wǎng)絡通信方法是“對等”。如果一控制器發(fā)送一消息,它只是作為主設備,并期望從設備得到回應。同樣,當控制器接收到一消息,它將建立一從設備回應格式并返回給發(fā)送的控制器。
Modbus是Modicon公司為其采集模塊與主機之間的通訊而發(fā)明的串行通訊協(xié)議。其物理層采用RS232、485等異步串行標準。由于其開放性而被大量的PLC及RTU廠家采用。
Modbus通訊方式采用主從方式的查詢-相應機制,只有主站發(fā)出查詢時,從站才能給出響應,從站不能主動發(fā)送數(shù)據(jù)。主站可以向某一個從站發(fā)出查詢,也可以向所有從站廣播信息。從站只響應單獨發(fā)給它的查詢,而不響應廣播消息。
Modbus的串行口的通訊參數(shù)(如波特率、奇偶校驗)可由用戶選擇。
二、MODBUS協(xié)議傳送方式
ModBus通訊協(xié)議分為RTU協(xié)議和ASCII協(xié)議,我公司的多種儀表都采用 ModBus RTU通訊協(xié)議,如:IO智能控制器,溫濕度采集傳感器,二氧化碳傳感器等。下面就ModBus RTU協(xié)議簡要介紹如下:
通訊傳送方式:
通訊傳送分為獨立的信息頭,和發(fā)送的編碼數(shù)據(jù)。以下的通訊傳送方式定義也與MODBUS RTU通訊規(guī)約相兼容:
編 碼 |
8位二進制 |
起始位 |
1位 |
數(shù)據(jù)位 |
8位 |
奇偶校驗位 |
1位(偶校驗位) |
停止位 |
1位 |
錯誤校檢 |
CRC(冗余循環(huán)碼) |
初始結構 = ≥4字節(jié)的時間
地址碼 = 1 字節(jié)
功能碼 = 1 字節(jié)
數(shù)據(jù)區(qū) = N 字節(jié)
錯誤校檢 = 16位CRC碼
結束結構 = ≥4字節(jié)的時間
地址碼:地址碼為通訊傳送的**個字節(jié)。這個字節(jié)表明由用戶設定地址碼的從機將接收由主機發(fā)送來的信息。并且每個從機都有具有唯壹的地址碼,并且響應回送均以各自的地址碼開始。主機發(fā)送的地址碼表明將發(fā)送到的從機地址,而從機發(fā)送的地址碼表明回送的從機地址。
功能碼:通訊傳送的**個字節(jié)。ModBus通訊規(guī)約定義功能號為1到127。本儀表只利用其中的一部分功能碼。作為主機請求發(fā)送,通過功能碼告訴從機執(zhí)行什么動作。作為從機響應,從機發(fā)送的功能碼與從主機發(fā)送來的功能碼一樣,并表明從機已響應主機進行操作。如果從機發(fā)送的功能碼的*高位為1(比如功能碼大與此同時127),則表明從機沒有響應操作或發(fā)送出錯。
數(shù)據(jù)區(qū):數(shù)據(jù)區(qū)是根據(jù)不同的功能碼而不同。數(shù)據(jù)區(qū)可以是實際數(shù)值、設置點、主機發(fā)送給從機或從機發(fā)送給主機的地址。
CRC碼:二字節(jié)的錯誤檢測碼。