S7-1200集成PN接口MODBUS TCP通信概述
Modbus TCP是標準的網絡通信協議,通過CPU上PN接口進行TCP/IP通信,不需要額外的通信硬件模塊,Modbus TCP使用開放式用戶通信連接作為Modbus通信路徑,所支持的混合客戶機和服務器連接數最大為CPU所允許的最大開放式用戶通信連接數8個。
軟件 STEP7 V11 SP1版本開始,S7-1200CPU 從Firmware V1.0.2開始,不再需要安裝Modbus TCP的庫文件,可以直接調用Modbus TCP的庫指令“MB_CLIENT”和“MB_SERVER”使用實現Modbus TCP通信功能,如圖1所示。
圖1. Modbus TCP的庫指令
S7-1200 做 Modbus Tcp Server(服務器)
“MB_SERVER”指令將處理Modbus TCP客戶機的連接請求、接收Modbus功能的請求并發送響應。
1.調用MB_SERVER通信指令,進入 “Program blocks” > “OB1” 主程序中調用,設置連接ID、IP端口等參數,如下圖2所示。
圖2.調用MB_SERVER通信指令
功能塊參數意義如下表5.
管腳 | 說明 |
DISCONNECT | “MB_SERVER”指令建立與客戶機的被動連接:0-建立與指定IP地址和端口號的通訊連接,默認為0;1-斷開通訊連接,在終止連接的過程中,不執行任何其他功能; |
CONNECT_ID | 連接的ID號:每個連接只有一個唯一的ID號; |
IP_PORT IP | 端口號將定義Modbus 客戶機連接請求中要監控的IP端口號,默認值:502; |
HB_HOLD_REG | 指向“MB_SERVER”指令的Modbus保持寄存器的指針:保持寄存器可以是全局DB塊或M區,如果是DB塊則需要定義為“標準與S7- 300/400兼容”的類型,如圖3所示,保持寄存器包含Modbus客戶機可通過Modbus功能 FC03(讀取)、FC06(寫入)和FC16(讀取)訪問的值; |
NDR | 新數據就緒:0-沒有新數據;1-從Modbus客戶機寫入新數據; |
DR | 數據讀取:0-沒有讀取數據;1-從Modbus客戶機讀取數據; |
ERROR | 錯誤位:0-無錯誤;1-出現錯誤,錯誤原因查看STATUS; |
STATUS | 錯誤代碼; |
表1. 功能塊“MB_SERVER”參數
2.MB_DATA_PTR數據塊的新建
通過“Program blocks”>“Add new block”,選擇“Data block”創建 DB 塊,選擇“標準與S7- 300/400兼容” ,點擊“OK”鍵,定義數據區為100個字的數組,如圖3所示。
圖3.新建MB_DATA_PTR數據塊
3.Modbus地址的對應關系
“MB_SERVER”指令允許到達的Modbus功能(FC01、FC02、FC04、FC05、FC15)直接讀取和寫入訪問S7-1200CPU的過程映像輸入/輸出區(數據類型:BOOL和WORD),通過Modbus功能代碼(FC03、FC06和FC16)將到達的Modbus消息寫入Modbus保持寄存器或從寄存器中讀取(可通過MB_SERVER指令的參數“MB_HOLD_REG”指定保持寄存器),保持寄存器的大小(MB_HOLD_REG參數)必須大于1個字節,詳細參考表2.。
Modbus功能 | S7-1200 | ||||
代碼 | 功能 | 數據區 | 地址空間 | 數據區 | CPU地址 |
FC01 | 讀取:位 | Output | 00001到08192 | 過程映像輸出 | Q0.0到Q1023.7 |
FC02 | 讀取:位 | Input | 10001到18192 | 過程映像輸入 | I0.0到I1023.7 |
FC04 | 讀取:字 | Input | 30001到30512 | 過程映像輸入 | IW0到IW1022 |
FC05 | 寫入:位 | Output | 00001到08192 | 過程映像輸出 | Q0.0到Q1023.7 |
FC15 | 寫多入:位 | Output | 00001到08192 | 過程映像輸出 | Q0.0到Q1023.7 |
表2.Modbus地址的對應關系
4.客戶機端 Modscan32 軟件設置
注意:客戶機采用Modscan32軟件測試,Modscan32 做 Modbus TCP Client 測試軟件,是第三方軟件,可以從 internet 網絡上下載。
將測試電腦的IP地址設置成192.168.0.210,打開Modscan32 軟件,在Modscan32的“Setup->Data Definition”中設置功能碼、起始地址、長度等,如圖4所示。
圖4.設置“Data Definition”參數
在“Connection->connect...”中打開連接屬性對話框,選擇“Remote modbus TCP Server”,設置服務器的IP地址,端口號,如圖5所示。
圖5.設置連接屬性
注意:用Modsscan32做客戶機不需要考慮Device ID和服務器一致的情況,服務器自動響應客戶機的Device ID。
5.通訊測試
S7-1200作服務器,客戶機Modscan32用FC03功能碼讀取服務器的兩個字,設置客戶機和服務器的功能、起始地址、端口等參數相對應,具體設置如圖5~6所示,
圖6.S7-1200作服務器
通訊結果如下圖7所示,Modscan32從服務器讀到數據10,20到客戶機的DB4.DBW0和DB4.DBW2區域。
圖7.FC03通訊結果
用功能FC15向服務器的Q0.0~Q0.7寫8位數據,設置連接參數,Modscan32設置結果如下圖8所示。
圖8.使用FC15通訊,設置Modscan32
測試結果,服務器側直接對應過程映像輸出區,00001~00008對應Q0.0~Q0.7,如下圖9所示。
圖9. 使用FC15通訊測試結果
6.HR_Start_Offset背景參數
HR_Start_Offset是類型為字,用于指定Modbus保持寄存器的起始地址,存儲在MB_SERVER背景數據塊中,默認值是0,可以通過編程將值寫入HR_Start_Offset。以上面FC03功能讀2個字為例,將HR_Start_Offset的偏移量設置成2,其他參數不修改,HR_Start_Offset偏移前后地址對應關系如下表7,編程調用和結果如圖10~11所示。
HR_Start_Offset | 地址 | 數據1 | 數據2 |
0 | Modbus 地址(字) | 40001 | 40002 |
S7-1200地址 | DB4.DBW0 | DB4.DBW2 | |
2 | Modbus 地址(字) | 40003 | 40004 |
S7-1200地址 | DB4.DBW0 | DB4.DBW2 |
表3. HR_Start_Offset偏移前后地址對應關系
編程調用如下圖10所示
圖10.HR_Start_Offset的偏移量設置
通訊結果如下圖11所示
圖11. 通訊結果
7.MB_SERVER參數STATUS的查詢參考下面列表4.
STATUS(W#16#) | 發送到Modbus客戶端的響應代碼(B#16#) | 錯誤說明 |
7001 | MB_SERVER 正在等待Modbus客戶機連接到指定的TCP端口,僅在第一次執行連接或斷開操作時才報告此代碼 | |
7002 | MB_SERVER 正在等待Modbus客戶機連接到指定的TCP端口,等待連接或斷開操作完成時,將針對任何后續執行報告此代碼 | |
7003 | 斷開操作已成功完成(僅在一個PLC掃描周期內有效) | |
8187 | 參數MB_HOLD_REG中的指針無效,數據區過小 | |
818C | 參數MB_HOLD_REG指向優化的區域(必須為“標準與S7- 300/400兼容”的DB或M區)或因執行超時出錯(55秒) | |
8381 | 01 | 不支持此功能代碼 |
8382 | 03 | 數據長度錯誤 |
8383 | 02 | 數據地址錯誤或訪問了保持寄存器(MB_HOLD_REG參數)地址以外的區域 |
8384 | 03 | 數據值錯誤 |
8385 | 03 | 不支持此數據診斷代碼值(功能FC08) |
表4.MB_SERVER參數STATUS
-
通信協議
+關注
關注
28文章
879瀏覽量
40297 -
TCP
+關注
關注
8文章
1353瀏覽量
79055 -
S7-1200
+關注
關注
11文章
331瀏覽量
17957
原文標題:S7-1200集成PN接口MODBUS TCP通信概述
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論