S7-200SMART Modbus TCP 通信Modbus TCP通信,結合了TCP通信和Modbus RTU通信的優點,只是編寫Modbus TCP通信的庫并非軟件標配的功能,需要另外購買西門子公司開發的庫文件,最多包括8個客戶端庫和8個服務器庫。 1.MB_Client指令庫安裝 打開STEP 7-Micro/WIN SMART V2.2及以上版本軟件,鼠標右鍵項目樹的“庫”節點,并從快捷菜單中選擇“打開庫文件夾”,如圖1-1所示。 圖1-1打開庫文件夾 1)將MB_Client指令庫添加到打開的STEP 7-Micro/WINSMART庫文件夾中,如圖1-2所示。 圖1-2添加MB_Client指令庫 備注:STEP 7-Micro/WIN SMART庫文件夾一般存儲路徑為C:\Users\Public\Documents\Siemens\STEP7-MicroWIN SMART\Lib可以通過軟件修改。 關閉STEP 7-Micro/WIN SMART庫文件夾,然后鼠標右鍵項目樹的“庫”節點,并從快捷菜單中選擇“刷新庫”。刷新后,您可以看見“MB_Client”指令庫已經被添加到項目樹的庫節點下,如圖1-3所示。。MB_Server服務器庫添加方法類似。。 圖1-3 2.通信程序編寫 有了Modbus TCP通信庫后,只需要調用庫進行編程,使ModbusTCP通信程序變得非常簡單,首先看客戶端程序如何編寫: 1)建立連接,如圖1-4所示: 圖1-4建立連接 MBC_Connect指令各個參數定義如下: · EN使能:必須保證每一掃描周期都被使能。 · Connect:啟動TCP 連接建立操作。 · Disconnect: 斷開TCP連接操作。 · ConnID: TCP 連接標識。 注意:Modbus TCP 屬于TCP通信,也是開放式用戶通信中的一種,所以ConnID參數不能與其他TCP、ISO-on-TCP、UDP通信相同。 · IPaddr1~IPaddr4: Modbus TCP 客戶端的IP地址,IPaddr1 是 IP 地址的最高有效字節,IPaddr4 是 IP 地址的最低有效字節。 · RemPort: Modbus TCP 客戶端的端口號。 · LocPort:本地設備上端口號。 · ConnectDone:Modbus TCP連接已經成功建立。 · Busy: 連接操作正在進行時。 · Error: 建立或斷開連接時,發生錯誤。 · Status:如果指令置位“Error”輸出,Status 輸出會顯示錯誤代碼。該錯誤代碼為參考開放式用戶通信庫指令錯誤代碼,具體請參考STEP 7-Micro/WIN SMART在線幫助 注意:每個 MB_Client指令庫只能創建一個Mdobus TCP連接,如果一個S7-200SMART需要連接多個Modbus TCP服務器,則需要購買多個名稱不同的MB_Client指令庫(例如MB_Client_0,MB_Client_1,MB_Client_2,MB_Client_3) 2)讀寫數據MBC_MSG,如圖1-4所示: 圖1-4讀寫數據 MBC_MSG指令各個參數定義如下: · EN 使能:同一時刻只能有一條MB_Client_MSG指令使能,EN 輸入參數必須一直接通直到MB_Client_MSG 指令 Done 位被置 1。 · First讀寫請求:每一條新的讀寫請求需要使用信號沿觸發。 · RW讀寫請求:為 0 時,讀請求;為 1 時,寫請求。開關量輸出線圈和保存寄存器支持讀請求和寫請求,開關量輸入觸點和模擬量輸入通道只支持讀請求。 · Addr讀寫Modbus 服務器的Modbus 地址: 00001 至 0XXXX 為開關量輸出線圈;10001 至 1XXXX 為開關量輸入觸點; 30001 至 3XXXX 為模擬量輸入通道; 40001 至 4XXXX 為保持寄存器。 · Count讀寫數據的個數:對于Modbus 地址 0XXXX、1XXXX ,Count 按位的個數計算;對于 Modbus 地址 3XXXX、4XXXX ,Count 按字的個數計算;一個 MB_Client_MSG 指令最多讀取或寫入 120 個字或 1920 個位數據。 · DataPtr數據指針:參數 DataPtr 是間接地址指針,指向 CPU 中與讀/寫請求相關的數據的 V 存儲器地址。對于讀請求,DataPtr應指向用于存儲從 Modbus 服務器讀取的數據的第一個 CPU存儲單元。對于寫請求,DataPtr應指向要發送到 Modbus 服務器的數據的第一個 CPU 存儲單元。 · Done完成位:讀寫功能完成或者出現錯誤時,該位會自動置1。多條 MBC_MSG 指令執行時,可以使用該完成位激活下一條 MBC_MSG 指令的執行。 · Error:錯誤代碼,只有在 Done 位為1時錯誤代碼有效。 如下表1-5所示:
表1-5MB_Client錯誤代碼 3)為MB_Client指令庫分配庫存儲器地址。 MB_Client指令庫需要占用 300個字節 V 存儲區用于庫存儲器地址分配。該庫存儲器分配地址不能與 MBC_MSG 指令參數DataPtr指向的 V 存儲器地址重疊,也不能與其它程序使用的地址有重疊,庫存儲器地址分配過程見圖1-5所示。 圖1-5為MB_Client分配庫存儲區 接下來就是服務端程序的編寫了: 注意:每個 MB_Server指令庫只能創建一個Mdobus TCP連接,如果一個S7-200 SMART 需要連接多個Modbus TCP 客戶端,則需要購買多個名稱不同的MB_Server指令庫(例如MB_Server_0,MB_Server_1,MB_Server_2) 1)建立與客戶端連接,如圖1-6所示: 圖1-6建立與客戶端連接 MBS_Connect指令各個參數定義如下: · EN使能:必須保證每一掃描周期都被使能。 · Connect:啟動TCP 連接建立操作。 · Disconnect: 斷開TCP連接操作。 · ConnID: TCP 連接標識。 注意:Modbus TCP 屬于TCP通信,也是開放式用戶通信中的一種,所以ConnID參數不能與其他TCP、ISO-on-TCP、UDP通信相同。 · IPaddr1~IPaddr4: Modbus TCP 客戶端的IP地址,IPaddr1 是 IP 地址的最高有效字節,IPaddr4 是 IP 地址的最低有效字節。如果不指定伙伴 IP ,則可以設置為0.0.0.0 。 · LocPort:本地設備上端口號 MaxHold: 用于設置 Modbus 地址 4xxxx 或 4yyyyy 可訪問的 V 存儲器中的字保持寄存器數。 · HoldStart:間接地址指針,指向 CPU 中 V 存儲器中保持寄存器的起始地址,即40001從哪個地址開始。 · ConnectDone:Modbus TCP連接已經成功建立。 · Busy: 連接操作正在進行時。 · Error: 建立或斷開連接時,發生錯誤。 · Status:如果指令置位“Error”輸出,Status 輸出會顯示錯誤代碼。 MB_Server指令庫錯誤代碼如表1-7所示。 表 1-7 MB_Server錯誤代碼 2)收到客戶端發來的命令要進行應答,如圖1-8所示。 圖1-8服務器應答 3)為MB_Server指令庫分配庫存儲器地址。 MB_Server指令庫需要占用 300個字節 V 存儲區用于庫存儲器地址分配。該庫存儲器分配地址不能與 MBS_Connect 指令參數 HoadStart指向的 V 存儲器地址重疊,也不能與其它程序使用的地址有重疊,否則可能導致通信故障無法實現通信,庫存儲器地址分配過程見圖1-9所示。 圖1-9 為MB_Server庫分配存儲器 |