李 靖,汪光森 ,劉振田 ,侯承璽 ,覃 剛
LI Jing1,2,WANG Guangsen1,LIU Zhentian1,HOU Chengxi1,2,QIN Gang2
1.海軍工程大學(xué) 艦船綜合電力技術(shù)國(guó)防科技重點(diǎn)實(shí)驗(yàn)室,武漢 430033
2.武漢船用機(jī)械有限責(zé)任公司,武漢 430084
1.School of National Key Laboratory for Vessel Integrated Power System Technology,Naval University of Engineering,Wuhan 430033,China
2.Wuhan Marine Machinery Co.,Ltd.,Wuhan 430084,China
現(xiàn)代復(fù)雜機(jī)電系統(tǒng),如電磁發(fā)射裝置、高速電氣列車、高速軋機(jī)和機(jī)器人等無不是集機(jī)、電、液和控制于一體的復(fù)雜耦合系統(tǒng),涉及到機(jī)械系統(tǒng)、電路電磁系統(tǒng)、液壓系統(tǒng)、熱力系統(tǒng)等多個(gè)學(xué)科領(lǐng)域交融,屬于多能域耦合系統(tǒng)[1-3]。為了充分研究各種因素對(duì)復(fù)雜機(jī)電系統(tǒng)的性能影響和降低研制成本,有必要利用仿真技術(shù)對(duì)復(fù)雜機(jī)電系統(tǒng)的整個(gè)運(yùn)行過程進(jìn)行模型建立及仿真分析[4-6]。利用硬件在回路實(shí)時(shí)仿真技術(shù),采用實(shí)際控制器和虛擬對(duì)象,以實(shí)時(shí)處理器運(yùn)行仿真模型來模擬受控對(duì)象的運(yùn)行狀態(tài),通過I/O接口與被測(cè)系統(tǒng)控制器連接,進(jìn)行整個(gè)機(jī)電系統(tǒng)的實(shí)時(shí)仿真測(cè)試[7-9]。

圖1 實(shí)時(shí)仿真系統(tǒng)結(jié)構(gòu)框圖
復(fù)雜機(jī)電系統(tǒng)控制器接口信號(hào)數(shù)量眾多,由于受經(jīng)濟(jì)成本、硬件資源等因素制約,實(shí)時(shí)仿真系統(tǒng)中仿真通道遠(yuǎn)遠(yuǎn)小于控制器接口信號(hào)數(shù)量,不能滿足復(fù)雜機(jī)電系統(tǒng)接口信號(hào)同步仿真的需求。
本文擬通過在外接設(shè)備中擴(kuò)展I/O板卡,配合采用信號(hào)復(fù)用/解復(fù)用算法,解決實(shí)時(shí)仿真系統(tǒng)中仿真通道不夠用的技術(shù)難題。
實(shí)時(shí)仿真系統(tǒng)主要包括上位機(jī)、下位機(jī)及實(shí)際系統(tǒng)的外接設(shè)備[10-12]。上位機(jī),也稱主機(jī),運(yùn)行于Windows操作系統(tǒng),主要完成仿真模型的設(shè)計(jì)實(shí)現(xiàn),仿真參數(shù)的配置、仿真運(yùn)行的管理以及仿真結(jié)果的顯示;下位機(jī),也稱目標(biāo)機(jī),運(yùn)行Redhat實(shí)時(shí)操作系統(tǒng)的高性能仿真器,負(fù)責(zé)快速分布式協(xié)調(diào)計(jì)算,并連接FPGA處理I/O數(shù)據(jù),從而實(shí)現(xiàn)整個(gè)模型的實(shí)時(shí)運(yùn)行;外接設(shè)備包括擴(kuò)展I/O接口板卡和實(shí)際控制器。上位機(jī)與下位機(jī)之間通過TCP/IP連接,下位機(jī)之間通過PCI-E協(xié)議進(jìn)行連接,實(shí)時(shí)仿真系統(tǒng)結(jié)構(gòu)如圖1所示。
復(fù)用/解復(fù)用算法實(shí)現(xiàn)包含三個(gè)步驟:
(1)一個(gè)仿真周期T內(nèi),將N路仿真信號(hào)在CPU模型中分類打包處理,并發(fā)送給目標(biāo)機(jī)的共享內(nèi)存。
(2)在目標(biāo)機(jī)FPGA中調(diào)用復(fù)用算法。從共享內(nèi)存中讀取數(shù)據(jù)包,將N路信號(hào)分成M組,對(duì)FPGA時(shí)鐘信號(hào)計(jì)數(shù)并生成同步Sync時(shí)鐘信號(hào)[13],將Sync時(shí)鐘信號(hào)、復(fù)用算法的尋址信號(hào)和分組后的仿真信號(hào)重組,并在一個(gè)仿真周期T內(nèi)分成M段,通過仿真輸出通道分批發(fā)送到外接設(shè)備。
(3)解復(fù)用算法在外接設(shè)備擴(kuò)展I/O的接口板卡CPLD中實(shí)現(xiàn)。根據(jù)重組信號(hào)中的Sync時(shí)鐘信號(hào)和尋址信號(hào),將分段接收的M段信號(hào)解復(fù)用,還原成N路仿真信號(hào),并發(fā)送給被測(cè)系統(tǒng)控制器。
復(fù)用/解復(fù)用算法信息流傳輸過程示意如圖2所示。

