一 | 概述 |
S7通訊作為西門子Zui主要的通訊方式之一,通常用于CPU與CPU之間的通訊,相信不少小伙伴都有使用過。但是,不知道大家有沒有遇到過數據長度過大,通訊異常報錯的問題,您又是如何處理的呢?接下來分享下為什么會有限制,應該如何“突破”限制?image-20240411140113933
二 | S7 通信數據長度限制 |
S7協議的一次性讀取長度是根據“協議數據單元”PDU(Protocol Data Unit)大小計算出來的,這個PDU的值是來自于PLC本身,不同型號的CPU,它的PDU是不一樣的,可參見下表;
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數據塊中;
第一步在程序中,使用3個GET指令,分別對應不同的請求和狀態返回值
image-20240411145919649編寫輪詢程序,可通過脈沖對字節進行循環左移操作,當該字節對應不同值時,就輸出不同的GET請求;
image-20240411150343498循環左移開始后,該循環值將按照1,2,4,8,16..進行向左移位,根據不同值判斷不同的GET請求;當該值等于8時,即第四次左移后,對該值重新賦0,進行下一周期輪詢;
image-20240411150933187實際運行效果
- 西門子 S7-1200 系列五:TIA博圖中OB、DB、FC、FB介紹及應用范圍說明 2024-12-02
- 西門子PLC如何控制伺服電機 2024-12-02
- S7-200 SMART與V90通訊定位控制 2024-12-02
- S7-200 SMART 下載時搜索不到CPU怎么辦 2024-12-02
- S7-200 SMART 數據類型及IO尋址問題 2024-12-02
- PLC編程常見邏輯錯誤 2024-12-02
- 在WinCC顯示與1500的通信狀態 2024-12-02
- S7-1200 和V20變頻器的MODBUS通訊實例 2024-12-02
- 編程實例|詳解西門子PLC模擬量編程 2024-12-02
- 【送】S7-200SMART 圓形軌跡的算法程序 2024-12-02
- PLC與各種傳感器連接方案(含應用圖) 2024-12-02
- PLC編程案例之控制機械手實現簡單搬運 2024-12-02
- MCGS觸摸屏與 S7-1200 以太網通訊 2024-12-02
- 【實用案例】博途V15動態加密計時催款程序 2024-12-02
- 【干貨】FANUC機器人循環指令介紹 2024-12-02
聯系方式
- 電 話:13922889745
- 經理:向小姐
- 手 機:18475208684
- 微 信:18475208684