《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 設計應用 > 基于PLC的Modbus協議的實現
基于PLC的Modbus協議的實現
摘要: 隨著3C技術迅速發(fā)展,網絡集成信息自動化正迅速應用到現場設備,、控制中,現場總線控制系統正逐步取代傳統的集散控制系統,其中Modbus現場總線協議在基于PLC的控制系統中得
Abstract:
Key words :

         隨著3C 技術" title="3C 技術">3C 技術迅速發(fā)展, 網絡集成信息自動化正迅速應用到現場設備、控制中, 現場總線控制系統正逐步取代傳統的集散控制系統, 其中Modbus 現場總線協議在基于PLC" title="PLC">PLC 的控制系統中得到了越來越廣泛的應用. 在本系統中, 以PLC 為主機,、溫度采集模塊為從機, 完成對生產過程的自動控制,、工業(yè)流程及工藝參數的顯示,、修改, 根據PLC 的無協議通信功能, 用Modbus 現場總線協議實現主機與從機的通訊。

  本文基于某監(jiān)控系統的設計, 實現了三菱FX2N 系列PLC 在無協議通信方式下與DS18b20型數字溫度傳感器" title="數字溫度傳感器">數字溫度傳感器的采集模塊以Mo dbus 協議通信, 在電爐熔化工作過程中, 對電爐,、電容,、冷卻水等100 多點的溫度實現巡檢。

  1 系統硬件組成

  溫度監(jiān)控部分系統的硬件由DS18b20 型數字溫度傳感器,、采集模塊,、FX2N 系列PLC、FX2N-485-BD,、HITECH 觸摸屏組成, 其結構如圖1 所示,。


圖1 系統硬件組成

  DS18b20 是世界上首個支持單線總線接口( 1w ire bus inter face) 的數字化溫度傳感器, 單總線接口便于構建分布式的溫度測控網絡, 數字化的輸出提高了信號傳輸的可靠性, 而且使外圍電路大為簡化。 DS18b20 具有很高的適應性和性價比, 其測溫范圍為- 55~ 125 ℃ , 測溫精度為±0. 5℃ , 測溫距離最大為200 m , 測溫方式使用3 線制, 本系統使用的傳感器排序方式為指定排序,。

  DS18b20 內部主要有3 個數字部件: 1 個溫度傳感器,、1 個64 位的激光刻蝕ROM,、9 字節(jié)高速暫存器Scratchpad RAM 和3 字節(jié)EERAM. ROM 上64 位數據是傳感器的序列號。暫存器確保數據的完整性, 數據先被寫入暫存器, 并可以被讀回. 數據經校驗后, 可以由拷貝暫存器命令傳輸到EERAM, 以確保更改存儲器時數據的完整性,。暫存器為9 個字節(jié), 第0 和第1 字節(jié)是溫度編碼的低字節(jié)和高字節(jié).

  第2 和第3 字節(jié)是溫度編碼的低字節(jié)和高字節(jié)的拷貝, 第4 字節(jié)是配置寄存器, 其值決定溫度轉換的分辨率,。

  本系統采用的STA-D 溫度采集模塊, 是一種遠程數字化溫度采集系統, 有10 個通道, 每個通道最多可以掛接16 個DS18b20 型數字溫度傳感器,總共可以監(jiān)控160 個點的溫度, 以RS485 方式同上位機通訊, 通信協議為標準Modbus 協議, 波特率為9 600 bps, 與上位機通信距離最大為1 200 m, 工作電源為12 ~ 24 V, 工作溫度為- 20 ~ 75 ℃。 與FX2N??485??BD 采用兩線制的485 連線方式( 圖2) ,接線要使用規(guī)范的屏蔽線,。


圖2 485 連接圖

  臺灣HITECH 公司觸摸屏PWS 系列是專為PLC 設計的互動式工作站, 用232 直接與PLC 連接, 可以直接讀取PLC 的數據寄存器, 具有良好的人機界面, 操作人員通過它可設置所有參數, 控制系統自動運行,。并且編程簡便, 運行穩(wěn)定, 可設置不同的管理權限, 適合于本系統使用。

  2 Modbus 協議

  標準的Modbus 口是使用RS??232C 兼容串行接口, 它定義了連接口的針腳,、電纜,、信號位、傳輸波特率,、奇偶校驗, 控制器能直接或經由Mo dem 組網. 控制器通信使用主! 從技術, 即僅一設備( 主設備) 能初始化傳輸( 查詢) , 其它設備( 從設備) 根據主設備查詢提供的數據作出相應反應,。

表1 Modbus 部分功能碼定義


  Modbus 通訊協議有兩種傳送方式? RT U 方式和ASCII 方式。 本系統使用RTU 模式, 這種方式的主要優(yōu)點是: 在同樣的波特率下, 可比ASCII 方式傳送更多的數據,。

  使用RTU 模式時, 消息發(fā)送至少要以3. 5 個字符時間的停頓間隔開始, 如圖3 的T1- T 2- T 3- T 4 所示,。傳輸的第一個域是設備地址, 可以使用的傳輸字符是十六進制數值。 通信期間, 網絡設備不斷偵測網絡總線, 包括停頓間隔時間內, 當第一個域( 地址域) 接收到, 每個設備都進行解碼以判斷是否發(fā)往自己的,。 在最后一個傳輸字符之后, 至少要有3. 5 個字符時間的停頓以標定消息的結束, 之后可開始新的消息傳輸,。典型的消息幀如圖3 所示。 使用RT U 模式, 消息包括了一個基于CRC 方法的錯誤檢測域. CRC 域檢測了整個消息的內容,。


圖3 M odbus 消息幀結構

  CRC 域是兩個字節(jié), 包含一個16 位的二進制值,。它由傳輸設備計算后加入到消息中。 接收設備重新計算收到消息的CRC, 并與接收到的CRC 域中的值比較, 如果兩值不同, 則有誤, 后面將具體講述CRC 算法的實現,。

  3 系統軟件構成

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


圖4 RS 指令程序格式
 

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

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

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

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

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

  2) 在系統運行后, 若需更換傳感器, 則需執(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, 即所有數位均為1,。

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

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

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

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

 ?、拗貜廷?~⑤, 直至該報文所有字節(jié)均與16 位寄存器進行& 異或?運算, 并移位8 次,。

  ⑦將得到的l6 位CRC 寄存器的高,、低位字節(jié)進行, 即2 字節(jié)CRC, 加到報文,。

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


圖5 CRC 校驗流程

 圖6 CRC 校驗程序

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

  4 結束語

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

此內容為AET網站原創(chuàng),,未經授權禁止轉載。