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');
Можно использовать объекты периода выполнения, чтобы получить значение блока выход и отобразиться в командном окне 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)).