說明:
如果您要使用 S7-300 工業(yè)以太網模板作為 PROFINET IO 控制器或者 PROFINET IO 設備, 那么您必須調用一下通訊功能塊在用戶程序中:
FC11 "PNIO_SEND"
FC12 "PNIO_RECV"
通訊塊 FC11 “PNIO_SEND” 和 FC12 “PNIO_RECV” 的特性:
FC11 和 FC12 是同步通訊塊。
塊被包含在 S7-300 控制器“SIMATIC_NET_CP” 庫中。
塊必須被調用在 OB1 中
功能調用結束通過 “DONE”, “NDR” 或 “ERROR” 表示。
FC11 “ PNIO_SEND” 通訊功能塊的特性 :
作為 PROFINET IO 控制器
功能塊通過通訊處理器傳送指定輸出范圍內的過程數(shù)據(jù) (輸出) 到 PROFINET IO 設備并且提供同樣的狀態(tài)給 PROFINET IO 設備的輸出。
作為 PROFINET IO 設備
功能塊讀取 PROFINET IO 設備 CPU 的過程映像輸入區(qū)并且傳送它們到 PROFINET IO 控制器 (被組態(tài)的輸入地址);提供同樣的狀態(tài)給 PROFINET IO 控制器。
FC12“ PNIO_RECV” 通訊功能塊的特性 ::
作為 PROFINET IO 控制器
功能塊接受 PROFINET IO 設備的過程數(shù)據(jù)(輸入) 并且提供來自于 PROFINET IO 設備的指定輸入區(qū)的狀態(tài)。
作為 PROFINET IO 設備
功能塊接受 PROFINET IO 控制器發(fā)送的數(shù)據(jù) (被組態(tài)的輸出地址) 并把 PROFINET IO 控制器的傳送數(shù)據(jù)的狀態(tài)寫到 PROFINET IO 設備以組態(tài)好的數(shù)據(jù)區(qū)中。
組態(tài)描述:
STEP 7 項目包括以下被組態(tài)成 PROFINET IO 控制器的 S7-300 站:
CPU 319-3PN/DP
STEP 7 項目包括以下被組態(tài)成 PROFINET IO 設備的 S7-300 站:
CPU 315-2DP 和 CP343-1 Lean (6GK7 343-1CX10-0XE0)
ET 200S

圖. 01: 組態(tài)
接下來的輸入/輸出模塊被組態(tài)到 PROFINET IO 設備 CP343-1 Lean中:
地址是 0-15 的 16 字節(jié)輸入模塊
地址是 16-23 的 8 字節(jié)輸入模塊
地址是 0-15 的 16 字節(jié)輸出模塊
地址是 16-19的 4 字節(jié)輸出模塊
這表明輸入地址區(qū)和輸出地址區(qū)分別是 24 字節(jié) (0-23) 和 20 字節(jié) (0-19)。 輸入和輸出首地址可以不是"0".
圖. 02: PROFINET IO 設備 CP343-1 Lean 的輸入/輸出地址區(qū):
接下來的輸入/輸出模塊被組態(tài)到 ET 200S 中:
地址是 20.0-20.1 的 2 位輸出模塊
圖. 03: PROFINET IO 設備 ET 200S 的輸入/輸出地址區(qū):
最終的地址區(qū)是:
輸入: 0-23 = 24 字節(jié)
輸出: 0-20 = 21 字節(jié)
用戶程序描述:
在這個例子中, 一個 CP343-1 Lean 被用作連接一個作為 PROFINET IO 設備的S7-300 站到一個 PROFINET IO 系統(tǒng)中。字節(jié) MB0 被定義成 S7-300 CPU 時鐘位。STEP 7 程序包括 OB1, FB100, DB30, DB31, DB12, FC11 and FC12.
OB1
OB1 被循環(huán)調用。 在這個OB中, FB100 (實例 DB: DB100)被調用。

圖. 06: 調用 FC12 "PNIO_RECV"
輸入參數(shù) MODE=0, 因為通訊處理器僅被用作 PROFINET IO 設備。如果通訊處理器被同時用作 PROFINET IO 控制器和 PROFINET IO 設備,那么輸入參數(shù) MODE=1。
輸入通訊功能參數(shù) CPLADDR 是你指定的 PROFINET IO 設備的模塊地址。你從硬件組態(tài)中可以得到它,在工業(yè)以太網通訊模塊 -> “ 地址” 標簽 (參看 圖. 06)。在這個例子中, CP343-1 Lean 模塊地址是 256dec = 100hex.。
FC11 “ PNIO_SEND” 的輸入參數(shù) LEN 是你組態(tài)的 CP343-1 Lean (24 字節(jié)) 的輸入地址區(qū)的長度。 這段數(shù)據(jù)長度被指定為 FC11 “PNIO_SEND” 發(fā)送數(shù)據(jù)的 LEN 參數(shù)。這段數(shù)據(jù)必須與已組態(tài)的的輸入 (24 字節(jié)) 保持一致。
FC12 “ PNIO_RECV” 的輸入參數(shù) LEN 是你組態(tài)的 CP343-1 Lean (20 字節(jié)) 的輸出地址區(qū)的長度。 這段數(shù)據(jù)長度被指定為 FC12 “PNIO_RECV” 發(fā)送數(shù)據(jù)的 LEN 參數(shù)。這段數(shù)據(jù)必須與已組態(tài)的的輸出 (20字節(jié)) 保持一致。
發(fā)送接收緩沖區(qū) (例如 數(shù)據(jù)塊) 包含了被發(fā)送和接收的數(shù)據(jù),長度至少要和被定義的發(fā)送和接收數(shù)據(jù)一樣長。在這個例子中,DB 包含的發(fā)送數(shù)據(jù)長度必須大于等于 24 字節(jié)并且 DB 包含的接收數(shù)據(jù)長度必須大于等于 20 字節(jié)。

圖. 07: CP343-1 Lean 的屬性對話框-> “ 地址” 標簽
FC11 “PNIO_SEND” 和 FC12 “PNIO_RECV” 的輸出參數(shù) “DONE”、“NDR”、“ERROR” 和 “STATUS”是通訊功能塊的工作標示位。
如果發(fā)送任務成功完成,那么 FC11 “PNIO_SEND”的 “DONE”將被置位。
如果接收任務成功完成 (例如:數(shù)據(jù)被接收到) ,那么 FC12 “PNIO_RECV”的 “NDR”將被置位。
如果 FC11 “PNIO_SEND” 和 FC12 “PNIO_RECV” 由于錯誤而結束,可通過狀態(tài)字進行錯誤分析。
PROFINET IO 控制器的用戶程序描述:
在這個例子中,一個帶有集成以太網接口的 S7-300 CPU 被用作 PROFINET IO 控制器。 字節(jié) MB0 被定義成 S7-300 CPU時鐘位。
STEP 7 程序包括 OB1, FB100 和 DB20。
在用戶程序中沒有必要調用通訊功能塊??梢酝ㄟ^裝載和傳送命令來訪問輸入/輸出區(qū),例如,讀出輸入值和寫值到輸出。讀到的輸入值被保存到數(shù)據(jù)塊 (DB20)中。