目 錄
1 產品概述
2 系統整體架構
3 硬件配置與通訊接口
4 J1939協議與CAN數據解析
5 故障診斷邏輯設計
6 Modbus RTU數據上報協議
7 診斷閾值與報警體系
8 核心技術優勢
9 典型應用場景
10 軟件功能規劃
11 產品資質與認證
12 技術服務與聯系方式
13 版權聲明
1 產品概述
1.1 產品簡介
本產品是山東華全動力股份有限公司自主研發的發動機CAN總線故障診斷系統,專為柴油發電機組、燃氣發電機組配套設計。系統通過STM32F103微控制器實時解析發動機ECU發出的SAE J1939 CAN總線數據,將發動機運行參數與故障狀態通過RS485接口以Modbus RTU協議上報至上位監控系統,實現發電機組運行狀態的實時在線監測與故障預警診斷。
1.2 研發背景
傳統發電機組監控系統普遍依賴人工巡檢或簡單的模擬信號采集,存在數據維度少、故障發現滯后、診斷精度低等痛點。隨著國六/歐六發動機全面普及,ECU已全面支持J1939 CAN總線通訊,實時獲取發動機運行參數與故障碼已成為可能。本項目依托公司成熟的發電機組技術平臺,完成整套CAN總線診斷系統軟硬件自主開發,實現從被動故障處理向主動預防性維護的升級。
1.3 整體技術特點
- 采用STM32F103 CAN轉RS485雙接口設計,一端連接發動機ECU CAN總線,一端連接上位監控系統,協議轉換透明可靠;
- 支持SAE J1939標準協議棧,完整解析EEC1/EEC2/ET1/CCVS/DM1/AMB/LFE1/IC1等8類核心PGN數據幀;
- 內置Modbus RTU從站,標準寄存器地址映射,上位機可直接輪詢讀取發動機實時參數;
- 支持DM1實時故障碼解析,將SAE標準SPN/FMI故障碼解碼為可讀中文診斷結果;
- CAN連接狀態實時監測,超時自動標記通訊中斷,避免數據假性有效;
- 采用雙看門狗保護,系統運行穩定可靠,滿足工業現場7×24小時連續運行要求;
- 支持J1939原廠診斷報文透明轉發,便于主機廠與發動機廠家聯合分析問題。
2 系統整體架構
本系統采用分布式雙接口設計,CAN側接收發動機ECU數據,經本地解析處理后,通過RS485側以Modbus RTU協議向上位系統上報,兩側接口獨立工作,互不干擾。
系統拓撲:
發動機ECU(J1939 CAN)→ STM32 CAN轉RS485模塊(本地解析+故障診斷)→ 上位監控系統/PLC(Modbus RTU輪詢)
下位機(STM32 CAN轉RS485模塊)
- CAN總線接收(250kbps,J1939擴展幀)
- J1939協議解析(PGN識別+數據解碼)
- DM1故障碼實時解析
- Modbus RTU從站響應
- CAN連接狀態監控
- 看門狗保護
上位機(監控系統)
- Modbus RTU主站輪詢
- 發動機參數實時顯示
- 故障告警管理
- 歷史數據存儲與分析
- 診斷報告生成
- 遠程推送告警通知
3 硬件配置與通訊接口
3.1 核心硬件清單
| 序號 | 器件名稱 | 規格型號 | 說明 |
|---|---|---|---|
| 1 | 主控MCU | STM32F103RBT6 | 72MHz ARM Cortex-M3,20KB SRAM,128KB Flash |
| 2 | CAN收發器 | TJA1050/ISO1050 | 最高1Mbps,支持120Ω終端電阻撥碼選擇 |
| 3 | RS485收發器 | SP3485/MAX485 | 9600bps,支持半雙工自動收發切換 |
| 4 | 電源 | DC 9~36V寬壓輸入 | 帶防反接保護,TVS浪涌抑制 |
| 5 | 通訊接口 | CAN_H/CAN_L,RS485 A/B | 鳳凰端子3.81mm間距 |
| 6 | 指示燈 | 電源/運行/CAN通訊/故障 | 4個LED狀態指示 |
| 7 | 看門狗 | 內置獨立看門狗 | 超時自動復位 |
3.2 通訊接口說明
- CAN接口:配置為250kbps(J1939標準速率),使用擴展幀(29位ID),終端電阻撥碼可調,連接發動機ECU或整車CAN網絡;
- RS485接口:采用Modbus RTU協議,從站地址撥碼可設(1~247),9600bps,8位數據,1位停止位,無校驗,連接上位監控系統或PLC;
- 調試接口:USART1作為調試串口,波特率921600,用于固件燒錄與日志輸出。
4 J1939協議與CAN數據解析
4.1 CAN總線參數
| 參數 | 配置值 | 說明 |
|---|---|---|
| 通訊速率 | 250 kbit/s | J1939標準速率 |
| 幀類型 | 擴展幀(29位ID) | J1939全部使用擴展幀 |
| 終端電阻 | 120Ω(撥碼選擇) | 總線兩端需加終端電阻 |
| 采樣點 | 87.5% | 滿足J1939規范要求 |
| 波特率 | 36MHz時鐘 / (9+1+1) / 16 = 250k | APB1=36MHz |
4.2 支持的J1939 PGN數據幀
| PGN | 名稱 | CAN ID(HEX) | 主要參數 | 周期 |
|---|---|---|---|---|
| 0xF003 | EEC2 | 0C F0 03 00 | 發動機轉速/油門位置/負載百分比 | 50ms |
| 0xF004 | EEC1 | 0C F0 04 00 | 需求扭矩/實際扭矩/發動機轉速 | 50ms |
| 0xFEEE | ET1 | 18 FE EE 00 | 冷卻液溫度/燃油溫度/機油溫度 | 1000ms |
| 0xFEF1 | CCVS | 18 FE F1 00 | 車速/巡航狀態/制動/離合狀態 | 100ms |
| 0xFECA | DM1 | 18 FE CA 00 | 實時故障碼(SPN+ FMI) | 1000ms |
| 0xFEF5 | AMB | 18 FE F5 00 | 大氣壓力/環境溫度/進氣溫度 | 1000ms |
| 0xFEF2 | LFE1 | 18 FE F2 00 | 燃油消耗率/瞬時油耗/平均油耗 | 1000ms |
| 0xFEF6 | IC1 | 18 FE F6 00 | 進氣壓力/進氣溫度/渦輪增壓器壓力 | 500ms |
| 0xFEDF | EEC3 | 18 FE DF 00 | 發動機冷卻劑液位/需求扭矩來源 | 1000ms |
4.3 關鍵SPN參數解析規則
注意:以下解析規則符合SAE J1939-71標準,實際以發動機廠家數據手冊為準。
| SPN | 名稱 | PGN | 字節位置 | 分辨率 | 偏移量 | 單位 |
|---|---|---|---|---|---|---|
| 190 | 發動機轉速 | EEC2 (0xF003) | Byte 0-1 | 0.125 rpm/bit | 0 | rpm |
| 110 | 冷卻液溫度 | ET1 (0xFEEE) | Byte 0 | 1℃/bit | -40 | ℃ |
| 84 | 車速 | CCVS (0xFEF1) | Byte 1-2 | 1/256 km/h | 0 | km/h |
| 92 | 發動機負載百分比 | EEC2 (0xF003) | Byte 3 | 0.4%/bit | 0 | % |
| 183 | 燃油消耗率 | LFE1 (0xFEF2) | Byte 0-1 | 0.05 L/h | 0 | L/h |
| 174 | 燃油溫度 | ET1 (0xFEEE) | Byte 1 | 1℃/bit | -40 | ℃ |
| 175 | 機油溫度 | ET1 (0xFEEE) | Byte 2 | 1℃/bit | 0 | ℃ |
| 102 | 進氣歧管壓力 | IC1 (0xFEF6) | Byte 0 | 2 kPa/bit | 0 | kPa |
| 105 | 進氣溫度 | IC1 (0xFEF6) | Byte 1 | 1℃/bit | -40 | ℃ |
| 171 | 環境溫度 | AMB (0xFEF5) | Byte 1-2 | 0.5℃/bit | 0 | ℃ |
| 108 | 大氣壓力 | AMB (0xFEF5) | Byte 0 | 0.5 kPa/bit | 0 | kPa |
5 故障診斷邏輯設計
5.1 DM1故障碼解析
DM1(Active Diagnostic Trouble Codes,當前激活故障碼)是J1939標準中最核心的故障診斷報文。當發動機ECU檢測到故障時,通過DM1幀(PGN 0xFECA)實時發送故障信息,每幀最多承載7個故障碼。
DM1幀數據結構:Byte 0低4位表示故障數量(0~15),每個故障占4字節:
- Byte 1-2(SPN):故障參數編號,表示故障關聯的參數(如SPN 110=冷卻液溫度過高);
- Byte 3低5位(FMI):故障模式標識符,表示故障類型(如FMI 3=電壓高于正常值);
- Byte 4:故障發生次數(Occurrence Counter)。
5.2 故障碼合成規則
系統將SPN(16位)與FMI(5位)合成為一個16位故障碼,格式如下:
combined_fault_code = (SPN << 5) | (FMI & 0x1F)
例如:SPN=100,FMI=3 → combined_fault_code = (100 << 5) | 3 = 0x0C83
5.3 典型故障碼對照表
| 故障碼(16進制) | SPN | FMI | 故障名稱 | 可能原因 | 建議措施 |
|---|---|---|---|---|---|
| 0x0C83 | 100 | 3 | 機油壓力傳感器電壓高于正常值 | 傳感器短路/線束破損 | 檢查傳感器線束 |
| 0x12C3 | 300 | 2 | 冷卻液溫度傳感器數據不穩定 | 傳感器接觸不良 | 檢查傳感器連接 |
| 0x2323 | 110 | 3 | 冷卻液溫度傳感器電壓高 | 開路/短路 | 檢查溫度傳感器 |
| 0x2324 | 110 | 4 | 冷卻液溫度傳感器電壓低 | 短路接地 | 檢查溫度傳感器 |
| 0xBE03 | 190 | 3 | 發動機轉速信號異常 | 曲軸/凸輪軸傳感器故障 | 檢查發動機轉速傳感器 |
6 Modbus RTU數據上報協議
6.1 寄存器地址映射
系統作為Modbus RTU從站,支持功能碼0x04(讀輸入寄存器),寄存器地址映射如下:
| 寄存器地址 | 參數名稱 | 數據類型 | 分辨率 | 單位 | 說明 |
|---|---|---|---|---|---|
| 0x0000 | 發動機轉速 | uint16 | ×0.1 | rpm | 實際值=寄存器值÷10 |
| 0x0001 | 冷卻液溫度 | uint16 | ×1 | ℃ | 直接讀取 |
| 0x0002 | 車速 | uint16 | ×0.1 | km/h | 實際值=寄存器值÷10 |
| 0x0003 | 發動機負載百分比 | uint16 | ×0.1 | % | 實際值=寄存器值÷10 |
| 0x0004 | 燃油消耗率 | uint16 | ×0.1 | L/h | 實際值=寄存器值÷10 |
| 0x0005 | 環境溫度 | uint16 | ×0.1 | ℃ | 實際值=寄存器值÷10 |
| 0x0006 | 進氣溫度 | uint16 | ×1 | ℃ | 直接讀取 |
| 0x0007 | 機油溫度 | uint16 | ×0.1 | ℃ | 實際值=寄存器值÷10 |
| 0x0008 | 當前故障碼 | uint16 | — | — | SPN<<5 | FMI,無故障=0 |
| 0x0009 | CAN幀計數器 | uint16 | — | 幀 | CAN幀接收總數(低16位) |
| 0x000A | Modbus請求計數器 | uint16 | — | 次 | Modbus查詢總次數 |
6.2 典型Modbus輪詢示例
讀取全部11個寄存器(從站地址=0x01):
請求幀:01 04 00 00 00 0B B1 CD
響應幀:01 04 16 07 D0 00 41 01 2C 00 C8 00 32 00 96 00 19 03 E8 00 00 00 0A 00 05 xx xx
寄存器0x0000=0x07D0=200.0 rpm,0x0001=0x0041=65℃,0x0002=0x012C=30.0 km/h……
6.3 CAN狀態寄存器(地址0x0008)
寄存器0x0008用于查詢CAN通訊狀態,特殊處理邏輯如下:
- CAN_flag = 0x01:CAN通訊正常(3秒內有CAN幀接收);
- CAN_flag = 0x00:CAN通訊中斷(超過3秒無CAN幀接收)。
7 診斷閾值與報警體系
7.1 報警分級標準
| 級別 | 顏色 | 觸發條件 | 系統響應 |
|---|---|---|---|
| 信息 | ● 綠色 | 參數正常范圍內 | 正常記錄,不告警 |
| 預警 | ● 黃色 | 參數接近閾值(>80%限值) | 彈窗提示,持續監測 |
| 警告 | ● 橙色 | 參數超出正常范圍 | 聲光告警,建議停機檢查 |
| 嚴重 | ● 紅色 | 參數超限嚴重/收到ECU故障碼 | 緊急告警,觸發保護停機 |
7.2 關鍵參數診斷閾值
| 參數 | 正常范圍 | 預警閾值 | 告警閾值 | 嚴重閾值 |
|---|---|---|---|---|
| 發動機轉速 | 800~3000 rpm | <700 或 >3200 rpm | <600 或 >3400 rpm | <500 或 >3600 rpm |
| 冷卻液溫度 | 75~105℃ | >108℃ | >115℃ | >120℃(高溫停機) |
| 機油溫度 | 80~130℃ | >135℃ | >140℃ | >150℃ |
| 機油壓力 | 200~500 kPa | <180 kPa | <150 kPa | <100 kPa(低壓停機) |
| 燃油溫度 | 0~80℃ | >85℃ | >90℃ | >95℃ |
| 進氣溫度 | -20~65℃ | >70℃ | >75℃ | >80℃ |
| CAN通訊狀態 | 通訊正常 | — | CAN_flag=0 超時 | 持續中斷>10秒 |
8 核心技術優勢
- 全自主研發:硬件架構、J1939協議棧、故障診斷算法均為華全自主設計,支持客戶個性化定制開發;
- 協議完整性:完整支持SAE J1939標準,兼容國內外主流發動機品牌(康明斯、濰柴、玉柴、上柴、珀金斯、顏巴赫等)ECU通訊協議;
- 實時性強:J1939關鍵幀(EEC2/CCVS)50ms級別更新,滿足發動機實時監控需求;
- 診斷精準:基于DM1幀實時故障碼解析,支持SPN/FMI雙維度故障定位,結合閾值報警實現預防性維護;
- 無縫集成:Modbus RTU標準化接口,可直接對接PLC、SCADA、智慧電站云平臺,無需額外驅動開發;
- 穩定可靠:獨立看門狗+CAN超時檢測,雙重保障系統在工業現場的長期穩定運行。
9 典型應用場景
- 柴油發電機組/燃氣發電機組遠程監控系統;
- 智慧電站云平臺數據采集網關;
- 工廠備用電源集中監控管理;
- 通信基站/數據中心應急電源監控;
- 發動機廠家/售后服務故障診斷工具;
- 發電機組出廠測試與老化試驗臺數據采集。
10 軟件功能規劃
Phase 1 — 實時數據看板(2024 Q3)
- 發動機轉速/水溫/油壓/油耗等關鍵參數實時可視化;
- CAN連接狀態監控與斷線告警;
- 歷史曲線記錄(支持導出Excel)。
Phase 2 — 故障碼解析系統(2024 Q3)
- DM1故障幀SAE J1939 SPN/FMI解碼成中文診斷結果;
- 故障歷史記錄存儲與查詢;
- 故障次數統計與趨勢分析。
Phase 3 — 閾值報警引擎(2024 Q4)
- 可配置參數閾值規則管理;
- 分級聲光報警與彈窗通知;
- 報警事件短信/郵件/飛書推送。
Phase 4 — 診斷報告生成(2025 Q1)
- 基于歷史數據自動生成診斷報告(Word/PDF格式);
- 設備健康度評分模型;
- 維保建議自動生成。
Phase 5 — AI輔助診斷(2025 Q2)
- 接入Qwen大模型分析故障根因;
- 自然語言查詢故障知識庫;
- 智能維保方案推薦。
11 產品資質與認證
- 電磁兼容性能滿足 GB/T 17626 系列國家標準;
- 電源輸入端滿足 GB/T 17626.11 浪涌抗擾度要求;
- 支持顏巴赫(Jenbacher)發動機J1939原廠通訊協議;
- 支持康明斯( Cummins)、濰柴、上柴、玉柴、卡特彼勒等發動機ECU協議適配;
- 符合工業級寬溫工作要求(-25℃~+70℃)。
