在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

S-function詳解與模型參考自適應仿真案例

冬至子 ? 來源:控我所思VS制之以衡 ? 作者:控我所思 ? 2023-06-30 17:03 ? 次閱讀

1前言

S-Function是system-function系統函數的縮寫,是指采用非圖形化的方式描述的一個功能塊。S-Function提供給用戶自己編寫程序來滿足自己要求模型的接口

2 s-function總體架構

S-function包括主函數和6個子函數,子函數包括

1.mdlInitializeSizes(初始化)

2.mdlDerivatives(連續狀態微分)

3.mdlUpdate(離散狀態更新)

4.mdlOutputs(模塊輸出)

5.mdlGetTimeOfNextVarHit(計算下次采樣時刻)

6.mdlTerminate(仿真結束)。

2.1 s-function 執行過程

  1. 在仿真開始時,執行mdlInitializeSizes
  2. 若系統包含連續部分,則調用mdlDerivatives;若系統包含離散部分,則調用mdlUpdate
  3. 調用mdlOutputs,產生輸出
  4. 若滿足條件,則執行mdlGetTimeOfNextVarHit
  5. 循環執行1--3,直至仿真停止
  6. 執行mdlTerminate,仿真停止

2.2 s-function 輸入輸出參數與狀態變量

function [sys,x0,str,ts,simStateCompliance] = sfuntmpl(t,x,u,flag)

S-function是基于狀態空間表達式而設置的仿真模塊,需要了解這個仿真模塊的輸入輸出和內部的狀態變量。

輸入變量:

t :系統時間

x :系統狀態

u : 系統輸入,即在simulink models中連接至S-function的線上的數據。注意區分x和u

flag : 系統狀態,由系統自動生成,決定了系統應當執行哪個S-function子函數

除了這四個必須有的變量,還可以自行根據需要添加變量,供子函數調用

輸出變量:

sys : 系統本身,可以理解為下一時刻的系統;同時sys的前幾個數值(sys[1]等)是系統的輸出,即在simulink中S-function伸出線上的數據

x0 : 系統初始狀態

str : 狀態排序字符串,通常指定為[]。

ts : 可認為是采樣時間

(simStateCompliance 不用管)

3 子函數

3.1 mdlInitializeSizes函數

function [sys,x0,str,ts,simStateCompliance]=mdlInitializeSizes

% 不需要更改的內容
sizes = simsizes;

% 需要更改的內容:狀態、輸出、輸入的數量
sizes.NumContStates = 0; %連續狀態的數量
sizes.NumDiscStates = 0; %離散狀態的數量
sizes.NumOutputs = 0; %輸出的數量
sizes.NumInputs = 0; %輸入的數量
sizes.DirFeedthrough = 1; %輸出y和輸入u是否是直通(輸出的向量中是否直接含有輸入)
sizes.NumSampleTimes = 1; %采樣時間

sys = simsizes(sizes);

% 需要更改的內容:狀態變量的初始值
x0  = [];

% 不需要更改的內容
str = [];

% 按需要更改,ts的第一個數字表示采樣時間,第二個數字表示偏移量;連續系統不需要改
% [0 0]——表示默認采樣時間(默認為0.2秒采樣一次);
% [-1 0] ——表示根據連接模塊的采樣頻率進行采樣;
ts  = [0 0];

% 按需要更改
simStateCompliance = 'UnknownSimState';

1.jpg

3.3 mdlOutputs函數

function sys=mdlOutputs(t,x,u)

sys = [];

3.4 mdlGetTimeOfNextVarHit函數

function sys=mdlGetTimeOfNextVarHit(t,x,u)
% 計算下一個采樣點的絕對時間,只有當在mdlInitializeSizes中指定了變步長離散采樣時間時,才使用該程序
sampleTime = 1;    %  Example, set the next hit to be one second later.
sys = t + sampleTime;

3.5 mdlTerminate函數

function sys=mdlTerminate(t,x,u)
% 終止函數,可添加當Simulink終止時所需執行內容

sys = [];

4 舉例

4.1 二階模型

對于如下被控對象,其傳遞函數為:

1.jpg

