






【摘" 要】為滿足直流充電通信交互測試中充電機仿真需求,文章基于CAPL編程語言搭建一種直流充電機系統仿真模型,介紹該系統的設計方案,闡述仿真系統的測試效果。該仿真系統能夠實現手動操作難以實現的功能,提高測試人員的工作效率。
【關鍵詞】直流充電;CAPL;通信交互
中圖分類號:U463.6" " 文獻標識碼:A" " 文章編號:1003-8639(2025)02-0039-03
CAPL-based DC Charger Simulation System Design
ZHANG Benxuan,ZENG Pin,HAN Fuqiang
(Weichai Power Co.,Ltd.,Weifang 261061,China)
【Abstract】To meet the needs of charger simulation in the DC charge communication interactive test,this paper builds a DC charger system simulation model based on the CAPL programming language,describes the design of the system,and explains the test results of the simulation system. The simulation system enables features that are difficult to implement with manual operation,increasing the productivity of the testers.
【Key words】DC charging;CAPL;communication interaction
在直流充電過程中,電動汽車通過CAN總線與直流充電機進行信息交互,從而控制整個充電過程[1]。為了對充電報文交互過程進行更好測試,本文利用CANalyzer軟件的CAPL編程語言搭建直流充電機仿真模型,幫助測試人員更加高效地完成直流充電報文交互邏輯驗證工作。
1" CANalyzer及CAPL介紹
CANalyzer是由德國Vector公司開發的一款專業CAN總線網絡分析工具,支持CAN總線網絡配置、仿真、報文和信號的編輯、監控及解析、故障注入和診斷等多樣化功能。因其友好的界面、強大的功能和使用的靈活性,目前CANalyzer在汽車行業電子控制系統的開發、測試和診斷等過程中得到了廣泛使用。用戶對其多協議支持和實時監控功能尤其認可,能夠幫助他們快速定位和解決復雜的總線問題。
CAPL是Vector公司開發的一種專門用于編寫測試腳本和仿真程序的編程語言,其全稱為Communication Access Programming Language,即通信訪問編程語言。CAPL語言在語法和結構上與C語言比較相像,但同時也定義了一些獨有的數據類型和關鍵字,以適應CAN通信的特殊需求。CAPL程序通常由頭文件、全局變量、事件處理和自定義函數等部分組成。它支持函數重載和事件驅動編程,能夠模擬總線節點和模塊,處理各種事件報文,包括定時器事件、信號事件等。利用CAPL語言,用戶可以編寫程序并應用到整車網絡的各個節點上,實現與總線節點的交互測試和自動化測試。
在CAPL中,變量分為全局變量和局部變量,數據類型豐富,包括整型、浮點型、字符型以及針對CAN通信定義的特殊數據類型,如message(用于定義CAN報文)、linframe(用于定義LIN報文)、timer/mstimer(用于定義秒級別和毫秒級別的定時器)等。此外,CAPL還支持結構體、枚舉和數組等復合數據類型的聲明和使用。
CAPL的編輯環境友好,提供了代碼編譯、函數庫管理、調試等常用功能。用戶可以在編輯區編寫代碼,通過導航區便捷地查看和跳轉各種變量、事件、函數的聲明和定義。CAPL的注釋規則與C語言相同,支持單行注釋和多行注釋,方便用戶進行代碼說明和調試。CANalyzer軟件中集成了CAPL編程環境,支持變量、數據類型、運算符和流程控制,并且提供了豐富的函數庫,利用該環境用戶可進行復雜的網絡通信編程和系統仿真。通過CAPL可在總線建立仿真節點,從而可實現總線報文的接收和發送,方便用戶對CAN總線的進一步開發及測試。
2" 直流充電流程解析
直流充電機將電網提供的交流電經過整流模塊和功率轉換模塊轉換成直流電,再通過直流快充槍將直流電傳輸給動力電池進行充電,充電過程中進行充電電壓、電流和溫度等信息的監測,保證充電過程的安全性。
直流充電過程主要包括六個階段:物理連接完成、低壓輔助上電、充電握手階段、充電參數配置階段、充電階段和充電結束階段。充電總體流程如圖1所示。
1)在物理連接階段將充電插頭與充電插座進行完全連接,連接完成后,充電機會控制繼電器閉合,導通低壓輔助供電回路,并進行低壓上電。在該階段充電機會進行絕緣檢測,用于檢測高壓回路的絕緣性能,當絕緣檢測通過后便正式進入充電握手階段。
2)充電握手階段主要是進行充電機和電動車輛二者之間必要信息的確認,主要包括充電機的身份、電池的類型、額定容量和額定總電壓等信息。當二者完成信息辨識后,便進入充電參數配置階段。
在充電參數配置階段,電動車輛會根據充電機發送的參數判斷充電機最大最小的輸出能力是否能夠滿足車輛充電的需求,同時充電機會根據電動車輛發送的動力電池信息來判斷二者能否進行充電,若充電參數能夠匹配,則進入充電就緒過程。
當充電機和車輛均準備充電就緒后,二者進入充電階段,在該階段,車輛實時向充電機發送車輛充電需求,充電機則根據需求調整輸出的充電電壓及電流,保證充電過程正常運行。
當充電機接收到車輛發送的停止充電指令,或充電過程達到預期設定的參數值后,充電過程結束。在充電結束階段,車輛會向充電機發送整個充電過程中的統計數據,如中止SOC、電壓和溫度等,充電機則會發送累計充電時間、充電能量等信息,最終充電機停止低壓輔助電源的輸出,整個充電過程結束。
3" 直流充電機仿真系統設計
直流充電機仿真系統設計主要包括數據庫創建、CAPL程序定義、充電機顯示界面設計及充電流程驗證四部分。該系統基于CANalyzer軟件,借助CAPL模塊、Panel模塊、DBC編輯模塊和變量配置模塊等軟件模塊完成整個系統的開發[2]。
3.1" 數據庫創建
充電網絡數據庫利用CANalyzer中的CANdb++ Editor工具結合充電通信協議來創建DBC。在DBC中定義了所有報文的報文信息(報文ID、周期等)、信號信息(信號長度、信號起始位、信號精度及偏移等)[3],并對信號與報文、報文與節點之間的關聯關系進行配置。將創建好的DBC文件導入到Measurement Setup中,如圖2所示。
3.2" CAPL程序定義
CAPL程序是整個充電機仿真系統設計的核心,通過創建系統變量和CAPL事件,完成充電報文之間的交互邏輯及參數配置,實現充電機系統通信邏輯控制功能。
在編寫CAPL軟件代碼前,首先需要定義系統內需要的系統變量。系統變量作為全局變量,建立起了顯示界面與CAPL程序之間的映射關系,測試人員可以通過控制顯示界面上的控件來執行CAPL程序中的事件。本系統所使用的系統變量如圖3所示。
系統變量創建完成后便可開始CAPL程序的編寫。在CAPL程序中用到的事件主要是on message事件、on timer事件和on sysvar事件,以CHM報文與BHM報文交互為例,CAPL程序如下。
on start
{
write(\"充電前請先插入充電槍并發送A+信號\");
}
on sysvar_update Chrg::`START //按下開始充電按鈕后開始周期發送CHM報文
{
if(@Chrg::`START==1)
{
msg_CHM.Rx_numChrgANCHM=@CHM::Rx_num ChrgrCANCHM;
setTimerCyclic(timerCHM,250);
}
}
on timer timerCHM //周期發送CHM報文
{
if(@Ena::Tx_swtenaCHM==0)
{
msg_CHM.can=2;
output(msg_CHM);
}
else
{
cancelTimer(timerCHM);
}
}
on message BHM
{
cancelTimer(timerCHM);//停止周期發送CHM報文
msg_CRM.can=2;
output(msg_CRM);
setTimer(timerCRM,250);
}
上述程序實現了直流充電通信過程中充電握手階段按下充電按鈕開始充電、周期發送CHM報文、報文停止發送的功能。通過不同的CAPL事件,完成充電報文的條件發送及接收,從而實現充電過程的通信交互邏輯。
3.3" 顯示界面設計
為了方便測試人員使用,需設計一款顯示界面,界面需能夠直接體現系統的主要功能及操作,例如控制充電開始/結束,顯示充電過程中的充電電流、電壓、SOC、溫度等信息,標定充電機參數,關閉報文發送使能等。在編輯顯示界面時,操作控件需要與數據庫中的信號或系統變量進行關聯。通過顯示界面,測試人員可通過在界面上進行勾選、標定等操作控制充電過程,實現快速的仿真測試。如圖4所示。
3.4" 充電流程驗證
在充電機系統搭建完成后,利用CANalyzer軟件運行仿真系統,驗證充電機仿真系統功能是否滿足要求。
3.4.1" 報文周期發送
當車輛準備就緒,按下界面內開始充電按鈕后進入充電流程,充電機報文開始周期發送,記錄的報文數據如圖5所示。
由圖5可知,充電機能夠按照充電通信協議進行周期報文的發送與接收,完成整個充電流程的報文交互邏輯。
3.4.2" 多包報文交互
在充電報文交互過程中,存在著部分報文長度超出8字節的多包報文,如BRM報文、BCP報文和BCS報文。多包報文按照通信協議需要使用傳輸協議功能進行傳輸,即將數據進行拆分、打包、重組[4],從而實現多包數據的傳輸。以BCS報文為例,測試結果如圖6所示。
3.4.3" 報文使能控制
顯示界面集成了報文使能的操作控件,通過點擊按鈕,能控制充電機停止發送報文,從而幫助測試人員實現報文超時功能的測試。如圖7所示,以CRM報文為例,當點擊關閉CRM報文使能按鈕后,充電機停止發送CRM報文,導致充電過程卡在充電握手階段,故障終止充電,完成CRM報文超時故障的測試。
4" 結論
仿真系統設計不但能夠幫助測試人員提高測試效率,同時也能實現很多手動操作難以完成的功能測試,在測試驗證工作中起到重要的作用。本文通過CANalyzer軟件工具,基于CAPL編程語言設計了一種直流充電機系統仿真模型,通過該系統可完成充電機與電動車輛間的直流充電通信交互測試,提高了測試人員的測試效率,滿足測試快速迭代的需求。
參考文獻
[1] GB/T 27930—2023,非車載傳導式充電機與電動汽車之間的數字通信協議[S].
[2] 谷原野,王邵龍,孫運璽,等.基于CAPL語言的車載網關自動化測試系統設計[J].汽車電器,2017(9):53-54.
[3] 李桂偉,丁健,蔡永祥.基于CAPL編程的CAN網絡仿真模型搭建方法研究[J].汽車電器,2022(7):84-87.
[4] 謝娟娟,李晉,鄭創明.SAE J1939多包傳輸協議及應用分析[J].周口師范學院學報,2016,33(2):66-70.
(編輯" 楊凱麟)
收稿日期:2024-11-15
作者簡介:張本軒(1996—),男,碩士,主要從事企業電池軟件測試工作。