【问题标题】:Simulink From block accepting values from matlab codeSimulink From 块接受来自 matlab 代码的值
【发布时间】:2016-05-01 03:58:52
【问题描述】:

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

我正在尝试使用 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]);

这是剧情的结果:

我的问题:

我知道 t 包含时间值,而 pwm 包含 pwm 值,所以我想知道如何“以某种方式” 重定向这些来自 Matlab 代码的数据,通过 From Block 进入 IGBT,所以我可以将它们用作开关信号?

【问题讨论】:

    标签: matlab simulink pwm


    【解决方案1】:

    有多种方法可以做到这一点,但最简单的方法是使用 From Workspace 块直接替换 PWM Generator (2 Pulses) 块。

    运行您的 MATLAB 代码以定义 MATLAB 工作区中的变量,并且(假设您的 G1_1G2_1 信号相互取反)使用 [t(:) pwm(:) ~pwm(:)] 作为模块的 Data 参数。

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

    pwm = (m >= s);
    

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

    pwm = double(m >= s);
    

    【讨论】:

    • 使用 From Workspace 确实效果很好,非常感谢
    猜你喜欢
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 2019-04-16
    • 1970-01-01
    • 2010-09-25
    • 2013-10-02
    相关资源
    最近更新 更多