Код, прослеживающий (трассируемость), использует гиперссылки, чтобы перейти между линией сгенерированного кода и его соответствующими элементами в модели. Чтобы найти строки кода и их соответствующие элементы, можно использовать Приложение Кодера PLC Navigate To Code на элементе в модели. Эта двухсторонняя навигация является двусторонней отслеживаемостью.
Используя трассировку кода, вы можете:
Проверьте, что сгенерированный код - как вы ожидаете. Можно идентифицировать, какие элементы модели соответствуют строке кода. Можно отследить код от различных элементов, которые вы имеете или не рассмотрели.
Проверьте, что сгенерированный код соответствует конструктивным требованиям. Можно соединить требования с элементами модели и использовать трассировку кода, чтобы проверить, что сгенерированный код для элемента модели соответствует конструктивным требованиям.
Когда вы генерируете код из модели Simulink®, информация о трассируемости встраивается в сгенерированный код, если явным образом не незаданный. Информация о трассируемости включает ссылки для трассировки между сгенерированным исходным кодом и моделью. Можно просмотреть сгенерированный код при помощи отчета генерации кода.
Сгенерированный код включает эти ресурсы, которые поддерживают трассировку кода:
Гиперссылки элемента кода (обозначенный путем подчеркивания, когда вы устанавливаете свой курсор на код) прослеживать переменные или типы в сгенерированном коде к их объявлениям или определениям.
Теги в комментариях к коду, которые идентифицируют элементы в модели, из которой сгенерированы строки кода.
Гиперссылки номера строки, которые соединяются с компонентом модели, от которого была сгенерирована строка кода.
Двусторонняя отслеживаемость поддерживается для блоков Simulink и этих элементов Stateflow®:
Состояния
Переходы
Таблицы переходов состояний
Функции MATLAB. Трассируемость не поддерживается для внешнего кода, который вы вызываете от функции MATLAB.
Блоки таблицы истинности
Графические функции
Функции Simulink
Трассируемость в одном направлении поддерживается для этих элементов Stateflow:
События (код к модели)
Трассируемость кода к модели работает на явные события, но не неявные события. Нажатие на гиперссылку для явного события в сгенерированном коде подсвечивает что элемент в панели Contents Model Explorer.
Соединения (модель к коду)
Трассируемость модели к коду работает на перекрестки по крайней мере с одним исходящим переходом. Щелчок правой кнопкой по такому соединению в редакторе Stateflow подсвечивает строку кода, которая соответствует первому исходящему переходу для того соединения.
Для получения дополнительной информации смотрите
В этом примере показано, как проверить сгенерированный код при помощи отчета генерации кода.
Откройте пример GeneratingStructuredTextForAFeedForwardPIDControllerExample
.
openExample('plccoder/GeneratingStructuredTextForAFeedforwardPIDControllerExample')
Откройте приложение PLC Coder. Кликните по вкладке PLC Code.
Нажмите Settings и перейдите к панели Генерации кода.
Чтобы включить генерацию отчета, выберите Report> Generate traceability report.
Нажмите OK.
Нажмите Generate PLC Code, чтобы инициировать генерацию кода и отчета. Отчет генерации кода для топ-модели открывается в веб-браузере MATLAB®.
В левой панели навигации выберите plcdemo_pid_feedforward.exp
файл.
Кликните по комментарию или гиперссылке номера строки. Редактор Simulink отображает и подсвечивает соответствующий блок в модели.
Чтобы подсветить сгенерированный код для блока в модели, выберите блок и во вкладке PLC Coder , нажмите Navigate to Code. Сгенерированный код для блока подсвечен в отчете генерации кода HTML.
В левой панели навигации можно нажать кнопку Back, чтобы вернуться к предыдущему отчету генерации кода.
Тег трассируемости появляется в комментарии выше соответствующей линии сгенерированного кода. Форматом тега является <
.system
>/block_name
уникальный номер, присвоенный механизмом Simulink.system
имя исходного блока.block_name
Этот код показывает комментарий тега выше сгенерированной строки кода. Блок Sum в подсистеме один уровень ниже корневого уровня исходной модели генерирует этот код:
(* Sum: '<S1>/Sum' *) rtb_Sum := In1 - In2;
Сгенерированный код обеспечивает трассируемость между операторами в сгенерированном коде и блоках Simulink, элементах Stateflow или блоках MATLAB function.
Чтобы проверить сгенерированный код при помощи трассируемости оператора, в сгенерированном коде, кликают по гиперссылке оператора, чтобы подсветить исходный блок в модели.
Эти операторы поддерживаются.
Тип оператора | Операторы |
---|---|
Арифметика | + , - , * , / , % |
+= , -= , *= , /= , %= | |
++ , -- (префикс и постфикс) | |
Логический | ! , && , || |
Реляционный | == , != , < , > , <= , >= |
Бит | ~ , | , ^ , & , >> , << |
&= , ^= , |= , <<= , >>= | |
Условное выражение | ?: |
Эти операторы не поддерживаются.
Тип оператора | Примеры оператора |
---|---|
Оператор присваивания | = |
Член и операторы указателя | Индекс массивов: a[b] |
Адрес и указатель разыменовывают: &a A | |
Член: a.b , a->b | |
Другие операторы | Круглая скобка в вызове функции: foo(a,b) |
Запятая: a B | |
Разрешение осциллографа: a::b | |
Бросок: type(a) | |
new , new[] | |
delete удаление |
Сгенерировать отчет генерации кода Simulink PLC Coder™ из кода командной строки для подсистемы plcdemo_simple_subsystem/SimpleSubsystem
:
Откройте модель Simulink PLC Coder, например:
open_system('plcdemo_simple_subsystem');
Включите параметру генерации кода PLC_GenerateReport
. Чтобы просмотреть вывод в веб-представлении модели, также включите PLC_GenerateWebview
:
set_param('plcdemo_simple_subsystem', 'PLC_GenerateReport', 'on'); set_param('plcdemo_simple_subsystem', 'PLC_GenerateWebView', 'on');
Сгенерируйте код.
generatedfiles = plcgeneratecode('plcdemo_simple_subsystem/SimpleSubsystem')
Отчет трассируемости отображен. В вашей модели гиперссылка View diagnostics появляется в нижней части окна модели. Кликните по этой гиперссылке, чтобы открыть окно Diagnostic Viewer.
Если веб-представление модели также включено, то представление отображено.
Эти ограничения применяются к отчетам, сгенерированным программным обеспечением Embedded Coder®:
При следующих условиях трассируемость модели к коду отключена для блока, если имя блока содержит:
Одинарная кавычка ('
).
Звездочка (*
) это вызывает искажающую имя неоднозначность относительно других имен в модели. Эта искажающая имя неоднозначность происходит, если в имени блока или в конце имени блока, звездочка предшествует или следует за наклонной чертой (/
).
Символьный ÿ
(char(255)
).
Если имя блока содержит символ новой строки (\n
), комментарий сгенерированного кода для гиперссылки блока path заменяет символ новой строки на пробел для удобочитаемости.
Вы не можете проследить блоки, представляющие эти типы подсистем к сгенерированному коду:
Виртуальные подсистемы
Подсистемы маскированные
Невиртуальные подсистемы, для которых код был удален из-за оптимизации
Если вы не можете проследить подсистему на уровне подсистемы, можно проследить отдельные блоки в подсистеме.
Если вы открываете модель на платформе, которая отличается от платформы, используемой, чтобы сгенерировать код, вы не можете использовать трассируемость модели к коду и кода к модели.
Встроенная трассируемость не доступна для файлов, которые сгенерированы в shared_utils
папка.