柴油發(fā)電機(jī)組轉(zhuǎn)速控制半物理仿真
模型代碼同VC程序整合過程比較簡單,把3.1節(jié)仿真運(yùn)算模塊所有涉及的源文件添加到VC程序項(xiàng)目中,需要注意2點(diǎn):仿真模塊的源文件添加到VC程序項(xiàng)目后默認(rèn)應(yīng)用預(yù)編譯頭文件選項(xiàng),必須手工取消此項(xiàng)設(shè)置否則編譯出錯(cuò);為了需要在VC程序中調(diào)用仿真代碼的接口函數(shù)需要進(jìn)行全局聲明。
3.3 VC中仿真系統(tǒng)進(jìn)一步開發(fā)與整合
半物理仿真軟件一般由人機(jī)界面模塊、數(shù)據(jù)采集模塊、仿真運(yùn)算模塊、數(shù)據(jù)處理模塊組成。MTU396柴油發(fā)電機(jī)組轉(zhuǎn)速控制半物理仿真系統(tǒng)原理如圖3所示。下面簡單介紹各模塊的實(shí)現(xiàn)過程。
(1)人機(jī)界面模塊的實(shí)現(xiàn)
人機(jī)界面模塊構(gòu)成了VC程序的主線程,主要完成變量的實(shí)時(shí)顯示、參數(shù)在線調(diào)整、控制參數(shù)設(shè)置和程序的運(yùn)行控制等功能,其他模塊都由他來調(diào)度。本系統(tǒng)中涉及的實(shí)時(shí)變量有柴油機(jī)轉(zhuǎn)速、齒桿位移、柴油機(jī)負(fù)載等,筆者分別設(shè)計(jì)了轉(zhuǎn)速表、棒圖、趨勢(shì)曲線、調(diào)整滑桿、功能按鈕等圖元,充分利用面向?qū)ο蠓椒ǖ姆庋b、繼承等特點(diǎn)實(shí)現(xiàn)整個(gè)圖元庫,從而提高了軟件系統(tǒng)的可修改性、可重用性和可擴(kuò)展性。
(2)數(shù)據(jù)采集模塊的實(shí)現(xiàn)
數(shù)據(jù)采集模塊通過PCI-1780設(shè)備卡同電子調(diào)速器進(jìn)行數(shù)據(jù)交互,電子調(diào)速器的供油量信號(hào)以脈寬調(diào)制(PWM)的形式由PCI-1780設(shè)備卡傳給仿真程序,仿真程序通過仿真計(jì)算把柴油機(jī)的轉(zhuǎn)速以頻率信號(hào)的形式經(jīng)PCI-1780設(shè)備卡反饋給電子調(diào)速器。數(shù)據(jù)采集模塊由廠家提供的設(shè)備驅(qū)動(dòng)API函數(shù)實(shí)現(xiàn)。
(3)仿真運(yùn)算模塊的實(shí)現(xiàn)
仿真運(yùn)算模塊在RTW轉(zhuǎn)化韻仿真模型代碼基礎(chǔ)上還要加入仿真同步控制,以滿足仿真的實(shí)時(shí)性要求。實(shí)時(shí)性的關(guān)鍵就是I/O數(shù)據(jù)定時(shí)的準(zhǔn)確性。眾所周知Windows不是實(shí)時(shí)操作系統(tǒng)而是多任務(wù)的操作系統(tǒng),采用VC編制的仿真程序很難實(shí)現(xiàn)硬件中斷,采用軟件定時(shí)是比較可行的方法,因?yàn)楝F(xiàn)在的計(jì)算機(jī)速度都很快,能夠保證一般硬件在回路仿真的實(shí)時(shí)性的需要。
VC中實(shí)現(xiàn)精確定時(shí)基本上有2種方法:①使用多媒體定時(shí)器。他使用單獨(dú)線程調(diào)用一個(gè)特殊的回調(diào)函數(shù)優(yōu)先級(jí)很高,最小定時(shí)間隔為1ms能夠滿足一般實(shí)時(shí)任務(wù)的定時(shí)要求。②使用高性能計(jì)數(shù)器。在Windows2000中由硬件實(shí)現(xiàn)高精度的計(jì)數(shù)器(high-resolution performancecounter),利用他可以獲得高精度的定時(shí)間隔。由于本應(yīng)用中電子調(diào)速器輸出頻率為80 Hz,本文選擇多媒體計(jì)時(shí)器實(shí)現(xiàn)仿真控制,定時(shí)間隔選為2 ms。即多媒體定時(shí)器每隔2 ms就在其回調(diào)函數(shù)中調(diào)用模型代碼接口函數(shù)rt_On-eStep(模型單步運(yùn)算),保證整個(gè)仿真的向前推進(jìn),滿足系統(tǒng)實(shí)時(shí)性要求。仿真運(yùn)算模塊完成模型實(shí)時(shí)計(jì)算是整個(gè)系統(tǒng)的核心。
(4)數(shù)據(jù)處理模塊的實(shí)現(xiàn)
數(shù)據(jù)處理模塊完成仿真數(shù)據(jù)的實(shí)時(shí)記錄和定時(shí)保存功能。為了滿足數(shù)據(jù)記錄的實(shí)時(shí)性,仿真程序采用了多線程的技術(shù),將數(shù)據(jù)定時(shí)保存功能放在獨(dú)立的數(shù)據(jù)保存線程中執(zhí)行。數(shù)據(jù)處理線程和主線程的之間的同步由事件信號(hào)驅(qū)動(dòng)。在C++標(biāo)準(zhǔn)模板庫(STL),deque容器基礎(chǔ)上創(chuàng)建了CPointsCollection類來完成數(shù)據(jù)的實(shí)時(shí)記錄和定時(shí)保存。采用的策略是:CPointsCollection首先在內(nèi)存中開辟2塊緩沖區(qū)。第一緩沖區(qū)數(shù)據(jù)放滿后,數(shù)據(jù)開始存放到第二緩沖區(qū),然后主線程同時(shí)通知數(shù)據(jù)保存線程將第一緩沖區(qū)中的數(shù)據(jù)采用VC序列化功能保存到硬盤的文本文件中;等第二緩沖區(qū)數(shù)據(jù)放滿后,數(shù)據(jù)開始存放到第一緩沖區(qū),主線程同時(shí)通知數(shù)據(jù)保存線程將第二緩沖的數(shù)據(jù)保存到硬盤的文本文件中,這樣依次循環(huán)保證數(shù)據(jù)記錄的實(shí)時(shí)性。為了驗(yàn)證利用該方法開發(fā)的半物理仿真系統(tǒng)的有效性,運(yùn)行該系統(tǒng)與R082電子調(diào)速器物理連接進(jìn)行配機(jī)試驗(yàn),仿真結(jié)果表明仿真系統(tǒng)相應(yīng)符合理論分析結(jié)果。限于篇幅給出空載起動(dòng)運(yùn)行時(shí)的運(yùn)行界面。如圖4所示。
4 結(jié) 語
結(jié)合科研實(shí)例詳細(xì)介紹一種基于RTW和VisualC++的半物理仿真系統(tǒng)快速開發(fā)方法,該方法充分利用Simulink和Visual C++各自的優(yōu)勢(shì)。首先利用Simulink可視化的建模方法建立系統(tǒng)的仿真模型,然后通過RTW將Simulink仿真模型轉(zhuǎn)化成可移植的嵌入式C++代碼,最后利用Visual C++靈活的可定制性和強(qiáng)大的界面功能實(shí)現(xiàn)完全獨(dú)立運(yùn)行的實(shí)時(shí)半物理仿真系統(tǒng)。該仿真程序在Visual C++環(huán)境下可以對(duì)仿真程序方便的進(jìn)行調(diào)試a與傳統(tǒng)設(shè)計(jì)方法相比這種方法具有費(fèi)用低、效率高的特點(diǎn)。
評(píng)論