<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > Modbus協(xié)議的常用基本定義——(RS485總線系統(tǒng)應(yīng)用之2)

          Modbus協(xié)議的常用基本定義——(RS485總線系統(tǒng)應(yīng)用之2)

          作者: 時(shí)間:2016-12-15 來源:網(wǎng)絡(luò) 收藏
          1. Modbus協(xié)議簡(jiǎn)介

          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。

          Modbus協(xié)議規(guī)定每個(gè)控制器必須有自己的設(shè)備地址。當(dāng)一個(gè)控制器在Modbus網(wǎng)絡(luò)上接收到一條消息時(shí),首先要識(shí)別是否發(fā)給自己。如果是并且需要回應(yīng),控制器將生成反饋消息并依據(jù)Modbus協(xié)議發(fā)出。

          不論是何種控制器經(jīng)過何種網(wǎng)絡(luò)進(jìn)行通信,Modbus協(xié)議定義了一個(gè)控制器能夠識(shí)別的消息域的框架結(jié)構(gòu)和內(nèi)容的公共格式。它描述了一個(gè)控制器請(qǐng)求訪問其它設(shè)備的過程,以及如何回應(yīng)來自其它設(shè)備的請(qǐng)求。還規(guī)定了如何偵測(cè)和記錄錯(cuò)誤。

          遵循Modbus協(xié)議,不同廠家生產(chǎn)的控制設(shè)備可以連接在同一個(gè)工業(yè)網(wǎng)絡(luò)。在這個(gè)網(wǎng)絡(luò)上,主機(jī)設(shè)備可以方便地對(duì)各種控制設(shè)備進(jìn)行集中監(jiān)控,各控制設(shè)備之間也可以直接相互通信。

          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模式

          使用ASCII字符幀時(shí),位的發(fā)送序列是:

          有奇偶校驗(yàn):

          啟始位

          1

          2

          3

          4

          5

          6

          7

          奇偶位

          停止位

          無奇偶校驗(yàn):

          啟始位

          1

          2

          3

          4

          5

          6

          7

          停止位

          停止位

          ASCII模式編碼說明:

          .消息中的每個(gè)字節(jié)都是一個(gè)ASCII字符,由兩位十六進(jìn)制字符組成:0...9,A...F

          .每發(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è))

          當(dāng)控制器設(shè)為在Modbus網(wǎng)絡(luò)上以ASCII模式通信時(shí),在消息中的每個(gè)字節(jié)(8Bit)都作為一個(gè)ASCII字符發(fā)送。這種方式的主要優(yōu)點(diǎn)是字符發(fā)送的時(shí)間間隔可達(dá)到1秒而不產(chǎn)生錯(cuò)誤。

          ASCII模式的消息幀結(jié)構(gòu):

          冒號(hào)符

          地址碼

          功能代碼

          數(shù)據(jù)數(shù)量

          數(shù)據(jù)1

          ...

          數(shù)據(jù)n

          LRC高字節(jié)

          LRC低字節(jié)

          回車符

          換行符

          2.2 RTU模式

          使用RTU字符幀時(shí),位的發(fā)送序列是:

          有奇偶校驗(yàn):

          啟始位

          1

          2

          3

          4

          5

          6

          7

          8

          奇偶位

          停止位

          無奇偶校驗(yàn):

          啟始位

          1

          2

          3

          4

          5

          6

          7

          8

          停止位

          停止位

          RTU模式編碼說明:

          .消息中的每個(gè)字節(jié)都是由兩個(gè)十六進(jìn)制字符組成:0...9,A...F

          .每發(fā)送一個(gè)字節(jié)包含:

          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)

          在ASCII或RTU兩種傳輸模式中,傳輸設(shè)備將Modbus消息轉(zhuǎn)換為有起點(diǎn)和終點(diǎn)的幀,這就可以使接收設(shè)備在消息起始處同步接收數(shù)據(jù),讀取地址信息,判斷哪一個(gè)設(shè)備被選中(廣播方式則傳給所有設(shè)備),判知何時(shí)信息已傳送完畢。有些消息也能偵測(cè)到錯(cuò)誤并且能返回結(jié)果。

          3.1 ASCII幀

          使用ASCII模式,每幀消息以冒號(hào)(:)字符(ASCII碼3AH)開始,以回車換行符結(jié)束(ASCII碼0DH,0AH)。

          其它域可以使用的傳輸字符是十六進(jìn)制的0...9,A...F。網(wǎng)絡(luò)上的設(shè)備不斷偵測(cè)“:”字符,當(dāng)有一個(gè)冒號(hào)接收到時(shí),每個(gè)從設(shè)備都解碼下個(gè)域(地址域)來判斷是否是發(fā)給自己的。

          消息中字符間發(fā)送的時(shí)間間隔最長(zhǎng)不能超過1秒,否則接收的設(shè)備將認(rèn)為傳輸錯(cuò)誤。一個(gè)典型消息幀如下所示:

          起始位

          設(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)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();