簡介
在以下示例中,在 S7-1500 系列的兩個 CPU 間創建一個編程連接,并將一個字符串從 CPU 1 發送到 CPU 2。待發送字符串的數據類型為 STRING。
要求
兩個 S7-1500 系列的 CPU 通過 PROFINET 進行互連,它們之間的連接尚未組態。
基于“屬性 > 保護”(Properties > Protection) 中的低保護級別,可確保每個 CPU 都可進行讀寫訪問。
CPU 1 中的程序
在全局數據塊中,創建 9 個變量存儲“TSEND_C”的數據。
創建函數塊“SLI_FB_TSEND_C”,并在該函數塊中創建以下局部變量。
程序段 1:互連“TSEND_C”指令的參數,如下所示:但請勿互連參數 CONNECT。
程序段 2:保存 TSEND_C 的錯誤狀態,如下所示。
TSEND_C 的組態
要互連參數 CONNECT,可通過“屬性 > 組態”(Properties > Configuration) 打開指令“TSEND_C”的向導。
對 TSEND_C 的組態進行如下設置:
輸入字段 | 條目 |
---|---|
端點 |
在下拉列表中,選擇作為發送方和接收方的 CPU。 系統將自動輸入接口、子網和地址。 |
連接數據 |
在下拉列表中選擇“新建”(New),為每個 CPU 創建一個數據塊。 該數據塊用于存儲連接數據。數據塊的名稱可任意設置。 為 CPU 1(本地 CPU)建立主動連接。 |
連接類型 |
選擇條目“TCP”。 這意味著,連接建立時使用“TCP”協議的以太網連接。 |
組態模式 |
選擇條目“使用程序塊”(Use program block)。 這意味著,將通過編程連接建立連接。 |
連接 ID |
在該通信連接中,輸入任意一個選定的連接 ID。 該連接 ID 在項目中尚未分配。 |
伙伴端口 | 輸入一個伙伴端口值。該值必須 >=2000。 |
CPU 2 中的程序
在全局數據塊中,創建 10 個變量存儲“TRCV_C”的數據。
創建函數塊“SLI_FB_TRCV_C”,并在該函數塊中創建以下局部變量。
程序段 1:互連“TRCV_C”指令的參數,如下所示:但請勿互連參數 CONNECT。
程序段 2:保存 TRCV_C 的錯誤狀態,如下所示。
TRCV_C 的組態
對 TRCV_C 的組態進行如下設置:
說明 連接數據 組態 TSEND_C 后,已創建了一個數據塊(“SLI_cDB_Connector”),并帶有為各個 CPU 存儲的連接數據。如果不希望創建新的數據塊并輸入連接數據,也可直接使用創建的數據塊(“SLI_cDB_Connector”)。 如果要選擇已創建的數據塊,則這些數據塊必須位于“項目樹”(project tree) 的“程序塊 > 系統塊”(Program blocks > System blocks) 中。 |
連接建立的操作過程
要在 RUN 模式下建立通信連接,請按以下步驟操作:
對于 TRCV_C,將參數 EN_R 更改為“1”。 對于 TRCV_C,將參數 CONT 更改為“1”。 對于 TSEND_C,將參數 REQ 更改為“1”。 對于 TSEND_C,將參數 CONT 更改為“1”。 |
終止連接的操作過程
要在 RUN 模式下終止通信連接,請按以下步驟操作:
對于 TSEND_C,將參數 CONT 更改為“0”。 對于 TSEND_C,將參數 REQ 更改為“0”。 對于 TRCV_C,將參數 CONT 更改為“0”。 對于 TRCV_C,將參數 EN_R 更改為“0”。 |
CPU 1 的行為
輸入參數 REQ(“start”)返回信號狀態“TRUE”時,啟動指令“TSEND_C”。輸入參數 CONT(“comControl”)中的信號狀態為“TRUE”時,“TSEND_C”指令將在 CPU 1 與 CPU 2 間創建一個通信連接。為此,可通過輸入參數 CONNECT(或數據塊“SLI_cDB_Connector”)檢索該連接數據。
進行多次調用時,“TSEND_C”指令將傳送輸入參數 DATA(“sendData”)處檢測到的數據記錄。數據記錄傳送成功時,輸出參數 DONE(“#statDone”)的信號狀態為“TRUE”,且輸出參數 STATUS(“status”)的值為“0000”。由于輸出參數的值僅在有效時才顯示,因此 DONE(“#statDone”)的成功狀態將保存在變量“done”中。
將該數據記錄發送到 CPU 2 后,將繼續監視該通信連接(狀態為“7004”)。輸出參數 ERROR(“error”)或變量“memErrStatus”)可用于指示本示例中的執行過程是否出錯。
CPU 2 的行為
輸入參數 EN_R(“start”)返回信號狀態“TRUE”時,啟動指令“TRCV_C”。輸入參數 CONT(“comControl”)中的信號狀態為“TRUE”時,“TRCV_C”指令將在 CPU 2 與 CPU 1 間創建一個通信連接。為此,可通過輸入參數 CONNECT(或數據塊“SLI_cDB_Connector”)檢索該連接數據。
進行多次調用時,“TRCV_C”指令將接收所傳送的數據記錄。該數據記錄將記錄在參數 DATA(“rcvData”)中。數據記錄傳送成功時,輸出參數 DONE(“done”)的信號狀態為“TRUE”,且輸出參數 STATUS(“status”)的值為“0000”。并通過輸出參數 RCVD_LEN(“#statRcvLen”),確定 BYTE 中實際傳送的數據記錄長度。僅當傳送成功時,才顯示該值。之后,將檢查“0”。
由于輸出參數的值僅在有效時才顯示,因此請進行以下操作步驟:
將“#statRcvLen”的值保存在“rcvLen”中。
將“#statDone”的值保存在“done”中。
將“#status”的值保存在“memErrStatus”中。
CPU 2 接收到該數據記錄后,將繼續監視該通信連接(狀態為“7006”)。輸出參數 ERROR(“error”)或變量“memErrStatus”)可用于指示本示例中的執行過程是否出錯。
-
cpu
+關注
關注
68文章
10829瀏覽量
211196 -
西門子
+關注
關注
94文章
3009瀏覽量
115665 -
編程
+關注
關注
88文章
3596瀏覽量
93610 -
函數
+關注
關注
3文章
4308瀏覽量
62445 -
S7-1500
+關注
關注
3文章
300瀏覽量
6347
原文標題:西門子博途:發送函數的編程示例
文章出處:【微信號:gh_a8b121171b08,微信公眾號:機器人及PLC自動化應用】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論