產(chǎn)地類(lèi)別 | 進(jìn)口 | 應(yīng)用領(lǐng)域 | 環(huán)保,化工,生物產(chǎn)業(yè),電子,電氣 |
---|
當(dāng)PLC投入運(yùn)行后,其工作過(guò)程一般分為三個(gè)階段,即輸入采樣、用戶(hù)程序執(zhí)行和輸出刷新三個(gè)階段。完成上述三個(gè)階段稱(chēng)作一個(gè)掃描周期。在整個(gè)運(yùn)行期間,PLC的CPU以一定的掃描速度重復(fù)執(zhí)行上述三個(gè)階段。
![]() |
參考價(jià) | 面議 |
更新時(shí)間:2023-08-12 20:45:40瀏覽次數(shù):387
聯(lián)系我們時(shí)請(qǐng)說(shuō)明是化工儀器網(wǎng)上看到的信息,謝謝!
西門(mén)子模塊代理商6ES7532-5HD00-0AB0 沈陽(yáng)西門(mén)子一級(jí)代理商
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 CPU
② PC(帶以太網(wǎng)卡)
③ TP電纜(以太網(wǎng)電纜)
軟件:
STEP7 V11 or Higher
所完成的通信任務(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 塊中。
1. 打開(kāi) STEP7 v11 軟件并新建項(xiàng)目
在 STEP7 v11的 “Portal View" 中選擇 “Create new project" 創(chuàng)建一個(gè)新項(xiàng)目
2. 添加硬件并命名PLC
然后進(jìn)入 “Project view",在“Project tree" 下雙擊 “Add new device",在對(duì)話框中選擇所使用的S7-1200 CPU添加到機(jī)架上,命名為 PLC_1,如圖1所示。
同樣方法再添加通信伙伴的S7-1200 CPU ,命名為 PLC_2。
圖1. 添加新設(shè)備
為了編程方便,使用 CPU 屬性中定義的時(shí)鐘位,定義方法如下:
在 “Project tree" > “PLC_1" > “Device configuration" 中,選中 CPU ,然后在下面的屬性窗口中,“Properties" > “System and clock memory" 下,將系統(tǒng)位定義在MB1,時(shí)鐘位定義在MB0,如圖2所示。
時(shí)鐘位我們主要使用 M0.3,它是以2Hz 的速率在0和1之間切換的一個(gè)位,可以使用它去自動(dòng)激活發(fā)送任務(wù)。
圖2. 系統(tǒng)位與時(shí)鐘位
3. 為 PROFINET 通信口分配以太網(wǎng)地址
在 “Device View"中點(diǎn)擊 CPU 上代表PROFINET 通信口的綠色小方塊,在下方會(huì)出現(xiàn)PROFINET 接口的屬性,在 “Ethernet addresses" 下分配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
4. 創(chuàng)建 CPU之間的邏輯網(wǎng)絡(luò)連接
在項(xiàng)目樹(shù) “Project tree">“Devices & Networks" >“Networks view" 視圖下,創(chuàng)建兩個(gè)設(shè)備的連接。用鼠標(biāo)點(diǎn)中 PLC_1 上的PROFINET通信口的綠色小方框,然后拖拽出一條線,到另外一個(gè)PLC_2 上的PROFINET通信口上,松開(kāi)鼠標(biāo),連接就建立起來(lái)了,如圖4所示。
圖4. 建立兩個(gè) CPU的邏輯連接
① 在第一個(gè) CPU 中調(diào)用發(fā)送通信指令,進(jìn)入 “Project tree" > “ PLC_1" > “Program blocks" > “OB1" 主程序中,從右側(cè)窗口 “Instructions" > “Communications" > “OPEN User Communications"下調(diào)用 “TCON" 指令,創(chuàng)建連接,如圖5所示。
圖5. 調(diào)用“TCON"通信指令
② 創(chuàng)建DB2 分配連接參數(shù),見(jiàn)圖6所示
圖6. 創(chuàng)建連接數(shù)據(jù)塊 DB2(Con_DB)
③ 定義PLC_1的 “TCON"連接參數(shù)
PLC_1 的 TCON 指令的連接參數(shù)需要在指令下方的屬性窗口“Properties"> “Configuration">“Connection parameter"中設(shè)置,如圖7所示。
圖7. 定義 TCON 連接參數(shù)
連接參數(shù)說(shuō)明:
End point | :可以通過(guò)點(diǎn)擊選擇按鈕選擇伙伴 CPU :PLC_2 |
Connection type | :選擇通信協(xié)議為 TCP(也可以選擇 ISO on TCP 或UDP協(xié)議) |
Connection ID | :連接的地址 ID 號(hào),這個(gè) ID 號(hào)在后面的編程里會(huì)用到 |
Connection data | :創(chuàng)建連接時(shí),生成的Con_DB塊。見(jiàn)圖2所示 |
Active connection setup | :選擇本地 PLC_1作為主動(dòng)連接 |
Address details | :定義通信伙伴方的端口號(hào)為:2000;如果選用的是 ISO on TCP 協(xié)議,則需要設(shè)定的TSAP 地址(ASCII 形式),本地 PLC_1可以設(shè)置成“PLC1",伙伴方 PLC_2 可以設(shè)置成“PLC2"。 |
① 調(diào)用 “TSEND" 在OB1內(nèi)調(diào)用 發(fā)送100個(gè)字節(jié)數(shù)據(jù)到PLC2中
進(jìn)入 “Project tree" > “ PLC_1" > “Program blocks" > “OB1" 主程序中,從右側(cè)窗口 “Instructions" > “Communications" > “OPEN User Communications"下調(diào)用 “TSEND" 指令,如圖8所示。
圖8. 調(diào)用 TSEND
② 創(chuàng)建并定義PLC_1的發(fā)送數(shù)據(jù)區(qū) DB 塊。
通過(guò)“Project tree">“PLC_1">“Program blocks">“Add new block",選擇“Data block" 創(chuàng)建 DB 塊,選擇絕對(duì)尋址,點(diǎn)擊“OK"鍵,定義發(fā)送數(shù)據(jù)區(qū)為 100個(gè)字節(jié)的數(shù)組,如圖9及圖10所示。
圖9. 創(chuàng)建發(fā)送數(shù)據(jù)區(qū) DB 塊
注意:對(duì)于雙邊編程通信的 CPU ,如果通信數(shù)據(jù)區(qū)使用 DB 塊,既可以將 DB 塊定義成符號(hào)尋址,也可以定義成絕對(duì)尋址。使用指針尋址方式,必須創(chuàng)建絕對(duì)尋址的 DB 塊。
圖10. 定義發(fā)送數(shù)據(jù)區(qū)為字節(jié)類(lèi)型的數(shù)組 圖 PLC1_TSENDC_DATA
③ 定義 PLC_1 的“TSEND"發(fā)送通信塊接口參數(shù),如圖11所示。
圖11. 定義 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塊要選用絕對(duì)尋址 |
輸出接口參數(shù):
DONE | := M300.0 | //任務(wù)執(zhí)行完成并且沒(méi)有錯(cuò)誤,該位置 1 |
BUSY | := M300.1 | // 該位為 1,代表任務(wù)未完成,不能激活新任務(wù) |
ERROR | := M300.2 | //通信過(guò)程中有錯(cuò)誤發(fā)生,該位置 1 |
STATUS | := MW302 | //有錯(cuò)誤發(fā)生時(shí),會(huì)顯示錯(cuò)位信息號(hào) |
為了實(shí)現(xiàn) PLC_1 接收來(lái)自 PLC_2 的數(shù)據(jù),則在 PLC_1 中調(diào)用接收指令T_RCV 并配置基本參數(shù)。
① 創(chuàng)建并定義PLC_1的接收數(shù)據(jù)區(qū) DB 塊。
通過(guò)“Project tree">“PLC_1">“Program blocks">“Add new block",選擇“Data block" 創(chuàng)建 DB 塊,選擇絕對(duì)尋址,點(diǎn)擊“OK"鍵,定義發(fā)送數(shù)據(jù)區(qū)為 100個(gè)字節(jié)的數(shù)組,如圖12及圖13所示。
圖12. 創(chuàng)建接收數(shù)據(jù)區(qū) DB 塊
注意:對(duì)于雙邊編程通信的 CPU ,如果通信數(shù)據(jù)區(qū)使用 DB 塊,既可以將 DB 塊定義成符號(hào)尋址,也可以定義成絕對(duì)尋址。使用指針尋址方式,必須創(chuàng)建絕對(duì)尋址的 DB 塊。
圖13. 定義接收數(shù)據(jù)區(qū)為字節(jié)類(lèi)型的數(shù)組
② 調(diào)用 “TRCV" 在OB1內(nèi)調(diào)用
進(jìn)入 “Project tree" > “ PLC_1" > “Program blocks" > “OB1" 主程序中,從右側(cè)窗口 “Instructions" > “Communications" > “OPEN User Communications"下調(diào)用 “TRCV" 指令,配置接口參數(shù),如圖14所示。
圖14. 調(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é) |
DATA | := P#DB4.DBX0.0 BYTE 100 | // 接收數(shù)據(jù)區(qū)的地址 |
輸出接口參數(shù):
NDR | := M310.0 | // 該位為 1,接收任務(wù)成功完成 |
BUSY | := M310.1 | // 該位為 1,代表任務(wù)未完成,不能激活新任務(wù) |
ERROR | := M310.2 | // 通信過(guò)程中有錯(cuò)誤發(fā)生,該位置 1 |
STATUS | := MW312 | // 有錯(cuò)誤發(fā)生時(shí),會(huì)顯示錯(cuò)誤信息號(hào) |
RCVD_LEN | := MW314 | // 實(shí)際接收數(shù)據(jù)的字節(jié)數(shù) |
注意:LEN設(shè)置為 65535 可以接收變長(zhǎng)數(shù)據(jù)。
① 在第一個(gè) CPU 中調(diào)用發(fā)送通信指令,進(jìn)入 “Project tree" > “ PLC_2" > “Program blocks" > “OB1" 主程序中,從右側(cè)窗口 “Instructions" > “Communications" > “OPEN User Communications"下調(diào)用 “TCON" 指令,創(chuàng)建連接,如圖15所示。
圖15. 調(diào)用“TCON"通信指令
② 創(chuàng)建DB2 分配連接參數(shù),見(jiàn)圖16所示
圖16. 創(chuàng)建連接數(shù)據(jù)塊 DB2(Con_DB)
③ 定義 PLC_2的 連接參數(shù) “TCON"
PLC_1 的 TCON 指令的連接參數(shù)需要在指令下方的屬性窗口“Properties"> “Configuration">“Connection parameter"中設(shè)置,如圖17所示。
圖17. 定義 TCON 連接參數(shù)
連接參數(shù)說(shuō)明:
End point | :可以通過(guò)點(diǎn)擊選擇按鈕選擇伙伴 CPU :PLC_2 |
Connection type | :選擇通信協(xié)議為 TCP(也可以選擇 ISO on TCP 或UDP協(xié)議) |
Connection ID | :連接的地址 ID 號(hào),這個(gè) ID 號(hào)在后面的編程里會(huì)用到 |
Connection data | :創(chuàng)建連接時(shí),生成的Con_DB塊。見(jiàn)圖2所示 |
Active connection setup | :選擇通信伙伴 PLC_1作為主動(dòng)連接 |
Address details | :定義通信伙伴方的端口號(hào)為:2000;如果選用的是 ISO on TCP 協(xié)議,則需要設(shè)定的TSAP 地址(ASCII 形式),本地 PLC_2可以設(shè)置成“PLC2",伙伴方 PLC_1 可以設(shè)置成“PLC1"?! ?/td> |
接收從PLC_1 發(fā)送到 PLC_2的100個(gè)字節(jié)數(shù)據(jù)
① 創(chuàng)建并定義接收數(shù)據(jù)區(qū) DB 塊。
通過(guò)“Project tree">“ PLC_2">“Program blocks">“Add new block" ,選擇 “Data block"創(chuàng)建 DB 塊,選擇符號(hào)尋址,點(diǎn)擊“OK"鍵,定義接收數(shù)據(jù)區(qū)為 100 個(gè)字節(jié)的數(shù)組,圖18及圖19所示。
圖18. 創(chuàng)建接收數(shù)據(jù)區(qū) DB 塊
圖19. 定義接收區(qū)為 100 個(gè)字節(jié)的數(shù)組
② 定義調(diào)用 “TRCV" 程序
圖20. TRCV 塊參數(shù)配置
參數(shù)配置:
輸入接口參數(shù):
EN_R | := TRUE | // 準(zhǔn)備好接收數(shù)據(jù) |
ID | := 1 | // 建立連接并一直保持連接 |
LEN | := 100 | // 接收的數(shù)據(jù)長(zhǎng)度為 100 個(gè)字節(jié) |
DATA | := P#DB4.DBX0.0 BYTE 100 | //接收數(shù)據(jù)區(qū),DB 塊選用的是符號(hào)尋址 |
輸出接口參數(shù):
DONE | := M310.0 | // 任務(wù)執(zhí)行完成并且沒(méi)有錯(cuò)誤,該位置 1 |
BUSY | := M310.1 | // 該位為 1,代表任務(wù)未完成,不能激活新任務(wù) |
ERROR | := M310.2 | // 通信過(guò)程中有錯(cuò)誤發(fā)生,該位置 1 |
STATUS | := MW312 | // 有錯(cuò)誤發(fā)生時(shí),會(huì)顯示錯(cuò)誤信息號(hào) |
RCVD_LEN | := MW314 | // 實(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è)連接,如圖21所示。
圖21. 調(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 | :M300.0 | // 任務(wù)執(zhí)行完成并且沒(méi)有錯(cuò)誤,該位置 1 |
BUSY | :M300.1 | // 該位為 1,代表任務(wù)未完成,不能激活新任務(wù) |
ERROR | :M300.2 | // 通信過(guò)程中有錯(cuò)誤發(fā)生,該位置 1 |
STATUS | :MW302 | //有錯(cuò)誤發(fā)生時(shí),會(huì)顯示錯(cuò)誤信息號(hào) |
**兩個(gè) CPU 中的所有硬件組態(tài)及程序,從監(jiān)控表中可以看到,PLC_1 的 TSEND 指令發(fā)送數(shù)據(jù):“66",“55",“44"數(shù)據(jù),PLC_2 接收到數(shù)據(jù):“66",“55",“44"。而 PLC_2 發(fā)送數(shù)據(jù)“11",“22",“33",PLC_1接收數(shù)據(jù)是“11",“22",“33"",如圖22所示。