Modbus RTU協(xié)議C51通訊

Modbus RTU協(xié)議C51通訊

ID:37285943

大?。?68.88 KB

頁(yè)數(shù):6頁(yè)

時(shí)間:2019-05-20

Modbus RTU協(xié)議C51通訊_第1頁(yè)
Modbus RTU協(xié)議C51通訊_第2頁(yè)
Modbus RTU協(xié)議C51通訊_第3頁(yè)
Modbus RTU協(xié)議C51通訊_第4頁(yè)
Modbus RTU協(xié)議C51通訊_第5頁(yè)
資源描述:

《Modbus RTU協(xié)議C51通訊》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)

1、ModbusRTU協(xié)議C51通訊1.1Modbus通信協(xié)議介紹Modbus協(xié)議是應(yīng)用于電子控制器上的一種通用語言。通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(如以太網(wǎng))與其他設(shè)備之間可以通信。它已經(jīng)成為一種通用工業(yè)標(biāo)準(zhǔn)。不同廠商生產(chǎn)的控制設(shè)備可以通過它連成工業(yè)網(wǎng)絡(luò),集中監(jiān)控。Modbus協(xié)議定義了一個(gè)控制器能認(rèn)識(shí)使用的消息結(jié)構(gòu),而不管它們是經(jīng)過何種網(wǎng)絡(luò)進(jìn)行通信的。它描述了一控制器請(qǐng)求訪問其他設(shè)備的過程.如何回應(yīng)來自其他設(shè)備的請(qǐng)求,以及怎樣偵測(cè)錯(cuò)誤并記錄;制定了消息域格局和內(nèi)容的公共格式。當(dāng)在某一Modbus網(wǎng)絡(luò)上通信時(shí),此協(xié)議決定了每個(gè)控制器需要知道它們的設(shè)備地址,識(shí)別按地址發(fā)來的消

2、息,以及決定要產(chǎn)生何種行動(dòng)。如果需要回應(yīng),則控制器將生成反饋信息并用Modbus協(xié)議發(fā)出。在其他網(wǎng)絡(luò)上,包含了M0dhus協(xié)議的消息轉(zhuǎn)換為在此網(wǎng)絡(luò)上使用的幀或包結(jié)構(gòu)。1.2ModbusRTU通信數(shù)據(jù)傳輸模式當(dāng)控制器設(shè)備基于Modbus協(xié)議以RTU模式通信時(shí),消息中的每個(gè)字節(jié)包含2個(gè)4位的十六進(jìn)制字符。這種方式的主要優(yōu)點(diǎn)是:在同樣的波特率下,可比ASCII方式傳送更多的數(shù)據(jù)。編碼采用8位二進(jìn)制,十六進(jìn)制數(shù)0~9和A~F;消息中每個(gè)8位域都是由2個(gè)十六進(jìn)制字符組成。組織結(jié)構(gòu)如下:1.3ModbusRTU消息幀結(jié)構(gòu)ModbusRTU消息幀結(jié)構(gòu)如下:(1)地址碼地址碼為通信傳送的第一個(gè)節(jié)。這

3、個(gè)字節(jié)表明,由用戶設(shè)定地址碼的從機(jī)將接收由主機(jī)發(fā)送來的信息。每個(gè)從機(jī)都有具有唯一的地址碼,只有符合地址碼的從機(jī)才能響應(yīng)回送,且響應(yīng)回送均以各自的地址碼開始。主機(jī)發(fā)送的地址碼則表明將發(fā)送到的從機(jī)地址,而從機(jī)發(fā)送的地址碼表明回送的從機(jī)地址。地址0用作廣播地址,以使所有的從設(shè)備都能認(rèn)識(shí)。(2)功能代碼功能代碼為通信傳送的第二個(gè)字節(jié)。Modbus通信規(guī)約定義可能的代碼范圍是十進(jìn)制的1~255。當(dāng)然,有些代碼適用于所有控制器,有些僅適用于某種控制器,還有些保留以備后用。主機(jī)發(fā)送請(qǐng)求,通過功能碼告訴從機(jī)執(zhí)行什么動(dòng)作;從機(jī)響應(yīng)請(qǐng)求,從機(jī)發(fā)送的功能碼與從主機(jī)發(fā)送來的功能碼一樣,表明從機(jī)已響應(yīng)主機(jī)進(jìn)行

