自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Dify+RAGFlow:泵類設(shè)備預(yù)測維護系統(tǒng)案例分享

人工智能
項目定位是,利用 Dify 的工作流編排能力和 RAGFlow 的知識庫組件,結(jié)合模擬的設(shè)備傳感器數(shù)據(jù) (IoT) 和企業(yè)資源數(shù)據(jù) (CMMS, MES, ERP),構(gòu)建一個針對離心式冷卻液泵的預(yù)測性維護系統(tǒng)原型。

上篇文章介紹到的 Dify+RAGFLow 的協(xié)同使用文章里,提到了一個泵類設(shè)備預(yù)測性維護智能系統(tǒng)。后來陸續(xù)有人私信咨詢實施細節(jié),這篇做個統(tǒng)一的介紹。

Dify+RAGFlow:1+1>2的混合架構(gòu),詳細教程+實施案例

項目定位是,利用 Dify 的工作流編排能力和 RAGFlow 的知識庫組件,結(jié)合模擬的設(shè)備傳感器數(shù)據(jù) (IoT) 和企業(yè)資源數(shù)據(jù) (CMMS, MES, ERP),構(gòu)建一個針對離心式冷卻液泵的預(yù)測性維護系統(tǒng)原型。

注:為遵守保密協(xié)議,本文及相關(guān)代碼在原項目基礎(chǔ)上使用了模擬數(shù)據(jù)和接口進行演示。所展示的工作流設(shè)計、節(jié)點交互等與實際項目邏輯相似,僅供各位參考。

以下,enjoy:

1、項目背景

作者早年從事金融信貸領(lǐng)域時,在長珠三角走訪過大大小小幾百家工廠,其中以機械加工、注塑行業(yè)為主,但不管什么細分行業(yè),設(shè)備的穩(wěn)定運行對企業(yè)來說都是日常經(jīng)營的頭等大事。尤其是像 CNC 加工中心使用的冷卻液泵這類關(guān)鍵輔助設(shè)備,意外停機會導(dǎo)致生產(chǎn)中斷,直接影響訂單排查計劃。

傳統(tǒng)的定期維護 (Preventive Maintenance, PM) 往往過于保守或未能及時發(fā)現(xiàn)潛在問題,而事后維修 (Corrective Maintenance, CM) 成本高昂。這篇要介紹的預(yù)測性維護 (Predictive Maintenance, PdM) 主要目的是通過監(jiān)測離心泵設(shè)備狀態(tài),在故障實際發(fā)生前安排維護,最大限度地減少停機時間、降低維護成本、提高設(shè)備利用率。

泵類型: 離心式冷卻液泵 (Centrifugal Coolant Pump)


泵型號 : CoolFlow Pro 5000


設(shè)備 ID: PUMP-CNC-001


使用場景: 安裝在一臺中型 CNC 立式加工中心 (Machine ID: VMC-03) 上,用于循環(huán)供給水基切削液,冷卻刀具和工件。該機床主要加工鋼材和鋁合金零件,實行兩班倒工作制 (16小時/天)。泵已運行約 18 個月。


關(guān)鍵監(jiān)測參數(shù): 振動 (mm/s RMS), 溫度 (°C), 出口壓力 (Bar), 流量 (L/min)。

2、數(shù)據(jù)構(gòu)成

參照真實的業(yè)務(wù)場景,我構(gòu)建了一套模擬 API (mock_api.py) 和相應(yīng)的 JSON 數(shù)據(jù)文件,代表不同系統(tǒng)的數(shù)據(jù)源:

1、IoT 數(shù)據(jù) (`IOT.json` & `/api/pump/status`):


    *   包含泵的實時傳感器讀數(shù),如時間戳 (`timestamp`)、軸向/徑向振動 (`vibration_axial`/`radial`)、電機/軸承溫度 (`temperature_motor`/`bearing`)、出口壓力 (`pressure_outlet`)、流量 (`flow_rate`)。
    *   模擬了數(shù)據(jù)隨時間變化,包含正常和逐漸異常的狀態(tài)。


 2、MES 數(shù)據(jù) (`MES.json` & `/api/mes/pump/operation`):
    *   提供泵的運行日志,關(guān)聯(lián)的設(shè)備 (`associated_machineId`),運行小時數(shù) (`operating_hours`),處理的工單 (`jobs_processed`) 等。
    *   有助于了解泵的工作負載和上下文。


