發(fā)布時(shí)間:2022-11-28 來(lái)源:恒博圖安
S7-200 SMART 做服務(wù)器,wincc是客戶(hù)端,調用MBUS_SERVER指令激活Modbus-TCP Server功能。
詳細參見(jiàn)S7-200 SMART系統手冊的10.4Modbus-TCP庫
STEP7-Micro/WIN SMART 從V2.4 版本開(kāi)始,軟件中直接集成 Modbus TCP 庫指令,無(wú)需單獨安裝或者購買(mǎi)。安裝軟件后,Modbus TCP 指令位于 STEP7-Micro/WIN SMART 項目樹(shù)中“指令”文件夾的“庫”文件夾中。如圖1.Modbus TCP庫指令所示。
指令分為客戶(hù)端和服務(wù)器兩種,目前指令版本為 V1.0??蛻?hù)端指令會(huì )占用開(kāi)放式用戶(hù)通信資源主動(dòng)連接,最多8個(gè);服務(wù)器指令會(huì )占用開(kāi)放式用戶(hù)通信資源的被動(dòng)連接資源,最多也是8個(gè)。
圖1.Modbus TCP庫指令
下面以?xún)膳_S7-200 SMART 之間進(jìn)行Modbus TCP 通信為例,詳細闡述客戶(hù)端與服務(wù)器側如何編程及通信的過(guò)程。具體的實(shí)驗環(huán)境見(jiàn)表1.;通信任務(wù)見(jiàn)表2:
表1.實(shí)驗環(huán)境
操作系統 | WIN7 SP1 專(zhuān)業(yè)版 64位 |
---|---|
編程軟件 | STEP7-Micro/WIN SMART V2.4版本 |
硬件 | SR60:6ES7288-1SR60-0AA0 固件:V2.4 版本 ST20:6ES7288-1ST20-0AA0 固件:V2.4版本 交換機:CSM 127 6GK7 277-1AA10-0AA0 |
表2.通信任務(wù)
硬件 | 通信角色 | IP地址 | 端口號 | 讀/寫(xiě) | 數據區域 |
---|---|---|---|---|---|
SR60 | 客戶(hù)端 | 192.168.0.60 | 0 | 讀 | VB20-VB31 |
ST20 | 服務(wù)器 | 192.168.0.20 | 502 | 響應 | VB0-VB11 |
1、系統塊中設置客戶(hù)端的IP地址,以確保IP地址設置無(wú)誤。此步驟為可選,如果確定IP地址設置無(wú)誤,可忽略此步驟。設置方法如圖2.所示。
圖2.系統塊設置IP地址
2、鼠標點(diǎn)擊 MAIN 主程序的程序段1的編程區域,從庫文件夾下找到 Modbus TCP 客戶(hù)端指令 MBUS_CLIENT,鼠標雙擊,指令出現在程序段1中,操作如圖3.所示。
圖3.添加客戶(hù)端指令
3、填寫(xiě)客戶(hù)端指令參數,如圖4.所示。
圖4.填寫(xiě)客戶(hù)端參數
程序塊具體參數詳細解釋介紹見(jiàn)表3.
參數及類(lèi)型 | 數據類(lèi)型 | 說(shuō)明 | |
---|---|---|---|
Req | IN | BOOL | =1:表示向服務(wù)器發(fā)送Modbus 請求 |
Connect | IN | BOOL | =1:嘗試與分配的IP地址及端口號建立連接; =0:嘗試斷開(kāi)已經(jīng)建立的連接,忽略Req的任何請求 |
IPAddr1-4 | IN | BYTE | 填寫(xiě) Modbus TCP 服務(wù)器的IP地址IPAddr1-4為高到低字節 |
IP_Port | IN | BYTE | 填寫(xiě)Modbus TCP 服務(wù)器的端口號 |
RW | IN | BYTE | 指定操作模式 =0:讀;=1寫(xiě) |
Addr | IN | DWORD | 要進(jìn)行讀寫(xiě)的參數的 Modbus 起始地址 |
Count | IN | INT | 要進(jìn)行讀寫(xiě)的參數數據長(cháng)度; 數字量輸入/輸出Count=1表示1 bit,最大1920位 對于模擬量輸入和保持寄存器,最大 Count 值為 120 字。 |
DataPtr | IN_OUT | DWORD | 數據寄存器地址指針,指向本地用于讀/寫(xiě)操作的數據地址區域的首地址 |
Done | OUT | BOOL | TRUE:以下任一條件時(shí)為真:客戶(hù)端已與服務(wù)器建立連接;客戶(hù)端已與服務(wù)器斷開(kāi)連接;客戶(hù)端已接收 Modbus 響應;發(fā)生錯誤 FALSE:客戶(hù)端正忙于建立連接或等待來(lái)自服務(wù)器的 Modbus 響應。 |
Error | OUT | BOOL | 出現錯誤,僅一個(gè)周期有效 |
4、鼠標選中程序塊文件夾,單擊右鍵,下拉菜單中選擇庫存儲器,如圖5.所示。
圖5.點(diǎn)擊庫存儲器
5、在庫存儲區分配對話(huà)框中手動(dòng)輸入存儲區的起始地址。此實(shí)例為VB5000開(kāi)始,以使指令庫可以正常工作。確保庫存儲區與程序中其他已使用的地址不沖突。使用建議地址無(wú)法確定是否有地址重疊,所以推薦手動(dòng)輸入正確的庫存儲區首地址。如圖6.所示。
圖6.庫存儲區地址分配
6、編譯項目,下載程序。
將M0.0置位為1,然后在狀態(tài)圖表中創(chuàng )建變量,VW20-VW30 共6個(gè)字,監視值如圖7.所示。
圖7.讀取服務(wù)器數據
S7-200 SMART 做 Modbus TCP 通信,可以支持的功能碼及功能描述及所占用的地址區,如表4.所示??蛻?hù)端會(huì )主動(dòng)的發(fā)送請求,服務(wù)器響應。在通信指令填寫(xiě)參數中沒(méi)有直接填寫(xiě)功能碼,而是通過(guò)多個(gè)參數填寫(xiě)共同確定功能碼的。
表4.功能碼概況說(shuō)明
功能碼(十進(jìn)制) | 功能描述 | RW | Addr | Count | CPU地址 |
---|---|---|---|---|---|
01 | 讀數字量輸出 位 | 0 | 00001-09999 | 1-1920 位 | Q0.0-1151.7 |
02 | 讀數字量輸入 位 | 0 | 10001-19999 | 1-1920 位 | I0.0-1151.7 |
03 | 讀寄存器 字 | 0 | 40001-49999 400001-465535 | 1-120 字 | V區 |
04 | 讀模擬量輸入 字 | 0 | 30001-39999 | 1-120 字 | AIW0-AIW110 |
05 | 寫(xiě)數字量輸出 單個(gè)位 | 1 | 00001-09999 | 1位 | Q0.0-Q1151.7 |
06 | 寫(xiě)寄存器 單個(gè)字 | 1 | 40001-49999 400001-465535 | 1個(gè)字 | V區 |
15 | 寫(xiě)數字量輸出 多個(gè)位 | 1 | 00001-09999 | 1-1920 位 | Q0.0-1151.7 |
16 | 寫(xiě)寄存器 多個(gè)字 | 1 | 40001-49999 400001-465535 | 1-120 字 | V區 |
舉例:
和Modbus TCP服務(wù)器交換數據參數支持功能碼:03,在客戶(hù)端指令中設置兩個(gè)參數確定03功能碼:
RW=0:確定讀取數據,(篩選出可能會(huì )使用的功能碼:01,02,03,04),
Addr:40001-49999/400001-465535,表示交換數據為寄存器類(lèi)型的數據。
SR20 | 6ES72881SR200AA1 |
ST20 | 6ES72881ST200AA1 |
SR30 | 6ES72881SR300AA1 |
ST30 | 6ES72881ST300AA1 |
SR40 | 6ES72881SR400AA1 |
ST40 | 6ES72881ST400AA1 |
SR60 | 6ES72881SR600AA1 |
ST60 | 6ES72881ST600AA1 |
CR20s | 6ES72881CR200AA1 |
CR30s | 6ES72881CR300AA1 |
CR40s | 6ES72881CR400AA1 |
CR60s | 6ES72881CR600AA1 |
CR40 | 6ES72881CR400AA0 |
CR60 | 6ES72881CR600AA0 |
DE08 | 6ES72882DE080AA0 |
DE16 | 6ES72882DE160AA0 |
DR08 | 6ES72882DR080AA0 |
DT08 | 6ES72882DT080AA0 |
QR16 | 6ES72882QR160AA0 |
QT16 | 6ES72882QT160AA0 |
DR16 | 6ES72882DR160AA0 |
DT16 | 6ES72882DT160AA0 |
DR32 | 6ES72882DR320AA0 |
DT32 | 6ES72882DT320AA0 |
AE04 | 6ES72883AE040AA0 |
AE08 | 6ES72883AE080AA0 |
AQ02 | 6ES72883AQ020AA0 |
AQ04 | 6ES72883AQ040AA0 |
AM03 | 6ES72883AM030AA0 |
AM06 | 6ES72883AM060AA0 |
AR02 | 6ES72883AR020AA0 |
AR04 | 6ES72883AR040AA0 |
AT04 | 6ES72883AT040AA0 |
DP01 | 6ES72887DP010AA0 |
6ES72886EC010AA0 | |
SB CM01 | 6ES72885CM010AA0 |
SB DT04 | 6ES72885DT040AA0 |
SB AE01 | 6ES72885AE010AA0 |
SB AQ01 | 6ES72885AQ010AA0 |
SB BA01 | 6ES72885BA010AA0 |
700 IE | 6AV66480CC113AX0 |
1000 IE | 6AV66480CE113AX0 |