Вызовите существующие внешние функции из моделирования или из сгенерированного кода с помощью прежнего инструмента кода.
Узнайте, как:
Оцените функцию C как часть моделирования модели Simulink ®.
Вызовите функцию C из кода, создаваемого из модели.
Сведения о модели примера см. в разделе Подготовка модели алгоритма управления для генерации кода C.
Откройте пример модели, rtwdemo_PCG_Eval_P4.
Для многих приложений на основе моделей, помимо моделей Simulink ®, конструкция включает набор существующих функций C, которые были протестированы и проверены. Эти функции можно интегрировать в модель Simulink ® и создать код, использующий эти функции.
В этом примере создается пользовательский блок Simulink ®, вызывающий существующую функцию C. Затем блок включается в модель и тестируется вся система с помощью моделирования модели в Simulink ®.
В примере модели блоки подстановки (таблицы подстановки) в контроллерах PI можно заменить вызовами существующей функции C. Функция определена в файлах SimpleTable.c и SimpleTable.h.
Чтобы указать вызов существующей функции C, используйте блок S-Function. Можно автоматизировать создание блока S-Function с помощью инструмента Legacy Code Tool. В инструменте сначала указывается интерфейс для существующей функции C. Затем инструмент использует этот интерфейс для создания блока S-Function.
Для создания блока S-Function для существующей функции C используйте инструмент устаревшего кода. SimpleTable.c.
1. Создайте структуру, содержащую определение интерфейса функции.
def = legacy_code('initialize')
Можно использовать структуру def для определения интерфейса функции к существующему коду C.
legacy_code('sfcn_cmex_generate',def)
legacy_code('compile',def)
legacy_code('slblock_generate',def)
Сгенерированный блок S-Function вызывает функцию C в SimpleTable.c. Теперь этот S-функциональный блок можно использовать в моделях.
legacy_code('sfcn_tlc_generate',def)
Эта команда создает файл TLC, который является компонентом S-функции, определяющей способ создания кода для блока.
При интеграции существующего кода C в модель Simulink ® следует проверить созданный блок S-Function .
Для проверки замены блоков Lookup сравните результаты моделирования, полученные блоками Lookup, с результатами, полученными новым блоком S-Function.
Блок синусоидальной волны выдает выходные значения из [-2: 2].
Диапазон входных значений таблицы подстановки - от [-1: 1].
Таблица поиска выводит абсолютное значение входного значения.
Таблица подстановки отсекает выходные данные на входных границах.
На рисунке показаны результаты проверки. Существующий код C и табличный блок Simulink ® дают одинаковые выходные значения .
После проверки существующего кода функции C в качестве автономного компонента проверьте S-функцию в модели. Для завершения проверки используйте тестовую модель электрического жгута.
Результаты моделирования соответствуют золотым значениям.
Генератор кода использует файл TLC для обработки блока S-Function, как и любой другой блок. Генератор кода может реализовать сворачивание выражения с помощью блока S-Function, операции, которая объединяет несколько вычислений в одно вычисление вывода.
2. Проверьте созданный код в PI_Control_Reusable.c.
Созданный код теперь вызывает SimpleTable Функция С.
На рисунках показан сгенерированный код до и после интеграции кода C. Перед интеграцией код вызывает сгенерированную процедуру поиска. После интеграции сгенерированный код вызывает функцию C SimpleTable.