3、CMMS 數(shù)據(jù) (`CMMS.json` & `/api/cmms/pump/history`):
    *   包含歷史維護記錄 (`maintenance_records`):工單號、日期、類型、描述、更換部件、停機時間等。
    *   包含相關(guān)故障信息 (`related_failures_info`):其他泵(或本機歷史)的故障案例,包括癥狀、故障模式、根本原因、糾正措施。這是重要的知識來源。


4、ERP 數(shù)據(jù) (`ERP.json` & `/api/erp/spare_parts`):
    *   提供備件信息:零件 ID (`partId`)、名稱 (`name`)、描述、適用泵型號、供應(yīng)商、庫存水平 (`stock_level`)、單價 (`unit_price`)、采購提前期 (`lead_time_days`)。
    *   用于生成維護建議時考慮備件可用性。


 模擬維護完成后,實際執(zhí)行情況的反饋數(shù)據(jù),用于評估預(yù)測準(zhǔn)確性和閉環(huán)優(yōu)化。

3、工作流整體思路

由 RAGFlow 負責(zé)處理知識庫,工作流基于 Dify 構(gòu)建,核心思路是: 

狀態(tài)監(jiān)測 -> 異常判斷 -> 深度分析與建議 -> 報告生成。

獲取狀態(tài): 通過 GET_IOT_DATA 節(jié)點調(diào)用模擬 API 獲取指定 pumpId 的最新傳感器數(shù)據(jù)。

解析數(shù)據(jù): 使用 CODE 節(jié)點解析返回的 JSON 字符串,提取關(guān)鍵指標(biāo),并判斷是否需要維護 (needs_maintenance 標(biāo)志)。

條件分流: IF/ELSE 節(jié)點根據(jù) needs_maintenance 標(biāo)志決定流程走向。

ELSE (正常):  流向 ANSWER 節(jié)點,輸出簡單的狀態(tài)正常信息。
IF (異常):  啟動預(yù)測性維護流程。

信息整合 (IF 分支):

調(diào)用 GET_CMMS_DATA 和 GET_MES_DATA 獲取歷史維護和運行數(shù)據(jù)。
調(diào)用 KNOWLEDGE_RETRIEVAL 節(jié)點,結(jié)合當(dāng)前異常指標(biāo)查詢知識庫 (離心泵設(shè)備手冊 pdf、歷史維修案例 excel)。

故障預(yù)測 (IF 分支): 調(diào)用 FAULT_PREDICTION(LLM 節(jié)點),將整合后的信息(實時數(shù)據(jù)、歷史數(shù)據(jù)、知識庫信息)提供給 LLM,要求其分析可能的故障模式并預(yù)測需要更換的關(guān)鍵備件 ID。

備件 ID 提取 (IF 分支): 使用 EXTRACT_PART_ID (CODE 節(jié)點) 從 FAULT_PREDICTION 的文本輸出中解析出 required_partId。

ERP 查詢 (IF 分支): 調(diào)用 GET_ERP_DATA (HTTP 節(jié)點),使用 extracted_part_id 作為參數(shù)查詢具體備件信息 。

ERP 數(shù)據(jù)解析 (IF 分支): 使用 PARSE_ERP_DATA(CODE 節(jié)點) 解析 GET_ERP_DATA 返回的 JSON 字符串為列表。

生成維護建議 (IF 分支): 調(diào)用 SUGGESTIONS(LLM 節(jié)點),將故障預(yù)測結(jié)果和解析后的 ERP 備件信息列表提供給 LLM,要求生成詳細的維護步驟、備件清單和時間建議。

最終輸出: 通過 ANSWER 2 節(jié)點展示維護建議或最終報告。

4、關(guān)鍵節(jié)點介紹

**START:** 定義工作流入口參數(shù) (`pumpId`)。
  **GET\_... (HTTP Request):** 與模擬 API 交互,獲取各類數(shù)據(jù)。
  **CODE (解析 IoT):** 解析 IoT JSON,提取關(guān)鍵指標(biāo),**計算 `needs_maintenance` 標(biāo)志**。
  **IF/ELSE:** 根據(jù) `needs_maintenance` 標(biāo)志進行流程分支。
  **KNOWLEDGE_RETRIEVAL:** (可選) 連接外部知識庫進行 RAG 查詢。
  **FAULT_PREDICTION (LLM):** 基于多源信息進行故障診斷與預(yù)測。
  **EXTRACT_PART_ID (CODE):** 從 LLM 輸出中解析結(jié)構(gòu)化信息 (Part ID)。
  **PARSE_ERP_DATA (CODE):** 解析 ERP 返回的 JSON 列表字符串。
  **SUGGESTIONS (LLM):** 結(jié)合故障預(yù)測和備件信息生成維護建議。
  **ANSWER / ANSWER 2:** 輸出最終結(jié)果。

