Доступ к данным о блоке во время симуляции

Об объектах периода выполнения блока

Simulink® обеспечивает прикладной программный интерфейс, названный интерфейсом времени выполнения блока, который позволяет программируемому доступу блокировать данные, такие как вводы и выводы блока, параметры, состояния, и работать векторы, в то время как симуляция запускается. Можно использовать этот интерфейс, чтобы получить доступ к данным времени выполнения блока из командной строки MATLAB®, Отладчика Simulink, и из Уровня 2 S-функции MATLAB (см. Уровень 2 Записи S-функции MATLAB).

Примечание

Можно использовать этот интерфейс, даже когда модель приостановлена или запускается или приостановленная в отладчике.

Интерфейс времени выполнения блока состоит из набора классов Объекта данных Simulink (см. Объекты данных), чьи экземпляры обеспечивают данные о блоках в под управлением модели. В частности, интерфейс сопоставляет экземпляр Simulink.RunTimeBlock, названного объектом периода выполнения блока, с каждым невиртуальным блоком в под управлением модели. Методы и свойства объекта периода выполнения обеспечивают доступ к данным во время выполнения о портах I/O блока, параметрах, шагах расчета и состояниях.

Доступ к объекту периода выполнения

Каждый невиртуальный блок в под управлением модели имеет параметр RuntimeObject, значение которого, в то время как симуляция запускается, является указателем для объекта периода выполнения блоков. Это позволяет вам использовать get_param, чтобы получить объект периода выполнения блока. Например, следующий оператор

rto = get_param(gcb,'RuntimeObject');

возвращает объект периода выполнения в настоящее время выбранного блока. Данные объекта периода выполнения только для чтения. Вы не можете использовать объекты периода выполнения, чтобы изменить параметры блока, ввести, вывести и утвердить данные.

Примечание

Виртуальные блоки (см. Невиртуальные и Виртуальные Блоки) не имеют объектов периода выполнения. Блоки, устраненные во время образцовой компиляции как оптимизация также, не имеют объектов периода выполнения (см. сокращение Блока). Объект периода выполнения существует только, в то время как модель, содержащая блок, запускается или приостановленная. Если модель останавливается, get_param возвращает пустой указатель. Когда вы останавливаете модель, все существующие указатели для объектов периода выполнения становятся пустыми.

Прислушайтесь к Событиям осуществления метода

Одно приложение для API времени выполнения блока должно собрать диагностические данные в ключевых пунктах во время симуляции, таких как значение состояний блока прежде или после того, как блоки вычислят свои выходные параметры или производные. API времени выполнения блока обеспечивает механизм прослушивателя события, который упрощает такие приложения. Для получения дополнительной информации см. документацию для команды add_exec_event_listener. Для примера использования событий осуществления метода войти

в командной строке MATLAB. Эта модель Simulink содержит S-функцию adapt_lms.m, который выполняет систему идентификации, чтобы определить коэффициенты КИХ-фильтра. Метод PostPropagationSetup S-функции инициализирует вектор объекта периода выполнения блока DWork, таким образом, что второй вектор хранит коэффициенты фильтра, вычисленные на каждом временном шаге.

В модели Simulink, дважды кликающей на аннотации ниже Блока s-function, выполняет его OpenFcn. Эта функция сначала открывает фигуру для графического вывода КИХ-коэффициентов фильтра. Это затем выполняет функциональный add_adapt_coef_plot.m, чтобы добавить событие осуществления метода PostOutputs в объект периода выполнения блока S-функции с помощью следующих строк кода.

% Add a callback for PostOutputs event
blk = 'sldemo_msfcn_lms/LMS Adaptive';

h   = add_exec_event_listener(blk, ...
         'PostOutputs', @plot_adapt_coefs);

Функциональный plot_adapt_coefs.m указан как прослушиватель события, который выполняется после каждого вызова метода Outputs S-функции. Функциональные доступы вектор и графики объекта периода выполнения блока DWork коэффициенты фильтра, вычисленные в методе Outputs. Синтаксис вызова, используемый в plot_adapt_coefs.m, следует стандарту, необходимому для любого прослушивателя. Первый входной параметр является объектом периода выполнения блока S-функции, и второй аргумент является структурой данных о событиях, как показано ниже.

function plot_adapt_coefs(block, ei) %#ok<INUSD>
% 
% Callback function for plotting the current adaptive filtering
% coefficients.

stemPlot  = get_param(block.BlockHandle,'UserData');

est = block.Dwork(2).Data;
set(stemPlot(2),'YData',est);
drawnow('expose');

Синхронизация объектов периода выполнения и выполнения Simulink

Можно использовать объекты периода выполнения, чтобы получить значение блока вывод и отобразиться в Окне Команды MATLAB путем ввода следующих команд.

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

Однако отображенные данные не могут быть истинным блоком вывод, если объект периода выполнения не синхронизируется с выполнением Simulink. Simulink только гарантирует, что объект периода выполнения и выполнение Simulink синхронизируются, когда объект периода выполнения используется или в Уровне 2 S-функция MATLAB или в коллбэке прослушивателя события. Когда названо из Окна Команды MATLAB, объект периода выполнения может возвратить неправильные выходные данные, если другим блокам в модели позволяют совместно использовать память.

Гарантировать поле Data содержит правильный блок вывод, откройте диалоговое окно Configuration Parameters, и затем снимите флажок Signal storage reuse (см. Повторное использование памяти (Simulink Coder)).

Похожие темы