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