多領(lǐng)域物理統(tǒng)一建模語言與MWORKS實(shí)踐 課件 4-7-Modelica語法詳解-事件(1.5學(xué)時(shí))_第1頁(yè)
多領(lǐng)域物理統(tǒng)一建模語言與MWORKS實(shí)踐 課件 4-7-Modelica語法詳解-事件(1.5學(xué)時(shí))_第2頁(yè)
多領(lǐng)域物理統(tǒng)一建模語言與MWORKS實(shí)踐 課件 4-7-Modelica語法詳解-事件(1.5學(xué)時(shí))_第3頁(yè)
多領(lǐng)域物理統(tǒng)一建模語言與MWORKS實(shí)踐 課件 4-7-Modelica語法詳解-事件(1.5學(xué)時(shí))_第4頁(yè)
多領(lǐng)域物理統(tǒng)一建模語言與MWORKS實(shí)踐 課件 4-7-Modelica語法詳解-事件(1.5學(xué)時(shí))_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論