版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Modelica語法詳解事件哈工大計(jì)算學(xué)部-工業(yè)軟件中心哈工大重慶研究院-無人裝備中心曲明成
博士/副教授
qumingcheng@2025年4月23日Example觸地瞬間,重置速度即可modelBall"彈跳小球"
final
parameter
Realg=9.8
"重力加速度";
parameter
Realcoef=0.9
"彈性系數(shù)";
parameter
Realh0=10
"初始高度";
Realh"小球高度";
Realv"小球速度";
Booleanflying"是否運(yùn)動(dòng)";initialequationh=h0;equation
flying=not(h<=0
andv<=0);
der(v)=ifflyingthen-gelse
0;v=der(h);
whenh<=0
then
reinit(v,-coef*v);
endwhen;endBall;ExamplemodelBall"彈跳小球"
final
parameter
Realg=9.8
"重力加速度";
parameter
Realcoef=0.9
"彈性系數(shù)";
parameter
Realh0=10
"初始高度";
Realh"小球高度";
Realv"小球速度";
Booleanflying"是否運(yùn)動(dòng)";initialequationh=h0;equation
flying=not(h<=0
andv<=0);
der(v)=ifflyingthen-gelse
0;v=der(h);
whenh<=0
then
reinit(v,-coef*v);
endwhen;endBall;輸出窗口為什么輸出了很多事件信息?哪些語句觸發(fā)了事件?事件對(duì)仿真有什么影響?如何處理事件?目錄1.
事件概述2.事件觸發(fā)3.事件處理4.本章回顧1.事件概述-連續(xù)與離散連續(xù)動(dòng)態(tài)特性系統(tǒng):宏觀物理系統(tǒng)的變化通常都按照物理定律連續(xù)演繹,如同一個(gè)關(guān)于時(shí)間的函數(shù),比如物理運(yùn)動(dòng)、電流電壓變化、化學(xué)反應(yīng)等。離散行為:有時(shí)需要將某些系統(tǒng)組件的行為近似成離散行為,離散行為是指系統(tǒng)變量值只在特定時(shí)間點(diǎn)上瞬時(shí)的、不連續(xù)的發(fā)生改變。實(shí)際物理系統(tǒng)中,變化可以非??斓皇撬矔r(shí),在系統(tǒng)建模時(shí)進(jìn)行離散近似,能夠簡(jiǎn)化數(shù)學(xué)模型,使模型求解易于收斂,提高計(jì)算速度。離散近似場(chǎng)景:動(dòng)力學(xué)的剛性碰撞問題,一個(gè)彈跳小球幾乎瞬間改變了運(yùn)動(dòng)方向。電路中的開關(guān)操作能極快地改變電壓值。液壓系統(tǒng)中的閥門能迅速引起流量的變化。1.事件概述-事件及其特點(diǎn)事件:變量只在特定的時(shí)間點(diǎn)才改變其值,這些時(shí)間點(diǎn)稱作為事件,在事件之間他們的值保持不變。事件的特點(diǎn):時(shí)間點(diǎn)是瞬時(shí)的,也就是說沒有持續(xù)期間當(dāng)事件條件從false變?yōu)閠rue時(shí),事件發(fā)生與事件相關(guān)的變量集就是與事件相關(guān)的方程中引用或改變的變量與事件相關(guān)的行為(即條件方程)在事件發(fā)生時(shí)變?yōu)槠鹱饔没蜃優(yōu)椴黄鹱饔盟矐B(tài)方程是特殊的條件方程,它只在事件發(fā)生時(shí)起作用1.事件概念-事件分類根據(jù)事件產(chǎn)生的原因,將事件分為:時(shí)間事件:明確發(fā)生時(shí)間的事件,事件點(diǎn)是可預(yù)知的;狀態(tài)事件:由表達(dá)系統(tǒng)狀態(tài)的變量引起,不同系統(tǒng)對(duì)應(yīng)的狀態(tài)變量的選擇不同,所以不可避免的要去搜索事件點(diǎn),事件點(diǎn)是可預(yù)知的;modelSimple
Reala;equation
iftime<5
then
a=1;
elsea=5;
endif;endSimple;modelSimple2
Reala;
Realb;equation
b=sin(time);
ifb<0
then
a=0;
elsea=b;
endif;endSimple;時(shí)間事件狀態(tài)事件注意:time>=5和time<5為時(shí)間事件b<0和b>=0為狀態(tài)事件目錄1.
事件概述2.事件觸發(fā)3.事件處理4.本章回顧2.事件觸發(fā)-事件表達(dá)式連續(xù)的Real元素關(guān)系式改變其值時(shí),積分會(huì)中止,于是產(chǎn)生事件。modelSimple3
Realx;
Realy(start=2);equationx=time-5;der(y)=ifx>0
then
1else2;endSimple3;如果if表達(dá)式按照字面意義進(jìn)行計(jì)算,則在x=0時(shí)刻,方程是不連續(xù)的,der(y)的值產(chǎn)生跳躍。由于事先難以精確預(yù)測(cè)x=0的時(shí)刻點(diǎn),故如直接對(duì)上述方程進(jìn)行求解,則可能違背數(shù)值積分算法的連續(xù)可微性假設(shè)。為此,在Modelica語言中,x>0被當(dāng)做是一個(gè)事件表達(dá)式。2.事件觸發(fā)-事件表達(dá)式Modelica用條件方程來表達(dá)事件,Modelica基本的兩類條件方程:if語句:包含條件表達(dá)式和條件方程,用于描述不連續(xù)條件模型;when語句:用于表示只在某些離散時(shí)刻有效的方程;modelLimit
Reala=sin(time);
Realb;equation
ifa>0.5
then
b=0.5;
elseifa<-0.5then
b=-0.5;
elseb=a;
endif;endLimit;只要“a-0.5”或“a-(-0.5)”穿越零,積分就被中止,并產(chǎn)生事件,在事件時(shí)刻,選擇正確的if-分支,并重新開始積分2.事件觸發(fā)-觸發(fā)函數(shù)與相關(guān)函數(shù)事件相關(guān)函數(shù)函數(shù)說明initial()在初始化階段結(jié)果為true,否則為falseterminal()在成功分析的結(jié)尾返回truesample(start,interval)在時(shí)刻start+i*interval(i=0,1,….)結(jié)果為true并觸發(fā)事件,否則為falsepre(y)結(jié)果在變量y(t)在t時(shí)刻的左極限y(tpre)edge(b)等價(jià)于“(bandnotpre(b))”,b為Boolean類型change(v)等價(jià)于“(v<>pre(v))”reinit(x,expr)僅在when結(jié)構(gòu)中使用,在事件時(shí)刻以expr初始化狀態(tài)變量x事件觸發(fā)函數(shù)函數(shù)說明div(x,y) 返回x/y的商且丟棄小數(shù)部分mod(x,y)返回x/y的整數(shù)模,即x-floor(x/y)*yrem(x,y)返回x/y整除的余數(shù)ceil(x)返回不小于x的最小整數(shù)floor(x)返回不大于x的最大整數(shù)integer(x)返回不大于x的最大整數(shù),結(jié)果必為整型2.事件觸發(fā)-相關(guān)函數(shù)詳解initial():在初始化階段返回true,否則返回falsemodelInitial
Reala;equation
wheninitial()then
a=2;
endwhen;endInitial;terminal():在成功分析的結(jié)尾返回true,否則返回falsemodelTerminal
Reala;equation
whenterminal()then
a=5;
endwhen;endTerminal;2.事件觸發(fā)-相關(guān)函數(shù)詳解sample(start,interval):從start時(shí)間開始,每隔
interval時(shí)間結(jié)果為ture。modelSampleReala;equation
whensample(2,0.5)thena=time;
end
when;endSample;pre(y):返回變量y(t)在時(shí)刻t的“左極限”
注意:只能用在when語句中。modelPre
Reala;
Realb;equation
whensample(2,0.5)then
a=time;b=pre(a);
endwhen;endPre;modelEdge
Booleana;
Booleanb;
Realc;equation
a=iftime>2
andtime<3
thentrue
else
false;b=edge(a);
whenbthen
c=2;
end
when;endEdge;2.事件觸發(fā)-相關(guān)函數(shù)詳解edge(b):b從false變?yōu)閠rue時(shí)返回true注意:b和返回值類型均為booleanchange(a):a變化時(shí)返回true,否則為false注意:只能用在when語句中。modelChange
Reala;
Booleanb;equation
whensample(2,0.5)thena=2;b=change(a);
endwhen;endChange;2.事件觸發(fā)-相關(guān)函數(shù)詳解reinit(x,expr):在事件時(shí)刻以expr初始化狀態(tài)變量x。注意:只能用在when語句中。modelBall"彈跳小球"
final
parameter
Realg=9.8
"重力加速度";
parameter
Realcoef=0.9
"彈性系數(shù)";
parameter
Realh0=10
"初始高度";
Realh"小球高度";
Realv"小球速度";
Booleanflying"是否運(yùn)動(dòng)";initialequationh=h0;equation
flying=not(h<=0
andv<=0);
der(v)=ifflyingthen-gelse
0;v=der(h);
whenh<=0
then
reinit(v,-coef*v);
endwhen;endBall;目錄1.
事件概述2.事件觸發(fā)3.事件處理4.本章回顧3.事件處理-事件抑制-noEvent()modelwhy
Realx1;
Realx2;equation
x1=iftime>=5
then
1
else
0;x2=noEvent(iftime>=5
then
1
else
0);endwhy;事件抑制未事件抑制3.事件處理-事件抑制-noEvent()modelwhy
Realx1;
//Realx2;equation
x1=ifsin(100*time)>=0.5
then
1
else
0;
//x2=noEvent(ifsin(100*time)>=0.5then1else0);endwhy;modelwhy
//Realx1;
Realx2;equation
//x1=ifsin(100*time)>=0.5then1else0;
x2=noEvent(ifsin(100*time)>=0.5then1else0);endwhy;優(yōu)點(diǎn)1:節(jié)省求解時(shí)間3.事件處理-事件抑制-noEvent()modelnegativesqrt
Realh(start=5);
parameter
Realc=0.9;equation
der(h)=ifh>0then-c*sqrt(h)else0;endnegativesqrt;優(yōu)點(diǎn)2:避免負(fù)數(shù)開平方modelnegativesqrt
Realh(start=5);
parameter
Realc=0.9;equation
der(h)=noEvent(ifh>0then-c*sqrt(h)else0);endnegativesqrt;3.事件處理-事件平滑-smooth()modelSmoothAndEvents
Realx;
Realy;
Realz;equation
x=iftime<1then2elsetime-2;y=smooth(0,iftime<1then2elsetime-2);z=smooth(1,noEvent(iftime<1then2elsetime-2));endSmoothAndEvents;注意:將不連續(xù)變量變成連續(xù)變量,提高仿真效率。系統(tǒng)不會(huì)為smooth表達(dá)式產(chǎn)生事件,但是smooth本身不能保證不產(chǎn)生事件,因此在smooth中使用noEvent進(jìn)一步抑制事件。目錄1.
事件概述2.事件觸發(fā)3.事件處理4.本章回顧4.總結(jié)事件分為:時(shí)間事件和狀態(tài)事件事件語句:if和when函數(shù)說明initial()在初始化階段結(jié)果為true,否則為falseterminal()在成功分析的結(jié)尾返回truesample(start,interval)在時(shí)刻start+i*interval(i=0,1,….)結(jié)果為true并觸發(fā)事件,否則為falsepre(y)結(jié)果在變量y(t)在t時(shí)刻的左極限y(tpre)edge(b)等價(jià)于“(bandnotpre(b))”,b為Boolean類型change(v)等價(jià)于“(v<>pre(v))”reinit(x,expr)僅在when結(jié)構(gòu)中使用,在事件時(shí)刻以expr初始化狀態(tài)變量x事件函數(shù):事件處理:noEvent()和smooth()4.總結(jié)課堂回顧1.和事件無關(guān)的函數(shù)是()。
A.initialB.terminalC.cosD.pre2.僅在when結(jié)構(gòu)中使用,在事件時(shí)刻初始化狀態(tài)變量的函數(shù)是()。
A.initialB.cosC
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年國(guó)際關(guān)系與外交政策研究考題
- 2026年注冊(cè)會(huì)計(jì)師考試考點(diǎn)精講與模擬試題
- 2026年法律法規(guī)基礎(chǔ)普及憲法刑法民法知識(shí)問答
- 2026年計(jì)算機(jī)二級(jí)考試輔導(dǎo)題編程基礎(chǔ)與算法篇
- 2026年圍棋實(shí)戰(zhàn)技巧及理論考題棋類愛好者的進(jìn)階之路
- 2026年醫(yī)療設(shè)備制造醫(yī)療機(jī)械工程師管理培訓(xùn)生專業(yè)測(cè)試題集
- 2026年企業(yè)稅務(wù)合規(guī)測(cè)試題及實(shí)務(wù)解析
- 2026年供應(yīng)鏈管理技能高級(jí)供應(yīng)鏈決策模型及方法考試題目
- 2026年管理學(xué)理論與實(shí)踐應(yīng)用題
- 廚房盤點(diǎn)培訓(xùn)課件
- 東北大學(xué)2015年招生簡(jiǎn)章
- 建筑材料運(yùn)輸及售后服務(wù)方案
- 資金管理辦法實(shí)施細(xì)則模版(2篇)
- IATF16949-質(zhì)量手冊(cè)(過程方法無刪減版)
- 江蘇省南京市2025屆高三學(xué)情調(diào)研試卷語文
- 河南省安陽市滑縣2024-2025學(xué)年高二數(shù)學(xué)上學(xué)期期末考試試題文
- 客房服務(wù)員:高級(jí)客房服務(wù)員考試資料
- GB/T 6974.5-2023起重機(jī)術(shù)語第5部分:橋式和門式起重機(jī)
- 心臟血管檢查課件
- 運(yùn)用PDCA循環(huán)管理提高手衛(wèi)生依從性課件
- 《高職應(yīng)用數(shù)學(xué)》(教案)
評(píng)論
0/150
提交評(píng)論