5、主要報錯與解決過程參考

基于我前期在上手熟悉 Dify 工作流搭建中踩過的坑,結(jié)合這個項目做個對照說明,各位可以大致做個參考:

1.  HTTP 請求:URL 與參數(shù)混淆
    *   **節(jié)點:** `GET_IOT_DATA`
    *   **報錯:** `Invalid non-printable ASCII character...`
    *   **原因:** 同時在 URL 字段和 PARAMS 字段中定義了查詢參數(shù)。
    *   **解決:** URL 只寫基礎(chǔ)路徑,參數(shù)在 PARAMS 中定義 (推薦: `{{start.pumpId}}`)。


2.  HTTP 請求:網(wǎng)絡(luò)訪問 & CORS 
    *   **節(jié)點:** 所有 HTTP 請求節(jié)點
    *   **報錯:** Dify 404,但 API 日志顯示 200 OK。
    *   **原因:** API 服務(wù)監(jiān)聽地址限制;缺少 CORS 配置。
    *   **解決:**
        *   API (`mock_api.py`): 啟動時 `host='0.0.0.0'`。
        *   API (`mock_api.py`): 安裝 `flask-cors` 并啟用 `CORS(app)`。


3.  數(shù)據(jù)處理:JSON 字符串解析 
    *   **節(jié)點:** `CODE` (解析 IoT), `IF/ELSE`, `ANSWER`
    *   **報錯:** `IF/ELSE` 條件不生效;`ANSWER` 直接輸出占位符。
    *   **原因:** HTTP 節(jié)點返回的 `body` 是 JSON **字符串**,而非結(jié)構(gòu)化對象。
    *   **解決:** 在 HTTP 節(jié)點后加 `CODE` 節(jié)點,用 `json.loads()` 解析 `body` 字符串,輸出解析后的對象/列表供后續(xù)節(jié)點使用。


4.  IF/ELSE 節(jié)點:數(shù)值比較類型問題 
    *   **節(jié)點:** `IF/ELSE`
    *   **報錯:** 數(shù)值比較條件 (`> 6.0`) 不生效。
    *   **原因:** `IF/ELSE` 可能將變量視為字符串進行比較。
    *   **解決:** 將比較邏輯移入 `CODE` 節(jié)點,輸出簡單標(biāo)志位 (如 `"1"`/`"0"` 字符串),`IF/ELSE` 只判斷此標(biāo)志位。


5.  CODE 節(jié)點:Python 語法 & 類型錯誤 
    *   **節(jié)點:** 所有 `CODE` 節(jié)點
    *   **報錯:** `IndentationError`, `NameError`, `Output variable 'xxx' must be a [Type]`。
    *   **原因:** 縮進錯誤;變量未定義;Dify 輸出類型配置與代碼返回不符。
    *   **解決:** 嚴格檢查 Python 縮進;確保 `return` 前所有變量已定義賦值;確保 Dify 中輸出變量的**名稱和類型**與代碼 `return` **完全匹配** (e.g., Part ID 是 String)。


6.  TEMPLATE 節(jié)點:Jinja2 語法 & 數(shù)據(jù)錯誤 
    *   **節(jié)點:** `TEMPLATE`
    *   **報錯:** `jinja2.exceptions.TemplateSyntaxError`。
    *   **原因:** 括號錯誤 (`{{{` vs `{{`, `}} }`); 控制結(jié)構(gòu)括號錯誤 (`{{%` vs `{%`); 變量名不匹配;在未解析數(shù)據(jù)上訪問屬性。
    *   **解決:** 修正 Jinja2 語法;確保模板變量名與輸入變量名**完全一致**;對列表/字典數(shù)據(jù),**先用 CODE 解析**再傳入模板,并使用 `{% for %}` 訪問循環(huán)變量屬性 (`{{ part.name }}`)。

6、從模擬到生產(chǎn)切換注意事項

看完上述內(nèi)容,如果你計劃將基于 mock_api.py 測試成功的工作流切換到對接真實的生產(chǎn)環(huán)境,需要注意替換數(shù)據(jù)源接入點,并適配數(shù)據(jù)格式。

主要步驟如下:

