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

          新聞中心

          EEPW首頁 > 手機與無線通信 > 設計應用 > 基于PLC的Modbus通信協(xié)議的實現(xiàn)

          基于PLC的Modbus通信協(xié)議的實現(xiàn)

          作者: 時間:2011-10-08 來源:網(wǎng)絡 收藏
          3 系統(tǒng)軟件構成

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

            考慮到操作的方便性, 在系統(tǒng)初次安裝時, 先在PC 機上用上位機軟件將所有傳感器的ID 搜索出來, 然后按實際安裝位置給每個傳感器編號, 讀溫度測試傳感器是否工作正常。在 上使用Mo dbus時首先要對格式進行設定, 即對D8120 寄存器進行寫操作, 在本系統(tǒng)條件下設置為0C87 , 即數(shù)據(jù)長度為8 位, 無校驗, 無起始位與停止位, 波特率9 600 bps。 修改D8120 設置后, 確保通斷 電源一次。 再用RS 指令進行數(shù)據(jù)的傳輸, 相關程序格式如圖4 所示。


          圖4 RS 指令程序格式

            按照上述程序格式, 即可在數(shù)據(jù)發(fā)送區(qū)寫入指令進行相應的操作。

            1) 讀取溫度, 其指令格式: [ 設備地址] [ 命令號] [ 通道號] [ 傳感器編號] [ 讀取個數(shù)高8 位] [ 低8位] [ CRC 低8 位] [ CRC 高8 位] , 其中CRC 校驗字節(jié)以子程序形式調用. 設備響應: [ 設備地址] [ 命令號] [ 返回的字節(jié)個數(shù)] [ 數(shù)據(jù)1] [ 數(shù)據(jù)2] . . . [ 數(shù)據(jù)n] [ CRC 低8 位] [ CRC 高8 位] 。

            每個18b20 讀取溫度的返回值占用兩個字節(jié).

            轉換方法: 將實際溫度擴大100 倍, 再將此數(shù)值分為兩個字節(jié)傳送出來即可. 例如, 實測出來溫度是28.65℃ , 擴大100 倍即2 865, 則發(fā)送的第一個字節(jié)是2 865/ 256 即是11, 第二個字節(jié)是2 865% 256 即49, 那么傳送的兩個字節(jié)為0×0B 和0×31。

            需要注意的是, 由于采用兩線制的485 連線方式, 會產(chǎn)生回波, 即接收端會先接收到自己發(fā)送出去的數(shù)據(jù), 但數(shù)據(jù)還是會正常發(fā)送給采集模塊, 此時接收端則應該避開前面的無用數(shù)據(jù), 接收后面模塊響應的有效數(shù)據(jù)。

            2) 在系統(tǒng)運行后, 若需更換傳感器, 則需執(zhí)行以下兩條指令, 首先, 搜索ID, [ 01] [ 06] [ 0c] [ 00][ 00] [ 00] [ CRC 低] [ CRC 高] , 此指令為搜索模塊1上各個通道的所有傳感器。 然后寫編號, 例如: [ 01][ 06] [ 09] [ 05] [ 00] [ 05] [ CRC 低] [ CRC 高] , 表示將第9 通道的原來編號為05 的傳感器更換后重新設定為05, 執(zhí)行此兩條指令后, 方可重新讀取溫度。

            3) CRC 校驗字節(jié)的生成是比較關鍵的一步,其過程比較復雜, 步驟如下:

           ?、兕A置一個16 位CRC 寄存器為十六進制FFFF, 即所有數(shù)位均為1。

            ②該16 位寄存器的低8 位字節(jié)與信息幀的第一個字節(jié)的低8 位進行 異或?運算. 運算結果放入這個16 位寄存器。

           ?、?把這個16 寄存器向右移一位, 用0 填補高位。

           ?、苋粝蛴? 標記位) 移出的數(shù)位是1, 則生成多項式A001( 1010000000000001) 和這個寄存器進行“異或”運算; 若向右移出的數(shù)位是0, 則返回③。

           ?、葜貜廷?和④, 直至移出8 位。

            ⑥重復③ ~⑤, 直至該報文所有字節(jié)均與16 位寄存器進行 異或?運算, 并移位8 次。

           ?、邔⒌玫降膌6 位CRC 寄存器的高、低位字節(jié)進行, 即2 字節(jié)CRC, 加到報文。

            其程序流程如圖5, 以上面的溫度讀取指令為例, 其CRC 校驗梯形圖如圖6。


          圖5 CRC 校驗流程

          圖6 CRC 校驗程序

            在讀取溫度時, 應嚴格遵守DS18b20 的讀寫時序, 否則就會出現(xiàn)錯誤, 丟幀等, 若用脈沖信號定時讀取, 則間隔應不小于100 ms. 一般出現(xiàn)錯誤幀時數(shù)據(jù)顯示為0℃, 此時可以進行簡單的濾波, 例如傳回值為0 時不顯示數(shù)據(jù), 或者多組數(shù)據(jù)取平均值后再顯示, 以避免溫度顯示的大幅度跳動。 DS18b20的初始化溫度顯示為85℃, 若一直不變, 則此傳感器可能已經(jīng)損壞或是接線不良, 應進行相應的檢查。

            4 結束語

            該系統(tǒng)應用于生產(chǎn)過程實時監(jiān)控中, 既作為現(xiàn)場控制機完成對生產(chǎn)過程的自動控制, 又作為主從通信的主機, 與相關儀表連接, 現(xiàn)場總線的DS18b20 型數(shù)字溫度傳感器的采集模塊的主從通信, 并通過PLC 高速實時網(wǎng)絡對其的遠程監(jiān)控。 該系統(tǒng)目前處于試運行階段, 表現(xiàn)較為穩(wěn)定, 通信可靠, 效果良好。

          通信相關文章:通信原理



          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();