Modbus通信在PLC通道檢測中的應(yīng)用
圖2 Modbus PDU尋址方式
PDU的尋址方式也在Modbus應(yīng)用層協(xié)議中作出了具體的定義。在Modbus PDU中每一個(gè)數(shù)據(jù)都賦予從0~65535中的一個(gè)值作為該數(shù)據(jù)的地址。而在Modbus數(shù)據(jù)模型中,每一種數(shù)據(jù)類型塊中的數(shù)據(jù)單元都定義了一個(gè)從1到n(設(shè)備容量決定)的值作為其地址。Modbus數(shù)據(jù)模型要與符合IEC-61131標(biāo)準(zhǔn)的實(shí)際設(shè)備內(nèi)存或者其他模型對應(yīng)起來,這方面的映射關(guān)系是由設(shè)備生產(chǎn)廠家制定的。圖二給出了Modbus尋址模型,設(shè)備內(nèi)存中的四種數(shù)據(jù)模式的組織方式是由廠家決定的。由圖2可知,一個(gè)Modbus PDU地址所對應(yīng)的Modbus數(shù)據(jù)模型地址為該P(yáng)DU地址加1。
2.2 Modbus通信實(shí)現(xiàn)方式
要實(shí)現(xiàn)設(shè)備間的通信,需要將Modbus應(yīng)用層協(xié)議嵌入到ISO/OSI參考模型中的低層協(xié)議中?,F(xiàn)行的通信方式有三種:
(1) 通過串行鏈路實(shí)現(xiàn)的異步數(shù)據(jù)傳輸(Modbus-RTU and Modbus-ASCII),又稱標(biāo)準(zhǔn)Modbus通信;
(2) 高速令牌環(huán)網(wǎng)通信(Modbus-Plus);
(3) 基于TCP/IP的客戶/服務(wù)器結(jié)構(gòu)通信(Modbus-TCP)。
表2給出這三種通信方式與ISO/OSI參考模型的比較。
在不同的通信方式中都要對Modbus PDU進(jìn)行封裝,組成不同的Modbus幀,這種幀在Modbus協(xié)議中有專有的名詞稱之為應(yīng)用數(shù)據(jù)單元(ADU)。在Modbus-RTU和Modbus-Plus通信中采用的是標(biāo)準(zhǔn)應(yīng)用數(shù)據(jù)單元,它只是在PDU前面加上了占用一個(gè)字節(jié)的附加地址和在PDU結(jié)束增加了占用兩個(gè)字節(jié)的校驗(yàn)碼。在Modbus-TCP/IP網(wǎng)絡(luò)通信中需要對Modbus應(yīng)用層協(xié)議進(jìn)行重新封裝,該封裝是通過在Modbus PDU前加上了Modbus應(yīng)用層協(xié)議幀頭來實(shí)現(xiàn)。
表2 三種Modbus通信方式與OSI參考模型比較
圖3 兩種ADU比較
基于串行鏈路的Modbus通信網(wǎng)絡(luò)是一種主從式網(wǎng)絡(luò),在串行網(wǎng)絡(luò)中只允許存在一個(gè)主節(jié)點(diǎn)和最多247個(gè)從節(jié)點(diǎn),在這種網(wǎng)絡(luò)下,標(biāo)準(zhǔn)Modbus ADU中的附加地址域只包含從節(jié)點(diǎn)的地址,可尋址范圍是0~247,地址0作為廣播模式地址使用,從節(jié)點(diǎn)地址的有效取值范圍是1~247,并且每個(gè)從節(jié)點(diǎn)的地址必須是唯一的,主節(jié)點(diǎn)不存在具體的地址值。主節(jié)點(diǎn)設(shè)備將要訪問的從節(jié)點(diǎn)設(shè)備的地址放入到請求幀的地址域中,當(dāng)該地址的從節(jié)點(diǎn)設(shè)備作出響應(yīng)時(shí),將會把從節(jié)點(diǎn)設(shè)備的地址復(fù)制到響應(yīng)幀的地址域中,主節(jié)點(diǎn)設(shè)備通過該地址得知是由哪個(gè)從節(jié)點(diǎn)設(shè)備發(fā)來的響應(yīng)。
校驗(yàn)域存放了根據(jù)報(bào)文內(nèi)容經(jīng)由冗余校驗(yàn)算法計(jì)算所得到的結(jié)果。在基于串行鏈路的Modbus通信網(wǎng)絡(luò)中有兩種傳輸方式:RTU和ASCII,這兩種傳輸方式的冗余校驗(yàn)算法是不同的。
采用RTU通信模式要比ASCII模式在同樣波特率下能傳輸更多信息,在RTU模式底下是以二進(jìn)制編碼方式對傳輸數(shù)據(jù)進(jìn)行編碼,報(bào)文中每一個(gè)字節(jié)(8位二進(jìn)制位)包含了兩個(gè)十六進(jìn)制字符,同一報(bào)文內(nèi)的字符必須連續(xù)傳輸。RTU模式字節(jié)傳輸格式由1位起始位,8位數(shù)據(jù)位,1位奇偶檢驗(yàn)位和1位停止位依次組成,共占用11位二進(jìn)制位。當(dāng)不使用奇偶檢驗(yàn)時(shí),奇偶校驗(yàn)位也作停止位使用,此時(shí)共有兩位停止位。RTU傳輸模式下幀的差錯(cuò)校驗(yàn)域內(nèi)存放的是報(bào)文經(jīng)過循環(huán)冗余檢驗(yàn)(CRC)算法計(jì)算得出的結(jié)果。
采用ASCII通信模式時(shí),每一個(gè)字節(jié)(8位二進(jìn)制位)用兩個(gè)ASCII字符表示。由于每個(gè)字節(jié)都要用兩個(gè)字符表示,數(shù)據(jù)域的長度是RTU模式的兩倍,顯然在該模式下的傳輸效率要比RTU模式低。該模式的字節(jié)傳輸格式與RTU模式相似,只是數(shù)據(jù)位置占用7個(gè)二進(jìn)制位。ASCII模式下幀的差錯(cuò)檢驗(yàn)算法為縱向冗余校驗(yàn)(LRC)。
評論