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

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

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

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

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

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

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

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

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

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

Отслеживаемые элементы

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

  • Государства

  • Переходы

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

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

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

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

  • Функции Simulink

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

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

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

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

    Трассируемость Model-to-code работает для соединений с по крайней мере одним исходящим переходом. Щелчок правой кнопкой мыши по такому соединению в редакторе 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]
Адрес и указатель dereference: &a, *a
Представитель: a.b, a->b
Другие операторыКруглые скобки в вызове функции: foo(a,b)
Запятая: a, b
Разрешение возможностей: a::b
Приведение: type(a)
new, new[]
delete, 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), сгенерированный комментарий кода для гиперссылки пути блока заменяет символ новой строки на пространство для читаемости.

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

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

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

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

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

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

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

Похожие темы