控制系統(tǒng)計算機輔助設計_第1頁
已閱讀1頁,還剩50頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、2024年3月6日星期三,1,Matlab 2008b下載地址:ed2k://|file|[%E7%9F%A9%E9%98%B5%E5%AE%9E%E9%AA%8C%E5%AE%A4].Mathworks.Matlab.R2008b.DVD.ISO-TBE.iso|4306182144|A2EDE3392561D89CE8EA3C37CFE2429F|h=HREWLFRSPC6YM65XD52FMVORHGGEZHVL|/網頁:h

2、ttp://www.verycd.com/topics/430963/,2024年3月6日星期三,2,例3 考慮帶有一階延遲的多變量傳遞函數(shù)矩陣,用MATLAB命令進行階躍響應,>>c5eg3a,step響應是在兩路輸入單獨作用下分別得到的,表明Gij(s) (i?j)對輸入有很強的響應,說明系統(tǒng)有較強的耦合。為了對兩路信號分別設計控制器,希望減小這種耦合。為此考慮對系統(tǒng)進行補償。,2024年3月6日星期三,3,>&

3、gt; c5eg3b,例3 考慮帶有一階延遲的多變量傳遞函數(shù)矩陣,考慮補償矩陣Kp,并對G(s)*Kp進行單位階躍響應。由于對象中含有時滯,不能利用矩陣乘法,對時滯要用pade逼近,或者在simulink下仿真。,2024年3月6日星期三,4,考慮用simulink仿真,并與pade逼近的結果進行比較,1.建立模型,2.修改模型參數(shù),2.1兩個階躍信號起始時間改為0,終值時間分別為u1,u2,2.2 修改矩陣增益為 [0.1134,

4、 0.924; 0.3378, -0.318],2.3 修改傳遞函數(shù),2024年3月6日星期三,5,考慮用simulink仿真,并與pade逼近的結果進行比較,1.建立模型,2.修改模型參數(shù),2.4 將時滯分別改為 0.72, 0.30, 1.29.,3.用simulink模型仿真,2024年3月6日星期三,6,考慮用simulink仿真,并與pade逼近的結果進行比較,1.建立模型,2.修改模型參數(shù),3.用simul

5、ink模型仿真,>> c5eg3c,帶有Pade逼近的第一輸入通道輸出,帶有Pade逼近的第二輸入通道輸出,Simulink仿真的第一輸入通道輸出,Simulink仿真的第二輸入通道輸出,2024年3月6日星期三,7,例4 計算機控制系統(tǒng)仿真,考慮如圖所示的計算機控制系統(tǒng),其中控制器模型D(z)是離散模型,采樣周期為Ts,ZOH為零階保持器,而受控對象模型G(s)為連續(xù)模型:,對這樣的系統(tǒng)直接寫成微分方程的形式再進行仿真的方

6、法是行不通的,因為其中既有連續(xù)環(huán)節(jié),又有離散環(huán)節(jié)。所以用simulink仿真。,模型中參數(shù)a, T 需要用戶確定,,2024年3月6日星期三,8,Simulink仿真模型如下:,模型中參數(shù) a, T 需要用戶確定,而 z1, p1, K 需要由控制器模型計算。,stairs(x,y)畫出由向量 x, y 確定的階梯圖形,2024年3月6日星期三,9,仿真結果如下,T = 0.2s 時,T = 1s 時,2024年3月6日星期三,1

7、0,,對于該例,也可采用離散與連續(xù)傳遞函數(shù)轉換的方法,在給定采樣周期下獲得離散傳遞函數(shù)。,>> c5eg4b,Zero/pole/gain: 0.018187 (z+0.9934) (z-0.9802)-----------------------------------(z-0.9802) (z^2 - 1.801z + 0.8368) Sampling time: 0.2,2024年3月6日星期三

8、,11,,,例5 時變系統(tǒng)的仿真,考慮如圖所示控制系統(tǒng)模型,其中控制器參數(shù)Kp=200, Ki=10, 飽和非線性寬度為? =2,受控對象為時變模型,由以下微分方程給出,試分析該系統(tǒng)的階躍響應曲線。,設,,則可將系統(tǒng)寫成,2024年3月6日星期三,12,系統(tǒng)的 simulink 模型如下,注意:1. 函數(shù)模塊中自變量是用輸入信號u表示的,u是由時鐘模塊產生; 2. 生成時變部分模型與狀態(tài)變量用乘法器相成即可。,2

