以下文章來源於工控論壇 ,作者關普

中華工控網(www.gkong.com)最新活動信息、工控周刊、每日精華話題發布。工控論壇,自動化從業者的精神家園
一
必備軟件和硬件
1、西門子STEP 7-MicroWIN SMART編程軟件
2、歐姆龍CX-Programmer編程軟件
3、Modbus Poll調試軟件
4、Modbus Slave調試軟件
5、以太網調試助手
6、西門子S7-200 Smart系列PLC
7、歐姆龍CP1H-E系列PLC
8、無線路由器
9、網線
二
通信實現目的
1、西門子S7-200 Smart讀取歐姆龍CP1H-E保持寄存器D0~D3並保持到自己的保持寄存器VW0~VW6里,使用Modbus之03功能碼實現;
2、西門子S7-200 Smart使用自己的保持寄存器VW8~VW14控制歐姆龍CP1H-E的保持寄存器D4~D7,使用Modbus之16功能碼實現。
三
通信連接說明
1、西門子S7-200 Smart本體自帶以太網口通過網線連接至無線路由器LAN接口;
2、歐姆龍CP1H-E本體自帶以太網口通過網線連接至無線路由器LAN接口。
四
Modbus TCP服務器通信參數
1、Modbus TCP服務器:歐姆龍CP1H-E
2、Modbus TCP服務器IP地址:192.168.1.160
3、Modbus TPC服務器子網掩碼:255.255.255.0
4、Modbus TCP服務器默認網關:192.168.1.1
5、Modbus TCP服務器端口號:502
五
Modbus TCP客戶端通信參數
1、Modbus TCP客戶端:西門子S7-200 Smart
2、Modbus TCP客戶端IP地址:192.168.1.150
3、Modbus TPC客戶端子網掩碼:255.255.255.0
4、Modbus TCP客戶端默認網關:192.168.1.1
5、Modbus TCP客戶端端口號:502
六
歐姆龍CP1H-E通信參數設置
1、歐姆龍CP1H-E通信參數設置如下所示:


2、歐姆龍CP1H-E設備編號和Modbus寄存器編號、地址對應表如下所示:

七
歐姆龍CP1H-E實現Modbus TCP服務器相關指令
1、Modbus TCP Server功能塊:

Modbus TCP Server功能塊各個參數定義如下所示:
(1) EN使能:必須保證每一掃描周期都被使能;
(2) LocalPort:端口號,一般默認為502;
(3) StartServer:啟動TCP建立連接操作;
(4) NoActivityDelay:延遲時間;
(5) ENO:使能輸出;
(6) Connected:客戶端連接標志;
(7) IP_Client:客戶端IP;
(8) Error:錯誤標志位;
(9) Error_Code:錯誤代碼;
(10) Except_Counter:異常錯誤計數;
(11) Recv_Counter:接收請求計數。
八
歐姆龍CP1H-E實現Modbus TCP服務器編程
Modbus TCP Server功能塊編制的程序如下所示:
1、初始化時,給保持寄存器D0、D1、D2、D3分別賦值0、1、2、3:


2、初始化時,給保持寄存器D4、D5、D6、D7分別賦值0、0、0、0:


3、每1分鍾給保持寄存器D0、D1、D2、D3做加1操作:


4、判斷保持寄存器D0、D1、D2、D3的值,如果大於6000,則各自進行清零操作:


5、初始化置位W0.00,延時2000ms后置位W0.01、復位W0.00

6、使用W0.01啟動Modbus TCP Server,端口號為502:

九
使用以太網調試助手測試歐姆龍CP1H-E之Modbus TCP服務器程序
1、Modbus之03功能碼測試,讀取歐姆龍CP1H-E保持寄存器D0~D3的值:
以太網調試助手發送:33 33 00 00 00 06 01 01 00 00 00 04
歐姆龍CP1H-E返回:33 33 00 00 00 0B 01 03 08 00 13 00 14 00 15 00 16
則此時歐姆龍CP1H-E保持寄存器D0、D1、D2、D3的數據依次為16#0013、16#0014、16#0015、16#0016,以太網調試助手測試截圖如下所示:

