新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > Modbus RTU通訊協議在流漿箱控制系統中的應用

        Modbus RTU通訊協議在流漿箱控制系統中的應用

        作者: 時間:2012-07-02 來源:網絡 收藏

        4 上位機與PLC通訊的具體實現

          作為主機的上位機通過通信協議可以訪問從機ABB AC31 50系列PLC里所有類型的輸入、輸出、內部及常量數據。但是為使上位機更高效地讀取PLC中的數據,需要將要讀取的數據合理安排,這里我們將上位機需要訪問的所有輸入、輸出、內部字或位數據經轉換都在PLC中以一定順序按地址連續地存放在內部字存儲區中,以便上位機每次只用一條讀請求命令讀取此塊內部字存儲區,即可獲取所需的全部PLC數據。這樣可以顯著的提高通訊效率,同時簡化上位機程序。我們將讀請求命令存在 QueryData數組中,如下:
          Dim QueryData(1 to 8)As Byte
          QueryData(1) = (H1) ‘PLC地址為1
          QueryData(2) = (H3) ‘功能碼為3,讀取n個數據
          QueryData(3) = (H2E) ‘數據地址為2E60
          QueryData(4) = (H60)
          QueryData(5) = (H0) ‘數據個數為81個
          QueryData(6) = (H51)
          QueryData(7) = (H8D) ‘校驗碼
          QueryData(8) = (H0)

          將QueryData數組通過MSComm控件發送給PLC,這樣PLC就會將其所需的全部數據(從PLC地址2E60開始到2EB0結束的81個地址連續的數據)一次返回給上位機。

          由于協議采用主從應答方式,即上位機程序中需要定時或循環發送讀取PLC數據的讀寫請求命令,而PLC對收到的每一條請求命令按協議規則進行回應。如此一應一答循環往復實現數據采集和控制命令的發送。同時為了避免讀寫沖突,要控制每兩條請求命令發送的時間間隔。下面這段程序簡單的說明了讀、寫命令發送是如何控制的:
          While (1)
          DoEvents
          If bNeedToWriteNewData Then
          ‘寫命令
          MSComm1.Output =SetData
          TimeDelay (100) ‘延時100毫秒
          ReceiveData = MSComm1.Input
          bNeedSendNewData = False
          Else
          ‘讀命令
          MSComm1.Output = QueryData
          TimeDelay (100) ‘延時100毫秒
          ReceiveData = MSComm1.Input
          buf = ReceiveData
          ‘處理、轉換
          Call PrecessPLCData(buf)
          End If
          Wend

          實際應用中采用定時讀寫的方式,流程如圖2所示。上位機將處理、轉換過的數據存入數據庫,并以動態趨勢和歷史趨勢的形式顯示出來,同時提供報警指示。所有關鍵參數都要獲得相應權限后方可從上位機寫入PLC。

          上位機使用Windows2000操作系統,監控程序用VB6.0編寫,這樣可以保證上位機穩定的運行,監控程序通過串口從 ABB AC31 PLC可獲得各現場過程值和參數,也可隨時根據工藝要求對PLC中的參數進行更改設置,從而對生產過程實施有效控制,在更改車速時,系統會自動更改總壓設定值,使漿網速比滿足條件。同時對各種可能出現的故障給出了在線幫助和排查方法,極大的方便了操作工的使用和維護。

        5 總結

          本控制系統在某紙廠五萬噸生產線中已成功使用,現場運行穩定,壓力、液位曲線非常平穩,控制效果和通訊速度方面令人滿意,已順利通過驗收,也為抄造高品質的紙張提供了有力的保障。Modbus通訊協議以其格式簡單、編程容易、傳輸距離遠、通訊可靠、通訊速率高、設備間連接成本低等優點使得它將能得到更廣泛的應用。


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 荣昌县| 南投市| 伊通| 洪江市| 沂源县| 鄂托克前旗| 榆树市| 平武县| 甘孜| 曲阜市| 芷江| 基隆市| 龙海市| 越西县| 罗城| 疏勒县| 民和| 青河县| 阿克苏市| 云龙县| 波密县| 佛山市| 济源市| 福州市| 达尔| 监利县| 深水埗区| 怀集县| 桦甸市| 开阳县| 沧州市| 西昌市| 建宁县| 德令哈市| 阳江市| 错那县| 兴海县| 牡丹江市| 保靖县| 乳源| 航空|