圖2 信息流傳輸過程示意
某實(shí)時(shí)仿真系統(tǒng)中,仿真機(jī)內(nèi)嵌輸出板卡每塊包含16個(gè)仿真輸出通道,常規(guī)模式下在一個(gè)仿真步長(zhǎng)里,每塊只能發(fā)送16路仿真信號(hào)。擬通過該復(fù)用/解復(fù)用算法,實(shí)現(xiàn)使用其中N1(N1<16)個(gè)仿真通道,在一個(gè)仿真周期T內(nèi)發(fā)送N路(N>16)仿真信號(hào),從而驗(yàn)證算法功能的可行性。
定義CPU模型仿真周期T=25μs,仿真信號(hào)個(gè)數(shù)N=40,將仿真信號(hào)每20路移位相加,打包成2個(gè)Uint32類型數(shù)據(jù)發(fā)送給共享內(nèi)存,CPU模型處理過程如圖3所示。

圖3 CPU模型信號(hào)處理過程
FPGA時(shí)鐘周期T1=10ns,采用計(jì)數(shù)模塊對(duì)時(shí)鐘信號(hào)計(jì)數(shù),模型中設(shè)置在CPU仿真周期T=25μs內(nèi),時(shí)鐘信號(hào)計(jì)數(shù)K不超過T/T1=2 500個(gè)。
每塊仿真機(jī)內(nèi)嵌輸出板卡含16個(gè)仿真輸出通道CH0~CH15,擬使用N1=14個(gè)通道,預(yù)留2個(gè)作為專用信號(hào)通道。仿真通道資源分配如表1所示,“Sync時(shí)鐘信號(hào)”占1位,實(shí)現(xiàn)復(fù)用和解復(fù)用數(shù)據(jù)同步;“仿真信號(hào)”占10位,即每組可發(fā)送10路不同信號(hào);“Adr尋址信號(hào)”占3位,則M≤23=8,一個(gè)仿真周期最多可發(fā)送8組。此資源配置最多可供10×23=80路仿真信號(hào)使用,由于仿真信號(hào)數(shù)N=40,可取M=4。

表1 仿真通道資源分配
每組仿真時(shí)間劃分需適宜,若一個(gè)步長(zhǎng)內(nèi)FPGA總耗用時(shí)間超過T=25μs,會(huì)引起CPU模型仿真超時(shí);若FPGA每組仿真時(shí)間段太短,會(huì)增加CPLD解復(fù)用難度,引起仿真信號(hào)丟失。復(fù)用算法時(shí)序如圖4所示,在第n個(gè)T=25 μs,第一組0~6 μs,第二組6~12 μs,第三組12~18 μs,第四組18~25 μs,每組復(fù)用信號(hào)由10位仿真信號(hào)和3位Adr尋址信號(hào)組成;在第n+1個(gè)仿真步長(zhǎng)T=25μs,循環(huán)使用該復(fù)用算法。

圖4 復(fù)用算法時(shí)序
FPGA復(fù)用算法模型如圖5所示,在XSG組件下建立圖形化仿真模型,內(nèi)含復(fù)用算法中時(shí)序選擇的Sel信號(hào)功能封裝模塊和解復(fù)用算法中數(shù)據(jù)同步的Sync信號(hào)功能封裝模塊,并最終生成VHDL硬件代碼運(yùn)行于FPGA中[14-15]。
外接設(shè)備的接口板卡接收仿真通道CH0~CH13發(fā)送的重組信號(hào)。CPLD解復(fù)用算法每檢測(cè)到引自通道CH0的Sync時(shí)鐘信號(hào)上升沿,根據(jù)通道CH1~CH3接收的尋址信號(hào),解復(fù)用通道CH4~CH13的10路仿真信號(hào),并發(fā)送給被測(cè)系統(tǒng)控制器。
解復(fù)用算法時(shí)序如圖6所示,在第n個(gè)T=25μs,Sync時(shí)鐘信號(hào)在第2 μs產(chǎn)生上升沿,該時(shí)刻調(diào)用解復(fù)用算法,在0~6 μs內(nèi)尋址信號(hào)為第一組,故解碼出第一組的10路仿真信號(hào);同理,另外三組解復(fù)用算法分別在8 μs、14 μs和 20 μs時(shí)刻調(diào)用;在第n+1 個(gè)仿真步長(zhǎng)T=25μs,循環(huán)使用該解復(fù)用算法。

圖6 解復(fù)用算法時(shí)序
將通道CH1~CH3接收的尋址信號(hào)進(jìn)行邏輯處理,生成尋址片選信號(hào),作為解復(fù)用程序的信號(hào)輸入,如表2真值表所示。

表2 尋址信號(hào)真值表

圖5 FPGA復(fù)用算法模型
仿真信號(hào)解復(fù)用程序如圖7所示,解復(fù)用功能模塊由Verilog代碼封裝而成。該功能模塊包含3類信號(hào)輸入:同步時(shí)鐘Sync、尋址片選Adr和仿真信號(hào)din[9..0],其中,從第一組到第四組,尋址片選Adr分別取表2中Adr0~Adr3對(duì)應(yīng)值。信號(hào)輸出為每組解復(fù)用后的仿真信號(hào)dout[9..0],解復(fù)用后的40路仿真信號(hào)經(jīng)dout_a[9..0]、dout_b[9..0]、dout_c[9..0]和dout_d[9..0]發(fā)送給被測(cè)系統(tǒng)控制器。

圖7 CPLD解復(fù)用程序原理圖
將CPU模型和FPGA復(fù)用算法模型編譯下載到仿真器中,在線修改CPU模型中仿真信號(hào)Signal1~40,通過表3所示40路仿真信號(hào)對(duì)復(fù)用算法進(jìn)行仿真驗(yàn)證。

表3 仿真信號(hào)
復(fù)用算法仿真波形如圖8所示,圖(a)是實(shí)現(xiàn)復(fù)用和解復(fù)用數(shù)據(jù)同步的Sync時(shí)鐘信號(hào)輸出波形,通過仿真通道CH0發(fā)送,仿真結(jié)果與圖6表述的解復(fù)用算法時(shí)序一致;圖(b)是重組后的Adr尋址信號(hào),通過仿真通道CH1~CH3發(fā)送,仿真結(jié)果與圖4表述的復(fù)用算法時(shí)序一致;選擇輸出仿真信號(hào)通道的仿真波形,圖(c)~(f)分別為仿真通道CH4、CH7、CH10和CH13的復(fù)用信號(hào)輸出波形,在每個(gè)仿真周期里,仿真通道輸出4次信號(hào),通道CH4輸出信號(hào)“0011”,通道CH7輸出信號(hào)“0101”,通道CH10輸出信號(hào)“1010”,通道CH13輸出信號(hào)“1100”,復(fù)用仿真結(jié)果與表3預(yù)設(shè)仿真信號(hào)內(nèi)容一致。

圖8 復(fù)用算法仿真波形
圖8仿真波形結(jié)果表明,在FPGA運(yùn)行該復(fù)用算法,能夠在一個(gè)仿真周期內(nèi)正確完成對(duì)40路仿真信號(hào)的復(fù)用重組。
解復(fù)用算法仿真波形如圖9所示,在第2 μs,Sync時(shí)鐘信號(hào)上升沿,調(diào)用解復(fù)用算法程序,此時(shí)Adr尋址信號(hào)為“001”,仿真通道CH4~CH13解復(fù)用輸出第一組仿真信號(hào)Sigal1~10,圖中顯示Sigal1、Sigal4、Sigal7和Sigal10與對(duì)應(yīng)仿真通道CH4、CH7、CH10和CH13此時(shí)刻輸出信號(hào)一致;在第8 μs,Adr尋址信號(hào)為“010”,解復(fù)用輸出第二組仿真信號(hào)Sigal11~20,圖中顯示Sigal11、Sigal14、Sigal17和Sigal20與對(duì)應(yīng)仿真通道CH4、CH7、CH10和CH13此時(shí)刻輸出信號(hào)一致;在第14 μs和第20 μs,發(fā)送第三組Sigal21~30和第四組Sigal31~40,解復(fù)用仿真結(jié)果與表3預(yù)設(shè)仿真信號(hào)內(nèi)容一致。