2、Modbus之16功能碼測試,將歐姆龍CP1H-E保持寄存器D4~D7依次設置為1、2、3、4
以太網調試助手發送:EE EE 00 00 00 0F 01 10 00 04 00 04 08 00 01 00 02 00 03 00 04
歐姆龍CP1H-E返回:EE EE 00 00 00 06 01 10 00 04 00 04
歐姆龍CP1H-E返回數據表明其保持寄存器D4、D5、D6、D7數據設置成功,以太網調試助手測試截圖如下所示:

3、測試總結:
以上Modbus之03和10功能碼測試通過,亦表明歐姆龍CP1H-E之Modbus TCP服務器程序正確無誤。此時可以斷開以太網調試助手和歐姆龍CP1H-E的通信連接。
十
西門子S7-200 Smart通信參數設置
西門子S7-200 Smart通信參數設置如下圖所示:

十一
西門子S7-200 Smart實現Modbus TCP客戶端相關指令
1、MBC_Connect指令:

指令參數說明如下所示:
(1) EN 使能:必須保證每一掃描周期都被使能。
(2) Connect:啟動TCP 連接建立操作;
(3) Disconnect: 斷開TCP連接操作;
(4) ConnID: TCP 連接標識。注意:Modbus TCP 屬於TCP通信,也是開放式用戶通信中的一種,所以ConnID參數不能與其他TCP、ISO-on-TCP、UDP通信相同;
(5) IPaddr1~IPaddr4: Modbus TCP 服務器的IP地址,IPaddr1 是 IP 地址的最高有效字節,IPaddr4 是 IP 地址的最低有效字節;
(6) RemPort: Modbus TCP 服務器的端口號;
(7) LocPort:本地設備(Modbus TCP客戶端)上端口號;
(8) ConnectDone:Modbus TCP連接已經成功建立;
(9) Busy: 連接操作正在進行時;
(10) Error: 建立或斷開連接時,發生錯誤;
(11) Status:如果指令置位 “Error” 輸出,Status 輸出會顯示錯誤代碼。該錯誤代碼為參考開放式用戶通信庫指令錯誤代碼,具體請參考STEP 7-Micro/WIN SMART在線幫助。
2、MBC_MSG指令:

指令參數說明如下所示:
(1) EN 使能:同一時刻只能有一條MB_Client_MSG指令使能,EN 輸入參數必須一直接通直到 MB_Client_MSG 指令 Done 位被置 1;
(2) First 讀寫請求:每一條新的讀寫請求需要使用信號沿觸發;
RW 讀寫請求:為 0 時,讀請求;為 1 時,寫請求。開關量輸出線圈和保存寄存器支持讀請求和寫請求,開關量輸入觸點和模擬量輸入通道只支持讀請求。
(3) Addr 讀寫Modbus 服務器的Modbus 地址:00001 至 0XXXX 為開關量輸出線圈;10001 至 1XXXX 為開關量輸入觸點;30001 至 3XXXX 為模擬量輸入通道;40001 至 4XXXX 為保持寄存器。
(4) Count 讀寫數據的個數:對於 Modbus 地址 0XXXX、1XXXX ,Count 按位的個數計算;對於 Modbus 地址 3XXXX、4XXXX ,Count 按字的個數計算;一個 MB_Client_MSG 指令最多讀取或寫入 120 個字或 1920 個位數據。
(5) DataPtr 數據指針:參數 DataPtr 是間接地址指針,指向 CPU 中與讀/寫請求相關的數據的 V 存儲器地址。對於讀請求,DataPtr 應指向用於存儲從 Modbus 服務器讀取的數據的第一個 CPU 存儲單元。對於寫請求,DataPtr 應指向要發送到 Modbus 服務器的數據的第一個 CPU 存儲單元。
(6) Done 完成位:讀寫功能完成或者出現錯誤時,該位會自動置1。多條 MBC_MSG 指令執行時,可以使用該完成位激活下一條 MBC_MSG 指令的執行。
(7) Error:錯誤代碼,只有在 Done 位為1時錯誤代碼有效。
十二
西門子S7-200 Smart實現Modbus TCP客戶端編程
1、 初始化標志位清零,如下圖所示:

