<sup id="x7dny"><rp id="x7dny"><big id="x7dny"></big></rp></sup>
    • <label id="x7dny"><tt id="x7dny"><tfoot id="x7dny"></tfoot></tt></label>
      <dfn id="x7dny"></dfn>
      <small id="x7dny"><rp id="x7dny"><rt id="x7dny"></rt></rp></small>
      加入收藏 在線留言 聯系我們
      關注微信
      手機掃一掃 立刻聯系商家
      全國服務熱線18475208684
      公司新聞
      干貨!一文搞懂西門子S7通信的讀寫字節長度限制,及如何"突破"讀寫長度限制分享
      發布時間: 2024-06-09 21:22 更新時間: 2024-12-02 08:00

      圖片

      概述

      S7通訊作為西門子Zui主要的通訊方式之一,通常用于CPU與CPU之間的通訊,相信不少小伙伴都有使用過。但是,不知道大家有沒有遇到過數據長度過大,通訊異常報錯的問題,您又是如何處理的呢?接下來分享下為什么會有限制,應該如何“突破”限制?圖片image-20240411140113933

      S7 通信數據長度限制

      S7協議的一次性讀取長度是根據“協議數據單元”PDU(Protocol Data Unit)大小計算出來的,這個PDU的值是來自于PLC本身,不同型號的CPU,它的PDU是不一樣的,可參見下表;

      本地 CPU

      遠程 CPU

      以字節為單位的數據塊大小

      S7-1200

      任意

      240

      S7-1500


      S7-300

      240

      S7-400

      480

      S7-1200

      240

      S7-1500

      960

      從表中可以看出西門子PLC PDU大小一般會有三個檔次240、480、960; 使用S7通信時,PDU大小的確認遵從“木桶短板理論”,即取通訊能力Zui弱的;例如S7-1200 Zui大PDU大小240,S7-1500 Zui大PDU是960,如果S7-1200與S7-1500之間進行S7通信,那么Zui大PDU應為240,而不是960,其它同理;

      知道了PDU長度后,那么一次性讀取的字節長度,就是在PDU的基礎上減去18,這個18是指包頭包尾會有18個字節,這樣我們就知道了S7-1200一次Zui大能讀取222個字節(240-18=222),S7-1500這樣的PLC,我們一次性Zui大是可以讀取942個字節的(960-18=942),一次性能讀取的字節越長,越能提高上位機的通信效率。


      如何“突破”長度限制

      既然單次讀取有長度限制,那實際應用中應該如何“突破”這種限制呢,畢竟隨著工業4.0、數字化推進,數據采集的需求也是越來越大,CPU與CPU之間數據通訊長度也越來越長;有心的朋友可能有答案了,一次不行那就多讀次,這不就“突破“了嗎?對了,答案就是通過輪詢的方式,多次進行讀寫操作;

      例如:S7-1200 PLC 做客戶端從服務端PLC讀取516個字節到DB200數據塊中;

      1. 第一步在程序中,使用3個GET指令,分別對應不同的請求和狀態返回值

        圖片image-20240411145919649
      2. 編寫輪詢程序,可通過脈沖對字節進行循環左移操作,當該字節對應不同值時,就輸出不同的GET請求;

        圖片image-20240411150343498
      3. 循環左移開始后,該循環值將按照1,2,4,8,16..進行向左移位,根據不同值判斷不同的GET請求;當該值等于8時,即第四次左移后,對該值重新賦0,進行下一周期輪詢;

        圖片image-20240411150933187
      4. 實際運行效果

        圖片


      聯系方式

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