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

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

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)).

Похожие темы