Quantcast
Channel: Mein MATLAB Forum - goMatlab.de
Viewing all articles
Browse latest Browse all 28441

Probleme mit s-function

$
0
0
Hi, muss eine PWM mit einer s-function erstellen und komme nicht weiter. Im Prinzip muss ich folgendes machen. Wenn die Eingangsgröße (u) im Intervall ]0,1function [sys,x0,str,ts] = pulsweitenmod(t,x,u,flag,pwm) switch flag, case 0,[sys,x0,str,ts]=mdlInitializeSizes; case 1, sys=mdlDerivatives(t,x,u); case 2, sys=mdlUpdate(t,x,u); case 3, sys=mdlOutputs(t,x,u,pwm,ts); case 4, sys=mdlGetTimeOfNextVarHit(t,x,u); case 9, sys=mdlTerminate(t,x,u); otherwise error(['Unhandled flag = ',num2str(flag)]); end % end sfuntmpl function [sys,x0,str,ts]=mdlInitializeSizes sizes = simsizes; sizes.NumContStates = 0; sizes.NumDiscStates = 0; sizes.NumOutputs = 1; sizes.NumInputs = 1; sizes.DirFeedthrough = 1; sizes.NumSampleTimes = 1; % at least one sample time is needed sys = simsizes(sizes); x0 = []; str = []; ts = [0 0]; % end mdlInitializeSizes function sys=mdlDerivatives(t,x,u) sys = []; % end mdlDerivatives function sys=mdlUpdate(t,x,u) sys = []; % end mdlUpdate function sys=mdlOutputs(t,x,u,pwm,Ts) if((u < 1) && (u > 0)) pwm.d = 1/Ts; if(t > pwm.d*Ts) sys = [0]; else sys = [1]; end end if(u >= 1) sys = [1]; end if(u <= 0) sys = [0]; end % end mdlOutputs function sys=mdlGetTimeOfNextVarHit(t,x,u) sampleTime = 1; % Example, set the next hit to be one second later. sys = t + sampleTime; % end mdlGetTimeOfNextVarHit function sys=mdlTerminate(t,x,u) sys = []; % end mdlTerminate pwm ist eine Struktur mit nur einem Parameter d (pwm.d), den ich bei der Initialisierung auf 0 gesetzt habe. In Simulink hab ich ...

Viewing all articles
Browse latest Browse all 28441

Trending Articles