案例|同一項目下西門子S7-1200 PLC 之間的S7通信詳解
王曾
發(fā)布于2023-03-21 09:32
142
4
標簽:西門子PLC
一、要完成的功能任務
1. S7-1200 CPU Clinet 將通訊數據區(qū) DB1 塊中的 10 個字節(jié)的數據發(fā)送到 S7-1200 CPU server 的接收數據區(qū) DB1 塊中;
2. S7-1200 CPU Clinet 將S7-1200 CPU server 發(fā)送數據區(qū) DB2 塊中的 10 個字節(jié)的數據讀到 S7-1200 CPU Clinet 的接收數據區(qū) DB2 塊中。
二、硬件設備
1. CPU 1214C DC/DC/DC
2. CPU 1214C DC/DC/DC
三、軟件
西門子plc編程軟件:TIA 博途
四、實現方法
1. 使用博途創(chuàng)建一個新項目,并通過“添加新設備”組態(tài) S7-1200 站 client V4.1,選擇 CPU1214C DC/DC/DC V4.1(client IP:192.168.0.10);接著組態(tài)另一個S7-1200站 server v2.0,選擇 CPU1214C DC/DC/DC V2.0(server IP:192.168.0.12),如圖1所示
圖1
2. 在“設備組態(tài)”中 ,選擇“網絡視圖”欄進行配置網絡,點中左上角的“連接”圖標,連接框中選擇“S7連接”,然后選中client v4.1 CPU(客戶端),右鍵選擇“添加新的連接”,在創(chuàng)建新連接對話框內,選擇連接對象“server v2.0 CPU”,選擇“主動建立連接”后建立新連接,如圖2所示:
圖2
3. 在中間欄的“連接”條目中,可以看到已經建立的“S7_連接_1”,如圖3所示:
圖3
4. 點中上面的連接,在“S7_連接_1”的連接屬性中查看各參數,點中上面的連接,在“S7_連接_1”的連接屬性中查看各參數,如圖4所示:
圖4
5. 在本地ID中:顯示通訊連接的ID 號,這里ID=W#16#100(編程使用),如圖5所示:
圖5
6. 在特殊連接屬性中:可以選擇是否為主動連接,這里client v4.1是主動建立連接,如圖6所示:
圖6
7. 在地址詳細信息中:定義通訊雙方的 TSAP 號,這里不需要修改,如圖7所示:
圖7
8. 配置完網絡連接,雙方都編譯存盤并下載。如果通訊連接正常,連接在線狀態(tài),如圖8所示:
圖8
9. 接下來進行編程,在 S7-1200 兩側,分別創(chuàng)建發(fā)送和接收數據塊 DB1 和 DB2,定義成 10 個字節(jié)的數組,如圖9所示:
圖9
10. 注意:數據塊的屬性中,需要選擇非優(yōu)化塊訪問(把默認的勾去掉),如圖10所示:
圖10
11. 在主動建連接側編程(client v4.1 CPU),在OB1中,從“Instruction” >“Communication” >“S7 Communication”下,調用 Get、Put 通信指令,如圖11所示:
圖11
12. 功能塊參數意義如下表1:
功能塊管腳
|
賦值
|
含義
|
REQ
|
%M0.0
|
上升沿觸發(fā)
|
REQ
|
%M0.0
|
上升沿觸發(fā)
|
ID
|
W#16#100
|
連接號,要與連接配置中一致,創(chuàng)建連接時的本地連接號
|
DONE
|
%M0.5
|
為1時,發(fā)送完成
|
ERROR
|
%M0.6
|
為1時,有故障發(fā)生
|
STATUS
|
%MW10
|
狀態(tài)代碼
|
ADDR_1
|
P#DB1.DBX0.0 BYTE 10
|
發(fā)送到通信伙伴數據區(qū)的地址
|
SD_1
|
P#DB1.DBX0.0 BYTE 10
|
本地發(fā)送數據區(qū)
|
REQ
|
%M1.0
|
上升沿觸發(fā)
|
ID
|
W#16#100
|
連接號,要與連接配置中一致,創(chuàng)建連接時的本地連接號
|
NDR
|
%M1.5
|
為1時,接收到新數據
|
ERROR
|
%M1.6
|
為1時,有故障發(fā)生
|
STATUS
|
%MW12
|
狀態(tài)代碼
|
ADDR_1
|
P#DB2.DBX0.0 BYTE 10
|
從通信伙伴數據區(qū)讀取數據的地址
|
RD_1
|
P#DB2.DBX0.0 BYTE 10
|
本地接收數據地址
|
表1
13. 通過在 S7-1200 客戶機側編程進行 S7 通訊,實現兩個 CPU 之間數據交換,監(jiān)控結果如圖12所示:
圖12
總結
以上為實現在同一項目下兩臺S7-1200的單邊S7通信的方法,優(yōu)點是只需要單邊編程,這是西門子PLC之間實現大量數據通信常用的方法,限制條件是兩邊PLC需要支持西門子S7通信協議,點擊學習西門子PLC通信課程