Чтобы проверить сгенерированный код, Embedded Coder® обеспечивает двустороннюю отслеживаемость между моделью Simulink® и сгенерированным кодом. Можно использовать любой метод для трассируемости:
Код к модели: сгенерированный код отображает эти гиперссылки в строках с комментариями в сгенерированном коде:
Имена блока/подсистем
Номера строки
Операторы
Чтобы подсветить соответствующий блок или подсистему в Редакторе 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 не может найти папку сборки для вашей модели в текущей рабочей папке. Сбросьте текущую рабочую папку к родительской папке существующей папки сборки.
Если вы используете отчет генерации кода и хотите перезагрузить существующую информацию о трассируемости, смотрите Перезагрузку Существующая информация о Трассируемости.