主要内容

在模拟过程中访问块数据

关于块运行时对象

金宝app®提供一个称为块运行时接口的应用程序编程接口,该接口支持在模拟运行时对块数据(如块输入和输出、参数、状态和工作向量)进行编程访问。您可以使用此接口从MATLAB访问块运行时数据®命令行,Simulink调试器,并从金宝app二级MATLAB S-functions(参见编写二级MATLAB s函数).

请注意

即使模型暂停、运行或在调试器中暂停时,也可以使用此接口。

块运行时接口由一组Simulink数据对象类组成(参见金宝app数据对象),其实例提供有关运行模型中的块的数据。特别是,该接口关联的实例金宝app仿真软件。RunTimeBlock,称为块的运行时对象,并使用运行模型中的每个非虚拟块。运行时对象的方法和属性提供了对块的I/O端口、参数、采样时间和状态的运行时数据的访问。

访问一个运行时对象

运行模型中的每个非虚块都有一个RuntimeObject参数,其值在模拟运行时是块的运行时对象的句柄。这允许您使用get_param获取块的运行时对象。例如,下面的语句

“RuntimeObject”rto = get_param (gcb);

返回当前选定块的运行时对象。运行时对象数据是只读的。不能使用运行时对象更改块的参数、输入、输出和状态数据。

请注意

虚拟块(见非虚拟块和虚拟块)没有运行时对象。作为优化而在模型编译期间消除的块也没有运行时对象(参见块减少).运行时对象仅在包含块的模型运行或暂停时存在。如果模型停止,get_param返回空句柄。当停止模型时,所有现有的运行时对象句柄都变为空。

监听方法执行事件

块运行时API的一个应用程序是在模拟期间的关键点上收集诊断数据,比如块计算其输出或导数之前或之后的块状态值。块运行时API提供了一个事件侦听器机制,可以方便此类应用程序。有关的更多信息,请参阅文档add_exec_event_listener命令。对于使用方法执行事件的示例,请输入

在MATLAB命令行。该Simu金宝applink模型包含s函数adapt_lms.m,它执行系统识别以确定FIR滤波器的系数。功能的PostPropagationSetup方法初始化块运行时对象的DWork向量,以便第二个向量存储在每个时间步骤中计算的过滤系数。

在Simuli金宝appnk模型中,双击S-function块下面的注释执行它OpenFcn.这个函数首先打开一个图形来绘制FIR滤波器系数。然后执行该函数add_adapt_coef_plot.m添加一个PostOutputs方法执行事件到s函数的块运行时对象。

%为PostOutputs事件块添加一个回调函数= 'sldemo_msfcn_lms/LMS Adaptive';H = add_exec_event_listener(blk,…PostOutputs, @plot_adapt_coefs);

这个函数plot_adapt_coefs.m注册为事件监听器,在每次调用s函数的输出方法。函数访问块运行时对象的DWork向量,并绘制在输出方法。中的调用语法plot_adapt_coefs.m遵循任何听众都需要的标准。第一个输入参数是s函数的块运行时对象,第二个参数是一个事件数据结构,如下所示。

函数plot_adapt_coefs(block, ei) %#okstemPlot = get_param (block.BlockHandle,用户数据);美国东部时间= block.Dwork (2) . data;集(stemPlot(2),“YData”,美国东部时间);drawnow(“暴露”);

同步运行时对象和金宝app执行

您可以使用运行时对象来获取块输出的值,并通过输入以下命令显示在MATLAB命令窗口中。

rto. outputport (1).Data . rto = get_param(gcb,'RuntimeObject'

但是,如果运行时对象没有与Simulink执行同步,则显示的数据可能不是真正的块输出。金宝app金宝app当运行时对象在二级MATLAB s函数中使用或在事件监听器回调中使用时,Simulink仅确保运行时对象和Simulink执行是同步的。当从MATLAB命令窗口调用时,如果模型中的其他块被允许共享内存,则运行时对象可能返回错误的输出数据。

以确保数据字段包含正确的块输出,打开“配置参数”对话框,然后清除信号存储重用复选框(见信号存储重用(金宝app仿真软件编码器)).

相关的话题