寫在前面:
當我們學習Modbus TCP時,我們可以採用Modbus Poll + Modbus Slave快速搭建一個Modbus TCP的環境,看似很美好,但是深入學習之後,大家就會發現Modbus Slave的一個弊端,Modbus Slave只能模擬4個儲存區中的1個儲存區,如果我們通訊時,涉及到多個儲存區,那麼Modbus Slave就很難滿足要求了。這時候,有的人就會問,有沒有方法解決這個問題,搭建一個Modbus TCP伺服器,並且同時支援4個儲存區呢?答案是有的,今天主要講述如何基於S7-PLCSIM Advanced搭建Modbus TCP伺服器模擬環境。
1、PLCSIM-Advanced安裝
對於該軟體的獲取,大家可以去西門子相關網站下載,也可以透過下方連結獲取:
【免費領取】這個免費的軟體資源庫,你一定要收藏好!
mp。weixin。qq。com/s/EIRXVHY74rSCvzsC5JkEmQ
PLCSIM Advanced軟體
PLCSIM-Advanced的安裝也比較簡單,基本上是一路NEXT即可,但是主要的是PLCSIM-Advanced會依賴WinPcap軟體,所以大家可以提前安裝好WinPcap,即使不提前安裝,安裝過程中也會提示你安裝的,如果按照WinPcap提示Windows版本不相容,請以相容模式執行應用程式。
安裝完成後,電腦中會額外多出一個虛擬網絡卡,名稱為Siemens PLCSIM Virtual Ethernet Adapter,如下圖:
網絡卡列表
2、PLCSIM-Advanced使用
安裝完成後,桌面上會多出一個圖示,即S7-PLCSIM Advanced V3。0,如下圖所示:
PLCSIM Advanced圖示
該軟體的使用可以按照下方的步驟執行和確定,一定要記住以下需要注意的地方,否則一個很小的問題,可能會讓你浪費半天的時間,這樣就得不償失了。
(1)軟體要以管理員許可權執行:可以直接每次右擊,以管理員許可權執行,如果想一勞永逸,可以點選圖示,右擊屬性,在相容性中,將以管理員身份執行此程式的選項勾選。
設定管理員許可權執行
(2)將本地網絡卡及虛擬網絡卡的IP地址獲取設定為自動獲取。
(3)設定PG/PC介面:
透過控制面板,開啟設定PG/PC介面介面,按照下圖所示設定應用程式訪問點:
設定PG/PC介面
(4)開啟PLCSIM-Advanced,依次按照步驟進行設定:
設定PLCSIM-Advanced
(5)使用博圖建立一個簡單專案,一定要選擇1500PLC,PLCSIM-Advanced只支援1500PLC,但是對學習通訊來說,沒什麼影響。
(6)勾選允許Put/Get訪問:
設定允許PUT GET訪問
(7)點選專案,右擊屬性,將保護中的塊編譯時支援模擬選項勾選:
設定塊編譯支援模擬
(8)下載PLC程式時,將PG/PC介面設定成Siemens PLCSIM Virtual Ethernet Adapter。
選擇PG/PC介面
(9)選擇顯示所有相容的裝置,點選開始搜尋,搜尋到之後,點選下載即可。
搜尋裝置下載
3、Modbus TCP伺服器配置
ModbusTCP伺服器配置需要編寫一段PLC程式,從指令庫中拖拽一個MB_SERVER指令到OB中,如下圖所示:
MB_HOLD_REG中直接填寫P#M100。0 byte 100,將MB100-MB199與40001-40050對映,CONNECT填寫一個CONN變數,如下圖所示:
CONNECT引腳需要填寫一個TCON_IP_v4的結構體,建立一個DB2,新增一個變數,型別為TCON_IP_v4,如下圖所示:
CONNECT引腳各個引數填寫格式如下圖所示:
按照幫助給CONN變數賦初始值,如下圖所示:
將PLC程式下載到PLCSIM-Advanced中。
4、Modbus Poll通訊測試
我們使用ModbusPoll軟體進行測試,IP地址填寫192。168。1。20,埠號填寫502,如下圖所示:
連線成功後,與PLC資料進行對比,看看資料是否正確,結果如下圖所示:
5、通訊測試平臺測試
我們使用通訊測試平臺軟體進行通訊測試,設定IP地址為192。168。1。20,埠號為502,點選連線,連線成功後,設定儲存區為輸出暫存器4x,起始地址為0,讀取長度為6,資料型別為Float,點選讀取,讀取結果如下圖所示: