張洪月1,劉延迪,楊海軍1,黃召明1,蘇建軍
(1.中車青島四方機車車輛股份有限公司,山東 青島 266000;2.北京航天測控技術有限公司,北京 100041)
我國《鐵路“十三五”發展規劃》提出:到2020年路網建設達到15萬公里,其中高速鐵路3萬公里,動車組列車承擔旅客運量比重達到65%。未來我國將依靠科技進步與創新,建成安全、高效、節能、環保、高度信息化的現代化鐵路[1-2]。
動車組整車線纜作為動車運行過程中電力輸送和信號傳輸的重要載體,其性能好壞直接關系到動車運行安全[3]。因此,在動車組生產、定期檢修維護過程中,整車線纜測試是整個電氣測試過程中非常重要的環節。為了保證供電及信號的安全可靠,需要對整車內部線纜進行導通絕緣測試,并能對故障線纜進行快速定位,滿足整車生產和維修需求[4-5]。
早期對整車線纜的導通絕緣測試主要依靠人工操作,導通測試利用蜂鳴器單點對單點完成,絕緣測試主要利用分立儀器通過短接線夾完成[6]。人工測試存在測試效率低、測試精度差、易漏查、錯查等問題。同時,在進行絕緣測試時,測試人員需操作500 V的高壓設備,存在安全隱患[7]。
為推進我國線纜測試設備智能化、自動化的發展,建立標準化的在線檢測流程,實現安全、可靠、實時的動車組車內電氣配線導通絕緣測試,基于動車組自動導通測試系統開展測試軟件的設計。
動車組自動導通測試系統的軟件設計包括三大部分:上位機軟件、主控單元軟件、開關單元軟件。上位機軟件導入并解析Excel電纜導通表,下發激勵測量控制指令到主控單元軟件;主控單元軟件接收并解析控制指令,驅動主控單元進行激勵控制、信號采集,同時下發通道閉合斷開控制指令到開關單元軟件;開關單元軟件負責解析控制指令,驅動開關單元完成通道閉合或斷開,并將開關狀態上傳給主控單元軟件。主控單元完成測試后,將測試數據上傳到上位機軟件,上位機軟件負責數據實時顯示,管理[8-10]。軟件總體組成如圖1所示。

圖1 軟件總體組成圖
開發環境如表1。
運行環境如表2。
功能指標:
自動導通測試軟件功能指標主要包括如下。
1)功能測試:實現導通測試、絕緣測試、二極管測試;
2)自動生成測試流程:通過導入Excel導通表,解析生成測試流程;
3)測試數據實時顯示:執行測試過程中,實時顯示測試結果;

表1 開發環境指標表

表2 運行環境指標表
4)數據報表管理:測試數據本地存儲、查找、報表導出、打印;
5)系統自檢:整機狀態自檢,系統通道自檢;
6)系統校準:導通阻值、絕緣阻值校準;
7)用戶管理:添加、刪除、修改用戶權限。
上位機軟件運行在Win7、Win10等32位或64位中文版操作系統中,通過LAN/WIFI與主控單元通訊,遠程控制主控單元。上位機軟件作為用戶交互界面,遵循模塊化設計的思想,便于后期功能擴展。上位機軟件主要功能模塊包括:用戶管理、電纜表導入導出、流程解析引擎、數據顯示、數據存儲、LAN/WIFI通信、報表管理和系統自檢校準。其主要功能框圖如圖2所示。
上位機軟件主要職能是導入并解析Excel電纜表,生成測試程序(.TPS),再由流程解析引擎依據通訊協議形成導通及絕緣測試指令、二極管測試指令、并聯測試指令等,經LAN/WIFI發送給主控單元,由主控單元執行相應測試。上位機軟件接收主控單元上傳的測試數據,并以列表形式顯示每條測試結果。同時,上位機軟件具有數據報表功能,可隨時查看、檢索、導出歷史測試記錄,支持Excel、Word和PDF三種報表格式。

