宋凱林,黃 峰
(湖南工程學(xué)院 電氣與信息工程學(xué)院,湘潭411104)
近年來,隨著我國經(jīng)濟(jì)的快速發(fā)展,國家加大了對軌道交通領(lǐng)域的投入,傳動控制行業(yè)也迎來了飛速發(fā)展時期,各種自動化控制設(shè)備大量投入應(yīng)用.同時伴隨著應(yīng)用環(huán)境的多元復(fù)雜化,設(shè)備故障也出現(xiàn)了指數(shù)級的暴增[1].通常地,設(shè)備故障的產(chǎn)生是一種具有偶發(fā)性、難以重現(xiàn)性的事件,傳統(tǒng)解決途徑是,設(shè)備研發(fā)企業(yè)派遣大量技術(shù)人員前往現(xiàn)場,進(jìn)行人為定位和排查,但經(jīng)常由于故障運(yùn)行狀態(tài)下數(shù)據(jù)的不足或缺失,而加大技術(shù)人員解決問題的難度,且資源浪費(fèi)嚴(yán)重[2].因此非常必要研發(fā)設(shè)計一款故障數(shù)據(jù)記錄平臺,使其能高智能記錄設(shè)備故障,并根據(jù)相應(yīng)的故障現(xiàn)象進(jìn)行故障的快速定位,實(shí)現(xiàn)設(shè)備全生命周期的數(shù)據(jù)記錄,進(jìn)而通過對海量故障數(shù)據(jù)分析,運(yùn)用大數(shù)據(jù)等新興技術(shù)進(jìn)行設(shè)備故障預(yù)警[3-5].
目標(biāo)平臺基于德州儀器TI 的多核異構(gòu)SOC 芯片OMAPL138(DSP + ARM 雙 核,下 文 中 簡 稱OMAP)處理器進(jìn)行研發(fā),作為中車旗下的某型主流城軌牽引控制變流器的故障記錄設(shè)備.
硬件架構(gòu)層,平臺基本方案需求點(diǎn)包括:脈沖分配板傳輸多路IO 信號及故障脈沖信號,F(xiàn)PGA 與脈沖轉(zhuǎn)換板之間采用光纖通信;FPGA 與OMAP 片上DSP 核之間采用UPP(并行接口總線)通信,實(shí)現(xiàn)高速設(shè)備數(shù)據(jù)流的同步;主控OMAP 主要負(fù)責(zé)在變流器發(fā)生設(shè)備時,將高速的設(shè)備運(yùn)行控制、狀態(tài)數(shù)據(jù)存儲到本地等,如圖1 所示.
圖1 平臺硬件架構(gòu)
軟件架構(gòu)層,底層平臺為保證故障數(shù)據(jù)記錄系統(tǒng)的高實(shí)時性,主控OMAP 側(cè)采用vxWorks 硬實(shí)時嵌入式操作系統(tǒng),如圖2 所示,平臺軟件采用架構(gòu):1 級RBL(ROM BootLoader)+1 級UBL(User BootLoader)+1 級UBOOT(the Universal Boot-Loader)+1 級vxWorks(Kernel).在系統(tǒng)的幾類存儲介質(zhì)中,SPI Flash 因其高可靠性屬性,主要存放操作系統(tǒng)內(nèi)核固件及BIOS 啟動程序;NAND Flash 作為高性價比大容量存儲,存放各類應(yīng)用程序,包括故障記錄應(yīng)用程序本身,以及設(shè)備運(yùn)行日志等;SATA 因其超大容量存儲,主要存放海量的設(shè)備突發(fā)故障時的運(yùn)行狀態(tài)數(shù)據(jù).
圖2 平臺軟件架構(gòu)
作為軌道交通城軌牽引傳動變流器的故障記錄設(shè)備,其數(shù)據(jù)流規(guī)模呈現(xiàn)出高速實(shí)時性,外部的變流器脈沖分配模塊每16 μs 會周期性輸入32*24 個字,整個數(shù)據(jù)鏈路中的數(shù)據(jù)量高達(dá)驚人的733 Mbit 每秒.設(shè)計高速數(shù)據(jù)流的記錄系統(tǒng),必須基于整個系統(tǒng)數(shù)據(jù)流鏈路分析硬件平臺性能瓶頸,如圖3 所示.
圖3 數(shù)據(jù)流鏈路
1)FPGA 芯片采用Xilinx 的XC7A100T,其優(yōu)越的數(shù)據(jù)處理性能足夠中轉(zhuǎn)和處理來自脈沖分配板的高速設(shè)備狀態(tài)數(shù)據(jù)流;
2)FPGA 與OMAP 片內(nèi)DSP 核之間通過UPP通訊總線進(jìn)行上下行數(shù)據(jù)交互,其總線最高吞吐量可以達(dá)到150 MB/s,故也能適配目標(biāo)高速數(shù)據(jù)流的緩存需求;
3)OMAP 片內(nèi)可將共享RAM 作為數(shù)據(jù)流的一級緩存區(qū),ARM 核從共享RAM 中讀取DSP 已緩存的數(shù)據(jù)流,再緩存至OMAP 側(cè)外掛的DDR 中,而DDR 資源絕大部分被操作系統(tǒng)的內(nèi)核調(diào)度占用,于是DDR 數(shù)據(jù)寫入速度無法匹配目標(biāo)高速數(shù)據(jù)流的緩存速度,造成了共享RAM 中數(shù)據(jù)的寫入速度遠(yuǎn)高于讀取速度,造成數(shù)據(jù)流的覆蓋丟失,所以必須采用一種合理的一級數(shù)據(jù)流緩存機(jī)制來彌補(bǔ)平臺硬件性能的不足;
4)ARM 核將DDR 中作為數(shù)據(jù)流的二級緩存區(qū),通過片內(nèi)高速并行總線EDMA 再一次將數(shù)據(jù)流緩存到DDR 中,而DDR 在搭載運(yùn)行操作系統(tǒng)后,根據(jù)存儲映射及內(nèi)存分配機(jī)理可知,可供數(shù)據(jù)流的緩存空間是非常有限.同樣地,也必須提出一種合理的二級數(shù)據(jù)流緩存機(jī)制,在保證數(shù)據(jù)流正確緩存的前提下,實(shí)現(xiàn)DDR 存儲空間利用率的最大化;
5)當(dāng)發(fā)生設(shè)備故障時,將相應(yīng)的故障數(shù)據(jù)流從DDR 緩存中提取,并以文件的形式將該故障數(shù)據(jù)流存儲在SATA 搭建的文件系統(tǒng)中,以便相關(guān)人員分析對應(yīng)設(shè)備故障.
根據(jù)上述數(shù)據(jù)流鏈路的分析,確定可以采用多級緩存機(jī)制實(shí)現(xiàn)該高速數(shù)據(jù)流記錄系統(tǒng),主要因外部DDR 緩存數(shù)據(jù)流能力的不足引出兩個技術(shù)難點(diǎn):如何在一級緩存區(qū)共享RAM 中設(shè)計合理的高速數(shù)據(jù)流緩存機(jī)制,解決數(shù)據(jù)流讀寫速度不匹配問題;如何在二級緩存區(qū)DDR 有限硬件資源中,設(shè)計有效可靠的數(shù)據(jù)流的緩存機(jī)制,突發(fā)設(shè)備故障時從緩存數(shù)據(jù)流中快速準(zhǔn)確提取目標(biāo)故障數(shù)據(jù)流,保證故障數(shù)據(jù)的實(shí)時準(zhǔn)確性.
共享雙口RAM 的讀寫訪問原理簡單,但作為目標(biāo)高速數(shù)據(jù)流的緩沖區(qū)時會產(chǎn)生兩個問題:一個是DSP 核側(cè)的UPP 模塊和ARM 核同時去訪問操作共享RAM 時,不可避免地會產(chǎn)生內(nèi)存不一致問題,導(dǎo)致數(shù)據(jù)出錯;另一個就是對共享RAM 而言,UPP 模塊的寫入速度遠(yuǎn)高于ARM 核讀取數(shù)據(jù)流再寫入DDR 的速度,容易造成讀寫帶寬競爭引起數(shù)據(jù)流無法同步甚至覆蓋丟失.通常工程解決辦法可參考計算機(jī)存儲器層次中的高速緩存[6-8],引入數(shù)據(jù)流緩沖機(jī)制,典型的如“乒乓”操作,如圖4 所示.
1)DSP 檢測到緩沖區(qū)1 的空標(biāo)志,往緩沖區(qū)1中填充數(shù)據(jù),填滿之后,設(shè)置相關(guān)標(biāo)志位及滿標(biāo)記;
2)DSP 檢測到緩沖區(qū)2 的空標(biāo)志,往緩沖區(qū)2中填充數(shù)據(jù),填滿之后,設(shè)置相關(guān)標(biāo)志位及滿標(biāo)記;同時ARM 檢測到緩沖區(qū)1 的滿標(biāo)記,開始讀取緩沖區(qū)1 數(shù)據(jù),讀完之后,設(shè)置相關(guān)標(biāo)志位及空標(biāo)記;
3)DSP 檢測到緩沖區(qū)1 的空標(biāo)志,往緩沖區(qū)1中填充數(shù)據(jù),填滿之后,設(shè)置相關(guān)標(biāo)志位及滿標(biāo)記;同時ARM 檢測到緩沖區(qū)2 的滿標(biāo)記,開始讀取緩沖區(qū)2 數(shù)據(jù),讀完之后,設(shè)置相關(guān)標(biāo)志位及空標(biāo)記;
4)重復(fù)周期執(zhí)行上述過程,形成一個數(shù)據(jù)流的存取閉環(huán)鏈路.
圖4 “乒乓”操作
已知OMAP 內(nèi)部的共享RAM 容量為128 KB,上述數(shù)據(jù)流緩沖機(jī)制雖然能夠提高共享RAM 的數(shù)據(jù)吞吐能力,卻引入其他問題:一個是必須事先分配指定大長度且地址連續(xù)的存儲空間,空間利用率低下,不適合有限的RAM 空間資源;另一個是數(shù)據(jù)的存取之間會存在相對較多的等待周期,造成數(shù)據(jù)緩存中的讀寫效率低下,相對目標(biāo)高速目標(biāo)數(shù)據(jù)流而言容易達(dá)到瓶頸值甚至不滿足目標(biāo)需求.
基于上述“乒乓”操作分析,本文提出一種改進(jìn)型類“乒乓”操作機(jī)制,如圖5 所示.
在共享RAM 中開辟n 個地址不連續(xù)緩沖塊,避免連續(xù)大緩沖區(qū)引起RAM 空間的不足,塊的大小取決于單個周期鏈路上所傳輸?shù)臄?shù)據(jù)量,也就是每16 μs 傳輸32*24 個字,其中n 取決于數(shù)據(jù)存取雙方的最大通訊周期的倍數(shù):
n ≥Tarm_rMAX/Tdsp_tMAX + 1 (1)
因上述n 個緩沖塊的地址空間不連續(xù),故生成一個地址表保存對應(yīng)緩沖塊的首地址,每次通信雙方進(jìn)行數(shù)據(jù)的存取時,從地址表中查找對應(yīng)緩沖塊的地址,當(dāng)訪問到地址表的最后成員時,就返回到首地址,形成一個閉環(huán)緩沖區(qū).引入這種閉環(huán)緩沖區(qū),一方面可以充分利用一些零散的存儲空間;另一方面可以動態(tài)增加緩沖塊n 值,以應(yīng)對通信雙方因周期改變帶來的不確定性,利用冗余保證系統(tǒng)穩(wěn)定和可靠性.
圖5 閉環(huán)緩沖區(qū)
圖6 為該改進(jìn)型數(shù)據(jù)緩存算法的具體數(shù)據(jù)讀寫流程.
DSP 側(cè)數(shù)據(jù)寫入過程:DSP 檢測滿標(biāo)志是否置位,是則放棄本次數(shù)據(jù)寫入,等待數(shù)據(jù)的讀取完畢,等待時間超過閾值則增加緩沖塊n 值;根據(jù)寫指針在上文的地址表中查找,將數(shù)據(jù)寫入對應(yīng)緩沖塊;寫指針加1,若其大于n,則將其清零;判斷當(dāng)前寫指針是否等于讀指針,是則將滿指針置位用以指示當(dāng)前閉環(huán)緩沖區(qū)數(shù)據(jù)已滿,否則將滿指針清零;
ARM 側(cè)數(shù)據(jù)讀出過程:ARM 檢測空標(biāo)志是否置位,是則放棄本次數(shù)據(jù)讀取,當(dāng)前閉環(huán)緩沖區(qū)已空,等待有效數(shù)據(jù)的寫入;根據(jù)讀指針在上文的地址表中查找,將數(shù)據(jù)從對應(yīng)緩沖塊讀出;讀指針加1,若其大于n,則將其清零;判斷當(dāng)前讀指針是否等于寫指針,是則將空指針置位以標(biāo)識當(dāng)前閉環(huán)緩沖區(qū)數(shù)據(jù)數(shù)據(jù)已空,否則將空指針清零.
圖6 數(shù)據(jù)讀寫流程圖
當(dāng)ARM 核將高速數(shù)據(jù)流從片上共享RAM 中讀取出來后,會再一次將數(shù)據(jù)流緩沖到外掛DDR中,從而采用多級緩存機(jī)制實(shí)現(xiàn)了高速數(shù)據(jù)流的緩存.于是當(dāng)設(shè)備發(fā)生故障時,應(yīng)該如何設(shè)計DDR 緩存高速數(shù)據(jù)流機(jī)制,以及在設(shè)備故障時刻如何在已緩存數(shù)據(jù)流中,準(zhǔn)確實(shí)時提取出故障數(shù)據(jù)流,避免成為舊數(shù)據(jù)被新數(shù)據(jù)覆蓋掉.
圖7 為DDR 中采用的環(huán)形隊列數(shù)據(jù)流緩存機(jī)制.
圖7 環(huán)形隊列緩沖區(qū)
1)在DSP 核完成數(shù)據(jù)流在片上共享RAM 中的緩存后,ARM核會將數(shù)據(jù)流從共享RAM中讀取,剛開始會從循環(huán)隊列的Head 位置,一次性寫入20 ms數(shù)據(jù),也就是1250個數(shù)據(jù)包(每個數(shù)據(jù)包大小為16 μs的周期數(shù)據(jù)量),共計14.65 Mbit;
2)從節(jié)約硬件資源的角度出發(fā),往循環(huán)隊列可共緩沖三次數(shù)據(jù)(共1250*3 個數(shù)據(jù)包),當(dāng)隊列指針等于Tail 時,表示隊列已滿,隊列開始覆蓋緩存;
3)系統(tǒng)為了對設(shè)備故障事件做出實(shí)時響應(yīng),由FPGA 集成故障檢測算法[9-10],實(shí)時檢測判斷異常數(shù)據(jù),通過產(chǎn)生GPIO 中斷通知ARM 核發(fā)生設(shè)備故障事件.已知整個中斷響應(yīng)事件為10 ms(從設(shè)備故障產(chǎn)生到FPGA 識別故障事件產(chǎn)生GPIO 中斷),故障分析策略為提取設(shè)備故障時刻前后10 ms 的數(shù)據(jù)流,當(dāng)發(fā)生故障時當(dāng)前隊列指針逆時針20 ms 內(nèi)的數(shù)據(jù)流即為目標(biāo)故障數(shù)據(jù)流;
4)系統(tǒng)調(diào)度故障記錄任務(wù)將上述故障數(shù)據(jù)流以文件形式存儲至SATA 搭建的文件系統(tǒng)中.
為驗證目標(biāo)系統(tǒng)的可靠性和有效性,本文采用持續(xù)對比測試來進(jìn)行系統(tǒng)驗證:一種方案為平臺采用數(shù)據(jù)流直傳的系統(tǒng)方案,即ARM 核直接將數(shù)據(jù)從共享RAM 中取出,存儲到文件系統(tǒng)中;另一種為采用本文提出的數(shù)據(jù)流多級緩存的系統(tǒng)方案,如表1 所示.其測試過程中OMAP 初始狀態(tài)處于正常負(fù)荷下,唯一測試激勵變量為數(shù)據(jù)流規(guī)模量的提升,即在不斷減少數(shù)據(jù)傳輸周期內(nèi),數(shù)據(jù)鏈路上傳輸相同規(guī)模數(shù)據(jù)量——32*24 個字.
表1 兩種系統(tǒng)可靠性對比
對比測試結(jié)果表1 表明:采用數(shù)據(jù)流直傳方案的系統(tǒng)在通訊周期為50 μs 以下時,開始偶發(fā)數(shù)據(jù)流的覆蓋丟失,系統(tǒng)出現(xiàn)總線帶寬競爭,甚至引發(fā)ARM 核任務(wù)調(diào)度超時,數(shù)據(jù)記錄系統(tǒng)崩潰失效,無法滿足目標(biāo)系統(tǒng)需求;而采用數(shù)據(jù)流多級緩存方案的系統(tǒng)在通訊周期為16 μs 時,系統(tǒng)依然運(yùn)行正常,僅僅是在可用的硬件資源范圍多開辟一些共享RAM 空間,在設(shè)備發(fā)生故障時能夠正常準(zhǔn)確記錄故障數(shù)據(jù)流,滿足系統(tǒng)目標(biāo)需求.
測試方法主要是通過人為模擬觸發(fā)牽引變流器故障,系統(tǒng)自動將故障數(shù)據(jù)流以文件形式存儲到文件系統(tǒng)中.圖8 為配套研發(fā)故障分析上位機(jī)軟件解析出來的故障運(yùn)行狀態(tài)數(shù)據(jù),從紅色和藍(lán)色異常波形可以進(jìn)行故障的快速定位,網(wǎng)壓同步信號幅值及頻率均劇烈變化甚至嚴(yán)重畸變,導(dǎo)致整流控制異常,引發(fā)牽引變壓器二次側(cè)電流異常增大,同既定模擬故障輸入一致.
圖8 牽引控制變流器故障
綜上所述,本文提出設(shè)計的高速數(shù)據(jù)記錄系統(tǒng)能夠滿足目標(biāo)系統(tǒng)需求,能夠助力變流器設(shè)備故障的快速定位,進(jìn)而根據(jù)故障的類別對系統(tǒng)進(jìn)行軟硬件層次的優(yōu)化升級.
本文針對軌道交通領(lǐng)域的牽引傳動控制變流器的高速數(shù)據(jù)流特性,研究設(shè)計了一種基于數(shù)據(jù)流多級緩存機(jī)制的設(shè)備故障記錄系統(tǒng),成功解決該類設(shè)備故障經(jīng)常無法定位的難題,實(shí)現(xiàn)設(shè)備故障的快速定位及設(shè)備全生命周期的數(shù)據(jù)記錄,節(jié)省大量人力、物力資源,助力“中國制造2025”.目前該系統(tǒng)方案已經(jīng)開始應(yīng)用于中車某科研院所旗下設(shè)備,包括主流城軌支柱行業(yè)設(shè)備,遠(yuǎn)銷海內(nèi)外市場.據(jù)了解,該技術(shù)方案每年產(chǎn)生了不菲的經(jīng)濟(jì)效益,而且有望進(jìn)一步在其他類似工程領(lǐng)域推廣應(yīng)用.