9、024年3月6日星期三,13,>>c5eg5a,2024年3月6日星期三,14,例6 多采樣速率系統(tǒng)的仿真,如圖所示雙環(huán)電機控制系統(tǒng),內環(huán)為電流環(huán),采樣周期為T1=0.001s,控制器模型為D1(z)=(0.0967z–0.0965)/(z–1), 控制器外環(huán)采樣周期為T2 = 0.01s,控制器模型為D2(z)=(5.2812z–5.2725)/(z–1)。,搭建simulink仿真模型,并分析階躍響應。,2024年3月6

10、日星期三,15,Simulingk模型為,>> [t,x,y] = sim(‘c5eg6’, 2);>> plot(t,y),2024年3月6日星期三,16,例7. 系統(tǒng)的脈沖響應分析,在simulink里并沒有提供單位脈沖信號模塊,所以可以用階躍模塊來近似,如令階躍初始值為1/a,階躍時間(即階躍寬度)為a,階躍終止時為0, 如圖。,,階躍初值,,階躍寬度,2024年3月6日星期三,17,例如將如圖所示系統(tǒng)用

11、近似單位脈沖作為輸入,觀察動態(tài)響應,2024年3月6日星期三,18,,,指定輸入向量: [-3,-2,-1, 2,3,4 ],分段線性的靜態(tài)非線性環(huán)節(jié),指定輸出向量: [-1,-1,0,0,1,1],-3 -2 -1 0 1 2 3 4,1 0–1,2024年3月6日星期三,19,斜坡輸入響應,分段線性函數(shù)響應,2024年3月6日星期三,20,分

12、解,例8. 用simulink搭建如圖所示多值非線性環(huán)節(jié),當u增加時,取y1(u);當u減小時,取y2(u)。Simulink模型如圖。,修改模塊參數(shù),2024年3月6日星期三,21,例8. 用simulink搭建如圖所示多值非線性環(huán)節(jié),分解,連接模型,記憶模塊,保存上一步的值uk–1 .初值為0,將第1端口輸入值 ( 當前值uk )與第2端口輸入值 ( 上一步的值 uk–1) 比較, uk ? uk–1時輸出1,否則為0。,當?shù)?

13、輸入為1時(大于設定的閾值0.5),模塊輸出取第1輸入,當?shù)?輸入為0時(小于設定的閾值0.5) ,模塊輸出去第3輸入。,2024年3月6日星期三,22,例8. 用simulink搭建如圖所示多值非線性環(huán)節(jié),對正弦輸入u(t)= asin t的響應,>>a=2; [t, x1, y1]=sim('c5eg8', 10);>>a=4; [t, x2, y2]=sim('c5eg8'

14、, 10);>>a=8; [t, x3, y3]=sim('c5eg8', 10);>>plot(t, [y1, y2, y3]),2024年3月6日星期三,23,例9. 類似可以建立如下多值非線性,x1=[-3,-2,-1,2,3,4], y1=[-1,-1,0,0,1,1]x2=[-3,-2,-1,1,2,3], y2=[-1,-1,0,0,1,1],對正弦輸入u(t)= asin t的

15、響應,>>a=2; [t, x1, y1]=sim('c5eg8', 10);>>a=4; [t, x2, y2]=sim('c5eg8', 10);>>a=8; [t, x3, y3]=sim('c5eg8', 10);>>plot(t, [y1, y2, y3]),2024年3月6日星期三,24,非線性系統(tǒng)極限環(huán)的仿真研究,例10.

16、 考查如圖所示的典型非線性模型,其中非線性環(huán)節(jié)為例8中的回環(huán)非線性。,用simulink搭建仿真模型如圖。積分器模塊的初值設置為1,就可獲得系統(tǒng)的自激振蕩。,2024年3月6日星期三,25,>> opt=simset('RelTol',1e-8);>> [t,x,y]=sim('c5eg10',40,opt);>> subplot(121),plot(t,y)&g

17、t;> subplot(122),plot(y(:,1),y(:,2)),2024年3月6日星期三,26,十二. 編寫M語言S-函數(shù),,S-函數(shù) S-函數(shù)是Simulink模塊的計算機語言描述,它可以用MATLAB、C、C++、Ada或Fortran語言編寫。MATLAB 語言的 S-函數(shù)可編譯為M-文件。,S-函數(shù)使用特定的調用語法與Simulink中的方程求解器相互作用,接收求解器中的信息,并對求解器的指令

18、作出響應。,S-函數(shù)的格式非常通用,可用在連續(xù)、離散、以及混雜系統(tǒng)中。 用戶可以用S-函數(shù)實現(xiàn)自己的算法,并可形成Simulink模塊。,,在模型中利用S-函數(shù) 1).首先將 S-函數(shù)模塊從Simulink /User-Defined Functions模型庫中拖拽到模型窗口;,2).打開模型對話框, 在“S-Function name:” 欄內填入S-函數(shù)名稱,在“S-Function parameters:”欄

19、內填入S-函數(shù)的參數(shù)。,2024年3月6日星期三,27,function [sys,x0,str,ts]=mysfun(t,x,flag, p1,p1)% mysfun M-file% switch (flag)...,S-函數(shù)名稱,填入對話框S-function name欄,p1, p2: S-函數(shù)參數(shù),在S-function parameters欄中賦值,,,,,輸入S-函數(shù)名,允許用戶向S-函數(shù)傳遞參數(shù), 用戶必須

20、知道參數(shù)的順序、類型, 它們可以是常數(shù)或變量, 不同參數(shù)值之間用逗號隔開,2024年3月6日星期三,28,,S-函數(shù)的工作方式Simulnk模塊的數(shù)學含義,其中,x=xc+ xd , Ts為離散狀態(tài)的采樣時間。,仿真過程初始化階段: Simulink將庫模塊結合到模型中, 傳遞信號寬度, 確定數(shù)據(jù)類型, 采樣時間, 計算模塊參數(shù), 確定模塊執(zhí)行順序并分配內存。,,仿真循環(huán)階段: 每通過一個仿真

21、循環(huán)稱為一個仿真步, 在每一仿真步內, Simulink 按照初始化確定的順序執(zhí)行模型的每一模塊, 對于每一模塊, Simulink 調用相應函數(shù)計算狀態(tài), 導數(shù), 并計算當前采樣時間的輸出直到仿真結束。,2024年3月6日星期三,29,,S-函數(shù)回調方法 S-函數(shù)由一組S-函數(shù)回調方法組成, 這些方法在每個仿真階段執(zhí)行不同任務, 這些任務包括: 初始化 --初始化SimStruct, 這是一個包含S-

22、 函數(shù)信息的仿真結構; --設置輸入和輸出端口的個數(shù)和維 數(shù); --設置模塊采樣時間; --分配空間和size數(shù)組。 計算下一個采樣時間點(適于變采 樣時間模塊)。 以最大時間步驟計算輸出。 以最大時間步更新離散狀態(tài)。 積分(適于連續(xù)狀態(tài))。,仿真步驟示意圖,2024年3月6日星期三,30,,M文件S-函數(shù)的實現(xiàn) M文件S-函數(shù)包含下列函數(shù):,[sys, x0,str,ts]=f(

23、x,t,u,flag,p1,p2,…),f: S-函數(shù)的名稱; x: S-函數(shù)對應模塊的狀態(tài)向量; t: 當前時間; u: 模塊輸入; flag: 標識要執(zhí)行的任務(子函數(shù));p1,p2: 模塊參數(shù);,sys: 其含義根據(jù)標志flag 取值不 同返回不同子函數(shù)的返回值; x0: 初始化狀態(tài)向量; str: 空矩陣(留做將來使

24、用); ts: 采樣時間.,S-函數(shù)的內容,2024年3月6日星期三,31,,S-函數(shù)的一些概念,直接饋通:模塊的輸出(或變采樣時間的采樣時間)直接接收輸入端口值的控制。如 輸出(flag=3)是輸入 u 的函數(shù); 變采樣時間S-函數(shù)中的下一次采樣 時間點(flag=4)的確定要訪問輸入u.,動態(tài)設置數(shù)組: M文件 S-函數(shù)只有一個輸入端口, 可以接收一個向量信號, 但信號寬度是可以不同的, 是

25、可以動態(tài)指定的 (可以在sizes結構中指定相應的屬性值為–1 ), 也可以由輸入的維數(shù)確定輸入端口信號寬度, 連續(xù)和/或離散狀態(tài)的數(shù)目. 如果使用length(u)函,,數(shù)調用S-函數(shù), 則用戶可以確定模塊實際輸入的寬度, 如指定寬度為零, 則輸入端口被從S-函數(shù)模塊中刪除. 例如:圖中有兩個相同的S-函數(shù)模塊, 上面的模塊由一個帶有三個輸出分量的Mux向量模塊驅動, 下面的S-函數(shù)模塊由一個帶有標

26、量輸出的模塊驅動.,2024年3月6日星期三,32,,采樣時間和偏移量的設置 在M文件S-函數(shù)中, 指定采樣時間給出了如下選項.,? 離散采樣時間——適于用戶的S-函數(shù)模塊的行為帶有離散時間間隔, 用戶可以定義采樣時間以便控制simulink何時調用S-函數(shù)模塊, 也可以定義延遲每個采樣點的偏移量, 偏移量的數(shù)值不超過對應的采樣時間. 采樣點時刻由下式確定,? 連續(xù)采樣時間——適于連續(xù)狀態(tài)和/或非采樣過零的S-函數(shù), 輸

27、出以最小時間步改變.,? 連續(xù)但在最小時間步固定的采樣時間——適于在每一最大仿真步上執(zhí)行, 但在最小時間步上不改變數(shù)值的S-函數(shù).,,下一采樣時刻=(n*采樣間隔)+偏移量n 從0開始, 表示當前仿真步數(shù). 在每個采樣時刻Simulink調用S-函數(shù)的mdlOutput函數(shù)和mdlUpdate函數(shù)來計算輸出和更新狀態(tài).,? 變采樣時間——兩次采樣之間的時間間隔是可變的, 在每次仿真步開始時需計算下一仿真時刻.,? 繼承

28、采樣時間——用戶可以指定模塊的采樣時間為inherited(繼承性). 對于一個模塊, 它可以繼承下列模塊的采樣時間: --驅動模塊; --目標模塊; --系統(tǒng)中最快的采樣時間.相應地, 在M文件S-函數(shù)中設置采樣時間為–1.,2024年3月6日星期三,33,,采樣時間和偏移量的指定形式 ts = [ 采樣時間1, 偏移量1; 采樣時間2, 偏移量2;

29、 …… 采樣時間k, 偏移量k ]S-函數(shù)可以使用單速率系統(tǒng)和多速率系統(tǒng), 多速率系統(tǒng)有多個采樣時間.,,ts=[-1.0, Offset], 從驅動模塊繼承采 樣時間, 但在最小時間步內不隨 輸入改變.,有效的采樣時間對為:ts=[0.0, 0.0], 連續(xù)采樣時間;ts=[0.0, 1.0], 連續(xù)但在最小時間步 固定的采樣時間;ts=[-2.0,

30、 0.0], 變采樣時間;ts=[Period, Offset], 離散采樣時間;ts=[-1.0, 0.0], 從驅動模塊繼承采樣 時間;,對于多速率S-函數(shù), 每個任務以不同的速率執(zhí)行, 這時, ts應該以采樣時間上升的順序指定用戶 S-函數(shù)中使用的采樣速率. 如任務i 的采樣時間為: ?i , i= 1, 2, 且 ?1< ?2< 2 ?1ts = [

31、?1, ofset1; ?2, ofset2]則Simulink在下列時刻執(zhí)行S-函數(shù),[0, ofset1, ofset2, ofset1 +?1, ofset2 +?2 , ofset1 +2?1, ofset2 +2?2, ……]且在ofset1 +k ?1時執(zhí)行任務1, ofset2 +k ?2時執(zhí)行任務2.,2024年3月6日星期三,34,,M文件S-函數(shù)模板 為使Simulink識別M文件S-函數(shù),

32、 用戶必須提供S-函數(shù)的某些特定信息, 在初始化階段(flag=0), S-函數(shù)調用子函數(shù)mdlInitializeSizes,對一個sizes結構變量初始化, sizes 結構包含了S-函數(shù)的特定信息.,,Sizes的結構屬性,2024年3月6日星期三,35,S-函數(shù)模板,M-文件 S函數(shù)模板sfuntmpl.m 位于 matlabroot/toolbox/simulink/blocks,我們可以通過修改該模板來建立我們自己的S

33、-函數(shù),雙擊可以打開模板,2024年3月6日星期三,36,function [sys,x0,str,ts] = sfuntmpl(t,x,u,flag)% The following outlines the general structure of an S-function.switch flag,case 0, [sys,x0,str,ts]=mdlInitializeSizes;

34、 % Initialization case 1, sys=mdlDerivatives(t,x,u); % Derivativescase 2, sys=mdlUpdate(t,x,u); % Update case 3, sys

35、=mdlOutputs(t,x,u); % Outputscase 4, sys=mdlGetTimeOfNextVarHit(t,x,u); % Get Time Of Next VarHitcase 9, sys=mdlTerminate(t,x,u);

36、 % Terminateotherwise error(['Unhandled flag = ',num2str(flag)]); % Unexpected flagsEnd%==========================================================,2024年3月6日星期三,37,%========================

37、=================================% mdlInitializeSizes% Return the sizes, initial conditions, and sample times for the S-function.%=========================================================function [sys,x0,str,ts]=mdlI

38、nitializeSizessizes = simsizes;sizes.NumContStates = 0;sizes.NumDiscStates = 0;sizes.NumOutputs = 0;sizes.NumInputs = 0;sizes.DirFeedthrough = 1;sizes.NumSampleTimes = 1; % at least one sample

39、 time is neededsys = simsizes(sizes);x0 = []; % initialize the initial conditionsstr = []; % str is always an empty matrixts = [0 0];

40、 % initialize the array of sample times%=========================================================,2024年3月6日星期三,38,%==========================================================% mdlDerivative

41、s% Return the derivatives for the continuous states.%==========================================================%function sys=mdlDerivatives(t,x,u)sys = []; %%=======================================================

42、===% mdlUpdate% Handle discrete state updates, sample time hits, and major time step% requirements.%==========================================================%function sys=mdlUpdate(t,x,u)sys = []; %%===========

43、===============================================,2024年3月6日星期三,39,%==========================================================% mdlOutputs% Return the block outputs.%======================================================

44、====%function sys=mdlOutputs(t,x,u)sys = []; %==========================================================% mdlGetTimeOfNextVarHit% Return the time of the next hit for this block. Note t

45、hat the result is% absolute time. Note that this function is only used when you specify a% variable discrete-time sample time [-2 0] in the sample time array in% mdlInitializeSizes.%=================================

46、=========================%function sys=mdlGetTimeOfNextVarHit(t,x,u)sampleTime = 1; % Example, set the next hit to be one second later.sys = t + sampleTime;%===========================================

47、===============,2024年3月6日星期三,40,%%=========================================================% mdlTerminate% Perform any end of simulation tasks.%=========================================================%function sys

48、=mdlTerminate(t,x,u)sys = [];% end mdlTerminate,2024年3月6日星期三,41,靜態(tài)系統(tǒng)S-函數(shù),例1 y = 2u,function [sys,x0,str,ts] = timestwo(t,x,u,flag)%TIMESTWO S-function whose output is % two times its input.switch flag, case 0

49、 [sys,x0,str,ts]=mdlInitializeSizes; case 3 sys=mdlOutputs(t,x,u); case { 1, 2, 4, 9 } sys=[]; otherwise error(['Unhandled flag = ',num2str(flag)]);end%===============================,functio

50、n [sys,x0,str,ts] = mdlInitializeSizes()sizes = simsizes;sizes.NumContStates = 0;sizes.NumDiscStates = 0;sizes.NumOutputs = -1; sizes.NumInputs = -1; sizes.DirFeedthrough = 1; sizes.NumSampl

51、eTimes = 1;sys = simsizes(sizes);str = [];x0 = [];ts = [-1 0]; % inherited sample time%===============================function sys = mdlOutputs(t,x,u)sys = u * 2;,timetwo.m S-函數(shù)代碼如下,2024年3月6日星期三,42,進行了封裝,輸出幅值

52、為1:2的正弦波,輸出為幅值為1:3, 周期為1, 寬度為0.5s的矩形波,2024年3月6日星期三,43,例2 y = ku , k為用戶指定的靜態(tài)增益,sfun_vargain.m S-函數(shù)代碼如下,function [sys,x0,str,ts] = … sfun_vargain(t,x,u,flag,gain)switch flag, case 0 [sys,x0,st

53、r,ts]=mdlInitializeSizes; case 3 sys=mdlOutputs(t,x,u,gain); case { 1, 2, 4, 9 } sys=[]; otherwise error(['Unhandled flag = ',num2str(flag)]);end%===============================function [sys,

54、x0,str,ts] = mdlInitializeSizes()sizes = simsizes;,sizes.NumContStates = 0;sizes.NumDiscStates = 0;sizes.NumOutputs= -1; % 動態(tài)指定sizes.NumInputs= -1; % 動態(tài)指定sizes.DirFeedthrough = 1; % 有直接饋通si

