關(guān)鍵字:S7-200 SMART;Modbus TCP;Modbus Slave;Modbus Poll。
系列文章目錄
基于S7-200 SMART實現(xiàn)一鍵啟停
順序功能圖——(二)設(shè)計機組延時關(guān)機程序
基于S7-200 SMART實現(xiàn)MATLAB寫入與讀取PLC數(shù)據(jù)
文章目錄
前言
Modbus TCP作為工業(yè)中的重要通信協(xié)議已經(jīng)受到了廣泛的運用,西門子系列的PLC大多也支持免費的Modbus TCP通信,本文將基于S7-200 SMART實現(xiàn)PLC與PC的Modbus TCP通信。
一、Modbus通信協(xié)議簡介
首先我們需要對通信有一個簡單的認識,通信其實在我們生活中很常見,就像我們平時QQ微信的聊天、打電話甚至是寫信,都可以是通信。如果我們以寫信為例就能提取出三個重要部分:發(fā)信人、信息、發(fā)信人。對于現(xiàn)在的工業(yè)通信也有類似于此的主體,稱之為:主站、從站、數(shù)據(jù)或者是服務(wù)端、客戶端、數(shù)據(jù)。
一般主站、從站進行的的通信我們稱之為主從通信方式,在Modbus協(xié)議中的Modbus RTU和Modbus ASCII都屬于這種通信方式,在這種通信方式中,主站和從站可以理解為雇主和隨從的關(guān)系,只能由雇主向隨從提要求——由主站向從站發(fā)起通信(打工人落淚😵💫)。
Modbus TCP則是通過服務(wù)端、客戶端的方式進行通信,在這種通信方式中,服務(wù)端和客戶端可以理解為商店和顧客之間的關(guān)系,只能顧客向商店提要求——由客戶端向服務(wù)端發(fā)起通信(顧客是上帝😎)。
二、工程環(huán)境
以下的案例基于:
- PC操作系統(tǒng):WIN11
- PLC:S7-200 SAMRT CPU ST60
- 通信介質(zhì):普通網(wǎng)線一根
- PLC編程軟件:STEP 7-Micro/WIN SMART V2.8
- PC端客戶端模擬軟件:Modbus Poll 7.0
- PC端服務(wù)端模擬軟件:Modbus Slave 6.2
三、PLC——Server、PC——Client
1.流程
②將MBUS_SERVER拖入程序窗口并設(shè)置參數(shù)

- EN:功能塊使能端
- Connect:是否開始通信
- IP_Port:IP端口號
- MaxIQ:設(shè)置輸入/輸出線圈
- MaxAI:設(shè)置輸入寄存器
- MaxHold:設(shè)置保持寄存器
- HoldStart:設(shè)置被操作的保持寄存器的起始地址
- Done:通信是否結(jié)束的標志
- Error:錯誤報文
輸入線圈、輸出線圈、輸入寄存器、保持寄存器是Modbus協(xié)議中定義的四種不同的數(shù)據(jù)類型:
注意上述程序中使用的數(shù)據(jù)是通過數(shù)據(jù)塊進行設(shè)置的:
而且需要注意,如同使用高速計數(shù)器、PID等,要為MBUS_SERVER功能塊分配空間用于設(shè)定相關(guān)參數(shù):
圖3.6 分配地址
④查找PLC
⑤與PLC建立通信連接
⑥下載程序
⑦運行PLC
⑧在STEP 7中監(jiān)視
⑨設(shè)置觸點
⑩設(shè)置觸點為ON
⑪打開ModbusPoll
⑫點擊Connect
⑭讀取默認讀寫情況下的數(shù)據(jù)
⑮設(shè)置讀寫參數(shù)
⑯設(shè)置讀寫參數(shù)
⑰讀取結(jié)果