1.  獲取真實 API 信息:** 獲取真實的 IoT、CMMS、MES、ERP 系統(tǒng)的 API 詳細信息:
    
    *   **URL 端點 (Endpoint):** 每個系統(tǒng)提供數(shù)據(jù)的具體網(wǎng)址。
        
    *   **請求方法 (Method):** GET, POST, PUT, DELETE 等。
        
    *   **認證方式 (Authentication):** 如何驗證 Dify 的訪問權(quán)限?可能是 API Key (放在 Header 或 Query Param)、OAuth 2.0 Token (放在 Header)、用戶名密碼等。
        
    *   **請求參數(shù)/體 (Parameters/Body):** 如何指定要查詢的設(shè)備 ID、時間范圍、零件 ID 等?是在 URL 參數(shù)中,還是在 POST 請求的 Body 中?Body 的格式是 JSON、XML 還是其他?
        
    *   **響應(yīng)格式 (Response Format):** 真實系統(tǒng)返回的數(shù)據(jù)結(jié)構(gòu)是怎樣的?與模擬的 JSON 結(jié)構(gòu)是否一致?
        
2.  修改 Dify HTTP Request 節(jié)點:
    
    *   定位工作流中所有調(diào)用模擬 API 的 HTTP Request 節(jié)點 (`GET_IOT_DATA`, `GET_CMMS_DATA`, `GET_MES_DATA`, `GET_ERP_DATA`)。
        
    *   **更新 URL:** 將節(jié)點的 URL 字段替換為真實 API 的端點。
        
    *   **調(diào)整方法:** 根據(jù)真實 API 要求修改請求方法 (GET/POST 等)。
        
    *   **配置認證:** 在節(jié)點的 `Headers` 或 `Params` 部分添加必要的認證信息 (如 `Authorization: Bearer <token>`, `X-API-Key: <key>`)。
        
    *   **適配參數(shù)/體:** 根據(jù)真實 API 要求修改 `Params` 或 `Body` 的內(nèi)容和格式。
        
3.  適配數(shù)據(jù)解析 (關(guān)鍵步驟??):
    
    *   真實 API 返回的數(shù)據(jù)結(jié)構(gòu)**極有可能**與模擬 JSON 不同。
        
    *   因此,所有緊跟在 HTTP Request 節(jié)點之后的 `CODE` 節(jié)點(如解析 IoT 的 `CODE` 節(jié)點, `PARSE_ERP_DATA` 節(jié)點,以及可能需要為 CMMS/MES 新增的解析節(jié)點)**必須進行修改**。
        
    *   需要根據(jù)真實 API 返回的 JSON (或其他格式) 結(jié)構(gòu),調(diào)整 Python 代碼中 `json.loads()` 之后訪問數(shù)據(jù)的方式(字典鍵名、列表索引、嵌套結(jié)構(gòu)等),以確保存儲到 Dify 輸出變量中的是后續(xù)節(jié)點期望的數(shù)據(jù)。
        
    *   **這是最容易出錯的環(huán)節(jié),需要仔細比對真實 API 的響應(yīng)并耐心調(diào)試** `CODE` **節(jié)點的 Python 代碼。
        
4.  端到端測試:** 修改完成后,使用真實的設(shè)備 ID 或測試 ID 進行完整的端到端測試,驗證:
    
    *   是否能成功從所有真實系統(tǒng)中獲取數(shù)據(jù)。
        
    *   數(shù)據(jù)解析是否正確。
        
    *   LLM 節(jié)點接收到的上下文是否符合預(yù)期。
        
    *   整個流程是否能按預(yù)期運行。

網(wǎng)絡(luò)連通性: 確保運行 Dify 的環(huán)境能夠訪問到企業(yè)內(nèi)網(wǎng)的真實系統(tǒng) API 地址。

權(quán)限管理: 確保 Dify 使用的 API Key 或憑證具有訪問所需數(shù)據(jù)的正確權(quán)限。

數(shù)據(jù)格式差異: 重點關(guān)注真實 API 與模擬 API 在數(shù)據(jù)結(jié)構(gòu)上的差異,并適配解析邏輯。

性能與頻率: 真實 API 可能有調(diào)用頻率限制或響應(yīng)時間較長,需要考慮工作流的性能和可能的超時設(shè)置。

錯誤處理: 針對真實 API 可能出現(xiàn)的各種錯誤(網(wǎng)絡(luò)錯誤、認證失敗、無效參數(shù)、系統(tǒng)內(nèi)部錯誤等),在 Dify 工作流中增加更健壯的錯誤處理邏輯。