4、操作。如果從機(jī)發(fā)送的功能碼的最高位為1,則表明從機(jī)沒有響應(yīng)操作或發(fā)送出錯(cuò),主設(shè)備應(yīng)用程序得到異議的回應(yīng)后,典型的處理是重發(fā)消息。表l列出了常用Modbus支持的部分功能碼。以讀取線圈狀態(tài)為例說明。主站發(fā)送命令:[設(shè)備地址][命令號(hào)01][起始寄存器地址高8位][低8位][讀取的寄存器數(shù)高8位][低8位][CRC校驗(yàn)的低8位][高8位]。從站響應(yīng):[設(shè)備地址][命令號(hào)01][返回的字節(jié)個(gè)數(shù)][數(shù)據(jù)1][數(shù)據(jù)2]…[數(shù)據(jù)n][CRC校驗(yàn)的低8位][高8位]。(3)數(shù)據(jù)區(qū)數(shù)據(jù)區(qū)根據(jù)功能碼的不同而不同。數(shù)據(jù)區(qū)包含需要從機(jī)執(zhí)行什么動(dòng)作,或由從機(jī)采集的返送信息。這些信息可以是實(shí)際數(shù)值、設(shè)置點(diǎn)、主

5、機(jī)發(fā)送給從機(jī)或從機(jī)發(fā)送給主機(jī)的地址等。例如,功能碼告訴從機(jī)讀取寄存器的值,則數(shù)據(jù)區(qū)必須包含要讀取寄存器的起始地址及讀取長(zhǎng)度。對(duì)于不同的從機(jī),地址和數(shù)據(jù)信息都不相同。(4)錯(cuò)誤校驗(yàn)碼主機(jī)或從機(jī)可用校驗(yàn)碼判別接收信息是否出錯(cuò)。錯(cuò)誤檢測(cè)域包含一個(gè)16位的值(用2個(gè)8位的字符來實(shí)現(xiàn))。錯(cuò)誤檢測(cè)域的內(nèi)容是通過對(duì)消息內(nèi)容進(jìn)行“循環(huán)冗余檢測(cè)”得出的。CRC域附加在消息的最后,添加時(shí)先是低字節(jié)然后是高字節(jié),故CRC的高位字節(jié)是發(fā)送消息的最后一個(gè)字節(jié)。錯(cuò)誤校驗(yàn)采用CRC-16校驗(yàn)方法。1.4CRC校驗(yàn)原理生成CRC-16校驗(yàn)字節(jié)的步驟如下:①裝如一個(gè)16位寄存器,所有數(shù)位均為1。②該16位寄存器的低位

6、字節(jié)與開始8位字節(jié)進(jìn)行“異或”運(yùn)算。運(yùn)算結(jié)果放入這個(gè)16位寄存器。③把這個(gè)16寄存器向右移一位。④若向右(標(biāo)記位)移出的數(shù)位是1,則生成多項(xiàng)式1010000000000001和這個(gè)寄存器進(jìn)行“異或”運(yùn)算;若向右移出的數(shù)位是0,則返回③。⑤重復(fù)③和④,直至移出8位。⑥另外8位與該十六位寄存器進(jìn)行“異或”運(yùn)算。⑦重復(fù)③~⑥,直至該報(bào)文所有字節(jié)均與16位寄存器進(jìn)行“異或”運(yùn)算,并移位8次。⑧這個(gè)16位寄存器的內(nèi)容即2字節(jié)CRC錯(cuò)誤校驗(yàn),被加到報(bào)文的最高有效位。另外,在某些非ModBus通信協(xié)議中也經(jīng)常使用CRC16作為校驗(yàn)手段,而且產(chǎn)生了一些CRC16的變種,他們是使用CRC16多項(xiàng)式X↑

7、16+X↑15+X↑2+1,單首次裝入的16位寄存器為0000;使用CRC16的反序X↑16+X↑14+X↑1+1,首次裝入寄存器值為0000或FFFFH以上是一種得到CRC校驗(yàn)碼的方法,本程序里用得和這種方法類似,以后若再要計(jì)算CRC可以直接引用。程序如下:/*=========CRC校驗(yàn)程序========*/形參是(數(shù)組首地址、數(shù)組長(zhǎng)度-2(不包含校驗(yàn)碼))uintCRC_chek(uchar*puchMsg,ucharusDataLen){uint

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無此問題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。