Simulink从块接受来自matlab代码

时间:2016-01-24 22:46:07

标签: matlab simulink pwm

我有以下Simulink模型:DC / AC半桥逆变器,它使用 PWM模块(在绿色框架内)生成到IGBT的开关信号,来自块(在红框内)使用Goto块接收来自PWM的信号,然后将其作为输出传递给IGBT。

Schema

我正在尝试使用Matlab代码构建自定义PWM:

clc;
close all;
clear all;
t=0:0.001:1;
s=sawtooth(2*pi*10*t+pi);
m=0.75*sin(2*pi*1*t);
n=length(s);
for i=1:n
    if (m(i)>=s(i))
        pwm(i)=1;
    elseif (m(i)<=s(i))
        pwm(i)=0;
    end
end
plot(t,pwm,'-g',t,m,'--r',t,s,'--b');
grid on;
ylabel('Amplitude');
xlabel('Time index');
title('PWM Wave');
axis([0 1 -1.5 1.5]);

以下是情节的结果:

enter image description here

我的问题:

我知道 t 包含时间值,而 pwm 包含pwm值,所以我想知道如何“某种程度上”重定向那些数据来自Matlab代码,通过From Block进入IGBT,我可以将它们用作切换信号吗?

1 个答案:

答案 0 :(得分:1)

有多种方法可以执行此操作,但最简单的方法是使用From Workspace块作为PWM Generator (2 Pulses)块的直接替代。

运行MATLAB代码以在MATLAB工作区中定义变量,并(假设您的G1_1G2_1信号相互抵消)使用[t(:) pwm(:) ~pwm(:)]作为块的数据参数

另请注意,您的代码中不需要循环:

pwm = (m >= s);

或者如果你需要它们是双打而不是逻辑

pwm = double(m >= s);