S7 400H之間單邊通訊實現方法


        現場有兩套S7 400Hi同,PLC1先投入使用,PLC2正在調試。前期沒有把項目程序做在一個程序中,造成無法做容錯鏈接。今天嘗試着在PLC2中做單邊通訊,把過程記錄下來。

前面的硬件組態等就略過了。PLC1的CPU是412-4H,IP地址是192.168.20.202和192.168.20.203.

PLC2也是412-4H,IP地址是192.168.20.204和12.168.20.205。

step7打開PLC2程序,打開netpro,在每一個CPU下建立一個未知對象的S7 通訊,ID分別為3和4

ID3配置如下:

ID4配置如下

在PLC2下新建一個FC,用於通訊程序,新建DB9和DB13用於向PLC1寫數據,新建DB10和DB14用於接收PLC2傳來的數據。FC下插入SFB15,用於向PLC1寫數據,REQ需要上升沿,這里使用時鍾存儲器M0.6,這個是經過逐步測試找到的,速度太快不行,比如嘗試過M0.0至M0.5,通訊都不正常。ID就是通訊ID,和前面netpro中設置的ID號碼保持一致。P#DB9.DBX0.0表示指針,從DB9.DBX0.0開始,兩個字節長度的數據。輸出M131.0表示通訊是否完成,M131.1表示通訊是否有錯,MW8164存放通訊錯誤代碼。

插入一個network,放SFB14,用於接收PLC1傳來的數據,各管腳定義參考前面的描述

需要判斷一下通訊是否正常,插入一個NEtwork,寫下面程序,這里通過PLC1傳來的DB10.BX0.0來判斷,在PLC1中使用時鍾存儲器M0.5對其賦值,理論上接收端這也是一個脈沖信號,隨時變化,如果在S_ODT時間范圍內不變化,那么M131.4就會為1,從而判斷出兩套PLC之間通訊是否正常。

同樣的思路,把ID4的通訊也使用SFB做讀寫數據,存放在其他的DB中。

根據兩個通訊的狀態,來決定程序中具體使用哪個DB里面的元素。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM