圖20 S7-400單站系統(tǒng)做客戶端時不同的功能碼的參數(shù)定義
由于客戶端和服務器均使用相同的功能塊FB108“MODBUSCP ”的參數(shù)需要初始化,因此分別在OB100及OB1中調用FB108,在OB100中調用FB108完成相關參數(shù)的初始化,FB108的管腳分布參見3.3章節(jié)中的圖10說明。
打開ModSim32軟件,在“Connection--->connect”中打開連接屬性對話框,連接接口選擇“Modbus/TCP svr”,TCP/IP Server Port為本地服務器的端口502,如下圖21所示:
圖21 ModSim32中設置端口號
下載硬件組態(tài)及程序到CPU中,給參數(shù)ENQ_ENR發(fā)送脈沖信號;在打開的ModSim32軟件窗口設置寄存器連接類型、起始地址、長度等,如下圖22所示:
圖22 ModSim32中Modbus數(shù)據(jù)參數(shù)定義
關于SIMATIC中DB偏移量、Modbus物理編址、應用層編址對應關系請參考本文中2.3章節(jié)圖14的說明
之后在CP443-1 Client就可以建立和遠程ModSim32 Server的連接了,在Netpro中可以看到連接已經建立起來,如下圖23所示:
圖23 Modscan32激活與S7-400的連接
在Step7的項目程序中新建一個變量監(jiān)控表,插入需要監(jiān)控的參數(shù)和數(shù)據(jù)區(qū)變量,可以看到ModSim32軟件與S7-400的數(shù)據(jù)通訊已經建立起來了,雙方可以進行正常的保持寄存器數(shù)據(jù)讀寫操作,如下圖24所示:
圖24 S7-400單站系統(tǒng)作為客戶端與ModSim32軟件通訊
由于是通過PC測試軟件模擬第三方設備與SIMATIC CPU的集成PN口進行Modbus TCP通訊,因此在實際的第三方設備與CPU的集成PN口進行通訊時需要注意以下幾點:
1) 由于訂貨號2XV9450-1MB02程序中會占用CPU 較大的裝載和工作存儲區(qū),因此對于性能比較低特別是S7-300的低端CPU進行通訊時必須考慮一定的富余量。
2) 對于SIMATIC S7,參數(shù)DB_x的數(shù)據(jù)區(qū)建議使用不同的DB 塊,使用同一個DB的不同地址區(qū)會造成地址編排混亂,另外參數(shù)Start_x與END_x 參數(shù)不能出現(xiàn)地址疊加情況。
3) 第三方設備的數(shù)據(jù)區(qū)與SIMATIC S7的數(shù)據(jù)DB塊的地址對應關系可以先按照第三方的數(shù)據(jù)區(qū)域Modbus地址的偏移關系之后計算相應的偏移量。
4)建議使用項目中的樣例程序,只須修改連接ID,定義通訊雙方的IP地址、端口號及相應的數(shù)據(jù)存儲區(qū)等,能減少編程量,只須把樣例程序放到一個單獨的FC塊中即可,樣例程序中定義了足夠的數(shù)據(jù)區(qū),連接成功及錯誤次數(shù)指示等。
5) Modbus TCP每一包的數(shù)據(jù)最多只能發(fā)送125個寄存器或2000個比特位,超過該范圍必須進行分包處理。
6) S7-300/400作為Client能與多少個Server建立通訊或者作為Server時能與多少個Client通訊取決于產品所支持的TCP連接數(shù),Modbus/TCP協(xié)議并沒有對此進行約束和限制。
未經授權的Modbus TCP軟件可用于測試和學習,不允許用于商業(yè)行為;未經授權的軟件測試時CPU 的INTF指示燈紅色閃爍,并在CPU故障緩沖區(qū)生成錯誤信息;同時,Modbus TCP功能塊報錯,如圖25、26所示: