Simulink命令行仿真技術(shù)_第1頁(yè)
Simulink命令行仿真技術(shù)_第2頁(yè)
Simulink命令行仿真技術(shù)_第3頁(yè)
Simulink命令行仿真技術(shù)_第4頁(yè)
Simulink命令行仿真技術(shù)_第5頁(yè)
已閱讀5頁(yè),還剩123頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第8章Simulink命令行仿真技術(shù)

8.1使用命令行方式建立系統(tǒng)模型8.2回顧與復(fù)習(xí):Simulink與MATLAB的接口8.3使用命令行方式進(jìn)行動(dòng)態(tài)系統(tǒng)仿真8.4使用MATLAB腳本分析動(dòng)態(tài)系統(tǒng)8.5其它內(nèi)容8.1使用命令行方式建立系統(tǒng)模型除了使用Simulink的圖形建模方式建立動(dòng)態(tài)系統(tǒng)模型之外,用戶也可以使用命令行方式進(jìn)行系統(tǒng)建模,然后再進(jìn)行動(dòng)態(tài)系統(tǒng)的仿真與分析。在進(jìn)一步介紹使用命令行進(jìn)行動(dòng)態(tài)系統(tǒng)的仿真技術(shù)之前,首先簡(jiǎn)單介紹一下使用命令行的方式建立系統(tǒng)模型的相關(guān)知識(shí)。Simulink中建立系統(tǒng)模型的命令如表8.1所示。表8.1系統(tǒng)模型建立命令命令功能new_system建立一個(gè)新的Simulink系統(tǒng)模型open_system打開(kāi)一個(gè)已存在的Simulink系統(tǒng)模型close_system,bdclose關(guān)閉一個(gè)Simulink系統(tǒng)模型save_system保存一個(gè)Simulink系統(tǒng)模型find_system查找Simulink系統(tǒng)模型、模塊、連線及注釋add_block在系統(tǒng)模型中加入指定模塊delete_block從系統(tǒng)模型中刪除指定模塊replace_block替代系統(tǒng)模型中的指定模塊add_line在系統(tǒng)模型中加入指定連線delete_line從系統(tǒng)模型中刪除指定連線get_param獲取系統(tǒng)模型中的參數(shù)set_param設(shè)置系統(tǒng)模型中的參數(shù)gcb獲得當(dāng)前模塊的路徑名gcs獲得當(dāng)前系統(tǒng)模型的路徑名gcbh獲得當(dāng)前模塊的操作句柄bdroot獲得最上層系統(tǒng)模型的名稱(chēng)simulink打開(kāi)Simulink的模塊庫(kù)瀏覽器使用上面的命令便可以生成和編輯動(dòng)態(tài)系統(tǒng)的Simulink模型,由于使用命令行方式建立的Simulink系統(tǒng)模型與使用圖形建模方式建立的系統(tǒng)模型沒(méi)有什么大的分別,因此這里僅簡(jiǎn)單介紹各個(gè)命令的使用,而不再給出使用這些命令所建立的系統(tǒng)模型框圖。1.new_system1)使用語(yǔ)法new_system('sys')2)功能描述使用給定的名稱(chēng)建立一個(gè)新的Simulink系統(tǒng)模型。如果'sys'為一個(gè)路徑,則新建立的系統(tǒng)為在此路徑中指定的系統(tǒng)模型下的一個(gè)子系統(tǒng)。注意,new_system命令并不打開(kāi)系統(tǒng)模型窗口。3)舉例new_system('mysys')%建立名為'mysys'的系統(tǒng)模型new_system('vdp/mysys')%建立系統(tǒng)模型vdp下的子系統(tǒng)'mysys'2.open_system1)使用語(yǔ)法open_system('sys')open_system('blk')open_system('blk','force')2)功能描述打開(kāi)一個(gè)已存在的Simulink系統(tǒng)模型。open_system('sys'):打開(kāi)名為'sys'的系統(tǒng)模型窗口或子系統(tǒng)模型窗口。注意,這里'sys'使用的是MATLAB中標(biāo)準(zhǔn)路徑名(絕對(duì)路徑名或相對(duì)于已經(jīng)打開(kāi)的系統(tǒng)模型的相對(duì)路徑名)。open_system('blk'):打開(kāi)與指定模塊'blk'相關(guān)的對(duì)話框。open_system('blk','force'):打開(kāi)封裝后的子系統(tǒng),這里'blk'為封裝子系統(tǒng)模塊的路徑名。這個(gè)命令與圖形建模方式中的Lookundermask菜單功能一致。3)舉例open_system('controller') %打開(kāi)名為controller的系統(tǒng)模型open_system('controller/Gain') %打開(kāi)controller模型下的增益模塊Gain的對(duì)話框3.save_system1)使用語(yǔ)法save_systemsave_system('sys')save_system('sys','newname')2)功能描述保存一個(gè)Simulink系統(tǒng)模型。save_system:使用當(dāng)前名稱(chēng)保存當(dāng)前頂層的系統(tǒng)模型。save_system('sys'):保存已經(jīng)打開(kāi)的系統(tǒng)模型,與save_system功能類(lèi)似。save_system('sys','newname'):使用新的名稱(chēng)newname保存當(dāng)前已經(jīng)打開(kāi)的系統(tǒng)模型。3)舉例save_system %保存當(dāng)前的系統(tǒng)模型save_system('vdp') %保存系統(tǒng)模型vdpsave_system('vdp','myvdp')%保存系統(tǒng)模型vdp,模型文件名為myvdp4.close_system,bdclose1)使用語(yǔ)法close_systemclose_system('sys')close_system('sys',saveflag)close_system('sys','newname')close_system('blk')bdclose;bdclose('sys');bdclose('all')2)功能描述關(guān)閉一個(gè)Simulink系統(tǒng)模型。close_system:關(guān)閉當(dāng)前系統(tǒng)或子系統(tǒng)模型窗口。如果頂層系統(tǒng)模型被改變,系統(tǒng)會(huì)提示是否保存系統(tǒng)模型。close_system('sys'):關(guān)閉指定的系統(tǒng)或子系統(tǒng)模型窗口。close_system('sys',saveflag):關(guān)閉指定的頂層系統(tǒng)模型窗口并且從內(nèi)存中清除。saveflag為0表示不保存系統(tǒng)模型,為1表示使用當(dāng)前名稱(chēng)保存系統(tǒng)模型。3)舉例close_system %關(guān)閉當(dāng)前系統(tǒng)close_system('engine',1) %保存當(dāng)前系統(tǒng)模型engine(使用當(dāng)前系統(tǒng)名稱(chēng)),然后再關(guān)閉系統(tǒng)close_system('engine/Combustion/UnitDelay')%關(guān)閉系統(tǒng)模型engine下的Combustion子系統(tǒng)中UnitDelay模塊的對(duì)話框5.find_system1)使用語(yǔ)法find_system(sys,'c1',cv1,'c2',cv2,...'p1',v1,'p2',v2,...)2)功能描述查找由sys指定的系統(tǒng)模型、模塊、連線及注釋等等,并返回相應(yīng)的路徑名與操作句柄。由于使用此命令涉及較多的參數(shù)設(shè)置,因此這里不再贅述,用戶可以查看Simulink的聯(lián)機(jī)幫助系統(tǒng)中Simulink目錄下的UsingSimulink\ModelConstructionCommands\Introduction中的find_system命令的幫助即可。6.add_block1)使用語(yǔ)法add_block('src','dest')add_block('src','dest','parameter1',value1,...)2)功能描述在系統(tǒng)模型中加入指定模塊。add_block('src','dest'):拷貝模塊'src'為'dest'(使用路徑名表示),從而可以從Simulink的模塊庫(kù)中復(fù)制模塊至指定系統(tǒng)模型中,且模塊'dest'參數(shù)與'src'完全一致。add_block('src','dest_obj','parameter1',value1,...):功能與上述命令類(lèi)似,但是需要設(shè)置給定模塊的參數(shù)'parameter1',value1為參數(shù)值。3)舉例add_block('simulink3/Sinks/Scope','engine/timing/Scope1')%從Simulink的模塊庫(kù)Sinks中復(fù)制Scope模塊至系統(tǒng)模型engine中子系統(tǒng)timing中,其名稱(chēng)%為Scope17.?delete_block1)使用語(yǔ)法delete_block('blk')2)功能描述從系統(tǒng)模型中刪除指定模塊。delete_block('blk'):從系統(tǒng)模型中刪除指定的系統(tǒng)模塊'blk'。3)舉例delete_block('vdp/Out1') %從vdp模型中刪除模塊Out18.replace_block1)使用語(yǔ)法replace_block('sys','blk1','blk2','noprompt')replace_block('sys','Parameter','value','blk',...)2)功能描述替代系統(tǒng)模型中的指定模塊。replace_block('sys','blk1','blk2'):在系統(tǒng)模型'sys'使用模塊'blk2'取代所有的模塊'blk1'。如果'blk2'為Simulink的內(nèi)置模塊,則只需要給出模塊的名稱(chēng)即可,如果為其它的模塊,必須給出所有的參數(shù)。如果省略'noprompt',Simulink會(huì)顯示取代模塊對(duì)話框。replace_block('sys','Parameter','value',...,'blk'):取代模型'sys'中具有特定取值的所有模塊'blk'。'Parameter'為模塊參數(shù),'value'為模塊參數(shù)取值。3)舉例replace_block('vdp','Gain','Integrator','noprompt')%使用積分模塊Integrator取代系統(tǒng)模型vdp中所有的增益模塊Gain,并且不顯示取代對(duì)話框9.add_line、delete_line1)使用語(yǔ)法h=add_line('sys','oport','iport')h=add_line('sys','oport','iport','autorouting','on')delete_line('sys','oport','iport') 2)功能描述在系統(tǒng)模型中加入或刪除指定連線。add_line('sys','oport','iport'):在系統(tǒng)模型'sys'中給定模塊的輸出端口與指定模塊的輸入端口之間加入直線。'oport'與'iport'分別為輸出端口與輸入端口(包括模塊的名稱(chēng)、模塊端口編號(hào))。add_line('sys','oport','iport','autorouting','on'):與add_line('sys','oport','iport')命令類(lèi)似,只是加入的連線方式可以由'autorouting'的狀態(tài)控制:'on'表示連線環(huán)繞模塊,而'off'表示連線為直線(缺省狀態(tài))。delete_line('sys','oport','iport'):刪除由給定模塊的輸出端口'oport'至指定模塊的輸入端口'iport'之間的連線。3)舉例add_line('mymodel','SineWave/1','Mux/1')%在系統(tǒng)模型'mymodel'中加入由正弦模塊SineWave的輸出至信號(hào)組合模塊Mux第一個(gè)輸入間%的連線delete_line('mymodel','SineWave/1','Mux/1') %刪除系統(tǒng)模型'mymodel'中由正弦模塊SineWave的輸出至信號(hào)組合模塊Mux第一個(gè)輸入間的%連線10.set_param和get_param1)使用語(yǔ)法set_param('obj','parameter1',value1,'parameter2',value2,...)get_param('obj','parameter')get_param({objects},'parameter')get_param(handle,'parameter')get_param(0,'parameter')get_param('obj','ObjectParameters')get_param('obj','DialogParameters')2)功能描述設(shè)置與獲得系統(tǒng)模型以及模塊參數(shù)。set_param('obj','parameter1',value1,'parameter2',value2,...):其中'obj'表示系統(tǒng)模型或其中的系統(tǒng)模塊的路徑,或者取值為0;給指定的參數(shù)設(shè)置合適的值,取值為0表示給指定的參數(shù)設(shè)置為缺省值。在仿真過(guò)程中,使用此命令可以在MATLAB的工作空間中改變這些參數(shù)的取值,從而可以更新系統(tǒng)在不同的參數(shù)下運(yùn)行仿真。get_param('obj','parameter'):返回指定參數(shù)取值。其中'obj'為系統(tǒng)模型或系統(tǒng)模型中的系統(tǒng)模塊。get_param({objects},'parameter'):返回多個(gè)模塊指定參數(shù)的取值,其中{objects}表示模塊的細(xì)胞矩陣(Cell)。get_param(handle,'parameter'):返回句柄值為handle的對(duì)象的指定參數(shù)的取值。get_param(0,'parameter'):返回Simulink當(dāng)前的仿真參數(shù)或默認(rèn)模型、模塊的指定參數(shù)的取值。get_param('obj','ObjectParameters'):返回描述某一對(duì)象參數(shù)取值的結(jié)構(gòu)體。其中返回到結(jié)構(gòu)體中具有相應(yīng)的參數(shù)名稱(chēng)的每一個(gè)參數(shù)域分別包括參數(shù)名稱(chēng)(如Gain)、數(shù)據(jù)類(lèi)型,如string以及參數(shù)屬性如read-only等。get_param('obj','DialogParameters'):返回指定模塊對(duì)話框中所包含的參數(shù)名稱(chēng)的細(xì)胞矩陣。由于參數(shù)選項(xiàng)很多,這里不再贅述,讀者可以參考Simulink幫助中的ModelandBlockParameters中的詳細(xì)介紹。3)舉例set_param('vdp','Solver','ode15s','StopTime','3000')%設(shè)置系統(tǒng)模型'vdp'的求解器為'ode15s',仿真結(jié)??%束時(shí)間為3000sset_param('vdp/Mu','Gain','1000')%設(shè)置系統(tǒng)模型vdp中模塊Mu中的增益模塊Gain的取值為1000set_param('vdp/Fcn','Position',[50100110120])%設(shè)置系統(tǒng)模型vdp中的Fcn模塊的位置為set_param('mymodel/Zero-Pole','Zeros','[24]','Poles','[123]')%設(shè)置系統(tǒng)模型mymodel中零極點(diǎn)模塊Zero-Pole的零點(diǎn)Zeros取值為[24],而極點(diǎn)Poles取值為%?[123]get_param('Mysys/Subsys/Inertia','Gain')%獲得系統(tǒng)模型Mysys中子系統(tǒng)Subsys中的Inertia模塊的增益值。其結(jié)果如下(假設(shè)此系統(tǒng)模型%以存在)ans=1.0000e-006p=get_param('untitled/SineWave','DialogParameters') %獲得系統(tǒng)模型untitled下正弦信號(hào)模塊SineWave的參數(shù)設(shè)置對(duì)話框中所包含的參數(shù)名稱(chēng),%結(jié)果如下p='Amplitude''Frequency''Phase''SampleTime'11.?gcb、gcs以及gcbh1)使用語(yǔ)法gcbgcb('sys')gcsgcbhbdrootbdroot('obj')2)功能描述gcb:返回當(dāng)前系統(tǒng)模型中當(dāng)前模塊的路徑名。gcb('sys'):返回指定系統(tǒng)模型中當(dāng)前模塊的路徑名。gcs:獲得當(dāng)前系統(tǒng)模型的路徑名。gcbh:返回當(dāng)前系統(tǒng)模型中當(dāng)前模塊的操作句柄。bdroot:返回頂層系統(tǒng)模型的名稱(chēng)。bdroot('obj'):返回包含指定對(duì)象名稱(chēng)的頂層系統(tǒng)的名稱(chēng),其中'obj'為系統(tǒng)或模塊的路徑名。12.simulink1)使用語(yǔ)法simulink2)功能描述打開(kāi)Simulink的模塊庫(kù)瀏覽器。使用命令行方式建立的動(dòng)態(tài)系統(tǒng)模型與使用Simulink圖形建模方式所建立的系統(tǒng)模型完全一致,然而,僅僅使用命令行方式建立系統(tǒng)模型是一件麻煩且低效的方法。8.2回顧與復(fù)習(xí):Simulink與