圖2 上位機軟件功能框圖
電纜表導入導出功能的核心是檢驗電纜表格式的正確性。主要的格式檢驗項包括:通道地址、激勵參數、合格判據。
通道地址格式采用五位數字表示,如01105。最左邊兩位表示箱號,箱號范圍為00~99;中間一位表示板號,板號范圍為0~9,分別表示第1塊繼電器板到第10塊繼電器板;最右邊兩位表示通道號,通道號范圍為00-49,表示每塊繼電器的通道號。通過對通道號的定義,保證每個測試通道都分配唯一的物理地址。通道地址格式檢驗代碼如下:
Bool AddressChech (CString strAddr,CString &strErrMess)
{
CT2CA tempAddr(strAddr);
string strAddress(tempAddr);
//定義通道校驗正則表達式
regex regPattern("(0{0,3}[0-4][0-9])");
if (regex_match(strAddress, regPattern))
return true;
strErrMess = "通道地址格式錯誤";
return false;
}
流程解析引擎模塊作為上位機軟件的核心,負責執行測試過程中將測試流程解析相應的測試指令,再通過網絡發送給主控單元。在進行測試流程解析時采用多線程機制,提高解析速度,保障測試的實時性要求。流程解析關鍵代碼如下。
CString m_strWorkpath = GetWorkPath();//獲得文件路徑
CString tmp = m_strWorkpath + _T("ConfigChildHost.ini");//*.ini文件中包含IP地址和端口
//解析網絡地址和端口
ReadNethostAddress(tmp,m_IpAddress,m_strPort);
//連接服務器
m_InstruSocket.Create();
if(!m_InstruSocket.Connect(m_IpAddress,atoi(m_strPort)) == TRUE)
AfxMessageBox(_T("主控單元網絡連接失敗"));
//讀取通道列表信息
CString m_strCurWorkPath = GetWorkPath() + _T("ConfigChannelsList.ini");
pRunParam->m_pChannelsList->ReadCardList(m_strCurWorkPath);
//流程解析引擎循環執行解析任務
while (nCurStep <= nEndStep)
{
//取出當前步驟
pCurItem = pRunParam->m_pFlow->m_pItem[nCurStep];
//處理當前步驟數據,解析成規定的傳輸格式,發送給主控單元
strCmd = parseItem(pCurItem);
if ( m_InstruSocket.Send(strCmd,len,0) != len) return ERROR_FORCE_EXIT;
//接收并處理要采集的數據
m_InstruSocket.Receive(&RecBuf,sizeof(RecBuf),0);
if (pCurItem->DataProcess(&RecBuf,m_Error) == ERROR_FORCE_EXIT)
return ERROR_FORCE_EXIT;
}
主控單元軟件無界面后臺運行在WinXP系統中,通過LAN/WIFI與上位機軟件通訊,通過CAN總線與開關單元通訊。主控單元軟件作為整個系統軟件最核心的部分,主要功模塊包括:主控單元狀態監測、LAN/WIFI通訊、CAN通訊、測量指令解析引擎和安全控制。其主要功能框圖如圖3所示。

