久久久久久久麻豆,中日韩av在线,麻豆av在线免费,中文字幕二区三区,欧美日韩视频一区二区,亚洲欧美日韩在线一区,国产无毒不卡

高保真動態(tài)嵌入式系統(tǒng)仿真探析


動態(tài)系統(tǒng)的工作狀況隨時間的變化通??捎梦⒎址匠虂砻枋觥N覀冴P(guān)注的動態(tài)系統(tǒng)是那些包含嵌入式計算硬件和軟件的系統(tǒng),即所謂的動態(tài)嵌入式系統(tǒng)。汽車引擎及導(dǎo)航控制系統(tǒng)、裝配生產(chǎn)線控制設(shè)備、衛(wèi)星控制系統(tǒng)、空對空導(dǎo)彈制導(dǎo)以及火星探測器都是動態(tài)嵌入式系統(tǒng)的具體應(yīng)用。

盡管動態(tài)系統(tǒng)部件的數(shù)學(xué)模型可以幾種不同的方式用來分析和預(yù)測系統(tǒng)的工作狀況,但我們關(guān)心的是建立一系列模型,并通過仿真來加以實現(xiàn)。

在動態(tài)嵌入式系統(tǒng)的發(fā)展中,仿真的應(yīng)用可以追溯到早先的嵌入式計算時代,那時數(shù)字處理器總是最先用于軍事用途。仿真在產(chǎn)品開發(fā)過程的多個階段都相當(dāng)有用,從最初的概念探討直到維護軟件的測試。仿真可輕易地將現(xiàn)實中的復(fù)雜非線性包含進去,而其它方法(如線性系統(tǒng)分析)通常會忽略或簡化這些非線性。

回路硬件HIL(hardware-in-the-loop)仿真是一種特別有效的仿真,它將實時仿真裝置連接到嵌入式計算設(shè)備。HIL仿真測試可在實驗室環(huán)境下,對運行環(huán)境中嵌入式系統(tǒng)的重要部分進行全面、重復(fù)性的測試。與傳統(tǒng)測試方法相比,這種方法的特點是能以較低的成本獲得經(jīng)過全面測試的產(chǎn)品。

為了對動態(tài)系統(tǒng)進行仿真,必須首先構(gòu)建系統(tǒng)的數(shù)學(xué)模型,使其能以適當(dāng)?shù)木让枋鱿到y(tǒng)部件及其與周圍環(huán)境間的交互作用,然后再由該模型及其它類似積分算法的單元來構(gòu)造系統(tǒng)的仿真。仿真中所用的模型必須相互兼容,以便信號能在具備適當(dāng)單位和時序的模型之間自由流動。

一個完整的仿真必須包括仿真啟動時對狀態(tài)變量和其它參數(shù)的正確初始化,以及仿真執(zhí)行過程中對模型動態(tài)方程的賦值和狀態(tài)變量的積分。另外,仿真還必須具有友好的用戶界面,以便用戶能指定初始條件和模型參數(shù)以控制仿真的正常運行。

當(dāng)在數(shù)字計算機上仿真連續(xù)的動態(tài)系統(tǒng)時,要利用數(shù)值積分算法來估計描述系統(tǒng)的微分方程解。盡管可以采用多種不同的數(shù)值積分算法,但必須選擇一種適合于仿真的算法。

數(shù)值積分算法

假定可用一組成對的一階微分方程來表示連續(xù)動態(tài)系統(tǒng)的工作狀況。這些方程通常是非線性方程,因而很難或不可能求解,所以必須用數(shù)值算法來估計這些微分方程的解。

所用到的方程均為一階微分方程,因為這些積分算法只適用于一階方程,但是可以將任意含二階(或更高階)導(dǎo)數(shù)的微分方程轉(zhuǎn)換為等價的一階方程組。

我們將以微分方程的形式討論數(shù)值積分算法:其中f(x,u(t))可為非線性函數(shù),而u(t)是任意輸入函數(shù)。

執(zhí)行數(shù)值積分運算最簡單的算法之一根據(jù)連續(xù)函數(shù)導(dǎo)數(shù)的定義,如方程(1)所示。

如果h數(shù)值很小,該導(dǎo)數(shù)可用方程(2)近似。

若表示成采樣次數(shù)的形式,其中整數(shù)下標(biāo)n表示t=nh,變量上方的^表示其近似解,由此得到方程(3)。

這就是前向歐拉積分算法。它是一階積分算法,因為它含有時間軸上某一點估值的函數(shù)f。該算法也是一種顯函數(shù)方法,這意味著算法將不使用來自終值n的狀態(tài)或輸入。我們也可以利用反向差分來逼近該導(dǎo)數(shù),如方程(4)所示。

