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