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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于MODBUS總線高壓軟起動裝置液晶顯示界面的設(shè)計

          基于MODBUS總線高壓軟起動裝置液晶顯示界面的設(shè)計

          作者: 時間:2011-08-05 來源:網(wǎng)絡(luò) 收藏

          1 引言

          現(xiàn)代工業(yè)系統(tǒng)朝智能化、網(wǎng)絡(luò)化和開放式結(jié)構(gòu)的方向發(fā)展。實(shí)現(xiàn)不同種自動化設(shè)備之間通信是系統(tǒng)集成的關(guān)鍵。現(xiàn)場控制設(shè)備具有通信功能,便于構(gòu)成工廠底層控制網(wǎng)絡(luò)。通信標(biāo)準(zhǔn)的公開、一致,使系統(tǒng)具備開放性,設(shè)備間具有互可操作性。功能塊與結(jié)構(gòu)的規(guī)范化使相同功能的設(shè)備間具有互換性??刂乒δ芟路诺浆F(xiàn)場,使控制系統(tǒng)結(jié)構(gòu)具備高度的分散性。利用現(xiàn)場總線技術(shù),將符合同一標(biāo)準(zhǔn)的各種智能設(shè)備統(tǒng)一起來,徹底實(shí)現(xiàn)整個監(jiān)測系統(tǒng)的分散控制,將提高系統(tǒng)集成度和數(shù)據(jù)傳輸效率、延長有效控制距離,并有利于提高系統(tǒng)抗干擾性能和擴(kuò)展系統(tǒng)功能?;?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/MODBUS">MODBUS協(xié)議的串口通信是較常用的方式之一。

          2 協(xié)議簡介

          協(xié)議具有偵錯能力強(qiáng)、數(shù)據(jù)傳輸量大、實(shí)時性好等特點(diǎn),因而成為目前自控領(lǐng)域使用非常廣泛的通訊語言。本文通過一個應(yīng)用實(shí)例介紹如何利用單片機(jī)編程實(shí)現(xiàn)在線通訊ModBUS消息的工作過程,在可視化語言環(huán)境下完成地址域、功能代碼域、數(shù)據(jù)域的分配及CRC校驗(yàn)。MODBUS協(xié)議是應(yīng)用于電子控制器的一種通訊語言。利用這個協(xié)議,控制器相互之間(例如485、232C等),控制器通過網(wǎng)絡(luò)(例如以太網(wǎng))和其他設(shè)備之間進(jìn)行通訊。它定義了一種控制器能認(rèn)識使用的消息結(jié)構(gòu),而不管它們是通過何種網(wǎng)絡(luò)實(shí)現(xiàn);描述的是控制器請求訪問其它設(shè)備的過程,如何回應(yīng)來自其它設(shè)備的請求,以及怎樣偵錯并記錄;制定了消息域格局和內(nèi)容的公共格式。MODBUS通訊規(guī)約按照主從設(shè)備來規(guī)定,如:主站一次可向一個或所有從站發(fā)送通信請求(或指令),主設(shè)備通過消息幀的地址域來選通從設(shè)備。主站發(fā)送的消息幀的內(nèi)容和順序?yàn)椋簭恼镜刂罚ㄔO(shè)備地址)、功能碼、數(shù)據(jù)域(數(shù)據(jù)起始地址、數(shù)據(jù)量、數(shù)據(jù)內(nèi)容)、CRC校驗(yàn)碼;從站應(yīng)答的信息內(nèi)容和順序與主站信息幀基本相同。MODBUS除了定義通信功能碼之外,同時還定義了出錯碼,標(biāo)志出錯信息。主站接收到錯誤碼后,根據(jù)錯誤的原因采取相應(yīng)的措施。從站應(yīng)答的數(shù)據(jù)內(nèi)容依據(jù)功能碼進(jìn)行響應(yīng)。例如功能代碼03要求讀取從站設(shè)備中保持寄存器的內(nèi)容。

          2.1 MODBUS通訊傳輸模式

          MODBUS通訊實(shí)現(xiàn)有兩種傳輸模式(ASCII或RTU),ABB公司的50系列PLC產(chǎn)品采用的是RTU(遠(yuǎn)程終端單元)模式,在消息中的每個8Bit字節(jié)包含兩個4Bit的十六進(jìn)制字符。這種方式的主要優(yōu)點(diǎn)是:在同樣的波特率下,可比ASCII方式傳送更多的數(shù)據(jù)。

          代碼系統(tǒng):

          · 8位二進(jìn)制,十六進(jìn)制數(shù)0...9,A...F。

          · 消息中的每個8位域都是一個兩個十六進(jìn)制字符組成每個字節(jié)的位。

          · 1個起始位。

          · 8個數(shù)據(jù)位,最小的有效位先發(fā)送。

          · 1個奇偶校驗(yàn)位,無校驗(yàn)則無。

          · 1個停止位(有校驗(yàn)時),2個Bit(無校驗(yàn)時)。

          · 錯誤檢測域,CRC(循環(huán)冗長檢測)。

          基于RS485的RTU模式MODBUS通訊格式為:

          它定義了在這些網(wǎng)絡(luò)上連續(xù)傳輸?shù)南⒍蔚拿恳晃唬约皼Q定怎樣將信息打包成消息域和如何解碼。

          2.2 MODBUS通訊查詢回應(yīng)功能

          (1)查詢查詢消息中的功能代碼告之被選中的從設(shè)備要執(zhí)行何種功能。數(shù)據(jù)段包含了從設(shè)備要執(zhí)行功能的任何附加信息。例如功能代碼03是要求從設(shè)備讀保持寄存器并返回它們的內(nèi)容。數(shù)據(jù)段必須包含要告之從設(shè)備的信息:從何寄存器開始讀及要讀的寄存器數(shù)量。錯誤檢測域?yàn)閺脑O(shè)備提供了一種驗(yàn)證消息內(nèi)容是否正確的方法。

          (2)回應(yīng)如果從設(shè)備產(chǎn)生一正常的回應(yīng),在回應(yīng)消息中的功能代碼是在查詢消息中的功能代碼的回應(yīng)。數(shù)據(jù)段包括了從設(shè)備收集的數(shù)據(jù):象寄存器值或狀態(tài)。如果有錯誤發(fā)生,功能代碼將被修改以用于指出回應(yīng)消息是錯誤的,同時數(shù)據(jù)段包含了描述此錯誤信息的代碼。錯誤檢測域允許主設(shè)備確認(rèn)消息內(nèi)容是否可用。

          2.3 MODBUS消息幀

          傳輸設(shè)備將MODBUS消息轉(zhuǎn)為有起點(diǎn)和終點(diǎn)的幀,這就允許接收的設(shè)備在消息起始處開始工作,讀地址分配信息,判斷哪一個變量被選中,判知何時信息已完成。部分消息也能偵測到錯誤并且能設(shè)置為返回結(jié)果。使用RTU模式,消息發(fā)送至少要以3.5個字符時間的停頓間隔開始。傳輸?shù)牡谝粋€域是變量地址??梢允褂玫膫鬏斪址鞘M(jìn)制的0...9,A...F。網(wǎng)絡(luò)設(shè)備不斷偵測網(wǎng)絡(luò)總線,包括停頓間隔時間內(nèi)。當(dāng)?shù)谝粋€域(地址域)接收到,每個設(shè)備都進(jìn)行解碼以判斷是否發(fā)往自己的。在最后一個傳輸字符之后,一個至少3.5個字符時間的停頓標(biāo)定了消息的結(jié)束。一個新的消息可在此停頓后開始。

          整個消息幀必須作為一連續(xù)的流轉(zhuǎn)輸。如果在幀完成之前有超過1.5個字符時間的停頓時間,接收設(shè)備將刷新不完整的消息并假定下一字節(jié)是一個新消息的地址域。同樣地,如果一個新消息在小于3.5個字符時間內(nèi)接著前個消息開始,接收的設(shè)備將認(rèn)為它是前一消息的延續(xù)。這將導(dǎo)致一個錯誤,因?yàn)樵谧詈蟮腃RC域的值不可能是正確的。所以在通訊端口初始化時,Timer1定時間隔設(shè)置為500ms。

          2.4 MODBUS的CRC校驗(yàn)原理

          CRC校驗(yàn)實(shí)現(xiàn) MODBUS通信的RTU模式中,規(guī)定信息幀的最后兩個字節(jié)用于傳遞CRC(Cyclic Redundancy Check,循環(huán)冗余校驗(yàn))碼。發(fā)送方將信息幀中地址域、功能碼、數(shù)據(jù)域的所有字節(jié)按規(guī)定的方式進(jìn)行位移并進(jìn)行XOR(異或)計算,即可得到2字節(jié)的CRC碼,并把包含CRC校驗(yàn)碼的信息幀作為一連續(xù)的流進(jìn)行傳輸。接收方在收到該信息幀時按同樣的方式進(jìn)行計算,并將結(jié)果同收到的CRC碼的雙字節(jié)比較,如果一致就認(rèn)為通信正確,否則認(rèn)為通信有誤,從站將發(fā)送CRC錯誤應(yīng)答。 RTU模式一般采用CRC-16冗余校驗(yàn)方法,CRC-16的校驗(yàn)碼為16位(2字節(jié)),其中低字節(jié)在前,高字節(jié)在后。實(shí)現(xiàn)CRC校驗(yàn)有兩種方法:根據(jù)CRC校驗(yàn)的定義公式進(jìn)行計算,或者在程序中建立CRC校驗(yàn)值表。在程序中使用前者更容易實(shí)現(xiàn),這里需要使用CRC生成多項(xiàng)式X16+X15+X2+1。該多項(xiàng)式對應(yīng)的碼組系數(shù)為18005H(16進(jìn)制),去除最高位,對應(yīng)的16位余數(shù)為8005H,即為CRC-16常數(shù)。CRC-16校驗(yàn)過程如下:將CRC寄存器的每一位預(yù)置為1;把該寄存器值與8bit的信息幀數(shù)據(jù)進(jìn)行異或,結(jié)果存于該寄存器;對CRC寄存器從高到低進(jìn)行移位,在最高位(MSB)的位置補(bǔ)零,而最低位(LSB,移位后已經(jīng)被移出CRC寄存器)如果為1,則把寄存器與CRC-16常數(shù)進(jìn)行異或,否則如果LSB為零,則無需進(jìn)行異或。重復(fù)上述的由高至低的移位8次,第一個8bit數(shù)據(jù)處理完畢,用此時寄存器的值與下一個8bit數(shù)據(jù)異或并進(jìn)行如前一樣的8次移位。所有的字符處理完成后CRC寄存器內(nèi)的值即為最終的CRC值。CRC添加到消息中時,先加入低字節(jié),然后高字節(jié)。RTU模式的傳輸格式是1個數(shù)據(jù)位,2個停止位,沒有奇偶校驗(yàn)位。通信數(shù)據(jù)安全由控制參數(shù)CRC-16碼保證。RTU接收設(shè)備依靠接收字符間經(jīng)過的時間判斷一幀的開始,如果經(jīng)過3個半的字符時間后仍然沒有新的字符或者沒有完成幀,接收設(shè)備就會放棄該幀,并設(shè)下一個字符為新一幀的開始,應(yīng)用程序中,MODBUS協(xié)議通信由通訊子模塊實(shí)現(xiàn),包含CRC-16計算與驗(yàn)證、信息幀的編制和分解。

          3 MODBUS通訊應(yīng)用

          下面是基于單片機(jī)MSP430F149為主芯片的高壓軟起動裝置液晶操控板,以此為例來說明MODBUS通訊的應(yīng)用。MODBUS通訊主設(shè)備是控制器,從設(shè)備是高壓軟起動裝置液晶操控板。

          3.1 液晶操控板MODBUS通訊測試碼

          /*****************************MODBUS通訊測試碼*****************************

          召喚發(fā)送:

          00 06

          00 00 00 0C 1E 88

          電壓、電流監(jiān)測功能:

          00 03

          1C 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0D 8D

          故障顯示功能:

          00 02

          18 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 20 34

          *****************************MODBUS通訊測試碼*****************************/


          上一頁 1 2 下一頁

          關(guān)鍵詞: MODBUS 自動控制 DSP

          評論


          相關(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); })();