Трассировка кода (прослеживаемость) использует гиперссылки для навигации между строкой сгенерированного кода и его соответствующими элементами в модели. Чтобы найти строки кода и соответствующие им элементы, можно использовать приложение кодера ПЛК «Перейти к коду» для элемента модели. Эта двусторонняя навигация - двунаправленная прослеживаемость.
С помощью трассировки кода можно:
Убедитесь, что созданный код соответствует ожидаемому. Можно определить, какие элементы модели соответствуют строке кода. Можно отслеживать код из различных элементов, которые были проверены или не проверены.
Убедитесь, что созданный код соответствует требованиям проекта. Можно связать требования с элементами модели и использовать трассировку кода, чтобы убедиться, что созданный код для элемента модели соответствует требованиям конструкции.
При создании кода из модели Simulink ® информация об отслеживаемости встраивается в созданный код, если она явно не указана. Информация об отслеживании включает в себя связи для отслеживания между сгенерированным исходным кодом и моделью. Созданный код можно просмотреть с помощью отчета о создании кода.
Созданный код включает в себя следующие ресурсы, поддерживающие трассировку кода:
Гиперссылки элементов кода (обозначаемые подчеркиванием при наведении курсора на код) для следовых переменных или типов в созданном коде к их объявлениям или определениям.
Теги в комментариях кода, которые идентифицируют элементы в модели, из которых создаются строки кода.
Гиперссылки номеров строк, связанные с компонентом модели, из которого была создана строка кода.
Двунаправленная прослеживаемость поддерживается для блоков Simulink и следующих элементов Stateflow ®:
Государства
Переходы
Таблицы переходов состояний
Функции MATLAB. Отслеживание не поддерживается для внешнего кода, вызываемого из функции MATLAB.
Блоки таблицы истинности
Графические функции
Функции симулятора
Отслеживание в одном направлении поддерживается для следующих элементов Stateflow:
События (код-модель)
Отслеживание кода к модели работает для явных событий, но не неявных событий. Если щелкнуть гиперссылку на явное событие в созданном коде, этот элемент подсвечивается на панели Содержимое (Contents) обозревателя моделей.
Соединения (модель-код)
Прослеживаемость «модель-код» работает для соединений по крайней мере с одним исходящим переходом. При щелчке правой кнопкой мыши на таком соединении в редакторе Stateflow Editor выделяется строка кода, соответствующая первому исходящему переходу для этого соединения.
Дополнительные сведения см. в разделе
В этом примере показано, как проверить созданный код с помощью отчета о создании кода.
Откройте пример GeneratingStructuredTextForAFeedForwardPIDControllerExample.
openExample('plccoder/GeneratingStructuredTextForAFeedforwardPIDControllerExample')Откройте приложение «Кодер ПЛК» и перейдите на вкладку «Код ПЛК».
Щелкните Настройки (Settings) и перейдите на панель Создание кода (Code Generation).
Чтобы включить создание отчетов, выберите «Отчет» > «Создать отчет об отслеживании».
Нажмите кнопку ОК.

Нажмите «Создать код ПЛК», чтобы инициировать создание кода и отчета. Отчет о создании кода для модели верхнего уровня открывается в веб-браузере MATLAB ® .
На левой панели навигации выберите plcdemo_pid_feedforward.exp файл.
Щелкните гиперссылку на комментарий или номер строки. Редактор Simulink отображает и подсвечивает соответствующий блок в модели.

Чтобы выделить созданный код блока в модели, выберите блок и на вкладке «Кодер ПЛК» нажмите «Перейти к коду». Созданный код для блока выделяется в отчете о создании кода HTML.
В левой области навигации можно нажать кнопку «Назад» для возврата к предыдущему отчету о создании кода.
Тег отслеживания появляется в комментарии над соответствующей строкой сгенерированного кода. Формат тега: < .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, 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), сгенерированный комментарий кода для гиперссылки пути блока заменяет символ новой строки пробелом для читаемости.
Нельзя отслеживать блоки, представляющие следующие типы подсистем, в сгенерированном коде:
Виртуальные подсистемы
Маскированные подсистемы
Невиртуальные подсистемы, код которых был удален из-за оптимизации
Если невозможно выполнить трассировку подсистемы на уровне подсистемы, можно выполнить трассировку отдельных блоков в подсистеме.
При открытии модели на платформе, отличной от платформы, используемой для создания кода, нельзя использовать отслеживание «модель-код» и «код-модель».
Встроенное отслеживание недоступно для файлов, созданных в shared_utils папка.