MATLAB的接口先建立一個(gè)非常簡(jiǎn)單的動(dòng)態(tài)系統(tǒng),其功能如下:(1)系統(tǒng)的輸入為一單位幅值、單位頻率的正弦信號(hào)。(2)系統(tǒng)的輸出信號(hào)為輸入信號(hào)的積分。其要求是:(1)系統(tǒng)的輸入信號(hào)由MATLAB工作空間中的變量提供,時(shí)間范圍為0至10s。(2)使用MATLAB繪制原始輸入信號(hào)與系統(tǒng)運(yùn)算結(jié)果的曲線。從動(dòng)態(tài)系統(tǒng)的功能與其要求可知,建立此動(dòng)態(tài)系統(tǒng)的模型需要以下一些模塊:(1)Sources模塊庫(kù)中的In1模塊:表示系統(tǒng)的輸入。(2)Sinks模塊庫(kù)中的Out1模塊:表示系統(tǒng)的輸出。(3)Continuous模塊庫(kù)中的Integrator模塊:積分運(yùn)算器。其中In1(Inport)模塊與Out1(Outport)模塊都是虛模塊,它們僅僅表示將信號(hào)傳入或傳出子系統(tǒng)。圖8.1簡(jiǎn)單動(dòng)態(tài)系統(tǒng)模型框圖圖8.2WorkspaceI/O設(shè)置然后在MATLAB工作空間中定義輸入變量sim_input如下:>>t=0:0.1:10; %表示輸入信號(hào)的時(shí)間范圍>>u=sin(t); %產(chǎn)生輸入正弦信號(hào)>>sim_input=[t',u']; %傳遞至Simulink系統(tǒng)模型的變量接下來(lái),采用默認(rèn)的系統(tǒng)仿真參數(shù)并運(yùn)行系統(tǒng)仿真。最后使用MATLAB命令繪制出原始輸入信號(hào)與系統(tǒng)運(yùn)算結(jié)果,如下所示:>>plot(t,u,tout,yout,‘--’) %繪制系統(tǒng)輸入信號(hào)與仿真結(jié)果,如圖8.3所示.圖8.3系統(tǒng)原始輸入與運(yùn)算結(jié)果曲線8.3使用命令行方式進(jìn)行動(dòng)態(tài)系統(tǒng)仿真8.3.1使用sim命令進(jìn)行動(dòng)態(tài)系統(tǒng)仿真1.使用語(yǔ)法[t,x,y]=sim(model,timespan,options,ut)[t,x,y1,y2,...,yn]=sim(model,timespan,options,ut); 以上是完整的語(yǔ)法格式,實(shí)際使用中可以省略其中的某些參數(shù)設(shè)置而采用默認(rèn)參數(shù)進(jìn)行仿真。2.功能描述對(duì)指定的系統(tǒng)模型按照給定的仿真參數(shù)與模型參數(shù)進(jìn)行系統(tǒng)仿真。仿真所使用的參數(shù)包括所有使用仿真參數(shù)對(duì)話框的設(shè)置、MATLAB工作空間的輸入輸出選項(xiàng)卡中的設(shè)置以及采用命令行方式設(shè)置的仿真參數(shù)與系統(tǒng)模塊參數(shù)。除參數(shù)'model'外,其它的仿真參數(shù)設(shè)置均可以取值為空矩陣,此時(shí)sim命令對(duì)沒(méi)有設(shè)置的仿真參數(shù)使用默認(rèn)的參數(shù)值進(jìn)行仿真。默認(rèn)的參數(shù)值由系統(tǒng)模型框圖所決定。用戶可以使用sim命令的options參數(shù)對(duì)可選參數(shù)進(jìn)行設(shè)置,這樣設(shè)置的仿真參數(shù)將覆蓋模型默認(rèn)的參數(shù)。如果用戶對(duì)連續(xù)系統(tǒng)進(jìn)行仿真,必須設(shè)置合適的仿真求解器,因?yàn)槟J(rèn)的仿真求解器為變步長(zhǎng)離散求解器(VariableStepDiscreteSolver)??梢允褂胹imset命令進(jìn)行設(shè)置(后面將簡(jiǎn)單介紹simset命令的使用)。3.參數(shù)說(shuō)明(1)model:需要進(jìn)行仿真的系統(tǒng)模型框圖名稱(chēng)。(2)timespan:系統(tǒng)仿真時(shí)間范圍(起始時(shí)間至終止時(shí)間),可以為如下的形式:①tFinal:設(shè)置仿真終止時(shí)間。仿真起始時(shí)間默認(rèn)為0。②[tStarttFinal]:設(shè)置仿真起始時(shí)間(tStart)與終止時(shí)間(tFinal)。③[tStartOutputTimestFinal]:設(shè)置仿真起始時(shí)間(tStart)與終止時(shí)間(tFinal),并且設(shè)置仿真返回的時(shí)間向量[tStartOutputTimestFinal],其中tStart、OutputTimes、tFinal必須按照升序排列。(3)?options:由simset命令所設(shè)置的除仿真時(shí)間外的仿真參數(shù)(為一結(jié)構(gòu)體變量)。(4)?ut:表示系統(tǒng)模型頂層的外部可選輸入。ut可以是MATLAB函數(shù)??梢允褂枚鄠€(gè)外部輸入ut1、ut2…。(5)?t:返回系統(tǒng)仿真時(shí)間向量。(6)?x:返回系統(tǒng)仿真狀態(tài)變量矩陣。首先是連續(xù)狀態(tài),然后是離散狀態(tài)。(7)?y:返回系統(tǒng)仿真的輸出矩陣。按照頂層輸出Outport模塊的順序輸出,如果輸出信號(hào)為向量輸出,則輸出信號(hào)具有與此向量相同的維數(shù)。(8)?y1,...,yn:返回多個(gè)系統(tǒng)仿真的輸出。8.3.2舉例之一:簡(jiǎn)單仿真在8.2節(jié)中以動(dòng)態(tài)系統(tǒng)command_in_out為例,對(duì)Simulink與MATLAB接口設(shè)計(jì)作了簡(jiǎn)單的回顧與復(fù)習(xí)。Simulink系統(tǒng)模型的輸入信號(hào)為MATLAB工作空間中的變量,同時(shí)仿真結(jié)果也被輸出到MATLAB工作空間中。但在進(jìn)行系統(tǒng)仿真時(shí),并沒(méi)有使用命令行方式。實(shí)際上用戶也可以使用命令行方式對(duì)此系統(tǒng)模型進(jìn)行仿真,在仿真之前,首先使用仿真參數(shù)設(shè)置對(duì)話框設(shè)置參數(shù)。然后在MATLAB命令窗口中鍵入如下命令進(jìn)行系統(tǒng)模型的仿真,并繪制此系統(tǒng)的輸入信號(hào)與仿真結(jié)果:>>t=0:0.1:10;>>u=sin(t);>>sim_input=[t',u'];>>[tout,x,yout]=sim('command_in_out');%使用命令行sim進(jìn)行系統(tǒng)仿真,仿真參數(shù)采用與8.2節(jié)中相同的仿真參數(shù)>>plot(t,u,tout,yout,'--')在對(duì)動(dòng)態(tài)系統(tǒng)command_in_out進(jìn)行仿真時(shí),必須先打開(kāi)此系統(tǒng)模型并且設(shè)置合適的仿真參數(shù)。sim命令的參數(shù)為模型的名稱(chēng)(由不帶擴(kuò)展名.mdl的系統(tǒng)模型文件名構(gòu)成)。為突出sim命令的作用,這里仍使用Simulink的仿真參數(shù)設(shè)置對(duì)話框?qū)Ψ抡鎱?shù)設(shè)置,至于使用simset命令設(shè)置仿真參數(shù)將在后面進(jìn)行介紹。使用sim命令進(jìn)行系統(tǒng)仿真前后MATLAB工作空間中的變量列表如圖8.4所示。圖8.4中左側(cè)為使用sim命令進(jìn)行仿真之前的MATLAB工作空間變量列表(其中sim_input為系統(tǒng)模型的輸入信號(hào)、t為輸入信號(hào)的時(shí)間范圍、u為輸入信號(hào)的取值);右側(cè)為使用sim命令進(jìn)行仿真之后的工作空間變量列表(其中tout為輸出時(shí)間變量、x為輸出系統(tǒng)狀態(tài)變量、yout為系統(tǒng)運(yùn)算結(jié)果;如果在系統(tǒng)模型的頂層沒(méi)有Outport模塊,則輸出yout為空)。從圖中可以明顯看出,動(dòng)態(tài)系統(tǒng)的仿真結(jié)果(包括輸出時(shí)間向量、系統(tǒng)狀態(tài)與運(yùn)算結(jié)果)被輸出到了MATLAB工作空間中。此外,由plot所繪制的圖形也與8.2節(jié)中的繪制結(jié)果完全一致,這里不再給出。圖8.4系統(tǒng)仿真前后MATLAB工作空間變量列表8.3.3舉例之二:仿真時(shí)間設(shè)置在前面已經(jīng)對(duì)sim命令中的仿真時(shí)間參數(shù)timespan設(shè)置做了介紹。timespan具有三種使用形式,根據(jù)不同動(dòng)態(tài)系統(tǒng)仿真的不同要求,用戶可以選擇使用如下所示的不同形式進(jìn)行系統(tǒng)仿真:>>[t,x,y]=sim(model,tFinal)>>[t,x,y]=sim(model,[tStarttFinal])>>[t,x,y]=sim(model,[tStartoutputTimestFinal])仍以前面的動(dòng)態(tài)系統(tǒng)command_in_out為例說(shuō)明使用命令行方式時(shí)如何對(duì)系統(tǒng)仿真時(shí)間進(jìn)行設(shè)置。首先打開(kāi)系統(tǒng)模型command_in_out,然后仍然使用Simulink仿真參數(shù)設(shè)置對(duì)話框?qū)ο到y(tǒng)的仿真參數(shù)進(jìn)行設(shè)置,其設(shè)置與8.2節(jié)中所使用的參數(shù)完全一致。為了使用戶對(duì)使用命令行方式設(shè)置系統(tǒng)仿真時(shí)間范圍有一個(gè)直觀的了解,這里使用四組不同的仿真時(shí)間對(duì)此系統(tǒng)進(jìn)行仿真,并繪制系統(tǒng)輸入信號(hào)與系統(tǒng)運(yùn)算結(jié)果關(guān)系圖以作比較。在MATLAB命令窗口中運(yùn)行如下的命令:>>t=0:0.1:10; >>u=sin(t);>>sim_input=[t',u'];>>[tout1,x1,yout1]=sim('command_in_out',5); %系統(tǒng)仿真時(shí)間范圍為0至5s,輸出時(shí)間向量tout1由Simulink的求解器步長(zhǎng)變化決定>>[tout2,x2,yout2]=sim('command_in_out',[18]);%系統(tǒng)仿真時(shí)間范圍為1至8s,輸出時(shí)間向量tout1同樣由Simulink的求解器步長(zhǎng)變化決定>>[tout3,x3,yout3]=sim('command_in_out',1:8);%系統(tǒng)仿真時(shí)間范圍為1至8s,并且每隔1s輸出一次,即輸出時(shí)間變量為%?[12345678]>>[tout4,x4,yout4]=sim('command_in_out',1:0.2:8);%系統(tǒng)仿真時(shí)間范圍為1至8s,并且每隔0.2s輸出一次,即輸出時(shí)間變量為%?[11.2%1.4…7.67.88]>>subplot(2,2,1)>>plot(t,u,tout1,yout1,'.');>>subplot(2,2,2)>>plot(t,u,tout2,yout2,'.');>>subplot(2,2,3)>>plot(t,u,tout3,yout3,'.');>>subplot(2,2,4)>>plot(t,u,tout4,yout4,'.');%在同一幅圖中繪制系統(tǒng)command_in_out的輸入信號(hào)以及在不同仿真時(shí)間范圍上的系統(tǒng)運(yùn)算結(jié)%果,其結(jié)果如圖8.5所示圖8.5在不同仿真時(shí)間設(shè)置下的系統(tǒng)仿真結(jié)果比較圖8.6系統(tǒng)仿真返回的時(shí)間向量輸出8.3.4舉例之三:外部輸入變量設(shè)置前面對(duì)動(dòng)態(tài)系統(tǒng)command_in_out進(jìn)行仿真時(shí),通過(guò)設(shè)置Simulink仿真參數(shù)設(shè)置對(duì)話框中WorkspaceI/O中的外部變量輸入,以使系統(tǒng)在仿真過(guò)程中從MATLAB的工作空間中獲取輸入信號(hào)sim_input。除了使用這種方法從MATLAB工作空間中獲得系統(tǒng)輸入信號(hào)之外,用戶還可以通過(guò)使用sim命令中的ut參數(shù)來(lái)設(shè)置系統(tǒng)的外部輸入信號(hào)。下面介紹如何使用ut參數(shù)設(shè)置外部輸入信號(hào)。1.ut參數(shù)的生成用戶可以使用命令[t,x,y]=sim(model,timespan,options,ut)對(duì)動(dòng)態(tài)系統(tǒng)進(jìn)行仿真并且從MATLAB工作空間中輸入變量。其中ut為一個(gè)具有兩列的矩陣,第一列表示外部輸入信號(hào)的時(shí)刻,第二列表示與給定時(shí)刻相應(yīng)的信號(hào)取值。使用矩陣ut能夠?yàn)橄到y(tǒng)模型最頂層的Inport模塊提供外部輸入,并將自動(dòng)覆蓋Simulink仿真參數(shù)設(shè)置對(duì)話框中WorkspaceI/O中的設(shè)置。此外,當(dāng)輸入信號(hào)中存在著陡沿邊緣時(shí),必須在同一時(shí)刻處定義不同的信號(hào)取值。例如,對(duì)于圖8.7所示的一個(gè)類(lèi)似于方波的信號(hào)。產(chǎn)生此輸入信號(hào)的MATLAB命令為>>ut=[01;101;10-1;20-1;201;301;30-1;40-1;401;501]2.應(yīng)用舉例仍以動(dòng)態(tài)系統(tǒng)command_in_out為例說(shuō)明如何使用sim命令的參數(shù)ut從MATLAB工作空間中獲得輸入信號(hào)。在MATLAB命令窗口中鍵入如下的命令:>>t=0:0.1:10;>>u=sin(t);>>sim_input=[t',u'];>>[tout1,x1,yout1]=sim('command_in_out',10);%使用Simulink仿真參數(shù)對(duì)話框中的WorkspaceI/O從MATLAB工作空間中獲得輸入信號(hào)>>u=cos(t);>>ut=[t',u']; %改變系統(tǒng)輸入信號(hào)>>[tout2,x2,yout2]=sim('command_in_out',10,[],ut);%使用sim命令的ut參數(shù)獲得系統(tǒng)輸入信號(hào),ut的使用會(huì)覆蓋由WorkspaceI/O的系統(tǒng)輸入設(shè)置,%這一點(diǎn)可以在下面的系統(tǒng)仿真結(jié)果圖形中反映出來(lái)>>subplot(1,2,1);plot(tout1,yout1);>>subplot(1,2,2);plot(tout2,yout2);%繪制系統(tǒng)在不同輸入信號(hào)下的響應(yīng)曲線,如圖8.8所示圖8.7類(lèi)方波信號(hào)圖8.8系統(tǒng)在不同輸入下的響應(yīng)曲線8.3.5simset與simget命令的使用前面介紹使用sim命令進(jìn)行動(dòng)態(tài)系統(tǒng)仿真時(shí),除了對(duì)系統(tǒng)仿真時(shí)間與系統(tǒng)輸入的設(shè)置之外,其它所有的仿真參數(shù)均是由Simulink的仿真參數(shù)設(shè)置對(duì)話框所設(shè)置的。用戶也可以使用simset對(duì)系統(tǒng)仿真參數(shù)進(jìn)行設(shè)置,然后再使用命令行方式對(duì)系統(tǒng)進(jìn)行仿真分析,如下所示: >>[t,x,y]=sim(model,timespan,options,ut);其中options為仿真選項(xiàng)結(jié)構(gòu)體變量(不包括系統(tǒng)仿真時(shí)間),使用simset命令可以對(duì)此結(jié)構(gòu)體變量進(jìn)行設(shè)置。注意,這里所謂的仿真選項(xiàng)指的就是Simulink仿真參數(shù)設(shè)置對(duì)話框Simulationparameters中所設(shè)置的參數(shù)。為了使用戶對(duì)options系統(tǒng)仿真選項(xiàng)有一個(gè)總體的了解,首先使用simget命令獲得表示系統(tǒng)仿真參數(shù)的結(jié)構(gòu)體變量,如下所示:>>options=simget('command_in_out')%獲得已經(jīng)打開(kāi)的系統(tǒng)模型command_in_out的仿真參數(shù)選項(xiàng)options=