55、zes.NumSampleTimes = 1;sys = simsizes(sizes);str = [];x0 = [];ts = [-1 0]; % 繼承采樣時間%===============================function sys = mdlOutputs(t,x,u,gain)sys = u * gain;,2024年3月6日星期三,44,打

56、開對話框, 選擇增益,填入所選增益, 如4,仿真,2024年3月6日星期三,45,連續(xù)系統(tǒng)S-函數(shù),例3. 建立一個積分器, 它的初值作為用戶輸入. 狀態(tài)方程為,sfun_int.m S-函數(shù)代碼如下,function [sys,x0,str,ts] = … sfun_int(t,x,u,flag,initial_state)switch flag, case 0, [sys,x0

57、,str,ts]=… mdlInitializeSizes(initial_state); case 1, sys=mdlDerivatives(t,x,u); case 3, sys=mdlOutputs(t,x,u); case {2,4,9} sys=[];otherwise error(['Unhandled flag = ',n

58、um2str(flag)]);end,%==============================function [sys,x0,str,ts]=… mdlInitializeSizes(initial_state)sizes = simsizes;sizes.NumContStates = 1;sizes.NumDiscStates = 0;sizes.NumOutputs

59、 = 1;sizes.NumInputs = 1;sizes.DirFeedthrough = 0;sizes.NumSampleTimes = 1; sys = simsizes(sizes);x0 = [initial_state];str = [];ts = [0 0];%==============================function sys=mdlDeriva

60、tives(t,x,u)sys = [u];%==============================function sys=mdlOutputs(t,x,u)sys = x;,2024年3月6日星期三,46,打開對話框, 選擇初始狀態(tài),填入所選初始狀態(tài), 如5,仿真,2024年3月6日星期三,47,,,例4. 蹦極跳系統(tǒng)的微分方程可寫為:,k: 彈性系數(shù) m: 物體質量 g: 重

61、力加速度a1, a2: 空氣阻尼系數(shù),令 , h為距離地面的距離, 則系統(tǒng)方程可寫為:,構造S-函數(shù), 取k =5; a1=1; a2=1; g=10. 輸入長度(x1的初始值), 質量m和距離地面的距離h.,2024年3月6日星期三,48,sfun_bungee.m S-函數(shù)代碼如下,function [sys,x0,str,ts] = sfun_bungee(t,x,u,flag,

62、len,weight,dist_ground)% bungee jumping sfunction:k=5;a1=1;a2=1;g=10;% length,weight,distance from ground are input parametersk=5;a1=1;a2=1;g=10;switch flag, case 0, [sys,x0,str,ts]=mdlInitializeSizes(len); c

63、ase 1, sys=mdlDerivatives(t,x,u,weight,k,a1,a2,g); case 2, sys=mdlUpdate(t,x,u); case 3, sys=mdlOutputs(t,x,u,dist_ground); case 4, sys=mdlGetTimeOfNextVarHit(t,x,u); case 9, sys=mdlTerminate(

64、t,x,u); otherwise error(['Unhandled flag = ',num2str(flag)]);end,,輸入參數(shù),輸入參數(shù),輸入參數(shù),,,,,設定參數(shù),設定參數(shù),,輸入參數(shù),2024年3月6日星期三,49,%==================================================function [sys,x0,str,ts]=mdlInitiali

65、zeSizes(len)sizes = simsizes;sizes.NumContStates = 2;sizes.NumDiscStates = 0;sizes.NumOutputs = 1;sizes.NumInputs = 0;sizes.DirFeedthrough = 0;sizes.NumSampleTimes = 1; % at least one sample time is

66、 neededsys = simsizes(sizes);x0 = [-len;0];str = [];ts = [0 0];%==================================================,,,2024年3月6日星期三,50,%===============================================function sys=mdlDerivatives(t

67、,x,u,weight,k,a1,a2,g)if x(1)<0 b=0;else b=-k*x(1);endx1dot=x(2);x2dot=1/weight*(weight*g+b-a1*x(2)-a2*abs(x(2))*x(2));sys = [x1dot;x2dot];% end mdlDerivatives%=========================================

68、======function sys=mdlUpdate(t,x,u)sys = [];% end mdlUpdate%===============================================function sys=mdlOutputs(t,x,u,dist_ground)sys = dist_ground-x(1);% end mdlOutputs%=======================

69、========================,,,,2024年3月6日星期三,51,%====================================================function sys=mdlGetTimeOfNextVarHit(t,x,u)sampleTime = 1; % Example, set the next hit to be one second later.sys = t

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論