exponenta event banner

Обзор моделей Export-Function

Модели Export-function - это модели Simulink ®, которые генерируют код для независимых функций, которые могут быть интегрированы с внешней средой и планировщиком. Функции определяются с помощью блоков Function-Call Subsystem, function-call Model, Simulink Function и S-Function.

Следующая модель export-function содержит две функции, определенные блоками Function-Call Subsystem. Пошаговую процедуру создания этой модели см. в разделе Создание модели Export-Function.

Код, генерируемый этой моделью, имеет две независимые функции, одна для функции задержки, а другая для квадратной функции.

      /*
       * File: export_function_model.c    
       * Code generated for Simulink model 'export_function_model'.
       */
		
	void function_call_100ms(void)         /* Sample time: [0.1s, 0.0s] */
	{
	  export_function_model_Y.output_100ms =
	    export_function_model_DW.UnitDelay_DSTATE;
	
	  export_function_model_DW.UnitDelay_DSTATE =
	    export_function_model_Y.output_100ms + 1.0;	
	}

      void function_call_10ms(void)          /* Sample time: [0.01s, 0.0s] */
	{
	    export_function_model_Y.output_10ms = export_function_model_U.input_10ms *
	    export_function_model_U.input_10ms;
	}

Рабочие процессы для моделей Export-Function

Четыре общих процесса создания моделей export-function различаются тем, как моделируется и тестируется модель перед созданием кода для функций.

Когда последовательность вызовов функций достаточно проста, чтобы ее можно было задать в качестве входных данных модели, моделирование с использованием входной матрицы является предпочтительным методом для тестирования модели с экспортными функциями. См. раздел Тестирование моделирования модели экспорта-функции с использованием входной матрицы.

Если последовательность вызова функции слишком сложна для задания с помощью входной матрицы, создайте тестовую модель (электрический жгут) для имитации поведения целевой среды. Эта тестовая модель используется для ввода вызовов функций в модель export-function. См. разделы Тестирование моделирования модели экспорта-функции с использованием генераторов вызовов функций, Тестирование моделирования модели экспорта-функции с использованием редактора расписания и Тестирование моделирования модели экспорта-функции с использованием диаграммы потока состояния.

Разрешенные блоки

На верхнем уровне модель export-function ограничивается виртуальными блоками, блоками с константой (inf) время выборки и следующие блоки:

  • Inport

  • Вспомогательный порт

  • Автор шины

  • Селектор шины

  • В элементе шины

  • Элемент Out Bus

  • Подсистема вызова функций

  • Модель с портами ввода вызова функции

  • Функция симулятора

  • Инициализация функции

  • Функция сброса

  • Завершить функцию

  • Память хранилища данных

  • Слияние

  • S-Функция с портом ввода вызова функции

  • Разделение функций и вызовов

  • Показ

  • Объем

См. раздел Невиртуальные и виртуальные блоки.

Требования к моделям функций экспорта

Для успешного создания кода функции в модели export-function должны быть выполнены следующие требования.

Параметры конфигурации модели:

  • Тип решателя: Fixed-step.

  • Решатель имеет значение auto или discrete.

  • Целевой файл системы генерации кода имеет значение ert.tlc. Выбор ert.tlc требуется лицензия Embedded Coder ®.

  • Для блоков модели с функциональным вызовом, периодическое ограничение времени выборки для ссылочной модели Ensure sample time independent.

Блок ввода функции корневого уровня:

  • Флажок Вызов функции вывода установлен.

  • Не удается получить сигнал от блока спецификации асинхронных задач.

Блоки ввода и вывода данных корневого уровня не могут подключаться к сигналам данных виртуальной шины.

Блоки подсистемы функции-вызова корневого уровня и блоки модели вызова функции:

  • Все внутренние блоки внутри блока должны поддерживать генерацию кода.

  • Если для параметра Trigger block Sample time type установлено значение:

    • triggered, внутренние блоки должны иметь значение Sample time -1.

    • periodic, блок Inport функции root-level должен иметь заданное дискретное время Sample, а все внутренние блоки должны иметь значение Sample time -1 или указанное дискретное время.

Примерное время для подсистем вызова функций

В модели export-function можно указать примерное время для блоков Inport функции корневого уровня и блока Trigger внутри блока Function-Call Subsystem корневого уровня или блока модели function-call. В следующей таблице показано, как указать эти примеры времени.