圖3 主控單元軟件框圖
主控單元軟件接收上位機發送的測試指令,由測量指令解析引擎調用主控單元中高壓激勵控制、恒流激勵控制、電流/電壓采集、二極管測試等模塊的驅動,并向開關單元發送開關動作指令(閉合或斷開)。待采集完成,將測量結果上傳給上位機軟件。
主控單元狀態監控模塊實時采集測試回路的電壓和電流值、板卡的狀態信息,如果存在異常,將調用安全控制模塊。安全控制模塊控制硬件實現過壓過流保護,確保測試系統安全。
測量指令解析引擎模塊作為主控單元軟件的核心,負責高壓激勵控制、恒流激勵控制、電壓/電流采集、測量功能切換、并聯掃描、二極管測試等。以導通測試為例,展開介紹導通測試軟件實現方法。導通測試流程主要分為:①測試系統初始化,包括初始化AD采集,初始化CAN,獲取開關箱狀態,加載校準數據表;②下發通道閉合指令,閉合測試通道;③控制恒流源,施加激勵,并進行AD信號采集;④下發通道復位指令;⑤測試數據回傳上位機。其關鍵代碼如下。
// 測試系統初始化
if (!MakesureInstrumentHasInited(TF_FUNC_RS2, strErrorInfo))
{
SetLastErrorInfo(_T("初始化相關設備失敗:") + strErrorInfo, session);
return false;
}
// 判斷輸入點地址和輸出點地址是否在線。paramAry表示從上位機接收并解析的測試指令。
if (!CSwitchBoxStatus::GetInstance().CanOperTargetSwitch(paramAry.GetAt(0)) ||
!CSwitchBoxStatus::GetInstance().CanOperTargetSwitch(paramAry.GetAt(1)))
{
SetLastErrorInfo(_T("開關地址無效,所屬開關箱不在線"), session);
return false;
}
// 發送開關閉合指令到開關單元,閉合相應通道開關。
if (!ConnectSwitch(paramAry.GetAt(2),paramAry.GetAt(0), paramAry.GetAt(1), strErrorInfo))
{
SetLastErrorInfo(_T("閉合開關失敗:") + strErrorInfo, session);
return false;
}
// 施加激勵信號并采集,采集完成復位AD板卡
double fCurrent = 0,fVolt = 0;
if (!DoEncourage(paramAry.GetAt(3), fVolt, fCurrent, strErrorInfo))
{
SetLastErrorInfo(_T("激勵采集失敗:") + strErrorInfo, session);
return false;
}
// 開關箱開關復位
if(!ResetNeededSwitch(paramAry.GetAt(0),paramAry.GetAt(1),strErrorInfo))
{
SetLastErrorInfo(_T("開關箱復位失敗:") + strErrorInfo, session);
return false;
}
//計算碼值
fCodeValue = fVolt / fCurrent;
//碼值轉換為實際值
fRealValue = CCalibrationManager::GetInstance().GetCalibrationData().GetDiandaoValue(fCodeValue, nCurr);
// 減去開關本身阻值
double fCorrectRes = 0;
SwitchCorrect::GetInstance().GetMinResistance(paramAry.GetAt(0), paramAry.GetAt(1), fCorrectRes);
fRealValue-= fCorrectRes;
// 判斷采集結果合格與否
if ((fRealValue <= _ttof(paramAry.GetAt(6))) && (fRealValue >= _ttof(paramAry.GetAt(5))))
{
nResult = 1;
}
// 把測試值和測試結果回傳上位機
CString strInfoBack;
strInfoBack.Format(_T("%.2fΩ,%d|"), fRealValue, nResult);
SendBackTestResult(strInfoBack, session);
CAN通訊作為主控單元和開關單元數據交互的橋梁,需初始化CAN配置和定義數據幀格式,確保數據收發的可靠性。CAN通訊的參數配置如下所示,其中波特率為100 Kbps,可實現最大通訊距離620米。
include "ControlCan.h"http://包含CAN頭文件
VCI_INIT_CONFIG init_config;//定義CAN初始化結構體
DWORD code = 0,mask = 0xFFFFFFFF,timing0 = 0x04,timing1 = 0x1C;
init_config.AccCode=code;//設置CAN的驗證碼
init_config.AccMask=mask;//設置CAN的掩碼
init_config.Filter=0;//設置CAN的濾波方式,1 表示單濾波,0 表示雙濾波
init_config.Mode=0;//設置CAN的模式,0 表示正常模式,1 表示只聽模式
//設置CAN 波特率,由Timing0 和Timing1兩個定時器組成
init_config.Timing0=(UCHAR)timing0;
init_config.Timing1=(UCHAR)timing1;
本系統采用標準幀作為數據幀格式。CAN標準幀信息為11個字節,包括兩部分:信息和數據部分。前3個字節為信息部分,后8個字節為數據部分。CAN數據幀格式定義如表3所示。通過該數據幀格式定義,可實現多路輸入-多路輸出通道控制。
開關單元軟件無界面運行在WinXP系統中。通過CAN總線與主控單元通訊,由指令解析引擎調用開關控制驅動,完成任意通道的閉合和斷開,可同時閉合兩路通道和多路通道。主要功能如圖4所示。

圖4 開關單元功能框圖
由于開關單元由主控板和繼電器板組成,每個繼電器都被定義了唯一的驅動地址。開關指令解析引擎需將CAN接收到的通道地址解析成繼電器地址,再下發給硬件板卡,實現任意通道的切換。在進行通道解析過程中,需先解析箱號信息,在解析板號信息,最后解析通道信息,根據通道地址的奇偶性,分別執行不同的控制程序。開關單元閉合任意通道關鍵代碼如下。
//獲取輸入通道地址,strParamArray為主控單元通過CAN發送給開關單元的控制指令
m_strAddrIN = strParamArray.GetAt(1)+strParamArray.GetAt(2);
//判斷輸入通道地址是否屬于該箱號
if(theApp.m_oThisBox.Care(m_strAddrIN))
{
//解析通道的板號信息
int Box_id = m_strAddrIN.GetAt(0)-'0'+1;
_outp(Box_id << 12,0xFF);
if (_inp(0xFFFF) == 0x01)
{
//判斷輸入通道地址是偶地址還是奇地址
if ((atoi(m_strAddrIN)%2==0))
{
//偶地址,選擇偶輸入通道
InEVEN();
//閉合輸入通道地址對應的繼電器
int board_id = m_strAddrIN.GetAt(1)-'0';
int relay_id = atoi(m_strAddrIN.Right(2));
int tmp = (((board_id >> 1) +1+((board_id > 5)<<1))<<8)+(board_id & 1)*100+((relay_id>>1)<<1);
_outp(tmp+1,0x01);
}
else
{
//奇地址,選擇奇輸入通道
InODD();
//閉合輸入通道地址對應的繼電器
int board_id = m_strAddrIN.GetAt(1)-'0';
int relay_id = atoi(m_strAddrIN.Right(2));
int tmp = (((board_id >> 1) +1+((board_id > 5)<<1))<<8)+(board_id & 1)*100+((relay_id>>1)<<1);
_outp(tmp+1,0x01);
}
}
}
為確保導通電阻與絕緣電阻的精度,需對導通測試和絕緣測試阻值進行校準。通過繪制AD采集到的碼值與標準阻值的擬合曲線,得到不同激勵量程下的擬合方程。將擬合方程的參數填入校準參數表中,每當進行相應功能測試時,校準程序自動調取擬合參數進行特性方程計算,換算成真值。
導通電阻校準按照恒流電流大小分50、100、200、300、500 mA等幾個校準點進行校準,通過接入標準電阻箱(電阻范圍0 Ω~1 MΩ),改變標準電阻值,并記錄測試系統采集到的碼值,以碼值作為自變量x,標準值作為因變量y,進行線性或者二次方程擬合,根據擬合方程:y=y0+A1*x,得到擬合參數y0、A1值。為獲得更精確的導通電阻值,每個校準點下最多可分10段擬合曲線。導通電阻擬合曲線如圖5(a)所示,導通電阻校準參數界面如圖5(b)所示。

