<object id="ayu7o"></object>

      <object id="ayu7o"></object>

    1. <menuitem id="ayu7o"></menuitem>
      <object id="ayu7o"></object>
      加入收藏 在線留言 聯系我們
      關注微信
      手機掃一掃 立刻聯系商家
      全國服務熱線18475208684
      公司新聞
      玩轉西門子 S7-1200/1500 的 Modbus RTU 通信診斷
      發布時間: 2024-06-04 10:09 更新時間: 2024-12-02 08:00

      No.

      01 概述

      Modbus RTU 是一種串行通信協議,由于具有協議透明,實現成本低,簡單易用等諸多特點,至今仍然廣泛應用在工業控制的各個領域。


      為了通信可以長期穩定的運行,并且可以在故障時可以及時處理和排查,特梳理此文,用做參考學習使用。


      診斷工作以 S7-1200/S7-1500 PLC的串口通信模塊上的指示燈開始:


    2. 模塊本體集成 RX/TX LED 指示燈,用來指示串口通信模塊的信息收發狀態。


    3. TX 代表發送,RX 代表接收,例如 CM PtP RS422/RS485 HF 通信模塊的 LED 指示燈如圖1所示。

    4. 圖片

      圖1 LED指示燈


      通過 RX/TX 指示燈的狀態可以快速定位 Modbus RTU 通信故障,并且結合 Modbus RTU 通信指令狀態代碼,可以高效率地解決在現場中碰到的各類Modbus RTU 通信問題,故障診斷判斷流程如圖 2 所示。

      圖片

      圖2 通信故障的判斷流程圖


      作為 Modbus 主站,當與從站設備通信不上時,觸發主站指令后,觀察串口通信模塊的 TX 指示燈是否閃爍:


    5. 如果閃爍,則說明程序已經正確執行,此時如果 RX 不亮,則故障的判斷方向為接線或從站一側。如果 RX 也閃爍,則捕捉主站指令的狀態代碼,根據代碼的具體含義排查故障原因;


    6. 如果串口通信模塊的 TX 指示燈不閃爍,則說明程序并未正確執行,故障原因主要方向為編程問題,檢查初始化指令和主站指令是否編程正確,并捕捉初始化指令和主站指令的狀態代碼,根據代碼的具體含義排查故障原因。


    7. 作為 Modbus 從站,當與主站設備通信不上時,觀察串口通信模塊的 RX 指示燈是否閃爍:


    8. 如果閃爍,則說明可以接收主站發來的消息。在確認主站參數設置正確之后,故障主要判斷方向為從站的編程問題,檢查初始化指令和從站指令是否編程正確,并捕捉初始化指令和從站指令的狀態代碼,根據代碼的具體含義排查故障原因;


    9. 如果串口通信模塊的 RX 指示燈不閃爍,則說明模塊并未接收到來自主站的任何消息,故障原因主要為接線或主站一側,需檢查接線是否正確、主站是否已成功啟動等問題。


    10. No.

      02 捕捉狀態代碼

      由于 Modbus RTU 通信指令的狀態代碼僅持續一個掃描周期,直接在線監控無法實時看到,所以我們可以編寫程序捕捉代碼。


      捕捉代碼示例如圖3所示。初始化指令、主站指令、從站指令均需捕捉狀態代碼。

      圖片

      圖3 捕捉代碼


      No.

      03 常見代碼解讀

      16#80C8

      該代碼含義為:從站在設置時間內未響應,需要檢查數據傳輸率、奇偶校驗和從站的接線情況。

      產生該代碼的可能原因:


      ①接線錯誤。


      在主從站接線時,很多用戶習慣性的將設備間的 A 與 A,B 與 B 相連,進而組成總線式 RS485 網絡,其實,正確方式為根據正負進行組網,應將設備間的正與正,負與負相連,因為并非所有設備的 A 為正,B 為負,如 CB1241 通信板,B 為正,A 為負,如圖4所示。

      圖片

      圖4 CB1241 通信接線


      16#81Ex


      該代碼均指向字符幀錯誤,如16#81EA:字符幀過短,16#81E2:字符幀錯誤。


      產生該代碼的可能原因:


      ①  字符幀設置錯誤。


      依次檢查起始位、數據位、奇偶校驗位、數據傳輸速率和結束位個數的設置是否一致。

      其中,結束位的個數是在初始化指令的背景 DB 塊中進行設置,默認為1個停止位。如圖5所示。

      圖片

      圖5 背景DB設置


      ② 字符間Zui大字符延遲時間 “ICHAR_GAP”


      在 Modbus RTU 規約中, Modbus RTU 報文幀之間間隔不小于 3.5 個字符時間。如圖6所示。

      圖片

      圖6 Modbus RTU 報文幀以及間隔


      西門子串口通信模塊默認 Modbus RTU 報文幀結束的默認條件為 3.5 個字符時間。


      假設波特率為 9600 bit/s,1 個起始位,1 個停止位,8 個數據位,1 個校驗位,則 3.5 個字符時間為(1/9600)*1000*11*3.5=4 ms,不同波特率,對應的字符時間不同。


      如果因為伙伴響應時間稍長、線路阻抗較大,或外界干擾等問題,Modbus RTU 報文幀中的字符間延時超過 3.5 個字符時間,則 PLC 會誤認為報文幀結束,但實際并未結束,進而產生該類錯誤。


      可以適當增大字符間Zui大字符延遲時間 “ICHAR_GAP”,避免該錯誤的發生,如圖7所示。

      圖片

      圖7 字符延遲時間


      16#8280/16#8281

      該代碼含義為:讀取/寫入模塊時失敗,請檢查 Port 參數的輸入。


      產生該代碼的可能原因:


      ① 初始化指令 Port 管腳輸入錯誤


      初始化指令 Port 管腳應輸入串口通信模塊的硬件標識符,錯誤的硬件標識符將導致初始化失敗。


      ② 未指定工作模式


      應在初始化指令的背景 DB 塊 Mode 參數中,指定串口通信模塊的工作模式,模式 4 為半雙工(RS485)兩線模式,如圖 8 所示,下載程序后斷電重啟生效。不同的 Mode 數值代表不同的工作模式,如表 1所示。


      該設置僅適用于 Modbus(RTU)指令集,不適用 Modbus 指令集。

      圖片

      圖8 DB塊模式


      圖片

      表1 各種模式列表


      總結:

      以上內容是針對經常出現的 S7-1200/1500 Modbus RTU 通信故障的處理總結,其它更多的工業通信技術以及經驗分享,敬請訪問西門子 1847 工業學習平臺,讓我們一同學習,共同成長!


      聯系方式

      • 電  話:13922889745
      • 經理:向小姐
      • 手  機:18475208684
      • 微  信:18475208684