7、后續(xù)拓展方向

增加報告模板 (TEMPLATE): 引入并調(diào)試 TEMPLATE 節(jié)點,利用 Jinja2 生成結(jié)構(gòu)更清晰、格式更專業(yè)的 HTML、Markdown、PDF 報告 (需要額外工具集成)。

定時觸發(fā)與批量處理: 增加定時任務(wù)觸發(fā)器 (如 Dify 的計劃任務(wù)或外部調(diào)度系統(tǒng)調(diào)用 API),定期檢查設(shè)備狀態(tài),而不是僅通過手動輸入 pumpId 觸發(fā)。

集成到業(yè)務(wù)系統(tǒng):

告警通知: 在檢測到異常時,通過 HTTP 請求節(jié)點調(diào)用企業(yè)微信、釘釘、郵件等的 API 發(fā)送告警通知。
工單系統(tǒng)集成: 將 `SUGGESTIONS` 生成的維護建議通過 API 推送到 CMMS 系統(tǒng),自動創(chuàng)建維護工單。

API 暴露: 將整個 Dify 工作流封裝為 API,供其他業(yè)務(wù)系統(tǒng)(如設(shè)備監(jiān)控大屏、生產(chǎn)管理系統(tǒng))調(diào)用。

閉環(huán)反饋機制: 實現(xiàn) /api/cmms/report/update 接口,接收維護完成后的實際結(jié)果。設(shè)計新的 Dify 工作流或節(jié)點來處理這些反饋,分析預(yù)測準(zhǔn)確性,并將分析結(jié)果存入數(shù)據(jù)庫或知識庫,用于持續(xù)優(yōu)化模型或 Prompt。

更復(fù)雜的故障預(yù)測模型: FAULT_PREDICTION 可以替換為更專業(yè)的機器學(xué)習(xí)模型服務(wù)接口,或者使用更強大的 LLM 并優(yōu)化 Prompt 以進行更精確的故障定位和剩余壽命預(yù)測 (RUL)。

知識庫增強: 持續(xù)豐富 RAGFlow (MinerU、 Mistral OCR等工具的測評后續(xù)會專門寫一篇) 中的內(nèi)容,加入更多設(shè)備類型、故障案例和解決方案。

用戶交互優(yōu)化: 利用 Dify 的 Agent 或 Web App 能力,創(chuàng)建更友好的用戶界面,允許用戶查詢特定設(shè)備狀態(tài)、歷史記錄或手動觸發(fā)分析。

8、項目資料包

有需要項目源碼的盆友可以付費后查看下方百度云盤鏈接(包含Code節(jié)點代碼)

責(zé)任編輯:龐桂玉 來源: 韋東東
相關(guān)推薦

2025-04-14 00:40:00

2025-04-07 07:00:00

2025-04-17 01:00:00

DifyRAGFLow

2025-04-25 01:30:00

RAGFlowDifyMiniO

2025-02-24 09:33:10

2021-08-03 10:18:22

物聯(lián)網(wǎng)預(yù)測性維護規(guī)范性維護

2020-03-16 13:47:24

數(shù)字化分析團隊

2020-05-14 15:12:32

工業(yè)物聯(lián)網(wǎng)IIOT預(yù)測性維護

2022-02-09 10:27:00

預(yù)測性維護技術(shù)物聯(lián)網(wǎng)

2023-09-19 17:20:08

物聯(lián)網(wǎng)物聯(lián)網(wǎng)預(yù)測維護

2020-06-10 21:57:41

工業(yè)4.0預(yù)測性維護物聯(lián)網(wǎng)

2009-12-29 14:58:05

ADSL設(shè)備維護

2022-06-13 14:58:19

系統(tǒng)案例

2020-08-29 18:35:42

預(yù)測性維護工業(yè)物聯(lián)網(wǎng)IIOT

2017-07-25 12:09:10

機器學(xué)習(xí)預(yù)測性維護模型

2019-12-26 21:59:29

物聯(lián)網(wǎng)智能電梯預(yù)測性維護

2020-10-23 21:53:44

預(yù)測性維護智能建筑物聯(lián)網(wǎng)

2023-10-28 16:10:25

智能電網(wǎng)物聯(lián)網(wǎng)

2015-01-13 17:35:30

BPM選型

2019-07-24 05:36:25

物聯(lián)網(wǎng)設(shè)備物聯(lián)網(wǎng)IOT
點贊
收藏

51CTO技術(shù)棧公眾號