Триггерный блок Тип времени выборкиВремя выборки триггерного блокаВремя выборки блока вводаСкорость вызова функции во время моделирования

Triggered

Не указан, параметр неактивен.

-1 (наследуется)

Для моделирования инициатор вызова функции, подключенный к блоку Inport, задает скорость моделирования.

Заданное дискретное время

Инициатор вызова функции в тестовой модели, подключенный к блоку Inport, должен иметь время выборки, равное указанному дискретному времени для блока Inport.

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

Periodic

Если на модель export-function ссылается блок Model, применяются периодические проверки времени выполнения вызова функции.

-1 (наследуется) или указанное дискретное время для блока Inport.

-1 (наследуется)

Эта конфигурация не разрешена. Simulink выводит сообщение об ошибке.

Заданное дискретное время.

Для моделирования компонент выполняется в заданное время дискретной выборки. Если источник вызова функции использует другое время выборки, Simulink выводит сообщение об ошибке.

Порядок выполнения для блоков ввода функции Root-Level - вызов

Путем задания времени выборки и приоритета для блоков ввода вызова функции можно управлять порядком выполнения подсистем вызова функции и моделей вызова функции во время моделирования. Кроме того, для тестирования планирования можно использовать редактор расписания или диаграмму Stateflow ®. См. разделы Тестирование моделирования модели экспорта-функции с помощью редактора расписания и Тестирование моделирования модели экспорта-функции с помощью диаграммы потока состояний.

  1. Укажите время образца для выполнения моделирования. Щелкните правой кнопкой мыши функциональный блок Inport, затем выберите Параметры блока.

  2. Выберите вкладку Signal Attributes (Атрибуты сигнала). В поле Время выборки введите дискретное время.

  3. Укажите приоритет блока для моделирования. Щелкните правой кнопкой мыши блок ввода вызова функции и выберите «Свойства».

  4. В поле Приоритет (Priority) введите значение приоритета.

  5. Отобразить порядок выполнения блока для моделирования. На вкладке Debug выберите Information Overlays, затем в раскрывающемся окне выберите Execution Order. Этот экран не влияет на созданный код.

В следующей модели export-function для подсистемы Function-Call 2 с параметром Sample time for Inport block 2 установлено значение 0.01 (10 мс) выполняется перед подсистемой Function-Call 1 с параметром Sample time for Inport block 1, установленным на 0.1 (100 мс).

Определение относительного порядка выполнения

Simulink сравнивает свойства блока Inport вызова функции, чтобы определить их относительный порядок выполнения, используя следующие правила:

  1. Приоритет - в первую очередь выполняется более высокий приоритет (меньшее число)

  2. Время выборки - сначала выполняется меньшее время выборки

  3. Номер порта - сначала выполняется меньший номер порта

Если два блока имеют разные значения для параметра Priority, сначала выполняется блок с более высоким приоритетом. Если параметр Priority равен, сначала выполняется блок с более высокой скоростью (меньшим временем выборки). Если приоритет и время выборки одинаковы для обоих блоков, сначала выполняется блок с более низким номером порта.

Примечание

Если моделируемый режим модели верхнего уровня - Accelerator или Rapid Accelerator, Simulink не выполняет проверки во время выполнения для порядка выполнения блоков Inport функции корневого уровня внутри ссылочных моделей export-function.

Предположим, что модель функции экспорта имеет пять блоков Inport, от A до E для вызова функции корневого уровня со свойствами блока, как показано в таблице. Чтобы определить их относительный порядок выполнения, Simulink сравнивает их параметры Priority, время выборки (если различается и не наследуется) и номер порта.

Блок ввода вызова функции корневого уровняABCDE
Приоритет1030404030
Время выборки–10.20.10.1–1
Номер порта54321
  • Блок A имеет наивысший приоритет из всех пяти блоков. Сначала выполняется A.

  • B и E выполняются после A, но до C и D. Поскольку B и E имеют одинаковый приоритет, Simulink сравнивает их время выборки для определения порядка выполнения. E имеет время выборки -1 (наследуется), что меньше, чем 0.2время выборки B. E выполняется до B.

  • C и D имеют одинаковый приоритет и одинаковые различные, не унаследованные времена выборки. Номер порта для D (2) меньше, чем C (3), D выполняется до C.

