exponenta event banner

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

Трассировка кода (прослеживаемость) использует гиперссылки для навигации между строкой сгенерированного кода и его соответствующими элементами в модели. Чтобы найти строки кода и соответствующие им элементы, можно использовать приложение кодера ПЛК «Перейти к коду» для элемента модели. Эта двусторонняя навигация - двунаправленная прослеживаемость.

С помощью трассировки кода можно:

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

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

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

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

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

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

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

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

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

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

  • Переходы

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

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

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

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

  • Функции симулятора

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

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

    Отслеживание кода к модели работает для явных событий, но не неявных событий. Если щелкнуть гиперссылку на явное событие в созданном коде, этот элемент подсвечивается на панели Содержимое (Contents) обозревателя моделей.

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

    Прослеживаемость «модель-код» работает для соединений по крайней мере с одним исходящим переходом. При щелчке правой кнопкой мыши на таком соединении в редакторе Stateflow Editor выделяется строка кода, соответствующая первому исходящему переходу для этого соединения.

Дополнительные сведения см. в разделе

Отслеживание в сгенерированном коде

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

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

    openExample('plccoder/GeneratingStructuredTextForAFeedforwardPIDControllerExample')
  2. Откройте приложение «Кодер ПЛК» и перейдите на вкладку «Код ПЛК».

  3. Щелкните Настройки (Settings) и перейдите на панель Создание кода (Code Generation).

  4. Чтобы включить создание отчетов, выберите «Отчет» > «Создать отчет об отслеживании».

  5. Нажмите кнопку ОК.

  6. Нажмите «Создать код ПЛК», чтобы инициировать создание кода и отчета. Отчет о создании кода для модели верхнего уровня открывается в веб-браузере MATLAB ® .

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

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

  9. Чтобы выделить созданный код блока в модели, выберите блок и на вкладке «Кодер ПЛК» нажмите «Перейти к коду». Созданный код для блока выделяется в отчете о создании кода HTML.

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

Теги отслеживания

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

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

  • 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, 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 папка.

Связанные темы