德州派爾機械設備有限公司
扛鼎民族產業    鑄就世界品牌

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所示:

MB_Client錯誤代碼描述
0無錯誤
1TCP 發送數據錯誤
2TCP接收數據錯誤
3Modbus 接收響應超時
4請求參數出錯:一個或多個輸入參數(“從站”(Slave)、“讀寫”(RW)、“地址”(Addr) 或“計數”(Count))被設置為非法值。
5TCP連接未成功建立
6Modbus 正忙于處理另一請求。
7Modbus響應出錯,接收到的響應與請求不符合。
8Modbus響應長度校驗錯誤。
101Modbus 服務器不支持該地址的請求功能。
102Modbus 服務器不支持數據地址:“地址”(Addr) 加上“計數”(Count) 的請求地址范圍超出服務器允許的地址范圍。
103Modbus服務器不支持數據類型:服務器設備不支持“地址”(Addr) 類型。
104Modbus服務器設備故障

表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庫分配存儲器


分享到:
在線客服
 
 
 工作時間
周一至周五 :8:30-17:30
周六至周日 :9:00-17:00
 聯系方式
張總:15905343818