簡(jiǎn)介
在以下示例中,將在 S7-1500 系列的兩個(gè) CPU 間創(chuàng)建一個(gè)編程連接,并將數(shù)據(jù)記錄從 CPU 1 發(fā)送到 CPU 2 中。
要求
兩個(gè) S7-1500 系列的 CPU 通過(guò) PROFINET 進(jìn)行互連,它們之間的連接尚未組態(tài)。
基于“屬性 > 保護(hù)”(Properties > Protection) 中的低保護(hù)級(jí)別,可確保每個(gè) CPU 都可進(jìn)行讀寫(xiě)訪問(wèn)。
CPU 1 中的程序:數(shù)據(jù)的存儲(chǔ)
為數(shù)據(jù)記錄,創(chuàng)建以下 PLC 數(shù)據(jù)類(lèi)型。
要進(jìn)行數(shù)據(jù)傳送,需基于所創(chuàng)建的 PLC 數(shù)據(jù)類(lèi)型,創(chuàng)建以下數(shù)據(jù)塊(“SLI_plcDB_sendData_TSEND”)。
要對(duì)該數(shù)據(jù)進(jìn)行存儲(chǔ),需使用以下結(jié)構(gòu)和變量,創(chuàng)建一個(gè)全局?jǐn)?shù)據(jù)塊(“SLI_gDB_TSEND”)。
CPU 1 中的程序:參數(shù)互連
創(chuàng)建函數(shù)塊“SLI_FB_TSEND”,并在該數(shù)據(jù)塊中創(chuàng)建以下局部變量。
程序段 1:互連“TCON”指令的參數(shù),如下所示:
程序段 2:如果 TCON 出錯(cuò),則保存狀態(tài)信息,如下所示。
程序段 3:互連“TSEND”指令的參數(shù),如下所示:
程序段 4:如果 TSEND 出錯(cuò),則保存狀態(tài)信息,如下所示。
程序段 5:互連“TDISCON”指令的參數(shù),如下所示:
程序段 6:如果 TDISCON 出錯(cuò),則保存狀態(tài)信息,如下所示。
CPU 1 中的程序:TCON 的組態(tài)
要互連輸入?yún)?shù) CONNECT,可通過(guò)“屬性 > 組態(tài)”(Properties > Configuration) 打開(kāi)指令“TCON”的向?qū)А?/p>
對(duì) TCON 的組態(tài)進(jìn)行如下設(shè)置:
輸入字段 | 條目 |
---|---|
端點(diǎn) |
在下拉列表中,選擇作為發(fā)送方和接收方的 CPU。 系統(tǒng)將自動(dòng)輸入接口、子網(wǎng)和地址。 |
連接數(shù)據(jù) |
在下拉列表中選擇“新建”(New),為每個(gè) CPU 創(chuàng)建一個(gè)數(shù)據(jù)塊。 該數(shù)據(jù)塊用于存儲(chǔ)連接數(shù)據(jù)。數(shù)據(jù)塊的名稱(chēng)可任意設(shè)置。 為 CPU 1(本地 CPU)建立主動(dòng)連接。 |
連接類(lèi)型 |
選擇條目“ISO-on-TCP”。 這意味著,建立連接時(shí)將使用“ISO-on-TCP”協(xié)議的以太網(wǎng)連接。 |
連接 ID |
在該通信連接中,輸入任意一個(gè)選定的連接 ID。 該連接 ID 在項(xiàng)目中尚未分配。確保數(shù)值與所用變量“connectionID”中的值相同。 |
TSAP ID | 在選擇“ISO-on-TCP”連接類(lèi)型時(shí),系統(tǒng)將自動(dòng)輸入詳細(xì)的地址信息。 |
CPU 2 中的程序:數(shù)據(jù)的存儲(chǔ)
為數(shù)據(jù)記錄,創(chuàng)建以下 PLC 數(shù)據(jù)類(lèi)型。
要進(jìn)行數(shù)據(jù)傳送,需基于所創(chuàng)建的 PLC 數(shù)據(jù)類(lèi)型,創(chuàng)建以下數(shù)據(jù)塊(“SLI_plcDB_rcvData_TRCV”)。
要對(duì)該數(shù)據(jù)進(jìn)行存儲(chǔ),需使用以下結(jié)構(gòu)和變量,創(chuàng)建一個(gè)全局?jǐn)?shù)據(jù)塊(“SLI_gDB_TRCV”)。
CPU 2 中的程序:參數(shù)互連
創(chuàng)建函數(shù)塊“SLI_FB_TRCV”,并在該數(shù)據(jù)塊中創(chuàng)建以下局部變量。
程序段 1:互連“TCON”指令的參數(shù),如下所示:
程序段 2:如果 TCON 出錯(cuò),則保存狀態(tài)信息,如下所示。
程序段 3:互連“TRCV”指令的參數(shù),如下所示:
程序段 4:如果 TRCV 出錯(cuò),則保存狀態(tài)信息,如下所示。
程序段 5:互連“TDISCON”指令的參數(shù),如下所示:
程序段 6:如果 TDISCON 出錯(cuò),則保存狀態(tài)信息,如下所示。
CPU 2 中的程序:TCON 的組態(tài)
根據(jù) CPU 1 / TCON 的示例,對(duì) CPU 2 / TCON 連接進(jìn)行以下設(shè)置:
說(shuō)明 連接數(shù)據(jù) 完成 CPU 1 / TCON 的組態(tài)之后,已創(chuàng)建了一個(gè)數(shù)據(jù)塊(“PLC_Tsend_Connection_DB”,“PLC_Trcv_Connection_DB”),并帶有為各 CPU 存儲(chǔ)的連接數(shù)據(jù)。如果不希望創(chuàng)建新的數(shù)據(jù)塊并輸入連接數(shù)據(jù),則可直接使用創(chuàng)建的數(shù)據(jù)塊(“PLC_Tsend_Connection_DB”,“PLC_Trcv_Connection_DB”)。 如果要選擇已創(chuàng)建的數(shù)據(jù)塊,則這些數(shù)據(jù)塊必須位于“項(xiàng)目樹(shù)”(project tree) 的“程序塊 > 系統(tǒng)塊”(Program blocks > System blocks) 中。 |
建立連接的操作步驟
請(qǐng)遵循相關(guān)操作步驟的順序:
1.對(duì)于 CPU 2 / TCON,將參數(shù) REQ 更改為“TRUE”。
2.對(duì)于 CPU 1 / TCON,將參數(shù) REQ 更改為“TRUE”。
3.對(duì)于 CPU 2 / TCON,將參數(shù) REQ 更改為“FALSE”。
4.對(duì)于 CPU 1 / TCON,將參數(shù) REQ 更改為“FALSE”。
終止連接的操作步驟
請(qǐng)遵循相關(guān)操作步驟的順序:
1.對(duì)于 CPU 1 / TDISCON,將參數(shù) REQ 更改為“TRUE”。
2.對(duì)于 CPU 2 / TDISCON,將參數(shù) REQ 更改為“TRUE”。
3.對(duì)于 CPU 1 / TDISCON,將參數(shù) REQ 更改為“FALSE”。
4.對(duì)于 CPU 2 / TDISCON,將參數(shù) REQ 更改為“FALSE”。
CPU 1 的行為
程序段 1 (TCON):
輸入?yún)?shù) REQ(“TCON.start”)的信號(hào)狀態(tài)為“TRUE”時(shí),啟動(dòng)指令“TCON”。多次調(diào)用時(shí),指令“TCON”將創(chuàng)建與伙伴 CPU 的通信連接。為此,可通過(guò)輸入?yún)?shù) CONNECT(或數(shù)據(jù)塊“PLC_Trcv_Connection_DB”)檢索該連接數(shù)據(jù)。
連接設(shè)置成功時(shí),輸出參數(shù) DONE(“#doneCON”)的信號(hào)狀態(tài)為“TRUE”,且輸出參數(shù) STATUS(“TCON.status”)的值為“0000”。由于輸出參數(shù)的值僅在有效時(shí)才顯示,因此成功狀態(tài)將保存在變量“TCON.done”中。復(fù)位所有之前連接終止的成功狀態(tài)(“TDISCON.done”)。
輸出參數(shù) ERROR(“TCON.error”)或變量“TCON.memErrStatus”)可用于指示本示例中的執(zhí)行過(guò)程是否出錯(cuò)。
程序段 2 (TCON):
如果 TCON 發(fā)出信號(hào)指示錯(cuò)誤(“TCON.error”為“TRUE”),則所報(bào)告的狀態(tài)(“TCON.status”)將進(jìn)行永久性存儲(chǔ)(“TCON.memErrStatus”)。
程序段 3 (TSEND):
根據(jù)輸入?yún)?shù) ID(“connectionID”),指令“TSEND”可確定待使用的通信連接。
輸入?yún)?shù) REQ(“TSEND.start”)的信號(hào)狀態(tài)為“TRUE”時(shí),啟動(dòng)指令“TSEND”。進(jìn)行多次調(diào)用時(shí),“TSEND”指令將傳送輸入?yún)?shù) DATA(“SLI_plcDB_sendData_TSEND”)處檢測(cè)到的數(shù)據(jù)記錄。
數(shù)據(jù)記錄傳送成功時(shí),輸出參數(shù) DONE(“#doneSEND”)的信號(hào)狀態(tài)為“TRUE”,且輸出參數(shù) STATUS(“TSEND.status”)的值為“0000”。由于輸出參數(shù)的值僅在有效時(shí)才顯示,因此成功狀態(tài)將保存在變量“TSEND.done”中。
輸出參數(shù) ERROR(“TSEND.error”)或變量“TSEND.memErrStatus”)可用于指示本示例中的執(zhí)行過(guò)程是否出錯(cuò)。
程序段 4 (TSEND):
如果 TSEND 發(fā)出信號(hào)指示錯(cuò)誤(“TSEND.error”為“TRUE”),則所報(bào)告的狀態(tài)(“TSEND.status”)將進(jìn)行永久性存儲(chǔ)(“TSEND.memErrStatus”)。
程序段 5 (TDISCON):
輸入?yún)?shù) REQ(“TDISCON.start”)的信號(hào)狀態(tài)為“TRUE”時(shí),啟動(dòng)指令“TDISCON”。多次調(diào)用時(shí),指令“TDISCON”將終止該通信連接。為此,需檢索輸入?yún)?shù) ID(“connectionID”)中使用的通信連接。
連接終止成功時(shí),輸出參數(shù) DONE(“#doneDISC”)的信號(hào)狀態(tài)為“TRUE”,且輸出參數(shù) STATUS(“TDISCON.status”)的值為“0000”。由于輸出參數(shù)的值僅在有效時(shí)才顯示,因此成功狀態(tài)將保存在變量“TDISCON.done”中。復(fù)位連接設(shè)置(“TCON.done”)和數(shù)據(jù)傳送(“TSEND.done”)的成功消息。
輸出參數(shù) ERROR(“TDISCON.error”)或變量“TDISCON.memErrStatus”)可用于指示本示例中的執(zhí)行過(guò)程是否出錯(cuò)。
程序段 6 (TDISCON):
如果 TDISCON 發(fā)出信號(hào)指示錯(cuò)誤(“TDISCON.error”為“TRUE”),則所報(bào)告的狀態(tài)(“TDISCON.status”)將進(jìn)行永久性存儲(chǔ)(“TDISCON.memErrStatus”)。
CPU 2 的行為
TCON 和 TDISCON 的運(yùn)行與 CPU 1 中的相同。
程序段 3 (TRCV):
根據(jù)輸入?yún)?shù) ID(“connectionID”),指令“TRCV”可確定待使用的通信連接。
輸入?yún)?shù) EN_R(“TRCV.start”)的信號(hào)狀態(tài)為“TRUE”時(shí),啟動(dòng)指令“TRCV”。進(jìn)行多次調(diào)用時(shí),“TRCV”指令將接收所傳送的數(shù)據(jù)記錄。并檢查輸入?yún)?shù) DATA(“SLI_plcDB_rcvData_TRCV”)處的該數(shù)據(jù)記錄。
并通過(guò)輸出參數(shù) LEN(“#length”),確定 BYTE 中實(shí)際傳送的數(shù)據(jù)記錄長(zhǎng)度。僅當(dāng)傳送成功時(shí),才顯示該值。之后,將檢查“0”。數(shù)據(jù)記錄接收成功時(shí),輸出參數(shù) DONE(“#doneRCV”)的信號(hào)狀態(tài)為“TRUE”,且輸出參數(shù) STATUS(“TRCV.status”)的值為“0000”。
由于輸出參數(shù)的值僅在有效時(shí)才顯示,因此請(qǐng)進(jìn)行以下操作步驟:
成功狀態(tài)保存在變量“TRCV.done”中。
BYTE 長(zhǎng)度保存在變量“TRCV.readLength”中。
輸出參數(shù) ERROR(“TRCV.error”)或變量“TRCV.memErrStatus”)可用于指示本示例中的執(zhí)行過(guò)程是否出錯(cuò)。
程序段 4 (TRCV):
如果 TRCV 發(fā)出信號(hào)指示錯(cuò)誤(“TRCV.error”為“TRUE”),則所報(bào)告的狀態(tài)(“TRCV.status”)將進(jìn)行永久性存儲(chǔ)(“TRCV.memErrStatus”)。
審核編輯:劉清
-
電源管理
+關(guān)注
關(guān)注
115文章
6183瀏覽量
144509 -
西門(mén)子
+關(guān)注
關(guān)注
94文章
3039瀏覽量
115881 -
AUTOSAR
+關(guān)注
關(guān)注
10文章
362瀏覽量
21588 -
Profinet
+關(guān)注
關(guān)注
6文章
1183瀏覽量
23411 -
S7-1500
+關(guān)注
關(guān)注
3文章
300瀏覽量
6408
原文標(biāo)題:西門(mén)子博途:TCON、TDISCON、TSEND 和 TRCV 的編程示例
文章出處:【微信號(hào):gh_a8b121171b08,微信公眾號(hào):機(jī)器人及PLC自動(dòng)化應(yīng)用】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論