色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取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

    文章

    1040

    瀏覽量

    85466
  • 狀態機
    +關注

    關注

    2

    文章

    493

    瀏覽量

    28282
  • MRAC
    +關注

    關注

    0

    文章

    4

    瀏覽量

    7221
收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    模型自適應控制在永磁同步電機轉速中的仿真研究

    的可行性和有效性。 純分享帖,點擊下方附件免費獲取完整資料~~~ *附件:無模型自適應控制在永磁同步電機轉速中的仿真研究.pdf 【免責聲明】本文系網絡轉載,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請第一時
    發表于 06-25 13:01

    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 ?2365次閱讀

    使用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課件免費下載
    主站蜘蛛池模板: 美女网站免费看 | 果冻传媒在线观看高清完整免费 | 国产精品高清视频在线 | 秋霞电影网午夜免费鲁丝片 | 精品一区二区三区高清免费观看 | 性春院 | 色青青草原桃花久久综合 | 久久天天婷婷五月俺也去 | 在线自拍综合亚洲欧美 | 97人人添人人澡人人澡人人澡 | 中文字幕伊人香蕉在线 | 狂野猛交xxxx吃奶 | 亚洲精品在线免费 | 含羞草传媒在线观看 | 国产乱国产乱老熟300部视频 | 老板吻我下身好爽到高潮 | 精品久久免费观看 | 亚洲精品成A人在线观看 | 中文无码有码亚洲 欧美 | 日韩精品一区二区三区色欲AV | 精品亚洲大全 | 欧美精品AV无码一区二区 | 扒开女生尿口 | 四川少妇大战4黑人 | 天美传媒在线完整免费观看网站 | 国偷自产AV一区二区三区健身房 | 国产精品18久久久久久欧美 | 捏揉舔水插按摩师 | JIZZ19学生第一次| 我解开了岳的乳第一个女人 | 亚洲欧美日韩综合影院 | 国产精品JIZZ在线观看A片 | 久久精品一卡二卡三卡四卡视频版 | 国产69精品久久久久乱码韩国 | 忘忧草日本在线WWW日本 | 97人摸人人澡人人人超一碰 | 伊人青青操 | 青青精品国产自在线拍 | 丝袜足控免费网站xx91 | 国产精品野外AV久久久 | 久青草国产观看在线视频 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品