2、初始化給保持寄存器VW0、VW2、VW4、VW6清零,如下圖所示:

3、初始化時給保持寄存器VW8、VW10、VW12、VW14分別賦值0、1、2、3,如下圖所示:

4、每一分鍾給保持寄存器VW8、VW10、VW12、VW14做加1操作,如下圖所示:

5、判斷保持寄存器VW8、VW10、VW12、VW14的值是否大於6000,如果大於6000,則進行清零操作,如下圖所示:

6、Modbus TCP Client連接成功標志位M0.2上升沿將M1.2置位,開始讀取Modbus TCP Server共計4路保持寄存器,如下圖所示:

7、Modbus TCP Client連接成功標志位M0.2下降沿復位各讀寫標志位,停止Modbus讀寫操作,如下圖所示:

8、Modbus TCP Client連接Modbus TCP Server初始化,如下圖所示:

9、讀取Modbus TCP服務器4路保持寄存器部分程序,功能碼03,M1.2被置位后開始讀取歐姆龍CP1H-E共計4路保持寄存器,成功讀取后將讀取到的4路保持寄存器數據轉存至VW0~VW6里,置位M1.3去執行寫多路保持寄存器程序段,如下圖所示:



10、寫入Modbus TCP服務器4路保持寄存器部分程序,功能碼16, 現將保持寄存器VW8~VW14數據轉存至發送緩沖區里,M1.3被置位后開始執行寫入,成功寫入后即會將西門子S7-200 Smart保持寄存器VW8~VW14的數據寫入到歐姆龍CP1H-E保持寄存器D4~D7里,之后置位M1.2,循環執行讀取保持寄存器命令,如下圖所示:



11、為MB_Client指令庫分配庫存儲器地址:
MB_Client指令庫需要占用 300個字節 V 存儲區用於庫存儲器地址分配。該庫存儲器分配地址不能與 MBC_MSG 指令參數DataPtr指向的 V 存儲器地址重疊,也不能與其它程序使用的地址有重疊,庫存儲器地址分配過程如下圖所示:

十三
西門子S7-200 Smart之Modbus TCP客戶端程序的監視
西門子S7-200 Smart和以太網調試助手建立連接成功后,以太網調試助手即可觀察到來自西門子S7-200 Smart發出的Modbus TCP命令,如下所示:

十四
西門子S7-200 Smart和歐姆龍CP1H-E實現Modbus TCP以太網通信測試
1、使用網線將西門子S7-200 Smart連接至無線路由器LAN口、使用網線將歐姆龍CP1H-E連接至無線路由器LAN口,完成硬件連接;
2、下載歐姆龍CP1H-E之Modbus TCP服務器通信程序;
3、下載西門子S7-200 Smart之Modbus TCP客戶端通信程序;
4、監控歐姆龍CP1H-E程序中W0.01是否置位,Modbus TCP服務器是否初始化完成;
5、監控西門子S7-200 Smart程序,並置位M0.0,建立與歐姆龍CP1H-E的Modbus連接。
6、按照既定要求觀察西門子S7-200 Smart和歐姆龍CP1H-E保持寄存器VW0~VW14、D0~D7,完成Modbus TCP以太網通信。
十五
總結
至此,西門子S7-200 Smart(Modbus TCP客戶端)和歐姆龍CP1H-E(Modbus TCP服務器)完美實現了Modbus TCP以太網通信。