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