Modbus協(xié)議的常用基本定義——(RS485總線系統(tǒng)應(yīng)用之2)
Modbus協(xié)議是一種應(yīng)用于電子控制器的通用通信規(guī)約。是由MODICON公司最先倡導(dǎo)并于1979年開發(fā)的,后來逐漸發(fā)展成為國(guó)際通用的通信標(biāo)準(zhǔn)。在我國(guó),GB/Z 19582《基于Modbus協(xié)議的工業(yè)自動(dòng)化網(wǎng)絡(luò)規(guī)范》于2004年9月發(fā)布,該指導(dǎo)性技術(shù)文件發(fā)布后得到了國(guó)內(nèi)自動(dòng)化產(chǎn)品生產(chǎn)廠家、自動(dòng)化系統(tǒng)集成商和廣大用戶的高度關(guān)注和重視,并極大地推動(dòng)了基于Modbus協(xié)議的產(chǎn)品的開發(fā)和應(yīng)用。2006年4月,Modbus-IDA國(guó)際組織在中國(guó)正式授權(quán)建立了唯一的MODBUS(中國(guó))產(chǎn)品一致性測(cè)試實(shí)驗(yàn)室(MCTL),為Modbus技術(shù)在中國(guó)的全面開發(fā)和應(yīng)用提供了硬件平臺(tái)支持。
本文引用地址:http://www.ex-cimer.com/article/201612/330196.htm按照全國(guó)工業(yè)過程測(cè)量和控制標(biāo)準(zhǔn)化技術(shù)委員會(huì)關(guān)于建立現(xiàn)場(chǎng)總線標(biāo)準(zhǔn)體系的有關(guān)要求,有關(guān)部門于2007年11月完成了GB/Z 19582《基于Modbus協(xié)議的工業(yè)自動(dòng)化網(wǎng)絡(luò)規(guī)范》標(biāo)準(zhǔn)的修訂工作,將作為國(guó)家推薦標(biāo)準(zhǔn)上報(bào)國(guó)家標(biāo)準(zhǔn)化管理委員會(huì),2008年3月國(guó)家標(biāo)準(zhǔn)化管理委員會(huì)正式批準(zhǔn)為GB/T 19582-2008。
2. Modbus的兩種傳輸模式
Modbus的兩種傳輸模式分別是ASCII(美國(guó)標(biāo)準(zhǔn)信息交換代碼)和RTU(遠(yuǎn)程終端裝置)。用戶要實(shí)現(xiàn)Modbus網(wǎng)絡(luò)通信,必須選中一種傳輸模式并配置串口通信參數(shù)(波特率、校驗(yàn)方式等)。在同一個(gè)Modbus網(wǎng)絡(luò)上的所有設(shè)備都必須選擇相同的傳輸模式和串口參數(shù)。
當(dāng)消息在標(biāo)準(zhǔn)的Modbus系列網(wǎng)絡(luò)傳輸時(shí),每個(gè)字符或字節(jié)以如下方式發(fā)送(從左到右):最低有效位...最高有效位。
2.1 ASCII模式
有奇偶校驗(yàn):
啟始位 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 奇偶位 | 停止位 |
無奇偶校驗(yàn):
啟始位 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 停止位 | 停止位 |
ASCII模式編碼說明:
.每發(fā)送一個(gè)字節(jié)包含:
1個(gè)起始位、7個(gè)數(shù)據(jù)位(最小的有效位先發(fā)送)、1個(gè)奇偶校驗(yàn)位(無校驗(yàn)則無)、1個(gè)(有校驗(yàn)時(shí))或2個(gè)停止位(無校驗(yàn)時(shí))
.錯(cuò)誤檢測(cè)采用LRC(縱向冗長(zhǎng)檢測(cè))
ASCII模式的消息幀結(jié)構(gòu):
冒號(hào)符 | 地址碼 | 功能代碼 | 數(shù)據(jù)數(shù)量 | 數(shù)據(jù)1 | ... | 數(shù)據(jù)n | LRC高字節(jié) | LRC低字節(jié) | 回車符 | 換行符 |
2.2 RTU模式
有奇偶校驗(yàn):
啟始位 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 奇偶位 | 停止位 |
無奇偶校驗(yàn):
啟始位 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 停止位 | 停止位 |
RTU模式編碼說明:
1個(gè)起始位、8個(gè)數(shù)據(jù)位(最小的有效位先發(fā)送)、1個(gè)奇偶校驗(yàn)位(無校驗(yàn)則無)、1個(gè)(有校驗(yàn)時(shí))或2個(gè)停止位(無校驗(yàn)時(shí))
.錯(cuò)誤檢測(cè)采用CRC(循環(huán)冗長(zhǎng)檢測(cè))
當(dāng)控制器設(shè)為在Modbus網(wǎng)絡(luò)上以RTU模式通信時(shí),在消息中的每個(gè)字節(jié)(8Bit)包含兩個(gè)4Bit的十六進(jìn)制字符。這種方式的主要優(yōu)點(diǎn)是:在同樣的波特率下,可比ASCII方式傳送更多的數(shù)據(jù)。
RTU模式的消息幀結(jié)構(gòu):
地址 | 功能代碼 | 數(shù)據(jù)數(shù)量 | 數(shù)據(jù)1 | ... | 數(shù)據(jù)n | CRC低字節(jié) | CRC高字節(jié) |
3. Modbus的消息幀結(jié)構(gòu)
3.1 ASCII幀
起始位 | 設(shè)備地址 | 功能代碼 | 數(shù)據(jù) | LRC校驗(yàn) | 結(jié)束符 |
1個(gè)字符 | 2個(gè)字符 | 2個(gè)字符 | n個(gè)字符 | 2個(gè)字符 | 2個(gè)字符 |
3.2 RTU幀
使用RTU模式,每幀消息發(fā)送至少要有3.5個(gè)字節(jié)時(shí)間的間隔停頓。不論在何種網(wǎng)絡(luò)波特率下,這是最容易實(shí)現(xiàn)的(如下圖的T1-T2-T3-T4所示)。傳輸?shù)牡谝粋€(gè)域是設(shè)備地址??梢允褂玫膫鬏斪址鞘M(jìn)制的0...9,A...F。網(wǎng)絡(luò)上的設(shè)備不斷偵測(cè)網(wǎng)絡(luò)總線,當(dāng)?shù)谝粋€(gè)域(地址域)接收到時(shí),每個(gè)從設(shè)備都進(jìn)行解碼以判斷是否發(fā)給自己。在最后一個(gè)傳輸字節(jié)之后,應(yīng)至少停頓3.5個(gè)字節(jié)時(shí)間以表示消息結(jié)束。一個(gè)新的消息可在此停頓后再開始。
整個(gè)消息幀必須作為一個(gè)連續(xù)的流轉(zhuǎn)輸。如果在幀完成之前有超過1.5個(gè)字符時(shí)間的停頓時(shí)間,接收設(shè)備將刷新不完整的消息并假定下一字節(jié)是一個(gè)新消息的地址域。同樣,如果一個(gè)新消息在小于3.5個(gè)字節(jié)時(shí)間內(nèi)接著前個(gè)消息開始,接收的設(shè)備將認(rèn)為它是前一消息的延續(xù),這將導(dǎo)致一個(gè)錯(cuò)誤,因?yàn)樵谧詈蟮腃RC域的值不可能是正確的。典型的消息幀如下所示:
起始位 | 設(shè)備地址 | 功能代碼 | 數(shù)據(jù) | CRC校驗(yàn) | 結(jié)束符 |
T1-T2-T3-T4 | 8Bit | 8Bit | n個(gè)8Bit | 16Bit | T1-T2-T3-T4 |
3.3地址域
消息幀的地址域包含兩個(gè)字符(ASCII)或8Bit(RTU)。允許的從設(shè)備地址范圍是十進(jìn)制的0~247。主設(shè)備將要聯(lián)絡(luò)的從設(shè)備的地址放入消息中的地址域來選通從設(shè)備。當(dāng)從設(shè)備發(fā)送回應(yīng)消息時(shí),它把自己的地址放入回應(yīng)的地址域中,以便主設(shè)備知道是哪一個(gè)設(shè)備作出的回應(yīng)。
地址0用作廣播地址,以使所有的從設(shè)備都能認(rèn)識(shí)。當(dāng)Modbus協(xié)議用于更高水準(zhǔn)的網(wǎng)絡(luò)時(shí),廣播可能被禁止或以其它方式代替。
3.4功能域
消息幀中的功能碼域包含了兩個(gè)字符(ASCII)或8Bits(RTU)??赡艿拇a范圍是十進(jìn)制的1~255。有些功能碼適用于所有控制器,有些僅適應(yīng)用于某種控制器,還有些暫且保留以備后用,參見表1表2。
評(píng)論