圖5 導通電阻校準設計
絕緣電阻校準按照高壓直流電壓大小分50、100、250、400、500 V等幾個校準點進行校準,通過接入標準高阻箱(電阻范圍100 KΩ~1 GΩ),改變標準電阻值,并記錄測試系統采集到的碼值。以碼值作為自變量x,標準值作為因變量y,根據絕緣電阻輸入-輸出特性,采用三階指數衰減函數進行擬合。
三階指數衰減函數如下:
(1)
式中,x為AD采集碼值,T為電阻真值。
由擬合曲線,得到擬合參數y0、A1、t1、A2、t2、A3、t3值。為獲得更精確的絕緣電阻值,每個校準點下最多可分10段擬合曲線,通常采取三、四段數據進行擬合。絕緣電阻擬合曲線如圖6(a)所示,絕緣電阻校準參數界面如圖6(b)所示。

圖6 絕緣電阻校準設計
為驗證測試軟件功能的完好性及運行的可靠性,搭建動車組自動導通測試系統,并安裝自動測試軟件,以標準動車組整車線纜為被測對象開展測試軟件的功能驗證工作。
上位機軟件的“生成TP”模塊將實現電纜表自動導入導出。按照流程化操作步驟,上位機軟件加載Excel電纜表文件,進行語法分析、解析配置、自動生成測試流程(.TPS)。Excel表如果有語法錯誤,在保存時彈出錯誤信息對話框。如果沒有語法錯誤,則提示導入成功。同時,“生成TP”模塊具有新建、打開、編輯、刪除、刷新測試流程功能,其中編輯流程具有追加步驟、刪除步驟、插入步驟等操作。電纜表自動導入界面如圖7所示。

圖7 電纜表自動導入界面
通過新建測試流程,導入并解析Excel電纜表,保存生成測試流程等一系列操作,結果表明電纜表自動導入導出功能完善,語法解析正確,操作簡單快捷。
將自動導通測試系統推到整車線纜測試區域,根據整車線纜分布情況,配備4000路通道的3輛移動小車分別放在車頭、車尾和中間3個位置。連接轉接工裝線纜,確保自動導通測試系統與整車內部被測線纜有效連接。
測試系統上電,主控單元軟件和開關單元軟件自啟動,并執行初始化程序,檢測自身狀態,回傳至上位機。上位機軟件可根據收集到的狀態信息,分析整個測試系統的健康狀況。
啟動“執行測試”模塊,進入執行測試運行主界面,如圖8所示。執行測試主界面分3個區域:功能區、狀態區和測試結果顯示區。

圖8 執行測試運行主界面
功能區包括運行、暫停、停止、導出Excel、導出Word、導出PDF等操作。狀態顯示區用于顯示當前測試步驟、技術要求、測試數值、當前系統日期、當前系統時間、開始測試時間、測試累計時間等。測試結果顯示區實時顯示測試信息和測試結果。
通過執行測試流程(M3車自動導通測試.TPS),上位機軟件、主控單元軟件和開關單元軟件協調工作,驅動相應的板卡進行激勵、采集、通道切換,快速完成整車線纜的導通性能測試。為確保驗證的合理性,選擇經過人工導通測試、線纜連接關系正確的車輛執行五次自動測試,從整個測試過程和測試結果可以看出,測試軟件運行穩定,測試結果滿足測試要求。
為了解決動車組整車線纜自動化測試需求,基于動車組自動導通測試系統展開測試軟件的設計。該測試軟件由上位機軟件、主控單元軟件和開關單元軟件組成。上位機軟件采用模塊化設計思想,具有良好的通用性和可擴展性。上位機軟件與主控單元軟件采用C/S架構,可實現遠程控制。主控單元與開關單元采用CAN通訊模式,可實現分布式管理。
通過與實車對接測試,驗證了測試軟件的電纜表導入導出功能和自動導通測試功能,表明該測試軟件運行穩定,操作簡單便捷,各模塊功能完善,符合整車線纜自動化測試要求。