Проверьте сгенерированный код при помощи трассировки кода

Код, прослеживающий (трассируемость), использует гиперссылки, чтобы перейти между линией сгенерированного кода и его соответствующими элементами в модели. Чтобы найти строки кода и их соответствующие элементы, можно использовать Приложение Кодера PLC Navigate To Code на элементе в модели. Эта двухсторонняя навигация является двусторонней отслеживаемостью.

Используя трассировку кода, вы можете:

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

  • Проверьте, что сгенерированный код соответствует конструктивным требованиям. Можно соединить требования с элементами модели и использовать трассировку кода, чтобы проверить, что сгенерированный код для элемента модели соответствует конструктивным требованиям.

Когда вы генерируете код из модели Simulink®, информация о трассируемости встраивается в сгенерированный код, если явным образом не незаданный. Информация о трассируемости включает ссылки для трассировки между сгенерированным исходным кодом и моделью. Можно просмотреть сгенерированный код при помощи отчета генерации кода.

Сгенерированный код включает эти ресурсы, которые поддерживают трассировку кода:

  • Гиперссылки элемента кода (обозначенный путем подчеркивания, когда вы устанавливаете свой курсор на код) прослеживать переменные или типы в сгенерированном коде к их объявлениям или определениям.

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

  • Гиперссылки номера строки, которые соединяются с компонентом модели, от которого была сгенерирована строка кода.

Прослеживаемые элементы

Двусторонняя отслеживаемость поддерживается для блоков Simulink и этих элементов Stateflow®:

  • Состояния

  • Переходы

  • Таблицы переходов состояний

  • Функции MATLAB. Трассируемость не поддерживается для внешнего кода, который вы вызываете от функции MATLAB.

  • Блоки таблицы истинности

  • Графические функции

  • Функции Simulink

Трассируемость в одном направлении поддерживается для этих элементов Stateflow:

  • События (код к модели)

    Трассируемость кода к модели работает на явные события, но не неявные события. Нажатие на гиперссылку для явного события в сгенерированном коде подсвечивает что элемент в панели Contents Model Explorer.

  • Соединения (модель к коду)

    Трассируемость модели к коду работает на перекрестки по крайней мере с одним исходящим переходом. Щелчок правой кнопкой по такому соединению в редакторе Stateflow подсвечивает строку кода, которая соответствует первому исходящему переходу для того соединения.

Для получения дополнительной информации смотрите

Трассируемость в сгенерированном коде

В этом примере показано, как проверить сгенерированный код при помощи отчета генерации кода.

  1. Откройте пример GeneratingStructuredTextForAFeedForwardPIDControllerExample.

    openExample('plccoder/GeneratingStructuredTextForAFeedforwardPIDControllerExample')
  2. Откройте приложение PLC Coder. Кликните по вкладке PLC Code.

  3. Нажмите Settings и перейдите к панели Генерации кода.

  4. Чтобы включить генерацию отчета, выберите Report> Generate traceability report.

  5. Нажмите OK.

  6. Нажмите Generate PLC Code, чтобы инициировать генерацию кода и отчета. Отчет генерации кода для топ-модели открывается в веб-браузере MATLAB®.

  7. В левой панели навигации выберите plcdemo_pid_feedforward.exp файл.

  8. Кликните по комментарию или гиперссылке номера строки. Редактор Simulink отображает и подсвечивает соответствующий блок в модели.

  9. Чтобы подсветить сгенерированный код для блока в модели, выберите блок и во вкладке PLC Coder , нажмите Navigate to Code. Сгенерированный код для блока подсвечен в отчете генерации кода HTML.

  10. В левой панели навигации можно нажать кнопку Back, чтобы вернуться к предыдущему отчету генерации кода.

Теги трассируемости

Тег трассируемости появляется в комментарии выше соответствующей линии сгенерированного кода. Форматом тега является <system>/block_name .

  • system уникальный номер, присвоенный механизмом Simulink.

  • block_name имя исходного блока.

