How to create variable system in S-Function using feedback data from simulink or workspace)
    조회 수: 4 (최근 30일)
  
       이전 댓글 표시
    
Hello
Here,continues steady-space system is defined in S-Function block in simulink:
if true
   function [sys,x0,str,ts] = mycsfunc(t,x,u,flag)
%      x' = Ax + Bu
%      y  = Cx + Du
%
% Generate a continuous linear system:
A=[-1   -10
    1    0];
B=[ 1   -20
    0   -2];
C=[ 9    2
    1   -5];
D=[-14   0
    1    3];
%
% Dispatch the flag.
%
switch flag,
{1,3,9}
...
..
.
% 
End of mycsfunc.
%==============================================================
% mdlInitializeSizes
% Return the sizes, initial conditions, and sample times for the 
% S-function.
%==============================================================
%
function [sys,x0,str,ts] = mdlInitializeSizes(A,B,C,D)
%
% Call simsizes for a sizes structure, fill it in and convert it 
% to a sizes array.
%
sizes = simsizes;
sizes.NumContStates  = 2;
sizes.NumDiscStates  = 0;
sizes.NumOutputs     = 2;
sizes.NumInputs      = 2;
sizes.DirFeedthrough = 1;     % Matrix D is nonempty. 
sizes.NumSampleTimes = 1;
sys = simsizes(sizes);
...
..
.
End of mdlOutputs.
end
In simulink I have a variable prameters that can effect my system parameters. K is a parameter in simulink or workspace that can change continuously.How can I define this parameter to my s-function to get K , P data from simulink or workspace to create variable system like below in S-Function:(How to create variable parameter dependent system in S-Function as below)
if true
A=[-1  -P
  1    0];
B=[ 1   -20
  0   -2];
C=[ 9    2
  1   -5];
D=[-K   0
  1   3];
end
Thanks
댓글 수: 0
채택된 답변
  Kaustubha Govind
    
      
 2014년 8월 27일
        You can simply add additional parameters to the main function as follows:
function [sys,x0,str,ts] = mycsfunc(t,x,u,flag,P,K)
and use these within the function and/or pass them onto to mdlInitializeSizes, mdlOutputs, etc.
On the S-function block, enter values for P and K (in that order) in the "S-function parameter" edit-box. These values can be constant numbers or mask/workspace variables, just like for other block parameters.
Also, note that you are using Level-1 S-functions which have been deprecated for several years and have a lot of limitations. I would recommend that you convert to Level-2 S-functions if possible.
댓글 수: 0
추가 답변 (0개)
참고 항목
카테고리
				Help Center 및 File Exchange에서 Event Functions에 대해 자세히 알아보기
			
	제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