AbsTol:'auto'Debug:'off'Decimation:1DstWorkspace:'current'FinalStateName:''FixedStep:'auto'InitialState:[]InitialStep:'auto'MaxOrder:5SaveFormat:'Array'MaxDataPoints:1000MaxStep:'auto'MinStep:[]OutputPoints:'all'OutputVariables:'ty'Refine:1RelTol:0.0010Solver:'ode45'SrcWorkspace:'base'Trace:''ZeroCross:'on'1.simset命令使用介紹1)使用語(yǔ)法options=simset(property,value,...);options=simset(old_opstruct,property,value,...);options=simset(old_opstruct,new_opstruct);simset2)功能描述使用simset命令會(huì)產(chǎn)生一結(jié)構(gòu)體變量options,此變量中的各個(gè)數(shù)據(jù)用來(lái)設(shè)置系統(tǒng)仿真參數(shù)。對(duì)于沒(méi)有進(jìn)行設(shè)置的系統(tǒng)仿真參數(shù),Simulink會(huì)使用相應(yīng)的缺省值。options=simset(property,value,...):設(shè)置指定的仿真參數(shù)選項(xiàng)值。其中property為指定的仿真參數(shù),value為指定的取值。options=simset(old_opstruct,property,value,...):修改仿真參數(shù)結(jié)構(gòu)體變量中已經(jīng)存在的指定仿真參數(shù)選項(xiàng)。其中old_opstruct表示已經(jīng)存在的結(jié)構(gòu)體。options=simset(old_opstruct,new_opstruct):合并已經(jīng)存在的兩個(gè)仿真參數(shù)結(jié)構(gòu)體變量,并且使用new_opstruct中的域值覆蓋old_opstruct中具有相同域名的域值。simset:顯示所有的仿真參數(shù)選項(xiàng)及其可能的取值。3)仿真參數(shù)選項(xiàng)介紹使用simset命令可以設(shè)置除仿真時(shí)間外的所有系統(tǒng)仿真參數(shù)選項(xiàng),下面對(duì)最常用的仿真參數(shù)選項(xiàng)及其取值作一個(gè)簡(jiǎn)單的介紹。(1)AbsTol:取值為一標(biāo)量,缺省值為1e–6,表示絕對(duì)誤差限。僅用于變步長(zhǎng)求解器。(2)Decimation:取值為一正整數(shù),缺省值為1,表示系統(tǒng)仿真結(jié)果返回?cái)?shù)據(jù)點(diǎn)的間隔(值為1,表示每一仿真結(jié)果數(shù)據(jù)均返回到相應(yīng)的變量中;值為2,表示仿真結(jié)果每隔一個(gè)數(shù)據(jù)點(diǎn)返回到相應(yīng)的變量中,依次類(lèi)推)。(3)FixedStep:取值為正值標(biāo)量,表示定步長(zhǎng)求解器的步長(zhǎng)。如果對(duì)離散系統(tǒng)進(jìn)行仿真,其缺省取值為離散系統(tǒng)的采樣時(shí)間;如果對(duì)連續(xù)系統(tǒng)進(jìn)行仿真,其缺省取值為仿真時(shí)間范圍的1/50。(4)InitialState:取值為一向量,缺省值為空向量,表示系統(tǒng)的初始狀態(tài)。如果系統(tǒng)中同時(shí)存在連續(xù)狀態(tài)與離散狀態(tài),則此向量中先是連續(xù)狀態(tài)的初始值,然后是離散狀態(tài)的初始值。初始狀態(tài)的設(shè)置會(huì)覆蓋系統(tǒng)模型中所默認(rèn)的狀態(tài)初始值。(5)InitialStep:取值為一正標(biāo)量,缺省值為auto,表示系統(tǒng)仿真時(shí)的初始步長(zhǎng)(估計(jì)值),僅用于變步長(zhǎng)求解器;在仿真時(shí)求解器首先使用估計(jì)的步長(zhǎng),缺省情況下由求解器決定初始仿真步長(zhǎng)。(6)MaxStep:取值為一正值標(biāo)量,缺省值為auto,表示系統(tǒng)仿真的最大步長(zhǎng)。僅用于變步長(zhǎng)求解器,缺省情況下最大仿真步長(zhǎng)為仿真時(shí)間范圍的1/50。(7)RelTol:取值為一正值標(biāo)量,缺省值為1e–3,表示相對(duì)誤差限。僅用于變步長(zhǎng)求解器。(8)Solver:表示Simulink仿真求解器,其取值為如下由“|”隔開(kāi)的字符串:VariableStepDiscrete|ode45|ode23|ode113|ode15s|ode23s|FixedStepDiscrete|ode5|ode4|ode3|ode2|ode1。在缺省值為變步長(zhǎng)連續(xù)求解器,運(yùn)算方法為ode45(Dormand-Prince)。(9)?ZeroCross:表示仿真過(guò)程中的過(guò)零檢測(cè),取值為on或off,缺省值為on。僅用于變步長(zhǎng)求解器。on表示對(duì)系統(tǒng)的模塊進(jìn)行過(guò)零檢測(cè),off表示不進(jìn)行過(guò)零檢測(cè)。4)應(yīng)用舉例>>myoptions=simset(‘ZeroCross’,’off’); %關(guān)閉系統(tǒng)仿真過(guò)零檢測(cè)>>[tout,x,yout]=sim(‘command_in_out’,10,myoptions);%使用myoptions仿真參數(shù)選項(xiàng)進(jìn)行系統(tǒng)仿真2.simget命令的使用介紹1)使用語(yǔ)法struct=simget(model)value=simget(model,property)value=simget(OptionStructure,property)2)功能描述simget命令用來(lái)獲得指定系統(tǒng)模型的仿真參數(shù)設(shè)置。struct=simget(model):獲得指定系統(tǒng)模型model的所有仿真參數(shù)設(shè)置結(jié)構(gòu)體變量。value=simget(model,property):獲得指定系統(tǒng)模型model中指定仿真參數(shù)property的取值。value=simget(OptionStructure,property):獲得系統(tǒng)仿真長(zhǎng)參數(shù)選項(xiàng)中指定的仿真參數(shù)的取值。8.3.6simplot命令的使用在觀測(cè)動(dòng)態(tài)系統(tǒng)仿真結(jié)果時(shí),Sinks模塊庫(kù)中的Scope模塊是最常用的模塊之一。它可以使用戶在類(lèi)似示波器的圖形界面中觀測(cè)系統(tǒng)仿真結(jié)果的輸出,而非使用諸如plot繪制系統(tǒng)的輸出。使用Scope最重要的優(yōu)點(diǎn)是可以通過(guò)對(duì)Scope模塊的操作,對(duì)系統(tǒng)輸出進(jìn)行方便的觀測(cè),這一點(diǎn)是plot等命令所不及的。在使用命令行方式對(duì)動(dòng)態(tài)系統(tǒng)進(jìn)行仿真時(shí),可以使用simplot命令繪制與使用與Scope模塊相類(lèi)似的圖形。下面介紹simplot命令的功能與使用。1.使用語(yǔ)法simplot(data);simplot(time,data);2.功能描述simplot命令用來(lái)輸出動(dòng)態(tài)系統(tǒng)的仿真結(jié)果,且其輸出圖形與Scope模塊的輸出類(lèi)似。3.參數(shù)說(shuō)明data:動(dòng)態(tài)系統(tǒng)仿真結(jié)果的輸出數(shù)據(jù)(一般由Outport模塊、ToWorkspace模塊等產(chǎn)生的輸出)。其數(shù)據(jù)類(lèi)型可以為矩陣、向量或是結(jié)構(gòu)體等。time:動(dòng)態(tài)系統(tǒng)仿真結(jié)果的輸出時(shí)間向量。當(dāng)系統(tǒng)輸出數(shù)據(jù)為帶有時(shí)間向量的結(jié)構(gòu)體變量時(shí),此參數(shù)被忽略。4.舉例仍以前面的command_in_out為例說(shuō)明simplot的使用(設(shè)系統(tǒng)仿真結(jié)果已經(jīng)存在)。在MATLAB命令窗口中鍵入如下命令:>>simplot(tout2,yout2) %使用simplot繪制系統(tǒng)仿真結(jié)果,如圖8.9所示圖8.9使用simplot命令繪制系統(tǒng)仿真結(jié)果8.4使用MATLAB腳本分析動(dòng)態(tài)系統(tǒng)8.4.1蹦極跳的安全性分析在第5章中曾給出蹦極跳連續(xù)系統(tǒng)模型:

