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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于linux 的多功能網(wǎng)關(guān)的設(shè)計(jì)

          基于linux 的多功能網(wǎng)關(guān)的設(shè)計(jì)

          作者: 時(shí)間:2012-02-21 來源:網(wǎng)絡(luò) 收藏

          摘要:深入研究了MODBUS RTU協(xié)議和MODBUS TCP協(xié)議,以UC7402-LX為開發(fā)平臺(tái),了一款,用于解決工業(yè)以太網(wǎng)環(huán)境下串口通信設(shè)備的“信息孤島”問題。

          本文引用地址:http://www.ex-cimer.com/article/149596.htm

          1 引言

          隨著世界范圍內(nèi)網(wǎng)絡(luò)和信息技術(shù)的日趨成熟,在工業(yè)通信和自動(dòng)化應(yīng)用中日益采用以太 網(wǎng)和TCP/IP 協(xié)議作為最主要的通信接口和手段,向網(wǎng)絡(luò)化、標(biāo)準(zhǔn)化、開放性方向發(fā)展將是 各種控制系統(tǒng)技術(shù)發(fā)展的主要潮流。然而,采用串口進(jìn)行通信的現(xiàn)場(chǎng)設(shè)備仍然大量存在,且 必將在相當(dāng)長(zhǎng)的一段時(shí)間內(nèi)存在。因此,在串口設(shè)備和工業(yè)以太網(wǎng)之間就需要有一個(gè)橋梁, 來消除工業(yè)現(xiàn)場(chǎng)中的“信息孤島”。

          Modbus/TCP 是Modbus 的延伸,它以太網(wǎng)和標(biāo)準(zhǔn)TCP/IP 協(xié)議,直接應(yīng)用第四層。 它定義了一個(gè)結(jié)構(gòu)簡(jiǎn)單的、開放和廣泛應(yīng)用的傳輸協(xié)議,用于主從式通信。Modbus TCP/IP 基本上用簡(jiǎn)單方式將Modbus 幀嵌入TCP 幀,是一種面向連接的傳送,它需要響應(yīng)。在TCP 幀中使用開放的Modbus 提供了一種系統(tǒng)規(guī)??缮炜s的方案,由10 個(gè)節(jié)點(diǎn)到100 個(gè)網(wǎng)絡(luò)節(jié) 點(diǎn)。Modbus TCP/IP 在工業(yè)現(xiàn)場(chǎng)得到了廣泛的應(yīng)用,是目前工業(yè)以太網(wǎng)通信的事實(shí)上的標(biāo)準(zhǔn)。

          本文以 MOXA 的嵌入式工控機(jī)UC7402-LX 為平臺(tái),在深入研究MODBUS 通信協(xié)議的 基礎(chǔ)上,了一款,既可以實(shí)現(xiàn)MODBUS/TCP 與MODBUS/RTU 的雙向轉(zhuǎn)換, 同時(shí)也可以實(shí)現(xiàn)MODBUS/TCP 與自定義串口通信協(xié)議的雙向轉(zhuǎn)換。

          2 硬件平臺(tái)簡(jiǎn)介

          MOXA UC7402-LX 采用Intel Xscale IXP-422 266Mhz 處理器,內(nèi)嵌Apache 網(wǎng)頁(yè)服務(wù)器 支持PHP 和XML,低功耗和無風(fēng)扇的使其結(jié)構(gòu)緊湊,非常適合在工業(yè)環(huán)境當(dāng)中使用。 MOXA UC7402-LX 配備有2 個(gè)10/100 Mbps 網(wǎng)口和8 個(gè)可通過軟件設(shè)置的RS-232/485/422 串口,并預(yù)裝有 系統(tǒng)。

          3 MODBUS 協(xié)議

          MODBUS是 MODICNO公司最先倡導(dǎo)的一種通信協(xié)議,經(jīng)過許多公司的實(shí)際應(yīng)用,逐漸被認(rèn) 可,成為一種應(yīng)用于工業(yè)控制器上的標(biāo)準(zhǔn)通信協(xié)議,由于其功能比較完善而且協(xié)議開放,因此,被廣泛應(yīng)用于工業(yè)現(xiàn)場(chǎng),在微機(jī)化測(cè)量設(shè)備之間實(shí)現(xiàn)雙向串行多節(jié)點(diǎn)數(shù)字通信。它連接 單個(gè)分散的測(cè)量控制設(shè)備,使之可以相互溝通信息、共同完成自控任務(wù)的網(wǎng)絡(luò)系統(tǒng)與控制系 統(tǒng),具有分散控制、使用簡(jiǎn)單、簡(jiǎn)化系統(tǒng)結(jié)構(gòu)、數(shù)據(jù)易于處理、節(jié)約硬件設(shè)備、易于安裝和 維護(hù)等優(yōu)點(diǎn)。

          3.1 MODBUS RTU

          MODBUS有兩種串行傳輸模式,即RTU模式和ASCII模式。RTU模式以十六進(jìn)制傳送數(shù)據(jù), 每個(gè)8bit字節(jié)包含兩個(gè)4bit的十六進(jìn)制字符。而ASCII模式是將一個(gè)字節(jié)分為兩個(gè)ASCII字符 發(fā)送。因而在同樣的波特率下,RTU模式比ASCII模式具有更高的吞吐率。大多數(shù)工業(yè)控制器 采用RTU模式。

          MODBUS RTU的報(bào)文幀和字節(jié)長(zhǎng)度如表1所示,報(bào)文總是由起始位、設(shè)備地址、功能碼、 數(shù)據(jù)域、校驗(yàn)域和結(jié)束位組成。

          3.2 MODBUS TCP

          Modbus TCP 只是在 TCP/IP 協(xié)議的基礎(chǔ)上進(jìn)一步進(jìn)行了modbus 報(bào)文的封裝,其數(shù)據(jù)幀 如圖1 所示,包含了報(bào)文頭,功能代碼和數(shù)據(jù)三部分,其中MBAP 報(bào)文頭各域及所占字節(jié)長(zhǎng) 度如表2 所示。

          4 軟件設(shè)計(jì)

          4.1 modbus tcp 與modbus rtu 協(xié)議轉(zhuǎn)換

          由上可知,modbus tcp 與modbus rtu 的協(xié)議轉(zhuǎn)換的核心即為數(shù)據(jù)幀的解封裝與封裝。 Modbus 最初在串行鏈路上的實(shí)現(xiàn)(最大RS485ADU=256 字節(jié))限制了Modbus PDU 的長(zhǎng)度。 因此,對(duì)串行鏈路通信來說,Modbus PDU=256-服務(wù)器地址(1 字節(jié))-CRC(2 字節(jié))=253字節(jié)。從而:RS232 / RS485 ADU = 253 字節(jié)+服務(wù)器地址(1 字節(jié)) + CRC (2 字節(jié))= 256 字節(jié)。 TCP Modbus ADU = 253 字節(jié)+ MBAP (7 字節(jié)) = 260 字節(jié)。如圖3 所示為modbus RTU 為 master 時(shí)的軟件流程圖,部分代碼摘錄如下:



          4.2 modbus tcp 與自定義串口協(xié)議轉(zhuǎn)換

          自定義串口協(xié)議與 modbus rtu 類似,但由于其協(xié)議為自定義的,導(dǎo)致ADU 的格式并不 固定,這就需要定制該函數(shù)。本文目前只針對(duì)單一設(shè)備的情況,因此采取將串口數(shù)據(jù)幀直接 作為modbus tcp 的PDU,而MBAP 采用固定格式處理,完成了對(duì)單一串口單臺(tái)設(shè)備連接的 透明處理。

          5 結(jié)束語(yǔ)

          Frenic-Mini 為富士的一款變頻器,支持簡(jiǎn)易的modbus 的協(xié)議。本設(shè)計(jì)利用Frenic-mini 連接三相異步電機(jī),采用modbus rtu 與moxa 7402-LX 通信,成功地實(shí)現(xiàn)了遠(yuǎn)程變頻器停啟 及頻率讀取。如下圖4 所示,為測(cè)試連接圖。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評(píng)論


          相關(guān)推薦

          技術(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); })();