差分方程的結(jié)果如方程(5)所示,這就是著名的反向歐拉積分算法。反向歐拉積分算法是一階隱函數(shù)方法,因為狀態(tài)是其自身的函數(shù)。隱函數(shù)法需要額外的計算來求解,通常采用Newton-Raphson算法等迭代技術(shù)。同顯函數(shù)方法相比,隱函數(shù)法在精度和數(shù)值穩(wěn)定性上都頗具優(yōu)勢,但其缺點是需要額外的計算,而且不能適應(yīng)實時應(yīng)用。

隱函數(shù)方法不適宜實時應(yīng)用的原因主要有兩個:迭代求解所需的執(zhí)行時間不可預(yù)測;終值時刻的輸入量必須具有un+1的形式,而當(dāng)把時間步長n當(dāng)作積分步長執(zhí)行時,一般不會出現(xiàn)這樣的形式。

也可以采用其它類型的數(shù)值積分算法,它們在特定應(yīng)用中各有千秋。例如,Runge-Kutta系列算法對帶有不連續(xù)仿真系統(tǒng)的函數(shù)f特別有效。為獲得滿意的精度,需要應(yīng)用2到4階積分算法,而不是前面討論的一階算法,因為高階算法能得到比低階算法更精確的結(jié)果。這就要對數(shù)值積分算法中誤差來源及減小誤差方法進行討論。

積分誤差

因為實現(xiàn)這些積分算法的差分方程所得到的總是微分方程精確解的逼近值,所以積分算法的每一步都會在近似解中引入誤差。每個積分步驟出現(xiàn)的誤差有兩個來源:舍入誤差和截斷誤差。

舍入誤差是在計算中用精度有限的有理數(shù)(如計算機使用的浮點數(shù))逼近精度無限的實數(shù)的結(jié)果。特定計算中舍入誤差的大小取決于算術(shù)運算的數(shù)目和類型,以及浮點表示法的精度。具體的計算和算術(shù)運算序列給定以后,唯一能減小舍入誤差的方法是增加計算中數(shù)字表示法的精度。例如,可以通過將單精度浮點數(shù)轉(zhuǎn)換為雙精度浮點數(shù)來實現(xiàn)。單精度浮點數(shù)通常具有十進制中7位精確的小數(shù)位,而雙精度浮點數(shù)約為15位。與單精度浮點數(shù)相比,使用雙精度浮點數(shù)的缺點是雙精度變量占據(jù)兩倍的內(nèi)存空間,而且完成計算需要占用處理器更多的時間。

控制器控制連續(xù)對象的常見情形 height=186 src="/article/uploadfile/200806/25/6543131573.JPG" width=472 border=0>

在實際系統(tǒng)的仿真中,單精度浮點數(shù)(而非雙精度浮點數(shù))的使用會在動態(tài)方程的解中引入很大的舍入誤差。該問題的嚴(yán)重程度取決于動態(tài)方程的形式及所選的積分算法、積分時間步長和仿真運行的時間。在進行數(shù)值積分時,只要條件許可,我們通常傾向于在積分算法中使用雙精度浮點數(shù)。相對于仿真精度提高所帶來的好處,使用雙精度浮點數(shù)所需的額外內(nèi)存和處理時間都顯得微不足道。

另一誤差來源即截斷誤差是由不含舍入誤差的積分步長產(chǎn)生的。換言之,截斷誤差是積分算法的步長在計算機上以無限數(shù)值精度執(zhí)行而引起的誤差。

每個積分算法都具有自身的截斷誤差特性。假定函數(shù)f對積分步長是連續(xù)的,并且使用一個充分小的步進時間h,就可以應(yīng)用方程(6)來估計單個積分步長所引起的截斷誤差。其中常數(shù)a取決于函數(shù)f的局部特性及所用的積分算法,k是積分算法的階數(shù),h是積分步長。減小積分步長可將截斷誤差降低到任意小。然而這樣做會增加仿真的執(zhí)行時間,并將在解中增加舍入誤差。使用高階積分算法同樣可以減小截斷誤差,但這種方法也有缺陷。高階積分算法需要額外的執(zhí)行時間,但其最主要的缺陷是高階算法將增加數(shù)值的不穩(wěn)定性。

積分算法的穩(wěn)定性

在積分開始時原本很小的舍入和截斷誤差在多次步進后將會無限增長下去,從而導(dǎo)致數(shù)值的不穩(wěn)定。而太大的時間步長也會導(dǎo)致積分算法不穩(wěn)定,并使估計動態(tài)方程解的差分方程變得不穩(wěn)定。

