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

圖. 01: 組態(tài)
接下來的輸入/輸出模塊被組態(tài)到 PROFINET IO 設(shè)備 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 設(shè)備 CP343-1 Lean 的輸入/輸出地址區(qū):
接下來的輸入/輸出模塊被組態(tài)到 ET 200S 中:
地址是 20.0-20.1 的 2 位輸出模塊
圖. 03: PROFINET IO 設(shè)備 ET 200S 的輸入/輸出地址區(qū):
最終的地址區(qū)是:
輸入: 0-23 = 24 字節(jié)
輸出: 0-20 = 21 字節(jié)
用戶程序描述:
在這個(gè)例子中, 一個(gè) CP343-1 Lean 被用作連接一個(gè)作為 PROFINET IO 設(shè)備的S7-300 站到一個(gè) PROFINET IO 系統(tǒng)中。字節(jié) MB0 被定義成 S7-300 CPU 時(shí)鐘位。STEP 7 程序包括 OB1, FB100, DB30, DB31, DB12, FC11 and FC12.
OB1
OB1 被循環(huán)調(diào)用。 在這個(gè)OB中, FB100 (實(shí)例 DB: DB100)被調(diào)用。

圖. 06: 調(diào)用 FC12 "PNIO_RECV"
輸入?yún)?shù) MODE=0, 因?yàn)橥ㄓ嵦幚砥鲀H被用作 PROFINET IO 設(shè)備。如果通訊處理器被同時(shí)用作 PROFINET IO 控制器和 PROFINET IO 設(shè)備,那么輸入?yún)?shù) MODE=1。
輸入通訊功能參數(shù) CPLADDR 是你指定的 PROFINET IO 設(shè)備的模塊地址。你從硬件組態(tài)中可以得到它,在工業(yè)以太網(wǎng)通訊模塊 -> “ 地址” 標(biāo)簽 (參看 圖. 06)。在這個(gè)例子中, CP343-1 Lean 模塊地址是 256dec = 100hex.。
FC11 “ PNIO_SEND” 的輸入?yún)?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” 的輸入?yún)?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ù)一樣長。在這個(gè)例子中,DB 包含的發(fā)送數(shù)據(jù)長度必須大于等于 24 字節(jié)并且 DB 包含的接收數(shù)據(jù)長度必須大于等于 20 字節(jié)。

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