S7-1200 與 S7-1200/S7-1500 不同項目下 UDP 通信
S7-1200 與 S7-1200 之間的以太網通信可以通過 UDP 協議來實現。本列中使用TSEND_C,TRCV_C指令建立雙方的UDP通訊。TSEND_C,TRCV_C指令在兩臺PLC間必須成對存在。
此外S7-1200 與 S7-1500 在不同項目下UDP通信也可以參考本文檔。
一、硬件及軟件環境
硬件:
① 兩臺 S7-1200 CPU V4.4
② PC(帶以太網卡)
③ TP電纜(以太網電纜)
軟件:
STEP7 V16
二、PLC_1 CPU配置
1. 通訊關系
圖1. 連接關系
2. 組態CPU的硬件配置
1. 打開 STEP7 v16 軟件并新建項目
在 STEP7 v16的 “Portal 視圖” 中創建一個新項目。
2. 添加硬件并命名PLC
在“項目樹” 下雙擊 “添加新設備”,在對話框中選擇所使用的S7-1200 CPU添加到機架上,命名為PLC_1。
圖2. 添加CPU
3. 組態系統時鐘
在CPU 屬性中定義的時鐘位, 在 “項目樹” > “PLC_1” > “設備組態” 中,選中 CPU ,然后在下面的屬性窗口中,“屬性” > “常規”>“系統和時鐘存儲器” 下,勾選“啟用系統存儲器字節”及“啟用時鐘存儲器字節”。
圖3. 系統位與時鐘位
4. 組態PROFINET通訊接口
在CPU的屬性窗口中,“屬性” > “常規”>“PROFINET接口[X1]”>“以太網地址”下,點擊添加新子網,分配PLC_1 CPU IP地址:192.168.0.2,子網掩碼:255.255.255.0。
圖4. 組態PROFINET接口
5. 編譯CPU的硬件組態并下載 。
在設備視圖下,“編輯”菜單 > “編譯”。
在設備視圖下,“在線”菜單 > “下載到設備”。
3. 建立通訊用DB
在項目樹下添加新塊,分別命名為PLC1_Rcv,PLC1_Send。
在 DB 塊中建立用于接收及發的數據數組(本例中建立100個byte)。
建立完成 DB 后,右鍵點擊 DB 塊,在打開的快捷菜單中打開 DB 的屬性,去除 DB 的“優化的塊訪問屬性”,見圖6。
圖5. 建立通訊用DB塊
圖6. 去除DB塊的優化屬性
4. 配置 TSEND_C 指令
從指令表(圖7)加入指令塊 TSEND_C 到主程序中。
圖7. 加入 TSEND_C功能塊
點擊指令塊上的開始組態按鈕,打開“連接參數”組態窗口。
圖8. 組態連接參數
圖8中的參數:
端點:連接伙伴未在同一項目中,此處選擇未指定。
連接類型:UDP,此處使用UDP通訊。
連接ID:不能和CPU中的其它通訊ID沖突 。
連接數據:此處新建連接。
端口:本例中雙邊通訊端口定為2000。
配置TSEND_C指令管腳
圖9. TSEND_C功能塊
參數說明:
輸入接口參數:
REQ:此處使用時鐘脈沖信號,上升沿執行發送作業。
LEN:發送數據長度,此值必須小于或者等于DATA中指定的發送區長度,單位:字節(此參數默認為隱藏參數,可以點擊功能塊底部箭頭顯示)。示例中發送10個Byte到接收區。
DATA:指向發送數據區的指針。p#db3.dbx0.0 byte 20:起始地址為db3.dbx0.0,長度為20個byte。此處指向的地址及長度必須小于或者等于DB3塊中的建立的數據長度。
輸出接口參數:
DONE:發送作業成功完成時,會顯示一個循環周期的1。抓取DONE位狀態程序見診斷程序中的圖30。
ERROR:當功能塊出現錯誤時為1。
STATUS:功能塊的運行狀態。錯誤狀態的抓取程序見診斷程序中的圖31。
5. 配置 TRCV_C 指令
從指令表(圖10)加入指令塊 TRCV_C 到主程序中
圖10. 加入 TRCV_C 功能塊
點擊指令塊上的開始組態按鈕,打開“連接參數”組態窗口,并選擇圖8中組態好的參數塊。
圖11. 組態連接參數
配置TRCV_C指令管腳
圖12. TRCV_C 功能塊
參數說明:
輸入接口參數:
EN_R:啟用接收功能 ,此處設置為1,一直打開接收。
LEN:接收數據長度,必須和通訊伙伴的發送長度設置一致。單位:字節(此參數默認為隱藏參數,可以點擊功能塊底部箭頭顯示)。
DATA:指向接收數據區的指針。p#db4.dbx0.0 byte 20:起始地址為db4.dbx0.0,長度為20個byte。此處指向的地址及長度必須小于或者等于DB4塊中的建立的數據長度。
輸出接口參數:
DONE:接收作業成功完成時,會顯示一個循環周期的1。抓取DONE位狀態程序見診斷程序中的圖32。
RCVD_LEN:接收到的字節數。
ERROR:當功能塊出現錯誤時為1。
STATUS:功能塊的運行狀態。錯誤狀態的抓取程序見診斷程序中的圖33。
6. 檢查通訊DB塊
在“程序塊”-“系統塊”-“程序資源”下,雙擊打開DB塊“PLC_1_Send_DB”。
圖13. 檢查通訊連接DB
紅色框內填寫通訊伙伴的IP(此處為PLC_2的IP地址)和端口
三、PLC_2 CPU配置
1. 連接關系
圖14. 連接關系
2. 組態CPU的硬件配置
1. 打開 STEP7 v16 軟件并新建項目
在 STEP7 v16的 “Portal 視圖” 中創建一個新項目。
2. 添加硬件并命名PLC
在“項目樹” 下雙擊 “添加新設備”,在對話框中選擇所使用的S7-1200 CPU添加到機架上,命名為PLC_2。
圖15. 添加CPU
3. 組態系統時鐘
在CPU 屬性中定義的時鐘位, 在 “項目樹” > “PLC_2” > “設備組態” 中,選中 CPU ,然后在下面的屬性窗口中,“屬性” > “常規”>“系統和時鐘存儲器” 下,勾選“啟用系統存儲器字節”及“啟用時鐘存儲器字節”。
圖16. 系統位與時鐘位
4. 組態PROFINET通訊接口
在CPU的屬性窗口中,“屬性” > “常規”>“PROFINET接口[X1]”>“以太網地址”下,點擊添加新子網,分配PLC_2 CPU IP地址:192.168.0.3,子網掩碼:255.255.255.0。
圖17. 組態PROFINET接口
5. 編譯CPU的硬件組態并下載 。
在設備視圖下,“編輯”菜單 > “編譯”。
在設備視圖下,“在線”菜單 > “下載到設備”。
3. 建立通訊用DB
在項目樹下添加新塊,分別命名為SeverRcv,SeverSend。
在 DB 塊中建立用于接收及發的數據數組(本例中建立100個byte)。
建立完成 DB 后,右鍵點擊 DB 塊,在打開的快捷菜單中打開 DB 的屬性,去除 DB 的“優化的塊訪問屬性”,見圖19。
圖18. 建立通訊用DB塊
圖19. 去除DB塊的優化屬性
4. 配置 TSEND_C 指令
從指令表(圖20)加入指令塊 TSEND_C 到主程序中。
圖20. 加入 TSEND_C功能塊
點擊指令塊上的開始組態按鈕,打開“連接參數”組態窗口。
圖21. 組態連接參數
圖21中的參數:
端點:連接伙伴未在同一項目中,此處選擇未指定。
地址:在伙伴側寫入服務器的通訊地址。
連接類型:UDP,此處使用UDP通訊。
連接ID:不能和CPU中的其它通訊ID沖突 。
連接數據:此處新建連接。
主動建立連接:選擇主動建立連接的為客戶端,另外一側為服務器,本例中伙伴CPU為服務器,本地CPU主動建立連接。
端口:本例中雙邊通訊端口定為2000。
配置TSEND_C指令管腳
圖22. TSEND_C功能塊
參數說明:
輸入接口參數:
REQ:此處使用時鐘脈沖信號,上升沿執行發送作業。
LEN:發送數據長度,此值必須小于或者等于DATA中指定的發送區長度,單位:字節(此參數默認為隱藏參數,可以點擊功能塊底部箭頭顯示)。示例中發送10個Byte到接收區。
DATA:指向發送數據區的指針。p#db3.dbx0.0 byte 20:起始地址為db3.dbx0.0,長度為20個byte。此處指向的地址及長度必須小于或者等于DB3塊中的建立的數據長度。
輸出接口參數:
DONE:發送作業成功完成時,會顯示一個循環周期的1。抓取DONE位狀態程序見診斷程序中的圖30。
ERROR:當功能塊出現錯誤時為1。
STATUS:功能塊的運行狀態。錯誤狀態的抓取程序見診斷程序中的圖31。
5. 配置 TRCV_C 指令
從指令表(圖23)加入指令塊 TRCV_C 到主程序中。
圖23. 加入 TRCV_C 功能塊
點擊指令塊上的開始組態按鈕,打開“連接參數”組態窗口,并選擇圖21中組態好的參數塊。
圖24. 組態連接參數
配置TRCV_C指令管腳
圖25. TRCV_C 功能塊
參數說明:
輸入接口參數:
EN_R:啟用接收功能 ,此處設置為1,一直打開接收。
LEN:接收數據長度,必須和通訊伙伴的發送長度設置一致。單位:字節(此參數默認為隱藏參數,可以點擊功能塊底部箭頭顯示)。
DATA:指向接收數據區的指針。p#db4.dbx0.0 byte 20:起始地址為db4.dbx0.0,長度為20個byte。此處指向的地址及長度必須小于或者等于DB4塊中的建立的數據長度。
輸出接口參數:
DONE:接收作業成功完成時,會顯示一個循環周期的1。抓取DONE位狀態程序見診斷程序中的圖32。
RCVD_LEN:接收到的字節數。
ERROR:當功能塊出現錯誤時為1。
STATUS:功能塊的運行狀態。錯誤狀態的抓取程序見診斷程序中的圖33。
6. 檢查通訊DB塊
在“程序塊”-“系統塊”-“程序資源”下,雙擊打開DB塊“PLC_2_Send_DB”。
圖26. 檢查通訊連接DB
紅色框內填寫通訊伙伴的IP(此處為PLC_1的IP地址)和端口。
四、通訊診斷
1. 通訊數據查看
圖27. 通訊數據
2. 連接診斷
將 1200CPU 轉至在線狀態,打開“網絡視圖”,可以在“連接”選項卡中看到連接狀態。
圖28. 連接狀態
將鼠標選中連接,在巡視窗口中,可以檢查連接的具體狀態。
圖29. 連接詳細狀態
3. 利用功能塊診斷通訊狀態
圖30. 檢查已發送次數
圖31. 抓取發送錯誤代碼
圖32. 抓取接收次數及最后一次的接收長度
圖33. 抓取接收錯誤代碼
審核編輯:湯梓紅
-
plc
+關注
關注
5008文章
13150瀏覽量
462050 -
通信
+關注
關注
18文章
5969瀏覽量
135850 -
UDP
+關注
關注
0文章
322瀏覽量
33876 -
S7-1200
+關注
關注
11文章
331瀏覽量
17908 -
S7-1500
+關注
關注
3文章
300瀏覽量
6341
原文標題:S7-1200 與 S7-1200/S7-1500 不同項目下 UDP 通信
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論