Чтобы проверить сгенерированный код, Embedded Coder® обеспечивает двустороннюю отслеживаемость между Simulink® модель и сгенерированный код. Для трассируемости можно использовать любой метод:
Код-к-модели: Сгенерированный код отображает эти гиперссылки в строках с комментариями в сгенерированном коде:
Имена блоков/подсистем
Номера линий
Операторы
Чтобы выделить соответствующий блок или подсистему в редакторе Simulink, щелкните гиперссылки.
Модель-к-коду: Можно выбрать один или несколько блоков модели в Редактор и перейти к соответствующему сгенерированному коду.
Чтобы использовать гиперссылки для трассировки элементов кода к модели:
Откройте модель и сконфигурируйте ее как цель ERT.
Создайте или сгенерируйте код для модели. По умолчанию открывается Представление кода, чтобы отобразить сгенерированный код рядом с моделью.
В сгенерированном коде наведите курсор на имена блоков в комментариях, чтобы подсветить исходные блоки. Например, сгенерируйте HTML для модели rtwdemo_hyperlinks
. В сгенерированном коде для функции шага модели в rtwdemo_hyperlinks.c
, наведите курсор на UnitDelay: '<Root>/X'
блок. В окне модели соответствующее UnitDelay
блок подсвечивается.
Чтобы использовать номера линий для трассировки элементов кода к модели:
В предыдущей модели rtwdemo_hyperlinks
щелкните гиперссылку на линию номер 153. Номера линий могут отличаться от номеров, которые появляются в сгенерированном коде.
В окне модели подсистема графика подсвечивается и содержит функциональность в линии 153.
Генератор кода иногда вставляет скрытые блоки в процессе генерации кода по различным причинам, например, для поддержания целостности данных. Комментарии к скрытым блокам включаются в сгенерированный код. Эти комментарии и код, сгенерированный из скрытого блока, возвращаются к исходному блоку в модели, который инициировал вставку скрытого блока. Комментарии к скрытым блокам следуют этому шаблону:
/* <Hidden_Block_Type> generated from: <Hyperlinked_Original_Block_Name> */
Для примера,
/* SignalConversion generated from: '<Root>/Subsystem' */ Varianttoground_B.VM_Conditional_Signal_Subsystem_0 = 0.0;
SignalConversion
отсутствует в модели. Можно проследить до '<Root>/Subsystem'
блок в модели, который вызвал вставку скрытого блока, нажав на гиперссылку на '<Root>/Subsystem'
. Для получения дополнительной информации об этом примере смотрите Генерация кода для исполнительных блоков с одним вариантом выбора.Чтобы проследить элементы модели к их соответствующему сгенерированному коду:
Выполните шаги 1 и 2 как в трассируемости кода к модели
Создайте или сгенерируйте код для модели. Сгенерированный код отображается в Представление кода окне рядом с моделью.
В окне модели щелкните элемент модели. Чтобы выбрать несколько блоков, удерживайте клавишу SHIFT и выбирайте дополнительные блоки.
В сгенерированном коде в Представление кода окне вы видите первый образец подсвеченного кода, которая генерируется для элемента модели. В верхней части представления кода номера, расположенные справа от сгенерированных имен файлов, указывают общее количество подсвеченных линий в каждом файле. Этот рисунок показывает результат трассировки блока Unit Delay в модели rtwdemo_hyperlinks
.
В верхней части окна кода используйте панель навигации для перемещения вперед и назад через несколько образцов подсвеченных линий. Используйте боковую панель навигации, чтобы перейти непосредственно к строке кода.
Если вы закрываете и снова открываете модель, Представление кода не открывается, пока вы не откроете Embedded Coder приложения. Представление кода может быть недоступно, потому что Embedded Coder не может найти папку сборки для вашей модели в текущей рабочей папке. Сбросьте текущую рабочую папку в родительскую папку существующей папки сборки.
Если вы используете отчет генерации кода и хотите перезагрузить существующую информацию о трассируемости, см. Раздел «Перезагрузка существующей информации о трассируемости».