產(chǎn)品詳情
長(zhǎng)沙 西門子 6ES7221-3BD30-0XB0 銷售中心
S7 通信:S71200做客戶端_S7300做服務(wù)器端
使用 STEP7 V11,S7-1200 的 PROFINET 通信口可以做 S7 通信的服務(wù)器端或客戶端。S7-1200 僅支持 S7 單邊通信,僅需在客戶端單邊組態(tài)連接和編程,而服務(wù)器端只準(zhǔn)備好通信的數(shù)據(jù)就行。
所以在編程組態(tài)和建立連接方面,S7-1200CPU 如果做為客戶端,只需在 S7-1200 這一側(cè)建立連接,并使用單邊編程方式 PUT,GET 指令進(jìn)行通信,而 S7-300CPU 側(cè)不用做任何工作。
所需要條件:
① S7-1200 /S7-300 CP343-1設(shè)備
② STEP7 V11
所完成的通信任務(wù):
① S7-1200CPU 將本地 DB3 中的數(shù)據(jù)寫到 S7-300CPU 中 DB4 中。
② S7-300CPU 通過(guò) CP 卡將本地 DB3 中的數(shù)據(jù)寫到S7-1200CPU 中 DB4 中。
在S7-1200 CPU一側(cè)配置編程
1. 使用 STEP7 V11軟件新建一個(gè)項(xiàng)目并完成硬件配置
在項(xiàng)目樹(shù) “Project tree”>“Devices & Networks” >“Networks view” 視圖下,創(chuàng)建兩個(gè)設(shè)備的連接。用鼠標(biāo)點(diǎn)中 PLC_1 PROFINET 通信口上,然后拖拽出一條線,到另外一個(gè) CP343-1 的 PROFINET 通信口的綠色小方框上,松開(kāi)鼠標(biāo),連接就建立起來(lái)了。
2. 網(wǎng)絡(luò)組態(tài)
打開(kāi) “Network View” 配置網(wǎng)絡(luò),點(diǎn)中左上角的“連接”圖標(biāo),這時(shí)所有 CPU 變成亮藍(lán)色,然后選中S7-1200CPU,右鍵選擇添加新的連接, 在連接列表里建立新的連接并選擇連接對(duì)象和通信協(xié)議,如圖1. 所示。
圖1. 建立S7連接
圖2. 定義連接對(duì)方地址
圖3. 定義通信雙方 TSAP號(hào)
注意:S7-300預(yù)留給S7連接TSAP地址:03.02;如果通信伙伴是S7-400,則要根據(jù)CPU槽位來(lái)決定TSAP地址,例如: CPU400在3號(hào)槽,則TSAP地址為03.03。
配置完網(wǎng)絡(luò)連接,編譯存盤并下載。
3. 軟件編程
在OB1中,從“Instruction”>“S7 Communication”>下,調(diào)用Get、Put通信指令。創(chuàng)建發(fā)送和接收數(shù)據(jù)塊 DB3和DB4,定義成100個(gè)字節(jié)的數(shù)組。程序見(jiàn)圖4
圖4. 程序調(diào)用功能
CALL “GET” | ,%DB2 | //調(diào)用 GET,使用背景DB塊:DB2 |
REQ | :=%M0.7 | //系統(tǒng)時(shí)鐘 2秒脈沖 |
ID | :=W#16#0100 | //連接號(hào),要與連接配置中一致,創(chuàng)建連接時(shí)的連接號(hào) |
NDR | :=%M4.0 | //為1時(shí),接收到新數(shù)據(jù) |
ERROR | :=%M4.1 | //為1時(shí),有故障發(fā)生 |
STATUS | :=%MW6 | //狀態(tài)代碼 |
ADDR_1 | :=P#DB3.DBX0.0 BYTE 100 | //從通信伙伴數(shù)據(jù)區(qū)讀取數(shù)據(jù)的地址 |
RD_1 | :=P#DB4.DBX0.0 BYTE 100 | //本地接收數(shù)據(jù)地址 |
CALL “PUT” | , %DB5 | //調(diào)用 PUT,使用背景DB塊:DB5 |
REQ | :=%M0.7 | //系統(tǒng)時(shí)鐘 2秒脈沖 |
ID | :=W#16#0100 | //連接號(hào),要與連接配置中一致,創(chuàng)建連接時(shí)的連接號(hào) |
DONE | :=%M8.0 | // 為1時(shí),發(fā)送完成 |
ERROR | :=%M8.1 | // 為1時(shí),有故障發(fā)生 |
STATUS | :=%MW10 | // 狀態(tài)代碼 |
ADDR_1 | :=P#DB4.DBX0.0 BYTE 100 | // 發(fā)送到通信伙伴數(shù)據(jù)區(qū)的地址 |
SD_1 | :=P#DB3.DBX0.0 BYTE 100 | // 本地發(fā)送數(shù)據(jù)區(qū) |
4. 監(jiān)控結(jié)果
通過(guò)在S7-1200側(cè)編程進(jìn)行S7通訊 ,實(shí)現(xiàn)兩個(gè)CPU之間數(shù)據(jù)交換,監(jiān)控結(jié)果如圖5.
圖5. 監(jiān)控結(jié)果
常見(jiàn)問(wèn)題
在 SIMATIC S7-1200 CPU 的用戶程序中如何編寫“GET” 和“PUT” 指令來(lái)傳遞多于 160 字節(jié)數(shù)據(jù)?
回答:
“GET” 指令一行調(diào)用三次,使用同一個(gè)連接號(hào),這樣才能接收 400 個(gè)字節(jié)的數(shù)據(jù)。
“PUT” 指令一行調(diào)用兩次,使用同一個(gè)連接號(hào),這樣才能接收 240 個(gè)字節(jié)的數(shù)據(jù)。
S7 通信:S7-1200 做客戶端 S7-300PN 口做服務(wù)器端
使用 STEP7 V11,S7-1200 的 PROFINET 通信口可以做 S7 通信的客戶端或服務(wù)器,S7-1200 僅支持 S7 單邊通信,僅需在客戶端單邊組態(tài)連接和編程,而服務(wù)器端只準(zhǔn)備好通信的數(shù)據(jù)就行。
所以在編程組態(tài)和建立連接方面,S7-1200CPU 如果做為客戶端,只需在 S7-1200 這一側(cè)建立連接,并使用單邊編程方式 PUT,GET 指令進(jìn)行通信,而 S7-300CPU 側(cè)不用做任何工作。
所需條件:
① S7-1200/S7-300(集成PN口)
② STEP7 V11
所完成的通信任務(wù):
① S7-1200 CPU 讀取 S7-300 CPU中 DB1 的數(shù)據(jù)到 S7-1200 的 DB3 中。
② S7-1200 CPU 將本地 DB4 中的數(shù)據(jù)寫到 S7-300 CPU中 DB2 中。
在S7-1200 CPU一側(cè)配置編程
1. 使用 STEP7 V11 軟件新建一個(gè)項(xiàng)目并完成硬件配置
在項(xiàng)目樹(shù) “Project tree”>“Devices & Networks” >“Networks view” 視圖下,創(chuàng)建兩個(gè)設(shè)備的連接。用鼠標(biāo)點(diǎn)中 PLC_2 上 S7-1200CPU 的 PROFINET 通信口的綠色小方框,然后拖拽出一條線,到另外一個(gè)PLC_1 上的PROFINET通信口上,松開(kāi)鼠標(biāo),連接就建立。
2. 網(wǎng)絡(luò)組態(tài)
打開(kāi) “Network View” 配置網(wǎng)絡(luò),首先點(diǎn)中左上角的“Connections”圖標(biāo),選擇“S7 Connection”,然后選中 S7-1200 CPU,然后右鍵選擇“Add new connection”添加新的連接,如圖1. 所示。
圖1. 添加連接
然后在“Create new connection”窗口中,選擇“Unspecified”,然后點(diǎn)擊“Add”建立 S7 連接,如圖2.所示。
圖2.建立 S7 連接
“S7_Connection_1”為建立的連接,選中連接,在屬性的“General”條目中定義連接對(duì)方 S7-300PN 口的 IP 地址,如下圖3.所示。
圖3. 定義連接對(duì)方的 IP 地址
圖4. 定義通訊雙方的 TSAP 號(hào)
注意:S7-300 預(yù)留給 S7 連接 TSAP 地址:03.02;如果通信伙伴是 S7-400 ,則要根據(jù) CPU 槽位來(lái)決定 TSAP 地址,例如: CPU400 在 3 號(hào)槽,則 TSAP 地址為 03.03。
圖5. 連接 ID 號(hào)
配置完網(wǎng)絡(luò)連接,編譯保存并下載。
圖6. 通訊連接狀態(tài)
3. 軟件編程
在OB1中,從“Instruction” >“Communication” >“S7 Communication”下,調(diào)用 Get、Put 通信指令,創(chuàng)建接收和發(fā)送數(shù)據(jù)塊 DB3 和 DB4,定義成 101 個(gè)字節(jié)的數(shù)組,程序調(diào)用如下圖7.所示。
圖7. 程序調(diào)用功能
功能塊管腳說(shuō)明:
CALL “GET” | ,%DB1 | //調(diào)用 GET,使用背景DB塊:DB1; |
REQ | :=%M0.7 | //系統(tǒng)時(shí)鐘 2秒脈沖 ; |
ID | :=W#16#0100 | //連接號(hào),要與連接配置中一致,創(chuàng)建連接時(shí)的連接號(hào),如圖5.所示; |
NDR | :=%M2.0 | //為1時(shí),接收到新數(shù)據(jù); |
ERROR | :=%M2.1 | //為1時(shí),有故障發(fā)生; |
STATUS | :=%MW4 | //狀態(tài)代碼; |
ADDR_1 | :=P#DB1.DBX0.0 BYTE 10 | //從通信伙伴數(shù)據(jù)區(qū)讀取數(shù)據(jù)的地址; |
RD_1 | :=P#DB3.DBX0.0 BYTE 10 | //本地接收數(shù)據(jù)地址; |
CALL “PUT” | , %DB2 | //調(diào)用 PUT,使用背景DB塊:DB2; |
REQ | :=%M0.7 | //系統(tǒng)時(shí)鐘 2秒脈沖; |
ID | :=W#16#0100 | //連接號(hào),要與連接配置中一致,創(chuàng)建連接時(shí)的連接號(hào),如圖5.所示; |
DONE | :=%M3.0 | // 為1時(shí),發(fā)送完成; |
ERROR | :=%M3.1 | // 為1時(shí),有故障發(fā)生; |
STATUS | :=%MW6 | // 狀態(tài)代碼; |
ADDR_1 | :=P#DB2.DBX0.0 BYTE 10 | // 發(fā)送到通信伙伴數(shù)據(jù)區(qū)的地址; |
SD_1 | :=P#DB4.DBX0.0 BYTE 10 | // 本地發(fā)送數(shù)據(jù)區(qū)。 |
4. 監(jiān)控結(jié)果
通過(guò)在 S7-1200 側(cè)編程進(jìn)行 S7 通訊,實(shí)現(xiàn)兩個(gè) CPU 之間數(shù)據(jù)交換,監(jiān)控結(jié)果下圖8.所示。
?
S7 通信:S7-300PN 口做客戶端 S7-1200 做服務(wù)器端
使用 STEP7 V11,S7-1200 的 PROFINET 通信口可以做 S7 通信的客戶端或服務(wù)器,S7-1200 僅支持 S7 單邊通信,僅需在客戶端單邊組態(tài)連接和編程,而服務(wù)器端只準(zhǔn)備好通信的數(shù)據(jù)就行。
所以在編程組態(tài)和建立連接方面,S7-300PN口做客戶端,只需要在 S7-300CPU 一側(cè)建立單邊連接,使用單邊編程方式 PUT,GET 指令進(jìn)行通信,而 S7-1200CPU 將不用做任何編程工作。
注意:如果在S7-1200一側(cè)使用 DB 塊作為通信數(shù)據(jù)區(qū),必須將 DB 塊定義成絕對(duì)尋址(選擇“標(biāo)準(zhǔn)-與S7-300/400 兼容”),否則會(huì)造成通信失敗。
所需條件:
① S7-1200/S7-300(集成 PN 口)
② STEP7 V11
所完成的通信任務(wù):
① S7-300 CPU 讀取 S7-1200 CPU中 DB1 的數(shù)據(jù)到 S7-300 的 DB3 中。
② S7-300 CPU 將本地 DB4 中的數(shù)據(jù)寫到 S7-1200 CPU中 DB2 中。
在S7-300 CPU一側(cè)配置編程
1. 使用 STEP7 V11 軟件新建一個(gè)項(xiàng)目并完成硬件配置
在項(xiàng)目樹(shù) “Project tree”>“Devices & Networks” >“Networks view” 視圖下,創(chuàng)建兩個(gè)設(shè)備的連接。用鼠標(biāo)點(diǎn)中 PLC_1 上 317CPU 的 PROFINET 通信口的綠色小方框,然后拖拽出一條線,到另外一個(gè)PLC_2 上的PROFINET通信口上,松開(kāi)鼠標(biāo),連接就建立。
2. 網(wǎng)絡(luò)組態(tài)
打開(kāi) “Network View” 配置網(wǎng)絡(luò),首先點(diǎn)中左上角的“Connections”圖標(biāo),選擇“S7 Connection”,然后選中 317-2PN/DP CPU,然后右鍵選擇“Add new connection”添加新的連接,如圖1. 所示。
圖1. 添加連接
然后在“Create new connection”窗口中,選擇“Unspecified”,然后點(diǎn)擊“Add”建立 S7 連接,如圖2.所示。
圖2.建立 S7 連接
“S7_Connection_1”為建立的連接,選中連接,在屬性的“General”條目中定義連接對(duì)方 S7-1200PN 口的IP地址,如下圖3.所示。
圖3. 定義連接對(duì)方的 IP 地址
圖4. 定義通訊雙方的 TSAP 號(hào)
注意:S7-1200預(yù)留給S7連接兩個(gè)TSAP地址:03.01和03.00
圖5. 連接 ID 號(hào)
配置完網(wǎng)絡(luò)連接,編譯保存并下載。
圖6. 通訊連接狀態(tài)
3. 軟件編程
在 OB1 中,從“Instruction” >“Communication” >“S7 Communication”下,調(diào)用Get、Put通信指令,創(chuàng)建接收和發(fā)送數(shù)據(jù)塊 DB3 和 DB4,定義成 101 個(gè)字節(jié)的數(shù)組,程序調(diào)用如下圖7.所示。
圖7. 程序調(diào)用功能
功能塊管腳說(shuō)明:
CALL “GET” | ,%DB1 | //調(diào)用 GET,使用背景DB塊:DB1; |
REQ | :=%M0.7 | //系統(tǒng)時(shí)鐘 2秒脈沖 ; |
ID | :=W#16#0001 | //連接號(hào),要與連接配置中一致,創(chuàng)建連接時(shí)的連接號(hào),如圖5.所示; |
NDR | :=%M2.0 | //為1時(shí),接收到新數(shù)據(jù); |
ERROR | :=%M2.1 | //為1時(shí),有故障發(fā)生; |
STATUS | :=%MW4 | //狀態(tài)代碼; |
ADDR_1 | :=P#DB1.DBX0.0 BYTE 10 | //從通信伙伴數(shù)據(jù)區(qū)讀取數(shù)據(jù)的地址; |
RD_1 | :=P#DB3.DBX0.0 BYTE 10 | //本地接收數(shù)據(jù)地址; |
CALL “PUT” | , %DB2 | //調(diào)用 PUT,使用背景DB塊:DB2; |
REQ | :=%M0.7 | //系統(tǒng)時(shí)鐘 2秒脈沖; |
ID | :=W#16#0001 | //連接號(hào),要與連接配置中一致,創(chuàng)建連接時(shí)的連接號(hào),如圖5.所示; |
DONE | :=%M3.0 | // 為1時(shí),發(fā)送完成; |
ERROR | :=%M3.1 | // 為1時(shí),有故障發(fā)生; |
STATUS | :=%MW6 | // 狀態(tài)代碼; |
ADDR_1 | :=P#DB2.DBX0.0 BYTE 10 | // 發(fā)送到通信伙伴數(shù)據(jù)區(qū)的地址; |
SD_1 | :=P#DB4.DBX0.0 BYTE 10 | // 本地發(fā)送數(shù)據(jù)區(qū)。 |
4. 監(jiān)控結(jié)果
通過(guò)在 S7-300 側(cè)編程進(jìn)行 S7 通訊,實(shí)現(xiàn)兩個(gè) CPU 之間數(shù)據(jù)交換,監(jiān)控結(jié)果下圖8.所示。
S7-1200 CPU 通過(guò)ETHERNET與S7-200 CPU 通信
S7-1200 CPU 與 S7-200 CPU 之間的以太網(wǎng)通信只能通過(guò) S7 通信來(lái)實(shí)現(xiàn),因?yàn)?S7-200 的以太網(wǎng)模塊只支持S7 通信。而在 STEP7 v11中, S7-1200 的 PROFINET 通信口可以做 S7 通信的服務(wù)器端或客戶端。當(dāng)S7-200作為客戶端,S7-1200作為服務(wù)器,見(jiàn)“S7-1200 CPU 通過(guò)ETHERNET與S7-200 CPU 通信”;當(dāng)S7-200作為服務(wù)器,S7-1200作為客戶端,由于S7-1200 僅支持 S7 單邊通信,需在客戶端單邊組態(tài)連接和編程,而作為服務(wù)器端的S7-200只需設(shè)置為服務(wù)器準(zhǔn)備好通信的數(shù)據(jù)就行。
硬件和軟件需求及所完成的通信任務(wù)
硬件:
① S7-1200 CPU 硬件版本V2.0或更高
② S7-200 CPU + CP243-1
③ PC (帶以太網(wǎng)卡)
④ PC/PPI 電纜
⑤ TP以太網(wǎng)電纜
軟件:
① STEP7 V11 SP2
② STEP 7 Micro/WIN V4.0 SP9
所完成的通信任務(wù):
① S7-1200 將通信數(shù)據(jù)區(qū) DB1 中的212 個(gè)字節(jié)發(fā)送到 S7-200 的VB 數(shù)據(jù)區(qū)。
② S7-1200 讀取 S7–200中的VB數(shù)據(jù)區(qū)存儲(chǔ)到S7-1200 的數(shù)據(jù)區(qū)DB2 。
S7-200 Server 端的組態(tài)
1. 打開(kāi) STEP 7 Micro/WIN 軟件,創(chuàng)建一個(gè)新項(xiàng)目,在“PLC”>“TYPE”選擇所使用 CPU 的型號(hào),如圖1. 所示。
圖1. 選擇S7-200 CPU 類型
2. 選擇“工具”>“以太網(wǎng)向?qū)А?進(jìn)入 CP243-1 的向?qū)渲?,如圖2. 所示。
圖2. 使用以太網(wǎng)向?qū)?br />
3. 選擇CP243-1 模板的位置。
CP243-1 緊鄰 CPU 安裝,所以模板位置為0 ,也可以通過(guò)“讀取模塊”讀出模板位置,如圖3. 所示。
圖3. 選擇模板位置
4. 設(shè)置 CP243-1 模板的 IP 地址
IP 地址:192. 168. 70. 101 ,子網(wǎng)掩碼:255. 255. 255. 0,如圖4.所示。
圖4. 設(shè)置網(wǎng)絡(luò)地址
5. 設(shè)置模塊所占用輸出地址字節(jié)和連接數(shù),如圖5. 所示。
圖5. 設(shè)置占用輸出地址及網(wǎng)絡(luò)連接數(shù)
6. 將CP243-1 定義為 Server 端,如圖6. 所示。
圖 6. 定義為 Server 端
注意:本例S7-200中安裝的CP243-1緊鄰CPU,位置為0,故TSAP地址為10.00;若CP243-1在位置為1,則TSAP地址為10.01。
7. 選擇CRC校驗(yàn),如圖7. 所示。
圖7. 選擇CRC 較驗(yàn)
8. 為配置分配存儲(chǔ)區(qū)
根據(jù)以態(tài)網(wǎng)的配置,需要一個(gè)V存儲(chǔ)區(qū),用戶可以指定一個(gè)未用過(guò)的V存儲(chǔ)區(qū)的起始地址,也可以點(diǎn)擊“建議地址”按鈕使用建議地址。如圖8. 所示。
圖8. 為配置分配存儲(chǔ)區(qū)
9. 生成以太網(wǎng)用戶子程序。如圖9. 所示。
圖9. 生成子程序
10. 調(diào)用向?qū)е猩傻淖映绦?,并將程序下載到CPU中。如圖10. 所示。
圖10. 調(diào)用子程序
S7-1200 Client 端的配置編程
1. 使用 STEP7 V11軟件新建一個(gè)項(xiàng)目并完成硬件配置,網(wǎng)絡(luò)組態(tài)
1.1 在“項(xiàng)目樹(shù)”>“設(shè)備組態(tài)”>“網(wǎng)絡(luò)視圖”下,按如下圖片中1~6的步驟建立S7連接,如圖11. 所示。
圖11. 建立S7連接
1.2 按如下圖片中1~3的步驟填寫連接參數(shù),如圖12. 所示。
圖12. 定義連接對(duì)方IP地址
1.3 在“地址詳細(xì)信息”中設(shè)置通信伙伴的TSAP地址,如圖13. 所示。
圖13. 定義通信雙方TSAP號(hào)
注意:通訊伙伴的TSAP地址設(shè)定必須與CP243-1的組態(tài)一致,如圖6所示。
2. 軟件編程
2.1 創(chuàng)建發(fā)送數(shù)據(jù)塊DB1(接收區(qū)數(shù)據(jù)塊DB2類似),定義為212個(gè)字節(jié)的數(shù)組,如圖14.和15. 所示。
圖14. 創(chuàng)建發(fā)送數(shù)據(jù)塊DB1
圖15. 定義212個(gè)字節(jié)的數(shù)組
2.2 在OB1中,從“指令”-->“S7 通信”下,調(diào)用Get、Put通信指令,程序見(jiàn)圖16。
圖16. 程序調(diào)用功能
CALL “PUT” | , %DB3 | //調(diào)用 PUT,使用背景DB塊:DB3 |
REQ | :=%M0.7 | //系統(tǒng)時(shí)鐘 2秒脈沖 |
ID | :=W#16#0100 | //連接號(hào),要與連接配置中一致,創(chuàng)建連接時(shí)的連接號(hào) |
DONE | :=%M2.0 | // 為1時(shí),發(fā)送完成 |
ERROR | :=%M2.1 | // 為1時(shí),有故障發(fā)生 |
STATUS | :=%MW4 | // 狀態(tài)代碼 |
ADDR_1 | :=P#DB1.DBX1000.0 BYTE 212 | // 發(fā)送到通信伙伴數(shù)據(jù)區(qū)的地址 |
SD_1 | :=P#DB1.DBX0.0 BYTE 212 | // 本地發(fā)送數(shù)據(jù)區(qū) |
CALL “GET” | , %DB4 | //調(diào)用 GET,使用背景DB塊:DB4 |
REQ | :=%M0.7 | //系統(tǒng)時(shí)鐘 2秒脈沖 |
ID | :=W#16#0100 | //連接號(hào),要與連接配置中一致,創(chuàng)建連接時(shí)的連接號(hào) |
NDR | :=%M2.2 | //為1時(shí),接收到新數(shù)據(jù) |
ERROR | :=%M2.3 | //為1時(shí),有故障發(fā)生 |
STATUS | :=%MW6 | //狀態(tài)代碼 |
ADDR_1 | :=P#DB1.DBX2000.0 BYTE 212 | //從通信伙伴數(shù)據(jù)區(qū)讀取數(shù)據(jù)的地址 |
RD_1 | :=P#DB2.DBX0.0 BYTE 212 | //本地接收數(shù)據(jù)地址 |
3. 監(jiān)控結(jié)果
通過(guò)在S7-1200側(cè)編程進(jìn)行S7通信,實(shí)現(xiàn)兩個(gè)CPU之間的數(shù)據(jù)交換,監(jiān)控結(jié)果如圖17。
圖17. S71200和S7200監(jiān)控?cái)?shù)據(jù)
注意:S7-200中V區(qū)對(duì)應(yīng)于DB1,即在PUT指令中使用的通信伙伴數(shù)據(jù)區(qū)ADDR_1=P#DB1.DBX1000.0 BYTE 212在S7-200中對(duì)于為VB1000~VB1211。
長(zhǎng)沙 西門子 6ES7221-3BD30-0XB0