基于LabVIEW 和J1939 協議的CAN 總線通訊平臺開發
軟件設計
本文引用地址:http://cqxgywz.com/article/144207.htm基于J1939 協議的CAN 總線報文收發多任務處理流程,如圖3 所示,采用生產者/消費者循環數據結構。生產者循環使用“元素入隊列”函數向報文簇隊列中添加數據,消費者循環使用“元素出隊列”函數從報文簇隊列中移出數據。循環間采用隊列的方式進行通信,避免多任務處理競爭狀態,當生產數據比消費處理數據的速度快時,隊列的緩沖作用保證報文數據不丟失?! ?/p>
建立接收報文ID 解析過濾的識別方法。確定報文標識符ID 的枚舉型狀態變量識別報文,根據狀態變量條件結構過濾報文。
PDU1、PDU2 格式單幀報文全部入隊列,數據場大于8 字節的對話式、廣播式多幀報文按J1939協議多幀數據合成重組后入隊列,其它無數據場的報文幀舍去,處理完的接收報文簇分解后出隊列計算、存貯和顯示。
廣播幀報文接收合成,首先進行TP.CM-BAM 命令幀解析,提取EECU 發送報文的PGN 和幀數,其次對接收的TP.DT-BAM 數據幀組報文刪除幀序號,通過替換數組子集對接收報文合成重組,還原PGN 標識的數據長度大于8 字節的廣播幀報文。
建立發送報文ID 解析封裝的識別方法。報文解析首先確定幀類型狀態變量,其次根據狀態變量的條件判斷,進行報文格式的封裝定義。
數據場小于或等于8 字節的PDU1、PDU2 單幀發送報文直接入隊列,數據場大于8 字節的對話式、廣播式多幀報文按J1939 協議多幀數據處理打包封裝簇合成后入隊列,處理完的J1939 發送報文簇分解后出隊列并寫入CAN 口。
廣播幀報文發送封裝,ID 解析將發送報文的PGN 封裝在廣播報文命令幀標識符ID-TP.CM 中,報文數組解析進行字節數和幀數計算,創建幀序號加報文子集的8 字節多幀數組,與數據幀標識符ID-TP.DT 打包封裝簇合成TP.DT-BAM,TP.CM-BAM 與TP.DT-BAM 組成廣播幀格式報文。
應用效果
在整車電環境的半實物仿真報文接收測試試驗中,應用圖4 所示的基于LabVIEW 和J1939 協議的CAN 總線通訊平臺,與Vector CANoe 模塊在同一時間段比對測試,接收的某型號發動機穩態工況EECU 報文如圖5 所示,一秒內接收EECU 發出的526 幀報文,比對測試接收的報文無丟失現象。
發動機燃油消耗量報文,實時反映了發動機燃油經濟性,在商用車J1939 協議CAN 總線網絡中,分別被車輛VECU 接收,作為換擋控制策略控制自動變速箱汽車;組合儀表ECU 接收并實時顯示,提示駕駛員形成良好的駕駛習慣,操縱汽車達到最佳燃油經濟性的路況行駛。為使發動機獲得最佳的動力性、經濟性和兼顧排放達標,需要對發動機電控單元EECU 進行標定匹配,獲得最佳噴油脈寬的標定參數。標定之后做比對試驗,驗證EECU 的標定效果。
發動機穩態工況試驗,能夠反映車輛的等速工況;而發動機變工況瞬態試驗,能夠模擬實際道路循環中發動機狀態。通過將實時報文油耗和實際測量瞬態油耗的對比,研究兩者之間的對應吻合關系,判斷發動機EECU 的控制效果?! ?/p>
某型號發動機十工況臺架試驗瞬態油耗比對測量曲線見圖6 所示,從J1939 協議CAN 總線接收并解析的EECU 油耗報文數據,與臺架油耗儀實測數據在發動機低負荷時存在差異,即發動機低負荷時實際噴油量較小,設定噴油量與實際噴油量的差異值較大。這個差異是因為發動機低負荷共軌軌壓波動較大,導致噴油量波動變化而客規存在。兩條曲線總體吻合一致,通過CAN 總線接收的發動機噴油目標值,與實際測量值接近,且變化趨勢和時序同步,反映了發動機EECU 標定匹配獲得了最佳噴油脈寬的目標值。
總結
基于LabVIEW 和J1939 協議的NI PXI 模塊化系統架構的CAN 總線通訊平臺的開發,建立了NICAN 模塊在商用車CAN 總線通訊的應用基礎,項目具有推廣和商品應用前景。在發動機臺架試驗、整車電環境半實物仿真分析中,實現對CAN 總線報文信息的過濾識別、合成接收、封裝發送、存貯、解析計算及實時顯示。
應用LabVIEW 軟件平臺強大的數學分析運算及隊列處理能力,以及適應整車苛刻測試環境的NI PXI 儀器及CAN 接口模塊,滿足試驗工況對CAN 總線報文信息解析的功能需求,同時實現對報文數據與NI PXI 儀器其它測量參數同步采樣,試驗數據比對分析處理具有實時性和真實性。












評論