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