動態(tài)系統(tǒng)和積分算法的每一種組合都有其穩(wěn)定性特征。假定在平衡點附近能對仿真的非線性系統(tǒng)進行線性化。由此,可得出這樣的定理:給定充分小的時間步長,只要仿真的動態(tài)系統(tǒng)在平衡點附近穩(wěn)定,則積分算法就是穩(wěn)定的。

我們將討論方程(7)所示的一階線性動態(tài)系統(tǒng),其精確解如方程(8)所示。

可以考查不同積分時間步長對數(shù)值積分的影響。圖1示出了采用方程(3)所示的歐拉算法,選取6個不同時間步長h得到的解。圖1a中h=0.01,具有較高的精度;圖1b中h=0.5,有明顯的誤差,但解的趨向與精確解基本一致;圖1c中h=1,在一個步長后解趨于0,并維持不動,盡管解是穩(wěn)定的,但顯然不精確;圖1d中h=1.9,解作衰減穩(wěn)定的振蕩;圖1e中h=2,解作不衰減振蕩,并具有恒定的振幅;圖1f中h=2.1,解作振幅逐漸增大的振蕩,這意味著系統(tǒng)不穩(wěn)定。取更大的h值將使解的振幅增長更快。

在這一采用前向歐拉積分算法的仿真中,任何取值大于2的時間步長h都將得到數(shù)值上不穩(wěn)定的解。從圖1可以看出,h增大至系統(tǒng)不穩(wěn)定時,任何關(guān)于解的精確度概念都失去了意義。當(dāng)動態(tài)系統(tǒng)單元的時間常數(shù)取值差異不超過幾個數(shù)量級時,這種情形便會發(fā)生。當(dāng)系統(tǒng)時間常數(shù)間的差異超過幾個數(shù)量級時,這類系統(tǒng)稱為剛性系統(tǒng)。

剛性系統(tǒng)

系統(tǒng)可能既具備快速響應(yīng)動態(tài)特性,又具備慢速響應(yīng)動態(tài)特性,這可由系統(tǒng)模型的時間常數(shù)來描述。系統(tǒng)的剛性度定義為其******時間常數(shù)與最小時間常數(shù)的比值。如果系統(tǒng)的剛性度是近似三個數(shù)量級或更高,就認為系統(tǒng)是剛性的。在仿真剛性系統(tǒng)時,必須仔細選擇積分算法,以保證數(shù)值解的穩(wěn)定性,并確保能以合理的執(zhí)行效率得到精確的結(jié)果。

以圖2中用Simulink模型描述的開環(huán)動態(tài)系統(tǒng)為例。該系統(tǒng)由驅(qū)動一階對象的一階執(zhí)行器組成。執(zhí)行器的時間常數(shù)為1ms,而對象的時間常數(shù)為1s,整個系統(tǒng)由單步輸入驅(qū)動。

如果應(yīng)用前向歐拉積分算法仿真圖2所示的系統(tǒng),并在10s時間內(nèi)取步進時間為1.9ms,將會發(fā)現(xiàn)積分誤差的峰值為0.001。如果將步進時間略微增加至2.01ms,數(shù)值將不穩(wěn)定,而且截斷誤差會擴散。該例旨在說明:只要略微降低仿真精度,即便在輕度剛性系統(tǒng)中也會發(fā)生不穩(wěn)定。

許多實際的動態(tài)系統(tǒng)具有比圖1示例高幾個數(shù)量級的剛性度。為了能應(yīng)用任選的積分算法來仿真這些剛性度極高的系統(tǒng),必須選擇極小的時間步長來適應(yīng)最短的系統(tǒng)時間常數(shù)。這種情況下的效率極低,因為具有較長時間常數(shù)的系統(tǒng)部件不需要像仿真快速部件那樣的短積分步長。實際上,如果在慢速響應(yīng)部件中采用非常小的時間步長,整個仿真的精度將會受到舍入誤差的影響,該舍入誤差會通過所需的積分步長累積起來。

剛性系統(tǒng)仿真中常用到兩種方法。一種是在剛性狀況下仍表現(xiàn)良好的積分算法,在非實時仿真應(yīng)用中,可以利用許多在剛性系統(tǒng)中表現(xiàn)良好的積分算法。例如上面介紹的隱函數(shù)法,在剛性系統(tǒng)中就具有良好的性能。Gear算法的隱函數(shù)主要面向剛性系統(tǒng)的仿真。通過應(yīng)用那些在剛性條件下表現(xiàn)良好的積分算法,可以在采用比其它算法類型(如Runge-Kutta算法)具備更大時間步長的時候,保證系統(tǒng)的仿真精度和穩(wěn)定性。