Относительный порядок выполнения для этих блоков ввода вызова функции равен A, E, B, D и C.

Блокированные входные данные для подсистем вызова функций

Для обеспечения целостности данных можно зафиксировать входные данные для блоков Inport в блоках подсистемы Function-Call. Чтобы зафиксировать входные данные, в параметрах блока Inport выберите Latch input для сигналов обратной связи выходов подсистемы функционального вызова.

В следующей модели входные данные для блока Inport в подсистеме функционального вызова ReadDSAndCal1 фиксируется (индицируется <Li>) и не может изменяться во время выполнения подсистемы. Блоки чтения хранилища данных и записи хранилища данных вызываются в каждой подсистеме вызова функций. Первый и второй функциональные вызовы записывают данные, а последний функциональный вызов считывает данные в блок памяти хранилища данных.

Примечание

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

Примечание

По умолчанию сигналы передачи данных в сгенерированном коде не резервируются. Используйте пользовательские классы хранения, чтобы предотвратить повреждение данных в этих сигналах из-за вытеснения текущей задачи в целевой среде.

Вложенный экспорт - функциональные модели

Вложенные модели экспорта-функции обеспечивают дополнительный уровень организации. Следующая модель имеет две ссылочные модели экспорта-функции, на которые имеются ссылки из блока модели.

Примечание

Модель export-function не может содержать ссылочную модель с асинхронными входами вызова функции, но может содержать подсистемы вызова функции и модели вызова функции. Модель с асинхронными входами вызова функции может содержать модель экспорта функции, подсистему вызова функции или модель вызова функции.

Экспорт - функциональная модель с мультиинстантной функционально-вызываемой моделью

В модели export-function можно использовать блоки Function-Call Subsystem или function-call Model. Если используется блок модели с функциональным вызовом, можно также создать несколько экземпляров модели.

  1. Определите алгоритм с помощью модели, содержащей блок триггера. Установить тип триггера в function-call.

  2. Ссылка на модель из блока модели. Результатом является модель вызова функции.

  3. Подключите блок ввода вызова функции и установите флажок Output function call. Добавление блоков ввода и вывода сигналов. Обновите модель (Ctrl-D). Результатом является модель export-function с моделью function-call.

  4. Скопируйте ссылочную модель и блоки портов для создания второго экземпляра модели. Эти два экземпляра вызываются различными блоками Inport функции уровня root в различных задачах.

Экспорт - функциональные модели и модели с асинхронными входами вызова функции

Возможность экспорта моделей функций доступна для моделей с асинхронными портами ввода вызовов функций. Эти модели используются главным образом в среде Simulink, где планировщик Simulink вызывает функции.

Сравнительная характеристикаЭкспорт - функциональные моделиМодели с асинхронными входами вызовов функций
ОпределениеЭти модели имеют блоки Inport функции-вызова корневого уровня, которые не подключены к блоку спецификации асинхронных задач. Эти блоки Inport запускают подсистемы function-call или модели function-call (блок модели с блоком Trigger).Эти модели имеют блоки Inport для вызовов функций корневого уровня, подключенные к блокам Asynchronous Task Specification. Эти блоки Inport запускают подсистемы function-call или модели function-call.
Блоки корневого уровняНа корневом уровне допускаются только блоки, выполняющиеся в контексте вызова функции.Также разрешены блоки, выполняющиеся в контексте вызова без функции.
Передача данныхИспользуйте индикаторы переноса данных для интерпретации результатов моделирования. Передача данных в моделях export-function не защищена по умолчанию в сгенерированном коде. Дополнительные сведения см. в разделе Блокированные входные данные для подсистем вызова функций.Используйте блоки Rate Transition для защиты данных, передаваемых между подсистемами вызова функций, работающими на разных скоростях. Дополнительные сведения см. в разделе Переход скорости.
Поддержка моделированияЭти модели поддерживают автономное моделирование и тестовое моделирование во всех режимах моделирования.Эти модели поддерживают моделирование тестовой модели во всех режимах моделирования и автономное моделирование в режимах Normal, Accelerator и Rapid Accelerator.
Поддержка генерации кодаПоддерживается создание кода на основе модели верхнего уровня и автономного кода.Поддерживается создание кода на основе модели верхнего уровня и автономного кода.

См. также

Блоки

Связанные темы