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