剛性系統(tǒng)仿真的第二種方法是采用多幀仿真。多幀仿真將仿真分為多個以不同幀速率運行的部分。在圖2的示例中,可用0.1ms的步進時間進行激勵器仿真,以0.1s的步進時間進行裝置仿真。

在多幀方法中,必須內(nèi)推或外推來自較慢幀速率子系統(tǒng)的值,并把它作為較快幀頻子系統(tǒng)的輸入值,這就增加了問題的復(fù)雜度。如果各種幀速率在同一處理器上運行,執(zhí)行固定時間間隔的I/O就會有一定難度。

在以上兩種仿真剛性系統(tǒng)的方法中,只有多幀方法適于實時應(yīng)用,這是因為隱函數(shù)積分算法不適用于要求實時處理I/O的情形。在非實時情況下,采用剛性條件下性能良好的積分算法是最簡單易行的,可以避免與多幀方法相關(guān)聯(lián)的難題。

離散-連續(xù)復(fù)合系統(tǒng)

由差分方程和微分方程共同建模的動態(tài)系統(tǒng)稱為離散-連續(xù)復(fù)合系統(tǒng),或簡稱復(fù)合系統(tǒng)。由于連續(xù)系統(tǒng)部件仿真所需的積分時間步長不同于離散子系統(tǒng)的時間步長,因此復(fù)合系統(tǒng)的仿真難度較大。此外,從離散部件到連續(xù)部件的輸入可能會以非連續(xù)信號的形式出現(xiàn),這進一步限制了積分算法的選擇。

圖3示出了由數(shù)字控制器控制連續(xù)裝置的常見情形。控制器以固定刷新速率運行,而用來采樣并量化信號的模數(shù)轉(zhuǎn)換器則接收來自被控裝置的輸入電壓。數(shù)字控制器的輸出發(fā)送到數(shù)模轉(zhuǎn)換器,并將該數(shù)值轉(zhuǎn)換為電壓,在下一次刷新前它將保持恒定。

通常,對于連續(xù)對象仿真的******積分時間步長與控制器刷新間隔不一致,此時仿真必須采用多幀技術(shù)。要獲得精確的仿真,裝置模型往往需要比控制器刷新間隔更短的積分時間步長。在采用固定步長積分算法時,最簡便的方法是使積分步長為控制器刷新間隔的整約數(shù)。

當(dāng)把從慢速響應(yīng)系統(tǒng)傳輸?shù)娇焖夙憫?yīng)系統(tǒng)的輸入作為數(shù)模轉(zhuǎn)換器的輸出時,由于信號在兩次刷新期間保持不變,因此無需外推慢幀速率子系統(tǒng)的值。這在一定程度上簡化了兩種幀速率間的接口電路。

復(fù)合系統(tǒng)是動態(tài)系統(tǒng)仿真的重要應(yīng)用領(lǐng)域。仿真經(jīng)常用于復(fù)雜動態(tài)系統(tǒng)的設(shè)計、開發(fā)和測試,在這些系統(tǒng)中模擬裝置是由嵌入式數(shù)字控制器控制的。

仿真示例

現(xiàn)在討論一個動態(tài)系統(tǒng)的完整仿真的設(shè)計和實現(xiàn),所選的仿真系統(tǒng)是一個由直流馬達驅(qū)動的轉(zhuǎn)盤。數(shù)字控制器接收受其控制的轉(zhuǎn)盤角位置信息,并將之作為輸入,然后產(chǎn)生驅(qū)動直流馬達的控制電壓,馬達驅(qū)動轉(zhuǎn)盤移動到指定位置。這是一個利用Simulink中的多幀技術(shù)進行仿真的離散-連續(xù)復(fù)合系統(tǒng)。要將控制器建模為具有5ms刷新間隔的數(shù)字系統(tǒng),控制器的輸入是由正交位置編碼器測得的轉(zhuǎn)盤位置,正交位置編碼器輸出分辨率為4,096步/周的數(shù)字角位移。控制器輸出信號通過8位D

COPYRIGHT(C) 2011 廈門永宏亞得機電科技有限公司版權(quán)所有(閩ICP備05025945號) ALL RIGHTS RESERVED?

電話: 0592-5190891 傳真: 0592-5190720 E-Mail: E-mail:yade8895@163.com
地址: 廈門市海滄區(qū)興港六里17號2607室 郵編:361009 聯(lián)系人:翟先生