如何用simulink查看滑模面的相轨迹?

img


如何得到像这样的图?
能直接通过simulink里的模块直接观测到吗?还是需要写代码呢?

根据以上参考资料,可以通过以下步骤在Simulink中绘制滑模面的相轨迹:

  1. 在Simulink中设计模型,在模型中添加Scope或XYGraph模块,将需要绘制的变量连接到该模块即可实现绘图。例如使用Scope模块可以直接在Simulink中查看滑模面的相轨迹,并可以对绘图进行设置。

  2. 可以使用To Workspace模块将输出数据写入工作区,然后再使用MATLAB的绘图命令进行绘制。具体步骤为:将需要导出的数据添加至To Workspace模块;设置To Workspace模块的名称并配置好模式,一般选择array;运行仿真程序;查看MATLAB工作区,out中即为导出的数据;使用plot或其他绘图命令进行绘制。

代码示例:

% 将Scope模块输出的数据导出到MATLAB工作区,再使用plot绘图
sim('model') % 运行模型
data = simout.Data; % 获取Scope模块输出的数据
plot(data); % 绘制相轨迹

% 将数据返回到MATLAB工作区,并用MATLAB的绘图命令绘制曲线
sim('model')
out = simout.Data;
plot(out);

注意:具体绘图的方法和细节可以根据实际需求进行调整和更改。

以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:

可以使用Simulink自带的Scope模块来查看滑模面的相轨迹。具体步骤如下:

  1. 在Simulink中搭建模型,包括控制器和被控对象等。

  2. 在控制器模块中添加Scope模块,Scope模块可以在Simulink库中找到。

  3. 在Scope模块的参数设置中,将“Number of input ports”设置为2,表示输入两个信号,一个是控制器输出,一个是被控对象输出。

  4. 在Scope模块的“Display”选项卡中,可以选择“Phase portrait”来查看相轨迹。

  5. 运行模型,可以看到Scope模块中显示的相轨迹。

以下是示例代码,其中包括一个简单的控制器和被控对象模块,以及一个Scope模块:

% 控制器模块
function u = sliding_controller(x)
    % 控制器参数
    k = 1;
    alpha = 1;
    
    % 计算滑模面和控制量
    s = x(2) - x(1);
    if s > alpha
        u = -k;
    elseif s < -alpha
        u = k;
    else
        u = -k/alpha * s;
    end
end

% 被控对象模块
function dx = plant_model(t, x, u)
    % 被控对象参数
    m = 1;
    b = 1;
    k = 1;
    
    % 计算状态方程
    dx = zeros(2,1);
    dx(1) = x(2);
    dx(2) = -b/m * x(2) - k/m * x(1) + 1/m * u;
end

在Simulink中搭建模型,包括控制器和被控对象等模块,以及一个Scope模块。在Scope模块的参数设置中,将“Number of input ports”设置为2,并在“Display”选项卡中选择“Phase portrait”。将控制器和被控对象的输出分别连接到Scope模块的两个输入端口。运行模型,可以看到Scope模块中显示的相轨迹。