Этот код показывает комментарий тега выше сгенерированной строки кода. Блок Sum в подсистеме один уровень ниже корневого уровня исходной модели генерирует этот код:

(* Sum: '<S1>/Sum' *)
rtb_Sum := In1 - In2;

Трассируемость оператора

Сгенерированный код обеспечивает трассируемость между операторами в сгенерированном коде и блоках Simulink, элементах Stateflow или блоках MATLAB function.

Чтобы проверить сгенерированный код при помощи трассируемости оператора, в сгенерированном коде, кликают по гиперссылке оператора, чтобы подсветить исходный блок в модели.

Эти операторы поддерживаются.

Тип оператораОператоры
Арифметика+, -, *, /, %
+=, -=, *=, /=, %=
++, -- (префикс и постфикс)
Логический!, &&, ||
Реляционный==, !=, <, >, <=, >=
Бит~, |, ^, &, >>, <<
&=, ^=, |=, <<=, >>=
Условное выражение?:

Эти операторы не поддерживаются.

Тип оператораПримеры оператора
Оператор присваивания=
Член и операторы указателяИндекс массивов: a[b]
Адрес и указатель разыменовывают: &aA
Член: a.b, a->b
Другие операторыКруглая скобка в вызове функции: foo(a,b)
Запятая: aB
Разрешение осциллографа: a::b
Бросок: type(a)
new, new[]
deleteудаление

Сгенерируйте отчет трассируемости из командной строки

Сгенерировать отчет генерации кода Simulink PLC Coder™ из кода командной строки для подсистемы plcdemo_simple_subsystem/SimpleSubsystem:

  1. Откройте модель Simulink PLC Coder, например:

    open_system('plcdemo_simple_subsystem');
  2. Включите параметру генерации кода PLC_GenerateReport. Чтобы просмотреть вывод в веб-представлении модели, также включите PLC_GenerateWebview:

    set_param('plcdemo_simple_subsystem', 'PLC_GenerateReport', 'on');
    set_param('plcdemo_simple_subsystem', 'PLC_GenerateWebView', 'on');
  3. Сгенерируйте код.

    generatedfiles = plcgeneratecode('plcdemo_simple_subsystem/SimpleSubsystem')

    Отчет трассируемости отображен. В вашей модели гиперссылка View diagnostics появляется в нижней части окна модели. Кликните по этой гиперссылке, чтобы открыть окно Diagnostic Viewer.

    Если веб-представление модели также включено, то представление отображено.

Ограничения трассируемости

Эти ограничения применяются к отчетам, сгенерированным программным обеспечением Embedded Coder®:

  • При следующих условиях трассируемость модели к коду отключена для блока, если имя блока содержит:

    • Одинарная кавычка (').

    • Звездочка (*) это вызывает искажающую имя неоднозначность относительно других имен в модели. Эта искажающая имя неоднозначность происходит, если в имени блока или в конце имени блока, звездочка предшествует или следует за наклонной чертой (/).

    • Символьный ÿ (char(255)).

  • Если имя блока содержит символ новой строки (\n), комментарий сгенерированного кода для гиперссылки блока path заменяет символ новой строки на пробел для удобочитаемости.

  • Вы не можете проследить блоки, представляющие эти типы подсистем к сгенерированному коду:

    • Виртуальные подсистемы

    • Подсистемы маскированные

    • Невиртуальные подсистемы, для которых код был удален из-за оптимизации

    Если вы не можете проследить подсистему на уровне подсистемы, можно проследить отдельные блоки в подсистеме.

  • Если вы открываете модель на платформе, которая отличается от платформы, используемой, чтобы сгенерировать код, вы не можете использовать трассируемость модели к коду и кода к модели.

  • Встроенная трассируемость не доступна для файлов, которые сгенерированы в shared_utils папка.

Похожие темы