其中為蹦極者的質(zhì)量,為重力加速度,為物體的位置,與表示空氣的阻力,而圖8.10蹦極跳系統(tǒng)模型框圖下面使用命令行方式對(duì)此系統(tǒng)在不同的彈性常數(shù)下進(jìn)行仿真分析,以求出符合安全要求的彈性繩索的最小彈性常數(shù)。編寫(xiě)MATLAB腳本文件bungee_jumping_cmd.m,求取最小彈性常數(shù),程序如下所示:m=70;g=10;a1=1; %使用MATLAB工作空間中變量設(shè)置a2=1; %系統(tǒng)模型中模塊的參數(shù)fork=20:50 %在一定的范圍內(nèi)試驗(yàn)彈性常數(shù)[t,x,y]=sim('bungee_jumping_command',[0100]);%使用不同的彈性常數(shù)進(jìn)行系統(tǒng)仿真ifmin(y)>0 %如果仿真結(jié)果輸出數(shù)據(jù)的最小值大于0,break; %則說(shuō)明此彈性常數(shù)符合安全要求,跳出循環(huán)endenddisp(['Theminimumsafekis:',num2str(k)]) %顯示最小安全彈性常數(shù)dis=min(y); %求取蹦極者與地面之間的最小距離disp(['Theminimumdistancebetweenjumperandgroundis:',num2str(dis)])simplot(t,y) %繪制最小安全彈性常數(shù)下系統(tǒng)的仿真結(jié)果在運(yùn)行此MATLAB腳本文件求取最小安全彈性常數(shù)之前,必須正確設(shè)置蹦極者的初始位置與初始速度(用戶可以參考第5章中相應(yīng)的參數(shù)設(shè)置,這里不再贅述)。然后再運(yùn)行此腳本文件,以求取最小安全彈性常數(shù)和在此彈性常數(shù)下蹦極者與地面之間的最小距離,并且顯示在此彈性常數(shù)下的蹦極跳系統(tǒng)動(dòng)態(tài)過(guò)程。其中最小安全彈性常數(shù)、蹦極者與地面之間的最小距離在MATLAB命令窗口中顯示如下:>>Theminimumsafekis:27Theminimumdistancebetweenjumperandgroundis:0.87934在最小安全彈性常數(shù)為27的情況下,體重為70kg的蹦極者與地面之間的最小距離不足1m。圖8.11所示為此系統(tǒng)的動(dòng)態(tài)過(guò)程。圖8.11最小安全彈性常數(shù)下的系統(tǒng)動(dòng)態(tài)過(guò)程8.4.2行駛控制系統(tǒng)中控制器的調(diào)節(jié)第5章中的行駛控制系統(tǒng)給出了系統(tǒng)綜合設(shè)計(jì)仿真的一個(gè)簡(jiǎn)單實(shí)例。汽車(chē)行駛控制系統(tǒng)的基本目的是控制汽車(chē)的速度變化,使汽車(chē)的速度在合適的時(shí)間之內(nèi)加速到指定的速度。由第5章中的介紹可知,汽車(chē)行駛控制系統(tǒng)由如下三部分所構(gòu)成:(1)速度操縱機(jī)構(gòu)的位置變換器。(2)行駛控制器。(3)汽車(chē)動(dòng)力系統(tǒng)。其中最為重要的部分為行駛控制器,行駛控制器是一個(gè)典型的PID反饋控制器?,F(xiàn)要求使用命令行方式對(duì)行駛控制系統(tǒng)中的行駛控制器中比例調(diào)節(jié)的性能進(jìn)行定性的分析。已知行駛控制器中PID控制器的I(積分)、D(微分)參數(shù)如下取值分別為I=0.01、D=1。P(比例)的取值由MATLAB腳本文件所決定(以分析不同P值下行駛控制器的性能)。為了對(duì)行駛控制器中比例調(diào)節(jié)的性能進(jìn)行定性的分析,需要對(duì)第5章的行駛控制系統(tǒng)模型做一些改變,如下所示:(1)將行駛控制器子系統(tǒng)中的比例增益的取值改為p。(2)在系統(tǒng)模型的最頂層加入一個(gè)Outport模塊輸出仿真結(jié)果。圖8.12所示為修改后的汽車(chē)行駛控制系統(tǒng)的系統(tǒng)模型框圖。圖8.12修改后的汽車(chē)行駛控制系統(tǒng)模型然后編寫(xiě)MATLAB腳本文件cruise_system_cmd.m對(duì)行駛控制系統(tǒng)在不同的比例調(diào)節(jié)器取值下進(jìn)行仿真,并繪制出不同取值下系統(tǒng)仿真結(jié)果以對(duì)比例調(diào)節(jié)性能進(jìn)行分析。其要求如下:(1)編寫(xiě)一個(gè)for循環(huán)改變p的值,取值范圍為0到25,間隔為5。(2)在同一幅圖中作出不同p值下系統(tǒng)的仿真結(jié)果以對(duì)比例調(diào)節(jié)性能進(jìn)行分析。編寫(xiě)好的cruise_system_cmd.m腳本文件如下所示:forp=0:5:25 %設(shè)置不同的比例調(diào)節(jié)器取值[t,x,y]=sim('cruise_system_command'); %對(duì)系統(tǒng)進(jìn)行仿真subplot(3,2,p/5+1)%繪制在此取值下系統(tǒng)仿真結(jié)果,其plot(t,y) %結(jié)果如圖8.13所示ylabel(['p=',num2str(p)])end從系統(tǒng)仿真的結(jié)果中可以明顯看出比例調(diào)節(jié)器取值對(duì)汽車(chē)行駛控制系統(tǒng)性能的影響:增加比例調(diào)節(jié)器的取值可以有效的改善行駛控制系統(tǒng)的動(dòng)態(tài)性能。這是因?yàn)?,?duì)于行駛控制系統(tǒng)而言,其速度變化越平穩(wěn)越好(但并非變化緩慢)。從圖中可以看出,對(duì)于取值較大的比例調(diào)節(jié)器,汽車(chē)速度的過(guò)渡時(shí)間較小,而且變化平穩(wěn)(仿真結(jié)果曲線無(wú)振蕩,光滑)。圖8.13不同比例調(diào)節(jié)器取值下的系統(tǒng)響應(yīng)

