|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
我在做一个用SPWM控制的逆变器仿真,拓扑图很简单
但是老师要求我用S-function模块写函数来控制IGBT的关断和导通,被难住了. 想请教,请懂S函数算法的朋友给我个方案
我用S-function-Example里的timestwo那个模版为基础,程序如下:
function [sys,x0,str,ts] = timestwo(t,x,u,flag)
switch flag,
case 0
[sys,x0,str,ts]=mdlInitializeSizes; %mdlInitializeSizes是定义初始条件
case 3
sys=mdlOutputs(t,x,u); %mdlOutputs是S函数的计算输出
case { 1, 2, 4, 9 } %case1.2.4.9在此函数里不起作用
sys=[];
.
otherwise
error(['Unhandled flag = ',num2str(flag)]);
end
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;
sys = simsizes(sizes);
str = [];
x0 = [];
ts = [-1 0];
function sys = mdlOutputs(t,x,u) %这里就是写输出算法了,例子中sys = u * 2是指输出为uX2
sys = u * 2;
要得到SPWM波形,理论上是用正弦波和三角波或锯齿波相比较,通过某种算法,得到宽度不一的脉冲控制信号.我就想用一个正弦波和三角波做为输入信号,通过S函数算法,得到四个SPWM信号,控制四个IGBT的导通时间,拓扑图如下,请大家看看,
[local]1[/local]
想请教用懂S函数算法的朋友给我写一个算法程序,谢谢
我的QQ47894281,E-mail yaojing88@163.com |
|