圖9 解復(fù)用算法仿真波形
圖9仿真波形結(jié)果表明,該解復(fù)用算法能夠在一個(gè)仿真周期內(nèi)完成對(duì)復(fù)用信號(hào)的正確解碼,并將還原后的仿真信號(hào)發(fā)送給被測(cè)系統(tǒng)控制器。
針對(duì)實(shí)時(shí)仿真系統(tǒng)中仿真通道不夠用的技術(shù)難題,本文提出了一套信號(hào)復(fù)用/解復(fù)用算法,并通過實(shí)例應(yīng)用對(duì)算法進(jìn)行了功能仿真驗(yàn)證。仿真結(jié)果表明,該套算法實(shí)現(xiàn)了在一個(gè)仿真步長(zhǎng)里,通過少量仿真輸出通道與被測(cè)控制器同步交互大量仿真信號(hào)的功能。然而,本文提出的信號(hào)復(fù)用/解復(fù)用算法存在一定的局限性,算法僅適用于離散型信號(hào)交互,而對(duì)需要數(shù)據(jù)帶寬較大的模擬量信號(hào)并不適用。如何通過算法實(shí)現(xiàn)模擬量信號(hào)仿真通道擴(kuò)展,有待進(jìn)一步研究。
將本套復(fù)用/解復(fù)用算法應(yīng)用于某復(fù)雜機(jī)電系統(tǒng)中,在優(yōu)化復(fù)雜機(jī)電系統(tǒng)的設(shè)計(jì)、可行性研究、決定系統(tǒng)的運(yùn)行工況、故障分析等方面起到了重要作用。
[1]郭建英,孫永全,于春雨,等.復(fù)雜機(jī)電系統(tǒng)可靠性預(yù)測(cè)的若干理論與方法[J].機(jī)械工程學(xué)報(bào),2014,50(14):1-13.
[2]王成龍.復(fù)雜機(jī)電系統(tǒng)統(tǒng)一建模與仿真技術(shù)研究[D].濟(jì)南:山東科技大學(xué),2009.
[3]Wang Rongxi,Gao Jianmin,Gao Zhiyong.Complex network theory-based condition recognition of electromechanical system in process industry[J].Technological Sciences,2016,59(4):604-617.
[4]宋立新,何宇平.駕駛員在環(huán)的SUV防側(cè)翻控制器實(shí)時(shí)仿真設(shè)計(jì)[J].計(jì)算機(jī)工程與應(yīng)用,2016,52(9):223-227.
[5]郭希錚,游小杰,徐從謙,等.大功率電力牽引控制系統(tǒng)硬件在回路實(shí)時(shí)仿真[J].電工技術(shù)學(xué)報(bào),2012,27(4):65-70.
[6]張洪昌,丁建完.基于Modleica的操縱穩(wěn)定性實(shí)時(shí)仿真方法研究[J].計(jì)算機(jī)工程與應(yīng)用,2015,51(3):31-34.
[7]宋煒.基于MATLAB的無人機(jī)硬件在回路仿真技術(shù)研究[D].南京:南京航空航天大學(xué),2008.
[8]劉陳.CRH5型高速動(dòng)車組半實(shí)物仿真系統(tǒng)[D].北京:北京交通大學(xué),2014.
[9]郝琦.電力牽引交流傳動(dòng)系統(tǒng)FPGA建模及硬件在環(huán)仿真[D].成都:西南交通大學(xué),2015.
[10]劉輝鵬,汪光森,陳維.RT_LAB中的脈沖信號(hào)輸入輸出處理模塊特性[J].計(jì)算機(jī)應(yīng)用,2015,35(S1):239-242.
[11]周治國(guó),楊亮,劉志文.基于FPGA的實(shí)時(shí)半實(shí)物仿真平臺(tái)的實(shí)現(xiàn)[C]//全國(guó)信號(hào)和智能信息處理與應(yīng)用學(xué)術(shù)會(huì)議論文集,2012:115-118.
[12]常曉飛,符文星,閆杰.基于RT_LAB的某型導(dǎo)彈半實(shí)物仿真系統(tǒng)設(shè)計(jì)[J].系統(tǒng)仿真學(xué)報(bào),2009,21(18):5720-5723.
[13]廖艷,王廣君,高楊.FPGA異步時(shí)鐘設(shè)計(jì)中的同步策略[J].自動(dòng)化技術(shù)與應(yīng)用,2006,25(1):67-69.
[14]劉純武,黃芝平.一種多通道信號(hào)處理復(fù)用結(jié)構(gòu)及其FPGA實(shí)現(xiàn)方法[J].電子測(cè)量與儀器學(xué)報(bào),2008,22(1):72-75.
[15]李欣.基于FPGA的片上多處理器建模方法[D].合肥:中國(guó)科學(xué)技術(shù)大學(xué),2012.