8.5其它內(nèi)容

8.5.1系統(tǒng)狀態(tài)的確定當(dāng)使用命令行方式進(jìn)行動(dòng)態(tài)系統(tǒng)仿真時(shí),經(jīng)常需要對(duì)系統(tǒng)中的狀態(tài)變量進(jìn)行分析。當(dāng)動(dòng)態(tài)系統(tǒng)的系統(tǒng)模型中存在多個(gè)狀態(tài)變量時(shí),對(duì)這些狀態(tài)變量進(jìn)行分析(尤其是對(duì)輸出的多個(gè)狀態(tài)變量中的某一個(gè)狀態(tài)進(jìn)行單獨(dú)分析),需要清楚地知道狀態(tài)變量矩陣中各個(gè)狀態(tài)變量的順序。這時(shí),用戶可以使用下面的命令獲得系統(tǒng)模型中狀態(tài)輸出的順序。>>[sizes,x0,xord]=modelname例如,對(duì)于蹦極跳系統(tǒng),如果需要對(duì)蹦極者在某個(gè)時(shí)刻的位置position與速度velocity進(jìn)行分析,首先需要設(shè)置Simulink的仿真參數(shù)設(shè)置對(duì)話框中WorkspaceI/O選項(xiàng)卡以輸出系統(tǒng)中的狀態(tài)變量,如圖8.14所示。

