主要内容

本页采用了机器翻译。点击此处可查看英文原文。

后处理的实时信号流式传输至仿真数据检查器

本示例演示了如何使用 Simulink® Real-Time™ 信号数据日志和“仿真数据检查器”。在模型执行过程中会记录信号。运行结束时,仿真数据检查器接口会显示该信号。本示例演示了如何使用 MATLAB® 函数从“仿真数据检查器”接口获取信号,以便进行后处理。

创建目标对象并连接

为默认目标计算机创建目标对象,并连接到目标计算机。在命令行窗口中,输入:

tg = slrealtime;
connect(tg);

打开、编译和下载模型

打开模型 slrt_suspn_3dof。该模型基于不同路面轮廓下路面与悬架之间的交互,对车辆动力学进行仿真。该模型描述了车辆在三个自由度下的动力学行为:垂直位移、横滚和俯仰。Signal Editor 模块将左右轮胎测得的路面横断面数据分别存储为不同的测试组。“路 - 悬架交互”子系统根据路况数据和车辆当前状态,计算作用于车辆四个轮胎位置的悬架力。“车身动力学”子系统利用这些力以及由此产生的俯仰力和横滚力矩,来计算车辆在三个自由度中的运动情况。

打开模型。

model = 'slrt_suspn_3dof';
open_system(model);
modelSTF = getSTFName(tg);
set_param(model,"SystemTargetFile",modelSTF);
set_param(model,'RTWVerbose','off');

编译模型:

evalc('slbuild(model)');

关闭当前打开的模型。

bdclose(model);

运行模型以计算车辆的垂直位移

使用 Target 对象 tg,加载实时应用程序,修改应用程序参数,并启动应用程序。

load(tg,model);
setparam(tg,'','Cf',125);
start(tg);
while ~strcmp(tg.status,'stopped')
    pause(5);
end
stop(tg);
Warning: Unable to instrument 'SigGen': Unable to find signal 'SigGen' in
application. 
Warning: Unable to instrument 'XfrFnc': Unable to find signal 'XfrFnc' in
application. 

更新参数并重新计算车辆的垂直位移

使用 Target 对象 tg,加载实时应用程序,修改应用程序参数,并启动应用程序。

load(tg,model);
setparam(tg,'','Cf',2375);
start(tg);
while ~strcmp(tg.status,'stopped')
    pause(5);
end
stop(tg);
Warning: Unable to instrument 'SigGen': Unable to find signal 'SigGen' in
application. 
Warning: Unable to instrument 'XfrFnc': Unable to find signal 'XfrFnc' in
application. 

在仿真数据检查器中显示信号

要查看已绘制的信号数据,请打开“仿真数据检查器”。

Simulink.sdi.view

从仿真数据检查器中提取并绘制信号数据

您还可以从“仿真数据检查器”中提取信号数据,并使用以下命令对数据进行绘图(后处理)。

  • 获取所有运行

  • 获取运行信息

  • 获取信号

  • 获取信号对象

  • 绘制信号图

结果显示了在不同路面轮廓条件下,路面与悬架之间的交互对车辆动力学的影响。

runIds = Simulink.sdi.getAllRunIDs();

for i = 1:length(runIds)
    run = Simulink.sdi.getRun(runIds(i));
    signalID = run.getSignalIDsByName('vertical_disp');
    if ~isempty(signalID)
        signalObj = Simulink.sdi.getSignal(signalID);
        signalArray(:,i) = signalObj.Values(:,1).Data;
        timeValues = signalObj.Values(:,1).Time;
        plot(timeValues,signalArray);
        drawnow;
    end
end

grid on;
title('Response of a 3-DoF Suspension Model');
xlabel('Time (s)'); ylabel('Vehicle vertical displacement (m)');

另请参阅

|

主题