圖片

仿真結果:曲線重合,三種模型表達方式相同

圖片

4.2 簡單自適應控制系統(MRAC)

4.2.1 系統模型與證明

1.jpg

圖片

s-function input

function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates  = 2;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 3;
sizes.NumInputs      = 0;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 0;
sys = simsizes(sizes);
x0  = [0.5,0];
str = [];
ts  = [];
function sys=mdlDerivatives(t,x,u)
r=sin(4*t);
nmn1=10;
nmn2=25;
sys(1)=x(2);
sys(2)=-nmn1*x(2)-nmn2*x(1)+nmn2*r;
function sys=mdlOutputs(t,x,u)
r=sin(4*t);
nmn1=10;
nmn2=25;
xm=x(1);
dxm=x(2);
ddxm=-nmn1*x(2)-nmn2*x(1)+nmn2*r;
sys(1)=xm;
sys(2)=dxm;
sys(3)=ddxm;

s-function controller

function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates  = 1;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 2;
sizes.NumInputs      = 6;
sizes.DirFeedthrough = 1;
sizes.NumSampleTimes = 0;
sys = simsizes(sizes);
x0  = [0];
str = [];
ts  = [];
function sys=mdlDerivatives(t,x,u)
xm=u(1);
dxm=u(2);
ddxm=u(3);
x1=u(4);
dx1=u(5);
e=x1-xm;
de=dx1-dxm;
nmn=6;
s=de+nmn*e;
v=ddxm-2*nmn*de-nmn^2*e;
gama=0.5;
sys(1)=-gama*v*s;
function sys=mdlOutputs(t,x,u)
xm=u(1);
dxm=u(2);
ddxm=u(3);
x1=u(4);
dx1=u(5);
e=x1-xm;
de=dx1-dxm;
nmn=6;
mp=x(1);
ut=mp*(ddxm-2*nmn*de-nmn^2*e);
sys(1)=mp;
sys(2)=ut;

s-function plant

function [sys,x0,str,ts]=mdlInitializeSizes
sizes = simsizes;
sizes.NumContStates  = 2;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 3;
sizes.NumInputs      = 2;
sizes.DirFeedthrough = 0;
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
x0  = [0.5,0];
str = [];
ts  = [0 0];
function sys=mdlDerivatives(t,x,u) 
m=2;
ut=u(2);
sys(1)=x(2);
sys(2)=1/m*ut;
function sys=mdlOutputs(t,x,u)
m=2;
sys(1)=x(1);
sys(2)=x(2);
sys(3)=m;

理想位置輸出與真實位置輸出

圖片

參數m估計值與真實值

