S7-1200 與 S7-1200 之間的以太網(wǎng)通信可以通過(guò) TCP 協(xié)議來(lái)實(shí)現(xiàn),使用的通信指令是在雙方 CPU 調(diào)用 T-block (TSEND_C,TRCV_C,TCON,TDISCON,TSEND,TRCV) 指令來(lái)實(shí)現(xiàn)。通信方式為雙邊通信,因此 TSEND 和 TRCV 必須成對(duì)出現(xiàn)。
此外本文也可用于S7-1200和S7-1500 TCP 通信。
硬件:
① 兩臺(tái)S7-1200 CPU(PLC_1:CPU1215C DC/DC/DC,固件版本V4.4和PLC_2:CPU1214C DC/DC/DC,固件版本V4.4)
② PC(帶以太網(wǎng)卡)
③ TP電纜(以太網(wǎng)電纜)
軟件:
TIA PORTAL STEP7 V16
所完成的通信任務(wù):
① 將PLC_1 的通信數(shù)據(jù)區(qū) DB3 塊中的 100 個(gè)字節(jié)的數(shù)據(jù)發(fā)送到 PLC_2 的接收數(shù)據(jù)區(qū) DB4 塊中。
② 將PLC_2 的通信數(shù)據(jù)區(qū) DB3 塊中的 100 個(gè)字節(jié)的數(shù)據(jù)發(fā)送到 PLC_1 的接收數(shù)據(jù)區(qū) DB4 塊中。
S7-1200之間 TCP 通訊,可以分2種情況來(lái)操作,具體如下:
**種情況:兩個(gè) S7-1200 在一個(gè)項(xiàng)目中操作
*二種情況:兩個(gè) S7-1200 不在一個(gè)項(xiàng)目中的操作
使用 STEP 7 V16 在同一個(gè)項(xiàng)目中,新建兩個(gè)S7-1200站點(diǎn),然后做 TCP 通訊。
在 STEP7 V16 的 “Portal 視圖” 中選擇 “創(chuàng)建新項(xiàng)目” 創(chuàng)建一個(gè)新項(xiàng)目
然后進(jìn)入 “項(xiàng)目視圖”,在“項(xiàng)目樹” 下雙擊 “添加新設(shè)備”,在對(duì)話框中選擇所使用的S7-1200 CPU添加到機(jī)架上,命名為 PLC_1,如圖1所示。
同樣方法再添加通信伙伴的S7-1200 CPU ,命名為 PLC_2。
圖1. 添加新設(shè)備
為了編程方便,使用 CPU 屬性中定義的時(shí)鐘位,定義方法如下:
在 “項(xiàng)目樹” > “PLC_1” > “設(shè)備組態(tài)” 中,選中 CPU ,然后在下面的屬性窗口中,“屬性” > “系統(tǒng)和時(shí)鐘存儲(chǔ)器” 下,將系統(tǒng)位定義在MB1,時(shí)鐘位定義在MB0,如圖2所示。
時(shí)鐘位我們主要使用 M0.3,它是以2Hz 的速率在0和1之間切換的一個(gè)位,可以使用它去自動(dòng)激活發(fā)送任務(wù)。
圖2. 系統(tǒng)位與時(shí)鐘位
在 “設(shè)備視圖”中點(diǎn)擊 CPU 上代表PROFINET 通信口的綠色小方塊,在下方會(huì)出現(xiàn)PROFINET 接口的屬性,在 “以太網(wǎng)地址” 下分配IP 地址為 192.168.0.1 ,子網(wǎng)掩碼為255.255.255.0,如圖3所示。
圖3. 分配IP 地址
同樣方法,在同一個(gè)項(xiàng)目里添加另一個(gè)新設(shè)備S7-1200 CPU 并為其分配 IP 地址為192.168.0.2
在項(xiàng)目樹 “項(xiàng)目樹”>“設(shè)備和網(wǎng)絡(luò)” >“網(wǎng)絡(luò)視圖” 視圖下,創(chuàng)建兩個(gè)設(shè)備的連接。用鼠標(biāo)點(diǎn)中 PLC_1 上的PROFINET通信口的綠色小方框,然后拖拽出一條線,到另外一個(gè)PLC_2 上的PROFINET通信口上,松開鼠標(biāo),連接就建立起來(lái)了,如圖4所示。
圖4. 建立兩個(gè) CPU的邏輯連接
圖5. 調(diào)用“TCON”通信指令
② 點(diǎn)擊“開始組態(tài)”按鈕(如圖5中紅色方框所示),分配連接參數(shù),在伙伴“端點(diǎn)”的下拉菜單中選擇伙伴為“PLC_2”,在本地“連接數(shù)據(jù)”的下拉菜單中選擇“新建”,如圖6所示:
圖6. 分配連接參數(shù)
③ 定義PLC_1的 “TCON”連接參數(shù)
PLC_1 的 TCON 指令的連接參數(shù)需要在指令下方的屬性窗口“屬性”> “組態(tài)”>“連接參數(shù)”中設(shè)置,同樣使用“新建”,創(chuàng)建伙伴方的“連接數(shù)據(jù)”,"PLC_2_Connection_DB",如圖7所示。
圖7. 定義 TCON 連接參數(shù)
連接參數(shù)說(shuō)明:
端點(diǎn) | :可以通過(guò)點(diǎn)擊選擇按鈕選擇伙伴 CPU :PLC_2 |
連接類型 | :選擇通信協(xié)議為 TCP( |
連接ID | :連接的地址 ID 號(hào),這個(gè) ID 號(hào)在后面的編程里會(huì)用到 |
連接數(shù)據(jù) | :創(chuàng)建連接時(shí),點(diǎn)擊“新建”(見(jiàn)圖6所示),創(chuàng)建本地和伙伴的連接數(shù)據(jù)。 |
主動(dòng)連接設(shè)置 | :選擇本地 PLC_1作為主動(dòng)連接 |
地址詳細(xì)信息 | :定義通信伙伴方的端口號(hào)為:2000; |
④ 組態(tài)完成后 “TCON” 指令如圖8所示。
圖8 “TCON”通信指令
進(jìn)入 “項(xiàng)目樹” > “ PLC_1” > “程序塊” > “OB1” 主程序中,從右側(cè)窗口 “指令” > “通信” > “開放式用戶通信”下調(diào)用 “TSEND” 指令,如圖9所示。
圖9. 調(diào)用 TSEND
② 創(chuàng)建并定義PLC_1的發(fā)送數(shù)據(jù)區(qū) DB 塊。
通過(guò)“項(xiàng)目樹”>“PLC_1”>“程序塊”>“添加新塊”,選擇“數(shù)據(jù)塊” 創(chuàng)建 DB 塊,在DB塊的“屬性->常規(guī)->屬性”中,取消勾選“優(yōu)化的塊訪問(wèn)”,點(diǎn)擊“確定”鍵,定義發(fā)送數(shù)據(jù)區(qū)為 100個(gè)字節(jié)的數(shù)組,如圖10及圖11所示。
圖10. 創(chuàng)建發(fā)送數(shù)據(jù)區(qū) DB 塊
注意:對(duì)于雙邊編程通信的 CPU ,如果通信數(shù)據(jù)區(qū)使用 DB 塊,既可以將 DB 塊定義成符號(hào)尋址,也可以定義成**尋址。使用指針尋址方式,必須創(chuàng)建**尋址的 DB 塊。
圖11. 定義發(fā)送數(shù)據(jù)區(qū)為字節(jié)類型的數(shù)組
③ 定義 PLC_1 的“TSEND”發(fā)送通信塊接口參數(shù),如圖12所示。
圖12. 定義 TSEND 接口參數(shù)
參數(shù)說(shuō)明:
輸入接口參數(shù):
REQ | := M0.3 | // 使用 2Hz 的時(shí)鐘脈沖,上升沿激活發(fā)送任務(wù) |
ID | := 1 | // 創(chuàng)建連接ID |
LEN | := 100 | //發(fā)送數(shù)據(jù)長(zhǎng)度 |
DATA | := P#DB3.DBX0.0 BYTE 100 | // 發(fā)送數(shù)據(jù)區(qū)的數(shù)據(jù),使用指針尋址時(shí),DB塊要選用**尋址 |
輸出接口參數(shù):
DONE | := M2.5 | //任務(wù)執(zhí)行完成并且沒(méi)有錯(cuò)誤,該位置 1 |
BUSY | := M2.6 | // 該位為 1,代表未完成,不能激活新任務(wù) |
ERROR | := M2.7 | //通信過(guò)程中有錯(cuò)誤發(fā)生,該位置 1 |
STATUS | := MW10 | //有錯(cuò)誤發(fā)生時(shí),會(huì)顯示錯(cuò)位信息號(hào) |
① 創(chuàng)建并定義PLC_1的接收數(shù)據(jù)區(qū) DB 塊。
通過(guò)“項(xiàng)目樹”>“PLC_1”>“程序塊”>“添加新塊”,選擇“數(shù)據(jù)塊” 創(chuàng)建 DB 塊,在DB塊的“屬性->常規(guī)->屬性”中,取消勾選“優(yōu)化的塊訪問(wèn)”,點(diǎn)擊“確定”鍵,定義接收數(shù)據(jù)區(qū)為 100個(gè)字節(jié)的數(shù)組,如圖13及圖14所示。
圖13. 創(chuàng)建接收數(shù)據(jù)區(qū) DB 塊
注意:對(duì)于雙邊編程通信的 CPU ,如果通信數(shù)據(jù)區(qū)使用 DB 塊,既可以將 DB 塊定義成符號(hào)尋址,也可以定義成**尋址。使用指針尋址方式,必須創(chuàng)建**尋址的 DB 塊。
圖14. 定義接收數(shù)據(jù)區(qū)為字節(jié)類型的數(shù)組
② 調(diào)用 “TRCV” 在OB1內(nèi)調(diào)用
進(jìn)入 “項(xiàng)目樹” > “ PLC_1” > “程序塊” > “OB1” 主程序中,從右側(cè)窗口 “指令” > “通信” > “開放式用戶通信”下調(diào)用 “TRCV” 指令,配置接口參數(shù),如圖15所示。
圖15. 調(diào)用 TRCV 指令并配置接口參數(shù)
參數(shù)說(shuō)明:
輸入接口參數(shù):
EN_R | := TRUE | // 準(zhǔn)備好接收數(shù)據(jù) |
ID | := 1 | // 連接號(hào),使用的是 TCON 的連接參數(shù)中 ID號(hào) |
LEN | := 100 | // 接收數(shù)據(jù)長(zhǎng)度為 100 個(gè)字節(jié) |
ADHOC | := FALSE | // TCP協(xié)議選項(xiàng)未使用Ad-hoc模式 |
DATA | := P#DB4.DBX0.0 BYTE 100 | // 接收數(shù)據(jù)區(qū)的地址 |
輸出接口參數(shù):
NDR | := M3.2 | // 該位為 1,接收任務(wù)成功完成 |
BUSY | := M3.3 | // 該位為 1,代表未完成,不能激活新任務(wù) |
ERROR | := M3.4 | // 通信過(guò)程中有錯(cuò)誤發(fā)生,該位置 1 |
STATUS | := MW16 | // 有錯(cuò)誤發(fā)生時(shí),會(huì)顯示錯(cuò)誤信息號(hào) |
RCVD_LEN | := MD18 | // 實(shí)際接收數(shù)據(jù)的字節(jié)數(shù) |
注意:ADHOC設(shè)置為 TRUE 可以接收變長(zhǎng)數(shù)據(jù)。
圖16. 調(diào)用“TCON”通信指令
② 點(diǎn)擊“開始組態(tài)”按鈕(如圖16中紅色方框所示),分配連接參數(shù),在伙伴“端點(diǎn)”的下拉菜單中選擇伙伴為“PLC_1”,在本地“連接數(shù)據(jù)”的下拉菜單中選擇已經(jīng)建立的連接數(shù)據(jù)“PLC_2_Connection_DB”。如圖17所示:
圖17. 分配連接參數(shù)
③ 定義 PLC_2的 連接參數(shù) “TCON”
PLC_2 的 TCON 指令的連接參數(shù)需要在指令下方的屬性窗口“屬性”> “組態(tài)”>“連接參數(shù)”中設(shè)置,在伙伴“連接數(shù)據(jù)”的下拉菜單中選擇已經(jīng)建立的連接數(shù)據(jù)“PLC_1_Connection_DB”,如圖18所示。
圖18. 定義 TCON 連接參數(shù)
連接參數(shù)說(shuō)明:
端點(diǎn) | :可以通過(guò)點(diǎn)擊選擇按鈕選擇伙伴 CPU :PLC_1 |
連接類型 | :選擇通信協(xié)議為 TCP(也可以選擇 ISO on TCP 或UDP協(xié)議) |
連接ID | :連接的地址 ID 號(hào),這個(gè) ID 號(hào)在后面的編程里會(huì)用到 |
連接數(shù)據(jù) | :選擇已創(chuàng)建完成的連接數(shù)據(jù) |
主動(dòng)建立連接 | :選擇通信伙伴 PLC_1作為主動(dòng)連接 |
地址詳細(xì)信息 | :定義通信本地端口號(hào)為:2000; |
④ 組態(tài)完成后 “TCON” 指令如圖19所示。
圖19 “TCON”通信指令
接收從PLC_1 發(fā)送到 PLC_2的100個(gè)字節(jié)數(shù)據(jù)
① 創(chuàng)建并定義接收數(shù)據(jù)區(qū) DB 塊。
通過(guò)“項(xiàng)目樹”>“ PLC_2”>“程序塊”>“添加新塊” ,選擇 “數(shù)據(jù)塊”創(chuàng)建 DB 塊,在DB塊的“屬性->常規(guī)->屬性”中,取消勾選“優(yōu)化的塊訪問(wèn)”,點(diǎn)擊“確定”鍵定義接收數(shù)據(jù)區(qū)為 100 個(gè)字節(jié)的數(shù)組,圖20及圖21所示。
圖20. 創(chuàng)建接收數(shù)據(jù)區(qū) DB 塊
圖21. 定義接收區(qū)為 100 個(gè)字節(jié)的數(shù)組
② 定義調(diào)用 “TRCV” 程序
圖22. TRCV 塊參數(shù)配置
參數(shù)配置:
輸入接口參數(shù):
EN_R | := TRUE | // 準(zhǔn)備好接收數(shù)據(jù) |
ID | := 1 | // 建立連接并一直保持連接 |
LEN | := 100 | // 接收的數(shù)據(jù)長(zhǎng)度為 100 個(gè)字節(jié) |
ADHOC | := FALSE | // TCP協(xié)議選項(xiàng)未使用Ad-hoc模式 |
DATA | := P#DB4.DBX0.0 BYTE 100 | //接收數(shù)據(jù)區(qū),DB 塊選用的是符號(hào)尋址 |
輸出接口參數(shù):
DONE | := M3.2 | // 任務(wù)執(zhí)行完成并且沒(méi)有錯(cuò)誤,該位置 1 |
BUSY | := M3.3 | // 該位為 1,代表未完成,不能激活新任務(wù) |
ERROR | := M3.4 | // 通信過(guò)程中有錯(cuò)誤發(fā)生,該位置 1 |
STATUS | := MW16 | // 有錯(cuò)誤發(fā)生時(shí),會(huì)顯示錯(cuò)誤信息號(hào) |
RCVD_LEN | := MD18 | // 實(shí)際接收數(shù)據(jù)的字節(jié)數(shù) |
PLC_2 將 發(fā)送100個(gè)字節(jié)數(shù)據(jù) 到 PLC_1 中,如何創(chuàng)建發(fā)送數(shù)據(jù)塊DB3,與創(chuàng)建接收數(shù)據(jù)塊方法相同,不再詳述。在 PLC_2 中調(diào)用發(fā)送指令并配置塊參數(shù),發(fā)送指令與接收指令使用同一個(gè)連接,如圖23所示。
圖23. 調(diào)用TSEND 指令并配置塊接口參數(shù)
參數(shù)說(shuō)明:
輸入接口參數(shù):
REQ | := M0.3 | // 使用 2Hz 的時(shí)鐘脈沖,上升沿激活發(fā)送任務(wù) |
ID | := 1 | // 連接ID號(hào),通過(guò)TCON創(chuàng)建的連接 |
LEN | := 100 | // 發(fā)送數(shù)據(jù)長(zhǎng)度為 100 個(gè)字節(jié) |
DATA | := P#DB3.DBX0.0 BYTE 100 | // 發(fā)送數(shù)據(jù)區(qū)的符號(hào)地址 |
輸出接口參數(shù):
DONE | :M2.5 | // 任務(wù)執(zhí)行完成并且沒(méi)有錯(cuò)誤,該位置 1 |
BUSY | :M2.6 | // 該位為 1,代表未完成,不能激活新任務(wù) |
ERROR | :M2.7 | // 通信過(guò)程中有錯(cuò)誤發(fā)生,該位置 1 |
STATUS | :MW10 | //有錯(cuò)誤發(fā)生時(shí),會(huì)顯示錯(cuò)誤信息號(hào) |
下載兩個(gè) CPU 中的所有硬件組態(tài)及程序,從監(jiān)控表中可以看到,PLC_1 的 TSEND 指令發(fā)送數(shù)據(jù):“1”,“2”,“3”,“4”,“5”,“6”,PLC_2 接收到數(shù)據(jù):“1”,“2”,“3”,“4”,“5”,“6”。而 PLC_2 發(fā)送數(shù)據(jù)“7”,“8”,“9”,“10”,“11”,“12”,PLC_1接收數(shù)據(jù)是“7”,“8”,“9”,“10”,“11”,“12”,如圖24所示。
圖24. PLC_1 及 PLC_2 的監(jiān)控表
使用 STEP 7 V16 不在一個(gè)項(xiàng)目中,新建兩個(gè)S7-1200站點(diǎn),然后做 TCP 通訊。
在 STEP7 V16 的 “Portal 視圖” 中選擇 “創(chuàng)建新項(xiàng)目” 創(chuàng)建一個(gè)新項(xiàng)目
然后進(jìn)入 “項(xiàng)目視圖”,在“項(xiàng)目樹” 下雙擊 “添加新設(shè)備”,在對(duì)話框中選擇所使用的S7-1200 CPU添加到機(jī)架上,命名為 PLC_1,如圖25所示。
同樣方法,再次打開STEP7 V16,新建另一個(gè)項(xiàng)目并添加通信伙伴的S7-1200 CPU ,命名為 PLC_2。
圖25. 添加新設(shè)備
為了編程方便,使用 CPU 屬性中定義的時(shí)鐘位,定義方法如下:
在 “項(xiàng)目樹” > “PLC_1” > “設(shè)備組態(tài)” 中,選中 CPU ,然后在下面的屬性窗口中,“屬性” > “系統(tǒng)和時(shí)鐘存儲(chǔ)器” 下,將系統(tǒng)位定義在MB1,時(shí)鐘位定義在MB0,如圖26所示。
時(shí)鐘位我們主要使用 M0.3,它是以2Hz 的速率在0和1之間切換的一個(gè)位,可以使用它去自動(dòng)激活發(fā)送任務(wù)。
圖26. 系統(tǒng)位與時(shí)鐘位
在 “設(shè)備視圖”中點(diǎn)擊 CPU 上代表PROFINET 通信口的綠色小方塊,在下方會(huì)出現(xiàn)PROFINET 接口的屬性,在 “以太網(wǎng)地址” 下分配IP 地址為 192.168.0.1 ,子網(wǎng)掩碼為255.255.255.0,點(diǎn)擊“添加新子網(wǎng)”,增加子網(wǎng)“PN/IE_1”,如圖27所示。
圖27. 分配IP 地址
同樣方法,在另一個(gè)項(xiàng)目里添加另一個(gè)新設(shè)備S7-1200 CPU 并為其分配 IP 地址為192.168.0.2
圖28. 調(diào)用“TCON”通信指令
② 點(diǎn)擊“開始組態(tài)”按鈕(如圖28中紅色方框所示),分配連接參數(shù),由于PLC_2是在不同項(xiàng)目中,因此伙伴方“端點(diǎn)”選擇“未*”,在本地“連接數(shù)據(jù)”的下拉菜單中選擇“新建”。如圖29所示:
圖29. 分配連接參數(shù)
③ 定義PLC_1的 “TCON”連接參數(shù)
PLC_1 的 TCON 指令的連接參數(shù)需要在指令下方的屬性窗口“屬性”> “組態(tài)”>“連接參數(shù)”中設(shè)置,設(shè)置伙伴方的IP地址為“192.168.0.2”,如圖30所示。
圖30. 定義 TCON 連接參數(shù)
連接參數(shù)說(shuō)明:
端點(diǎn) | :可以通過(guò)點(diǎn)擊選擇按鈕選擇伙伴 CPU :未* |
連接類型 | :選擇通信協(xié)議為 TCP( |
連接ID | :連接的地址 ID 號(hào),這個(gè) ID 號(hào)在后面的編程里會(huì)用到 |
連接數(shù)據(jù) | :創(chuàng)建連接時(shí),點(diǎn)擊“新建”(見(jiàn)圖29所示),創(chuàng)建本地連接數(shù)據(jù)。 |
主動(dòng)連接設(shè)置 | :選擇本地 PLC_1作為主動(dòng)連接 |
地址詳細(xì)信息 | :定義通信伙伴方的端口號(hào)為:2000; |
④ 組態(tài)完成后 “TCON” 指令如圖31所示。
圖31 “TCON”通信指令
進(jìn)入 “項(xiàng)目樹” > “ PLC_1” > “程序塊” > “OB1” 主程序中,從右側(cè)窗口 “指令” > “通信” > “開放式用戶通信”下調(diào)用 “TSEND” 指令,如圖32所示。
圖32. 調(diào)用 TSEND
② 創(chuàng)建并定義PLC_1的發(fā)送數(shù)據(jù)區(qū) DB 塊。
通過(guò)“項(xiàng)目樹”>“PLC_1”>“程序塊”>“添加新塊”,選擇“數(shù)據(jù)塊” 創(chuàng)建 DB 塊,在DB塊的“屬性->常規(guī)->屬性”中,取消勾選“優(yōu)化的塊訪問(wèn)”,點(diǎn)擊“確定”鍵,定義發(fā)送數(shù)據(jù)區(qū)為 100個(gè)字節(jié)的數(shù)組,如圖33及圖34所示。
圖33. 創(chuàng)建發(fā)送數(shù)據(jù)區(qū) DB 塊
注意:對(duì)于雙邊編程通信的 CPU ,如果通信數(shù)據(jù)區(qū)使用 DB 塊,既可以將 DB 塊定義成符號(hào)尋址,也可以定義成**尋址。使用指針尋址方式,必須創(chuàng)建**尋址的 DB 塊。
圖34. 定義發(fā)送數(shù)據(jù)區(qū)為字節(jié)類型的數(shù)組
③ 定義 PLC_1 的“TSEND”發(fā)送通信塊接口參數(shù),如圖35所示。
圖35. 定義 TSEND 接口參數(shù)
參數(shù)說(shuō)明:
輸入接口參數(shù):
REQ | := M0.3 | // 使用 2Hz 的時(shí)鐘脈沖,上升沿激活發(fā)送任務(wù) |
ID | := 1 | //創(chuàng)建連接ID |
LEN | := 100 | //發(fā)送數(shù)據(jù)長(zhǎng)度 |
DATA | := P#DB3.DBX0.0 BYTE 100 | // 發(fā)送數(shù)據(jù)區(qū)的數(shù)據(jù),使用指針尋址時(shí),DB塊要選用**尋址 |
輸出接口參數(shù):
DONE | := M2.5 | //任務(wù)執(zhí)行完成并且沒(méi)有錯(cuò)誤,該位置 1 |
BUSY | := M2.6 | // 該位為 1,代表未完成,不能激活新任務(wù) |
ERROR | := M2.7 | //通信過(guò)程中有錯(cuò)誤發(fā)生,該位置 1 |
STATUS | := MW10 | //有錯(cuò)誤發(fā)生時(shí),會(huì)顯示錯(cuò)位信息號(hào) |
① 創(chuàng)建并定義PLC_1的接收數(shù)據(jù)區(qū) DB 塊。
通過(guò)“項(xiàng)目樹”>“PLC_1”>“程序塊”>“添加新塊”,選擇“數(shù)據(jù)塊” 創(chuàng)建 DB 塊,在DB塊的“屬性->常規(guī)->屬性”中,取消勾選“優(yōu)化的塊訪問(wèn)”,點(diǎn)擊“確定”鍵,定義接收數(shù)據(jù)區(qū)為 100個(gè)字節(jié)的數(shù)組,如圖36及圖37所示。
圖36. 創(chuàng)建接收數(shù)據(jù)區(qū) DB 塊
注意:對(duì)于雙邊編程通信的 CPU ,如果通信數(shù)據(jù)區(qū)使用 DB 塊,既可以將 DB 塊定義成符號(hào)尋址,也可以定義成**尋址。使用指針尋址方式,必須創(chuàng)建**尋址的 DB 塊。
圖37. 定義接收數(shù)據(jù)區(qū)為字節(jié)類型的數(shù)組
② 調(diào)用 “TRCV” 在OB1內(nèi)調(diào)用
進(jìn)入 “項(xiàng)目樹” > “ PLC_1” > “程序塊” > “OB1” 主程序中,從右側(cè)窗口 “指令” > “通信” > “開放式用戶通信”下調(diào)用 “TRCV” 指令,配置接口參數(shù),如圖38所示。
圖38. 調(diào)用 TRCV 指令并配置接口參數(shù)
參數(shù)說(shuō)明:
輸入接口參數(shù):
EN_R | := TRUE | // 準(zhǔn)備好接收數(shù)據(jù) |
ID | := 1 | // 連接號(hào),使用的是 TCON 的連接參數(shù)中 ID號(hào) |
LEN | := 100 | // 接收數(shù)據(jù)長(zhǎng)度為 100 個(gè)字節(jié) |
ADHOC | := FALSE | // TCP協(xié)議選項(xiàng)未使用Ad-hoc模式 |
DATA | := P#DB4.DBX0.0 BYTE 100 | // 接收數(shù)據(jù)區(qū)的地址 |
輸出接口參數(shù):
NDR | := M3.2 | // 該位為 1,接收任務(wù)成功完成 |
BUSY | := M3.3 | // 該位為 1,代表未完成,不能激活新任務(wù) |
ERROR | := M3.4 | // 通信過(guò)程中有錯(cuò)誤發(fā)生,該位置 1 |
STATUS | := MW16 | // 有錯(cuò)誤發(fā)生時(shí),會(huì)顯示錯(cuò)誤信息號(hào) |
RCVD_LEN | := MD18 | // 實(shí)際接收數(shù)據(jù)的字節(jié)數(shù) |
注意:ADHOC設(shè)置為 TRUE 可以接收變長(zhǎng)數(shù)據(jù)。
圖39. 調(diào)用“TCON”通信指令
② 點(diǎn)擊“開始組態(tài)”按鈕(如圖39中紅色方框所示),分配連接參數(shù),由于PLC_1是在不同項(xiàng)目中,因此伙伴方“端點(diǎn)”選擇“未*”,在本地“連接數(shù)據(jù)”的下拉菜單中選擇“新建”。如圖40所示:
圖40. 分配連接參數(shù)
③ 定義 PLC_2 的 連接參數(shù) “TCON”
PLC_2 的 TCON 指令的連接參數(shù)需要在指令下方的屬性窗口“屬性”> “組態(tài)”>“連接參數(shù)”中設(shè)置,設(shè)置伙伴方的IP地址為“192.168.0.1”,如圖41所示。
圖41. 定義 TCON 連接參數(shù)
連接參數(shù)說(shuō)明:
端點(diǎn) | :可以通過(guò)點(diǎn)擊選擇按鈕選擇伙伴 CPU :未* |
連接類型 | :選擇通信協(xié)議為 TCP( |
連接ID | :連接的地址 ID 號(hào),這個(gè) ID 號(hào)在后面的編程里會(huì)用到 |
連接數(shù)據(jù) | :創(chuàng)建連接時(shí),點(diǎn)擊“新建”(見(jiàn)圖40所示),創(chuàng)建本地連接數(shù)據(jù)。 |
主動(dòng)建立連接 | :選擇通信伙伴 PLC_1作為主動(dòng)連接 |
地址詳細(xì)信息 | :定義通信本地端口號(hào)為:2000; |
④ 組態(tài)完成后 “TCON” 指令如圖42所示。
圖42 “TCON”通信指令
接收從PLC_1 發(fā)送到 PLC_2的100個(gè)字節(jié)數(shù)據(jù)
① 創(chuàng)建并定義接收數(shù)據(jù)區(qū) DB 塊。
通過(guò)“項(xiàng)目樹”>“ PLC_2”>“程序塊”>“添加新塊” ,選擇 “數(shù)據(jù)塊”創(chuàng)建 DB 塊,在DB塊的“屬性->常規(guī)->屬性”中,取消勾選“優(yōu)化的塊訪問(wèn)”,點(diǎn)擊“確定”鍵定義接收數(shù)據(jù)區(qū)為 100 個(gè)字節(jié)的數(shù)組,圖43及圖44所示。
圖43. 創(chuàng)建接收數(shù)據(jù)區(qū) DB 塊
圖44. 定義接收區(qū)為 100 個(gè)字節(jié)的數(shù)組
② 定義調(diào)用 “TRCV” 程序
圖45. TRCV 塊參數(shù)配置
參數(shù)配置: 輸入接口參數(shù):
EN_R | := TRUE | // 準(zhǔn)備好接收數(shù)據(jù) |
ID | := 1 | // 建立連接并一直保持連接 |
LEN | := 100 | // 接收的數(shù)據(jù)長(zhǎng)度為 100 個(gè)字節(jié) |
ADHOC | := FALSE | // TCP協(xié)議選項(xiàng)未使用Ad-hoc模式 |
DATA | := P#DB4.DBX0.0 BYTE 100 | // 接收數(shù)據(jù)區(qū),DB 塊選用的是符號(hào)尋址 |
輸出接口參數(shù):
DONE | := M3.2 | // 任務(wù)執(zhí)行完成并且沒(méi)有錯(cuò)誤,該位置 1 |
BUSY | := M3.3 | // 該位為 1,代表未完成,不能激活新任務(wù) |
ERROR | := M3.4 | // 通信過(guò)程中有錯(cuò)誤發(fā)生,該位置 1 |
STATUS | := MW16 | // 有錯(cuò)誤發(fā)生時(shí),會(huì)顯示錯(cuò)誤信息號(hào) |
RCVD_LEN | := MD18 | // 實(shí)際接收數(shù)據(jù)的字節(jié)數(shù) |
PLC_2 將 發(fā)送100個(gè)字節(jié)數(shù)據(jù) 到 PLC_1 中,如何創(chuàng)建發(fā)送數(shù)據(jù)塊DB3,與創(chuàng)建接收數(shù)據(jù)塊方法相同,不再詳述。在 PLC_2 中調(diào)用發(fā)送指令并配置塊參數(shù),發(fā)送指令與接收指令使用同一個(gè)連接,如圖46所示。
圖46. 調(diào)用TSEND 指令并配置塊接口參數(shù)
參數(shù)說(shuō)明:
輸入接口參數(shù):
REQ | := M0.3 | // 使用 2Hz 的時(shí)鐘脈沖,上升沿激活發(fā)送任務(wù) |
ID | := 1 | // 連接ID號(hào),通過(guò)TCON創(chuàng)建的連接 |
LEN | := 100 | // 發(fā)送數(shù)據(jù)長(zhǎng)度為 100 個(gè)字節(jié) |
DATA | := P#DB3.DBX0.0 BYTE 100 | // 發(fā)送數(shù)據(jù)區(qū)的符號(hào)地址 |
輸出接口參數(shù):
DONE | :M2.5 | // 任務(wù)執(zhí)行完成并且沒(méi)有錯(cuò)誤,該位置 1 |
BUSY | :M2.6 | // 該位為 1,代表未完成,不能激活新任務(wù) |
ERROR | :M2.7 | // 通信過(guò)程中有錯(cuò)誤發(fā)生,該位置 1 |
STATUS | :MW10 | // 有錯(cuò)誤發(fā)生時(shí),會(huì)顯示錯(cuò)誤信息號(hào) |
下載兩個(gè) CPU 中的所有硬件組態(tài)及程序,從監(jiān)控表中可以看到,PLC_1 的 TSEND 指令發(fā)送數(shù)據(jù):“1”,“2”,“3”,“4”,“5”,“6”,PLC_2 接收到數(shù)據(jù):“1”,“2”,“3”,“4”,“5”,“6”。而 PLC_2 發(fā)送數(shù)據(jù)“7”,“8”,“9”,“10”,“11”,“12”,PLC_1接收數(shù)據(jù)是“7”,“8”,“9”,“10”,“11”,“12”,如圖47所示。
圖47. PLC_1 及 PLC_2 的監(jiān)控表
詞條
詞條說(shuō)明
基于 IPv6 前綴的 VLAN簡(jiǎn)介在此頁(yè)面上,*分配給 IPv6 前綴的 VLAN ID。顯示框說(shuō)明該頁(yè)面包含以下框:端口 (Port)從下拉列表中選擇端口??梢赃x擇所有可用端口和鏈路匯聚。前綴地址輸入 IPv6 地址。前綴長(zhǎng)度輸入屬于前綴的左側(cè)位數(shù)VLAN ID選擇要分配給端口或前綴的 VLAN ID。該表格包括以下列:Select選擇要?jiǎng)h除的行。端口 (Port)顯示所有可用端口及鏈路匯聚
使用等時(shí)同步模式使用等時(shí)同步模式使用“等時(shí)同步模式”系統(tǒng)屬性,可按照固定的系統(tǒng)時(shí)鐘獲取測(cè)量值和過(guò)程數(shù)據(jù)。 在相同的系統(tǒng)時(shí)鐘內(nèi),會(huì)發(fā)生到輸出端子的切換信號(hào)處理。 因此,通過(guò)等時(shí)同步模式可提高控制的質(zhì)量,并進(jìn)一步提高制造的精準(zhǔn)度。 使用等時(shí)同步模式,可大大降低過(guò)程響應(yīng)時(shí)間內(nèi)可能出現(xiàn)的波動(dòng)。 可以使用固定的處理時(shí)間來(lái)改善機(jī)器循環(huán)時(shí)間。原則上,在必須同步獲取測(cè)量值、調(diào)整移動(dòng)步伐、定義并同時(shí)執(zhí)行過(guò)程響應(yīng)時(shí),
服務(wù)器授權(quán)需要:1.WinCC?Server?————獨(dú)立WinCC版本也需要此授權(quán)。2.WinCC?RC?PO(1000)?————PCS?7下授權(quán)以PO計(jì)算,獨(dú)立WinCC版本需要RC(點(diǎn)數(shù))授權(quán)。3.WinCC?Advanced?Process?Ctrl?————用于Trend?On
WinCC軟件對(duì)操作系統(tǒng)、殺毒軟件、其它西門子軟件等都有嚴(yán)格的兼容性要求。在安裝和使用任何西門子軟件之前,都建議了解其兼容性。否則在安裝或者使用過(guò)程中會(huì)出現(xiàn)各種問(wèn)題。WinCC軟件兼容性建議登錄西門子官方提供的“兼容性工具”網(wǎng)站查詢,網(wǎng)站中還可以下載較新的兼容性列表。兼容性工具鏈接(點(diǎn)擊)打開以上鏈接后如果網(wǎng)頁(yè)界面不是中文,可以手動(dòng)選擇中文界面。兼容性工具的使用方法請(qǐng)參考文檔:兼容性工具如何使用(
公司名: 上海騰希電氣技術(shù)有限公司
聯(lián)系人: 田禮科
電 話: 021-37660026
手 機(jī): 13681875601
微 信: 13681875601
地 址: 上海松江上海市松江區(qū)廣富林路4855弄星月大業(yè)**88號(hào)4樓
郵 編:
網(wǎng) 址: shtxjd.cn.b2b168.com
公司名: 上海騰希電氣技術(shù)有限公司
聯(lián)系人: 田禮科
手 機(jī): 13681875601
電 話: 021-37660026
地 址: 上海松江上海市松江區(qū)廣富林路4855弄星月大業(yè)**88號(hào)4樓
郵 編:
網(wǎng) 址: shtxjd.cn.b2b168.com
¥6300.00
網(wǎng)課專享 教學(xué)一體機(jī) 21.5寸
¥1980.00