2.報文分析
Modbus TCP的報文形式
- 事務(wù)處理標識箱:Modbus請求/響應(yīng)事務(wù)處理的標識
- 協(xié)議標識符:0=Modbus協(xié)議
- 長度:當前之后的字節(jié)總數(shù)
- 單元標識符:串行鏈路活其它總線的從站識別
- 功能碼:1——讀取輸出線圈、2——讀取輸入線圈、3——讀取保持寄存器、4——讀取輸入寄存器、5——寫入單線圈、6——寫入單寄存器、15——寫入多線圈、16——寫入多寄存器
- 數(shù)據(jù):根據(jù)功能碼不同
TX發(fā)送報文
- 00 03:事務(wù)處理標識箱
- 00 00:Modbus協(xié)議
- 00 06:后面有6個字節(jié)的數(shù)據(jù)
- 01:1號從站
- 03:讀取保持寄存器
- 00 0A:從0AH=10地址開始
- 00 14:讀取14H=20個數(shù)據(jù)
需要注意的是,雖然這里我們報文中顯示是從地址10開始,但實際上開始的地址需要結(jié)合PLC中MBUS_SERVER功能塊的端口設(shè)置的開始地址,例如本文中圖3.2設(shè)置的是VB10000,在軟件Modbus Poll中的操作的起始地址是VB10000+2×20=VB10020(數(shù)據(jù)是以兩字節(jié)為一單元)。
RX接收報文
- 00 03:事務(wù)處理標識箱
- 00 00:Modbus協(xié)議
- 00 06:后面有6個字節(jié)的數(shù)據(jù)
- 01:1號從站
- 03:讀取保持寄存器
- 28:后面有40個字節(jié)的數(shù)據(jù)
- 00 0A:第一個數(shù)據(jù)10
- 00 0B:第二個數(shù)據(jù)11
- 00 0C:第三個數(shù)據(jù)12
- 00 0D:第四個數(shù)據(jù)13
- 00 0E:第五個數(shù)據(jù)14
- 00 0F:第六個數(shù)據(jù)15
- 00 10:第七個數(shù)據(jù)16
- 00 11:第八個數(shù)據(jù)17
- 00 12:第九個數(shù)據(jù)18
- 00 13:第十個數(shù)據(jù)19
- 00 14:第十一個數(shù)據(jù)20
- 00 15:第十二個數(shù)據(jù)21
- 00 16:第十三個數(shù)據(jù)22
- 00 17:第十四個數(shù)據(jù)23
- 00 18:第十五個數(shù)據(jù)24
- 00 19:第十六個數(shù)據(jù)25
- 00 1A:第十七個數(shù)據(jù)26
- 00 1B:第十八個數(shù)據(jù)27
- 00 1C:第十九個數(shù)據(jù)28
- 00 1D:第二十個數(shù)據(jù)29
注意由于窗口不夠長這里的RX部分報文沒有顯示出來
四、PLC——Client、PC——Server
1.流程
PLC作為客戶端PC作為服務(wù)端的流程類似,只不過在程序中需要調(diào)用的是MBUS_CLIENT功能塊而在PC中需要使用的是Modbus Slave軟件。
在STE7中的程序:
上述功能塊的各端口含義:
不同情況下的端口設(shè)置:
根據(jù)圖4.2可知,圖4.1中的程序設(shè)置了客戶端需要的服務(wù)端的IP為192.168.2.2、IP端口為502、寫入數(shù)據(jù)、從第1個地址開始、寫入10個數(shù)據(jù)、寫入的數(shù)據(jù)存放在以VB6000為開始的V寄存器中。
2.報文分析
TX發(fā)送報文
- 11 64:事務(wù)處理標識箱
- 00 00:Modbus協(xié)議
- 00 06:后面有06H=6個字節(jié)的數(shù)據(jù)
- FF:255號從站
- 10:寫入多個保持寄存器
- 00 00:從00H=0地址開始
- 00 0A:讀取0AH=10個數(shù)據(jù)
RX接收報文
- 11 64:事務(wù)處理標識箱
- 00 00:Modbus協(xié)議
- 00 1B:后面有1BH=27個字節(jié)的數(shù)據(jù)
- FF:255號從站
- 00 00:從00H=0地址開始
- 00 0A:讀取0AH=10個數(shù)據(jù)
- 16:后面有16H=20個字節(jié)數(shù)據(jù)
- 00 14:第一個數(shù)據(jù)20
- 00 16:第二個數(shù)據(jù)22
- 00 18:第三個數(shù)據(jù)24
- 00 1A:第四個數(shù)據(jù)26
- 00 1C:第五個數(shù)據(jù)28
- 00 1E:第六個數(shù)據(jù)30
- 00 20:第七個數(shù)據(jù)32
- 00 22:第八個數(shù)據(jù)34
- 00 24:第九個數(shù)據(jù)36
- 00 26:第十個數(shù)據(jù)38
圖4.7 顯示報文
總結(jié)
本文基于S7-200 SMART和Modbu Poll、Modbus Slave實現(xiàn)了PC與PLC之間的Modbus TCP通信。過程比較詳細,提供給適合剛剛?cè)腴T的小白食用,包學(xué)包會,學(xué)不會,那就再學(xué)學(xué)😁