控制和更新输入端口对实时应用程序的激励
您可以使用Target.Stimulation对象和函数,将数据流传输到 Speedgoat® 目标计算机上某个实时应用程序的输入端口。该函数可让您控制单个或所有输入端口的激励,并观察激励状态。
要将数据加载到输入端口中,例如可以使用 timeseries 函数等方法创建一个时间序列对象。将对象加载到输入端口中。在激励开始前或激励过程中,请勿暂停或停止对输入端口的激励。暂停或停止会引发激励错误。
要在实时应用程序中控制或监视输入端口的激励:
使用
start函数启动对特定输入端口或所有输入端口的激励。使用
pause函数暂停特定输入端口或所有输入端口的激励。使用
stop函数停止对特定输入端口或所有输入端口的激励。使用
getStatus函数获取输入端口的激励状态。使用
reloadData函数将数据加载到特定的输入端口。
使用 MATLAB 语言激励根输入端口
本示例演示了如何使用“激励”对象及相关函数对模型中的根输入端口进行激励:
start
stop
getStatus
reloadData
pause
创建目标对象并连接
为默认目标计算机创建目标对象,并连接到目标计算机。在命令行窗口中,输入:
tg = slrealtime; connect(tg);
打开模型并映射输入端口到 Wave 数据
打开模型 slrt_ex_osc_inport。将模型保存到工作文件夹中。将该输入端口映射为使用方波数据。对于输入端口 In1,插值功能已关闭。
model = ('slrt_ex_osc_inport'); open_system(model); load('slrt_ex_inport_square.mat'); waveform = square; set_param(model,'ExternalInput','waveform'); set_param(model,'LoadExternalInput','on'); set_param(model,'StopTime','Inf'); modelSTF = getSTFName(tg); set_param(model,"SystemTargetFile",modelSTF);

编译模型并下载实时应用程序
构建、下载并运行该实时应用程序。
evalc('slbuild(model)');
load(tg,model);
激励根输入端口数据
开始对第 1 号输入端口进行根输入激励。打开 Scope 模块并查看结果。
start(tg.Stimulation,[1]); start(tg);
暂停对输入端口 1 的根输入激励。
pause(tg.Stimulation,[1]);
停止并重新启动第 1 输入端口的激励。
stop(tg.Stimulation,[1]); start(tg.Stimulation,[1]);
检查输入端口的激励状态。
getStatus(tg.Stimulation,'all');
创建一个时间序列对象,将数据加载到输入端口中。
sampleTime = 0.1; endTime = 10; numberOfSamples = endTime * 1/sampleTime + 1; timeVector = (0:numberOfSamples) * sampleTime; u = timeseries(timeVector*10,timeVector);
为期 10 秒创建对象 u。将其加载到输入端口 1。在加载数据之前,应停止对输入端口的激励。
stop(tg.Stimulation,[1]); reloadData(tg.Stimulation,[1],u);
使用重新加载的数据,开始对第 1 号输入端口进行根输入激励。打开 Scope 模块并查看结果。
start(tg.Stimulation,[1]);
您还可以从 Parquet 格式文件中重新加载数据。停止对第 1 号输入端口的激励,并重新加载该端口的数据。
stop(tg.Stimulation,[1]);
reloadData(tg.Stimulation,[1],'slrt_ex_inport_square.parquet');
停止实时应用程序并关闭模型。
stop(tg); bdclose(model);