圖片

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 仿真器
    +關注

    關注

    14

    文章

    1033

    瀏覽量

    84867
  • 狀態機
    +關注

    關注

    2

    文章

    493

    瀏覽量

    28047
  • MRAC
    +關注

    關注

    0

    文章

    4

    瀏覽量

    7205
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    s-function的概念

    s-function是一個動態系統的計算機語言描述,在MATLAB里,用戶可以選擇用m文件編寫,也可以用c或mex文件編寫,在這里只給大家介紹如何用m文件編寫s-function
    發表于 07-13 14:15

    建立m文件s-function

    輸出參數,最好不做修改。接下去的工作就是根據所編s-function要完成的任務,用相應的代碼去替代模板里各個子函數的代碼即可。Simulink在每個仿真階段都會對s-function進行調用,在調用
    發表于 07-13 14:16

    橫潤科技《MATLAB的S-Function編寫指導

    橫潤科技《MATLAB的S-Function編寫指導pdf格式100頁,介紹simulink中s函數的編寫。
    發表于 08-05 10:04

    搭建最基本的S-function模塊

    simulink中搭建模型,都是先搭simulink中有的東西,然后碰到simulink中沒有的才會去建S-function,那么在這個時候,你就很清楚你的S-function具體是干什么的,他應該有什么輸出,有
    發表于 12-24 12:22

    matlab原版 developing S-function

    matlab原版 developing S-function
    發表于 11-14 11:31

    simulink仿真問題:s_function

    我在仿真時,用一個FCN,就是z形式的傳遞函數,運行是可以的。但是當我用s-function,即離散化語言來表達這個傳遞函數, 替換原來的FCN,其他的都沒變,現象就出不來了。有大牛知道是怎么回事嘛???謝謝了
    發表于 08-17 15:52

    S-function的工作原理解析

    S-function函數S-function工作原理
    發表于 12-31 06:17

    什么是s-function

    S-function一、什么是s-function(1)非圖形化地實現一個動態系統(2)支持多種語言編寫(3)s-function是以現代控制理論的狀態方程為基礎的二、如何編寫一個自己
    發表于 08-30 08:10

    如何去實現S-Function與Simulink的數據交互呢

    什么是S-Function?如何使用S-Function函數呢?如何去實現S-Function與Simulink的數據交互呢?
    發表于 11-22 07:48

    基于MATLAB的時變系統自適應控制的仿真

    本文介紹了基于MATLAB 的仿真工具SIMULINK,對于線性時變系統的模型參考自適應控制的仿真研究,并給出了仿真結果。關鍵詞: MATL
    發表于 06-13 08:59 ?36次下載

    基于MATLAB S-Function的飛行器運動系統建模與

    本文講述了使用Matlab/S-Function 建模與仿真的一種方法。主要介紹如何對飛行器的運動學方程進行S 函數建模,并分析了S 函數各模塊的編寫及功能。分析表明對于復雜的運動系
    發表于 12-16 13:36 ?60次下載

    MATLAB的S-Function編寫指導

    S-Function(系統函數)為擴展Simulink®的性能提供了一個有力的工具。以下下節闡述了什么是S-Function,為什么可以使用S-Function,以及怎樣編寫自己的S-
    發表于 08-16 16:39 ?146次下載

    SIMULINK s-function的設計

    SIMULINK  s-function的設計Simulink為用戶提供了許多內置的基本庫模塊,通過這些模塊進行連接而構成系統的模型。對于那些經常使用的模塊進行組合并封裝可以構
    發表于 06-19 12:55 ?2337次閱讀

    系統辨識與自適應控制MATLAB仿真

    自適應控制MATLAB仿真
    發表于 11-29 15:59 ?0次下載

    使用Simulink進行S-Function建模的教程PPT課件免費下載

    本文檔的主要內容詳細介紹的是使用Simulink進行S-Function建模的教程PPT課件免費下載包括了:1 Simulink S函數仿真應用,2 M-file S-functi
    發表于 10-08 08:00 ?0次下載
    使用Simulink進行<b class='flag-5'>S-Function</b>建模的教程PPT課件免費下載
    主站蜘蛛池模板: 国产一二三区在线观看 | 免费看片免 | 大尺度视频网站久久久久久久久 | 天天操夜夜做 | 欧美成网 | 天堂中文字幕在线 | l欧美18一19sex性| 日韩欧美中文在线 | 中文字幕在线第一页 | 成人免费久久精品国产片久久影院 | 国产裸体美女视频全黄 | 黄色午夜剧场 | 日韩va亚洲va欧美va浪潮 | 555夜色555亚洲夜色 | 奇米第四狠狠777高清秒播 | 六月激情丁香 | 一级特黄特黄的大片免费 | 美女自熨出白浆视频在线播放 | 高清视频在线观看+免费 | 天堂bt资源www在线 | 亚洲一级毛片中文字幕 | 免费欧洲美女与动zooz | 亚洲最大成人在线 | 欧美伦理影院 | 三级在线观看免播放网站 | 成人伊人青草久久综合网 | 免费观看黄色在线视频 | 一区二区三区四区无限乱码在线观看 | yy6080亚洲半夜理论一级毛片 | 国产va在线观看 | 黑色丝袜美女被视频网站 | 婷婷丁香啪啪 | 男人的天堂久久精品激情 | 777欧美| 色久优优 | 亚洲伦理中文字幕一区 | 扒开末成年粉嫩的流白浆视频 | 日韩视频 中文字幕 视频一区 | 糖心vlog麻豆精东影业传媒 | 一级 黄 色 毛片 | 月夜免费观看完整视频 |