西門(mén)子博圖 FB284 庫(kù)指令詳細(xì)手冊(cè)
1. 概述
FB284 是西門(mén)子 TIA Portal(博圖)中用于 PROFINET 通信的標(biāo)準(zhǔn)功能塊,主要實(shí)現(xiàn) PROFINET IO 控制器與 PROFIBUS DP 從站之間的數(shù)據(jù)交換。該功能塊通過(guò) PROFINET 到 PROFIBUS 的網(wǎng)關(guān)設(shè)備,使傳統(tǒng) PROFIBUS DP 從站能夠接入 PROFINET 網(wǎng)絡(luò),實(shí)現(xiàn)與 S7-1200/1500 等 PLC 的通信。
FB284 屬于 "PROFIBUS DP/S7-1200/S7-1500 as DP Master" 庫(kù),支持在 S7-1200/S7-1500 PLC 中作為 DP 主站與 PROFIBUS DP 從站進(jìn)行通信。
2. 功能塊基本信息
- 功能塊類(lèi)型:FB(功能塊)
- 所屬庫(kù):
SIMATIC_NET_CP
- 兼容 PLC:S7-1200 (固件 V4.0 及以上)、S7-1500 (固件 V1.8 及以上)
作用:建立和管理與 PROFIBUS DP 從站的通信連接,實(shí)現(xiàn)數(shù)據(jù)交換
3. 引腳定義詳解
3.1 輸入?yún)?shù) (Inputs)
參數(shù)名稱(chēng) | 數(shù)據(jù)類(lèi)型 | 描述 | 取值范圍 |
---|---|---|---|
Mode | INT | 操作模式選擇 | 1: 運(yùn)行模式(正常數(shù)據(jù)交換) 2: 停止模式(暫停數(shù)據(jù)交換) 3: 復(fù)位模式(清除錯(cuò)誤狀態(tài)) |
Control | WORD | 控制字,用于觸發(fā)特定功能 | 位 0: 1 = 啟動(dòng)數(shù)據(jù)交換 位 1: 1 = 復(fù)位錯(cuò)誤狀態(tài) 位 2: 1 = 保存參數(shù)到從站 其他位:保留,按設(shè)備手冊(cè)定義 |
Inputs | ANY | 指向 PLC 發(fā)送到 DP 從站的數(shù)據(jù)緩沖區(qū) | 需指向全局?jǐn)?shù)據(jù)塊 (DB),數(shù)據(jù)長(zhǎng)度與從站匹配 |
Outputs | ANY | 接收 DP 從站數(shù)據(jù)的緩沖區(qū) | 需指向全局?jǐn)?shù)據(jù)塊 (DB),數(shù)據(jù)長(zhǎng)度與從站匹配 |
DP_Slave_Addr | INT | DP 從站的物理地址 | 1-126(PROFIBUS 標(biāo)準(zhǔn)地址范圍) |
Max_Input_Len | INT | 最大輸入接收的最大數(shù)據(jù)長(zhǎng)度(字節(jié)) | 0-1440(根據(jù)從站支持的最大輸入長(zhǎng)度設(shè)置) |
Max_Output_Len | INT | 發(fā)送的最大數(shù)據(jù)長(zhǎng)度(字節(jié)) | 0-1440(根據(jù)從站支持的最大輸出長(zhǎng)度設(shè)置) |
Watchdog_Time | INT | 通信看門(mén)狗時(shí)間(ms) | 10-65535 ms(建議值:100-1000 ms) |
HW_ID | DWORD | 硬件標(biāo)識(shí)符,指向 PROFIBUS 接口模塊 | 從硬件配置中獲取的接口模塊 ID |
Timeout | TIME | 通信超時(shí)時(shí)間 | T#100MS - T#30S(默認(rèn) T#1S) |
3.2 輸出參數(shù) (Outputs)
參數(shù)名稱(chēng) | 數(shù)據(jù)類(lèi)型 | 描述 | 狀態(tài)說(shuō)明 |
---|---|---|---|
Status | WORD | 功能塊工作狀態(tài)字 | 位 0: 1 = 數(shù)據(jù)交換正常 位 1: 1 = 存在錯(cuò)誤 位 2: 1 = 看門(mén)狗超時(shí) 位 3: 1 = 從站未就緒 位 4: 1 = 參數(shù)錯(cuò)誤 位 5: 1 = 數(shù)據(jù)長(zhǎng)度不匹配 |
Error_Code | INT | 錯(cuò)誤代碼 | 0: 無(wú)錯(cuò)誤 16#01: 初始化錯(cuò)誤 16#05: 通信超時(shí) 16#0A: 數(shù)據(jù)長(zhǎng)度不匹配 16#10: 從站未響應(yīng) 16#15: 地址無(wú)效 |
Input_Len | INT | 實(shí)際接收的數(shù)據(jù)長(zhǎng)度(字節(jié)) | 0 到 Max_Input_Len 之間 |
Output_Len | INT | 實(shí)際發(fā)送的數(shù)據(jù)長(zhǎng)度(字節(jié)) | 0 到 Max_Output_Len 之間 |
Busy | BOOL | 忙信號(hào) | TRUE: 功能塊正在處理數(shù)據(jù)交換 FALSE: 空閑狀態(tài) |
Done | BOOL | 完成信號(hào) | TRUE: 一次數(shù)據(jù)交換完成 FALSE: 未完成 |
Error | BOOL | 錯(cuò)誤信號(hào) | TRUE: 存在錯(cuò)誤 FALSE: 無(wú)錯(cuò)誤 |
DP_Status | WORD | DP 從站狀態(tài)信息 | 反映從站的具體狀態(tài)(參考從站手冊(cè)) |
3.3 靜態(tài)參數(shù) (Static)
參數(shù)名稱(chēng) | 數(shù)據(jù)類(lèi)型 | 描述 |
---|---|---|
Last_Error | INT | 上一次發(fā)生的錯(cuò)誤代碼 |
Cycle_Counter | UINT | 數(shù)據(jù)交換循環(huán)計(jì)數(shù)器 |
State | INT | 功能塊內(nèi)部狀態(tài)機(jī)值 |
4. 典型應(yīng)用配置步驟
4.1 硬件配置
- 在 TIA Portal 中創(chuàng)建新項(xiàng)目,添加相應(yīng)的 PLC(如 S7-1214C)
- 添加 PROFINET 到 PROFIBUS 網(wǎng)關(guān)(如 SCALANCE XP208-2IRT)
- 在網(wǎng)關(guān)下添加 PROFIBUS DP 從站設(shè)備
- 記錄 PROFIBUS 接口模塊的 HW_ID(硬件標(biāo)識(shí)符)
- 配置 DP 從站地址,確保與實(shí)際設(shè)備地址一致
4.2 軟件配置
- 從庫(kù)中調(diào)用 FB284,生成背景數(shù)據(jù)塊(如 DB284)
- 定義輸入輸出數(shù)據(jù)緩沖區(qū)(如 DB10 為發(fā)送區(qū),DB11 為接收區(qū))
- 配置 FB284 的輸入?yún)?shù):plaintext
Mode := 1; // 運(yùn)行模式 Control := 16#0001; // 啟動(dòng)數(shù)據(jù)交換 Inputs := P#DB10.DBX0.0 BYTE 8; // 發(fā)送緩沖區(qū),8字節(jié) Outputs := P#DB11.DBX0.0 BYTE 8; // 接收緩沖區(qū),8字節(jié) DP_Slave_Addr := 3; // DP從站地址為3 Max_Input_Len := 8; // 最大接收長(zhǎng)度8字節(jié) Max_Output_Len := 8; // 最大發(fā)送長(zhǎng)度8字節(jié) Watchdog_Time := 500; // 看門(mén)狗時(shí)間500ms HW_ID := "PROFIBUS接口模塊".HW_ID; // 硬件標(biāo)識(shí)符
4.3 程序調(diào)用
在 OB1(主循環(huán)組織塊)中調(diào)用 FB284:
plaintext
CALL "DP_Master" , DB284 Mode := 1 Control := 16#0001 Inputs := P#DB10.DBX0.0 BYTE 8 Outputs := P#DB11.DBX0.0 BYTE 8 DP_Slave_Addr := 3 Max_Input_Len := 8 Max_Output_Len := 8 Watchdog_Time := 500 HW_ID := "PROFIBUS接口".HW_ID Timeout := T#1S Status => DB284.Status Error_Code => DB284.Error_Code Input_Len => DB284.Input_Len Output_Len => DB284.Output_Len Busy => DB284.Busy Done => DB284.Done Error => DB284.Error DP_Status => DB284.DP_Status
5. 錯(cuò)誤處理與診斷
5.1 常見(jiàn)錯(cuò)誤及解決方法
錯(cuò)誤代碼 | 描述 | 解決方法 |
---|---|---|
16#05 | 通信超時(shí) | 檢查 PROFIBUS 物理連接 確認(rèn)從站電源已上電并正常運(yùn)行 增大 Watchdog_Time 值 |
16#0A | 數(shù)據(jù)長(zhǎng)度不匹配 | 檢查 Max_Input_Len/Max_Output_Len 是否與從站規(guī)格一致 確認(rèn) Inputs/Outputs 指向的緩沖區(qū)大小是否正確 |
16#10 | 從站未響應(yīng) | 檢查從站地址是否正確 確認(rèn)從站是否正確接入網(wǎng)絡(luò) 檢查從站是否故障 |
16#15 | 地址無(wú)效 | 確認(rèn) DP_Slave_Addr 在 1-126 范圍內(nèi) 確認(rèn)該地址的從站是否存在 |
5.2 錯(cuò)誤處理程序示例
plaintext
// 錯(cuò)誤處理邏輯 IF "DB284".Error THEN "Error_Flag" := TRUE; "Error_Message" := "DB284".Error_Code; // 嘗試復(fù)位錯(cuò)誤 "DB284".Control := 16#0002; // 置位錯(cuò)誤復(fù)位位 "Reset_Timer" := T#2S; // 保持復(fù)位信號(hào)2秒 "Reset_Active" := TRUE; END_IF // 復(fù)位信號(hào)處理 IF "Reset_Active" THEN IF "Reset_Timer" <= T#0S THEN "DB284".Control := 16#0001; // 恢復(fù)正??刂谱? "Reset_Active" := FALSE; "Error_Flag" := FALSE; END_IF END_IF
6. 使用注意事項(xiàng)
- 數(shù)據(jù)一致性:確保 Inputs/Outputs 指向的數(shù)據(jù)塊具有足夠的長(zhǎng)度,且不與其他程序塊沖突
- 地址設(shè)置:DP_Slave_Addr 必須與實(shí)際從站的物理地址完全一致,可通過(guò)從站設(shè)備上的撥碼開(kāi)關(guān)或軟件配置修改
- 看門(mén)狗時(shí)間:Watchdog_Time 應(yīng)設(shè)置為從站響應(yīng)時(shí)間的 2-3 倍,過(guò)短會(huì)導(dǎo)致頻繁超時(shí),過(guò)長(zhǎng)則會(huì)延長(zhǎng)故障檢測(cè)時(shí)間
- 循環(huán)調(diào)用:FB284 應(yīng)在 OB1 中循環(huán)調(diào)用,調(diào)用間隔應(yīng)小于 Watchdog_Time 的一半
- 參數(shù)保存:如需將參數(shù)永久保存到從站,可將 Control 的位 2 置 1(16#0004),完成后需復(fù)位該位
- 硬件標(biāo)識(shí)符:HW_ID 必須正確指向 PROFIBUS 接口模塊,否則會(huì)導(dǎo)致通信失敗