圖8.14設(shè)置WorkspaceI/O選項(xiàng)卡以輸出系統(tǒng)狀態(tài)從中可以知道蹦極跳系統(tǒng)的諸多信息,如系統(tǒng)的輸入輸出變量的數(shù)目(外部輸入數(shù)目為0、輸出1個(gè)變量)、系統(tǒng)中產(chǎn)生狀態(tài)變量的模塊及其輸出順序(第一個(gè)狀態(tài)為積分塊position的輸出,即蹦極者的位置;第二個(gè)狀態(tài)為積分塊velocity的輸出,即蹦極者的速度)、各狀態(tài)變量的初始取值(積分塊position的初始取值為–30,積分塊velocity的初始取值為0)等等信息。此時(shí)使用MATLAB的ArrayEditor觀測(cè)輸出變量xout,其中第一列與第二列分別為蹦極者的位置與速度,如圖8.15所示。圖8.15蹦極跳者位置與速度8.5.2系統(tǒng)平衡點(diǎn)的確定在大多數(shù)的系統(tǒng)設(shè)計(jì)中,設(shè)計(jì)者都需要對(duì)所設(shè)計(jì)的系統(tǒng)進(jìn)行穩(wěn)定性分析,因?yàn)榻^大多數(shù)的系統(tǒng)在運(yùn)行之中,都需要按照某種方式收斂到指定的平衡點(diǎn)處。這里所謂的平衡點(diǎn)一般指的是系統(tǒng)的穩(wěn)定工作點(diǎn),此時(shí)系統(tǒng)中所有的狀態(tài)變量的導(dǎo)數(shù)均為0,系統(tǒng)處于穩(wěn)定的工作狀態(tài)。本書(shū)稱(chēng)處于平衡點(diǎn)狀態(tài)時(shí)的系統(tǒng)為靜止系統(tǒng)。在系統(tǒng)設(shè)計(jì)中,最主要的設(shè)計(jì)目的之一便是使系統(tǒng)能夠滿足系統(tǒng)穩(wěn)定的要求并在指定的平衡點(diǎn)處正常工作。在使用Simulink進(jìn)行動(dòng)態(tài)系統(tǒng)設(shè)計(jì)、仿真與分析時(shí),可以使用命令trim對(duì)系統(tǒng)的穩(wěn)定性與平衡點(diǎn)進(jìn)行分析。下面簡(jiǎn)單介紹一下trim的使用與功能。1.使用語(yǔ)法[x,u,y,dx]=trim('sys')[x,u,y,dx]=trim('sys',x0,u0,y0)[x,u,y,dx]=trim('sys',x0,u0,y0,ix,iu,iy)[x,u,y,dx]=trim('sys',x0,u0,y0,ix,iu,iy,dx0,idx)[x,u,y,dx]=trim('sys',x0,u0,y0,ix,iu,iy,dx0,idx,options)[x,u,y,dx]=trim('sys',x0,u0,y0,ix,iu,iy,dx0,idx,options,t)[x,u,y,dx,options]=trim('sys',...)2.功能描述根據(jù)系統(tǒng)的輸入、初始狀態(tài)(也可以說(shuō)是初始的工作點(diǎn)),按照一定的方法求取系統(tǒng)中距離此工作點(diǎn)最近的平衡點(diǎn),以及在達(dá)到平衡點(diǎn)時(shí)的系統(tǒng)輸入與輸出。如果系統(tǒng)中不存在平衡點(diǎn),則trim命令會(huì)返回系統(tǒng)狀態(tài)變量最接近0的工作點(diǎn)。[x,u,y]=trim('sys'):求取距離給定初始狀態(tài)x0最近的系統(tǒng)平衡點(diǎn)。[x,u,y]=trim('sys',x0,u0,y0):求取距離給定初始狀態(tài)x0、初始輸入u0與初始輸出y0最近的平衡點(diǎn)。[x,u,y,dx]=trim('sys',x0,u0,y0,ix,iu,iy):求取距離給定初始值向量中某一初始值距離最近[x,u,y,dx]=trim('sys',x0,u0,y0,ix,iu,iy,dx0,idx):求取非平衡點(diǎn),此平衡點(diǎn)處的系統(tǒng)狀態(tài)為指定值。其中dx0為指定狀態(tài)值向量,idx為相應(yīng)的序號(hào)。至于trim命令中的options選項(xiàng),其功能是用來(lái)優(yōu)化平衡點(diǎn)的求取,這里不再贅述。需要使用此功能的用戶可以參考Simulink中trim命令的聯(lián)機(jī)幫助。3.注意事項(xiàng)在使用trim命令求取系統(tǒng)的平衡點(diǎn)時(shí),所求取的平衡點(diǎn)為局部最優(yōu)平衡點(diǎn),而非全局最優(yōu)平衡點(diǎn),因此如果需要求取全局最優(yōu)平衡點(diǎn),需要使用多個(gè)初始狀態(tài)進(jìn)行搜索。這是因?yàn)閷?duì)于很多系統(tǒng)而言,系統(tǒng)中平衡點(diǎn)的數(shù)目往往不止一個(gè)。4.應(yīng)用舉例對(duì)于圖8.16所示的系統(tǒng),試求取其在初始狀態(tài)x0=[1;1]以及初始輸入u0=[1;1]下的平衡點(diǎn)。圖8.16由狀態(tài)空間描述的線性系統(tǒng)模型框圖其實(shí)只需要在MATLAB的命令窗口中鍵入如下的命令便可以求取系統(tǒng)在此初始狀態(tài)與初始輸入下的平衡點(diǎn):>>x0=[1;1];>>u0=[1;1];>>[x,u,y]=trim('trim_point',x0,u0);則在MATLAB命令窗口中顯示如下結(jié)果:x= %系統(tǒng)所處平衡點(diǎn)處的狀態(tài)變量值1.0e-012*0.17160.0840u= %系統(tǒng)在平衡點(diǎn)處的輸入值0.33330.0000y= %系統(tǒng)在平衡點(diǎn)處的輸出值-1.00000.33338.5.3非線性系統(tǒng)的線性化處理迄今為止,線性系統(tǒng)的設(shè)計(jì)與分析技術(shù)已經(jīng)非常完善了。但在實(shí)際的系統(tǒng)中,很少有真正的線性系統(tǒng),大部分的系統(tǒng)都是非線性系統(tǒng),然而對(duì)非線性系統(tǒng)的設(shè)計(jì)與分析還處于發(fā)展的初期,其設(shè)計(jì)與分析還主要依賴(lài)于設(shè)計(jì)者的設(shè)計(jì)經(jīng)驗(yàn)。1.使用語(yǔ)法[A,B,C,D]=linmod('sys',x,u)[num,den]=linmod('sys',x,u)sys_struc=linmod('sys',x,u)[Ad,Bd,Cd,Dd]=dlinmod('sys',Ts,x,u)[numd,dend]=dlinmod('sys',Ts,x,u)2.功能描述[A,B,C,D]=linmod('sys',x,u):在指定的系統(tǒng)狀態(tài)x與系統(tǒng)輸入u下對(duì)系統(tǒng)sys進(jìn)行線性化處理,x與u的缺省值為0。A、B、C與D為線性化后的系統(tǒng)狀態(tài)空間描述矩陣。[num,den]=linmod('sys',x,u):num與den為線性化后的系統(tǒng)傳遞函數(shù)描述。sys_struc=linmod('sys',x,u):返回線性化后的系統(tǒng)結(jié)構(gòu)體描述,其中包括系統(tǒng)狀態(tài)名稱(chēng)、輸入與輸出名稱(chēng)以及操作點(diǎn)的信息。[Ad,Bd,Cd,Dd]=dlinmod('sys',Ts,x,u):可以對(duì)非線性、多速率混合系統(tǒng)(包括離散系統(tǒng)與連續(xù)系統(tǒng))進(jìn)行線性化處理。其中Ts為系統(tǒng)的采樣時(shí)間,Ts=0表示將離散系統(tǒng)線性化為連續(xù)系統(tǒng)。返回線性化后系統(tǒng)的狀態(tài)控制描述。[numd,dend]=dlinmod('sys',Ts,x,u):返回線性化后系統(tǒng)的傳遞函數(shù)描述。3.應(yīng)用舉例這里仍以蹦極跳系統(tǒng)為例說(shuō)明非線性系統(tǒng)的線性化處理,從蹦極跳系統(tǒng)的系統(tǒng)動(dòng)力學(xué)方程可知,蹦極跳系統(tǒng)為一非線性系統(tǒng)。下面對(duì)其進(jìn)行線性化處理(其中系統(tǒng)模型中參數(shù)符合安全要求,即彈性常數(shù)為27),操作如下所示:>>[A,B,C,D]=linmod('bungee_jumping_command')%返回線性化后系統(tǒng)的狀態(tài)空間描述A=01.00000-0.0143B=Emptymatrix:2-by-0C=-1.00000D=Emptymatrix:1-by-0%返回線性化后系統(tǒng)的結(jié)構(gòu)體描述sys_struction=a:[2x2double]b:[2x0double]c:[-1.00000]d:[1x0double]StateName:{2x1c

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論