Проследите элементы Stateflow в сгенерированном коде

Чтобы проверить сгенерированный код для ваших элементов Stateflow®, можно проследить элементы Stateflow в модели к отчету генерации кода при помощи этих типов навигации:

  • Код к модели: сгенерированный код Трассировки от генерации кода сообщает модели путем нажатия на гиперссылки в комментариях или связанных гиперссылками номерах строки, который подсвечивает соответствующий элемент модели в Редакторе Simulink.

  • Модель к коду: Проследите элементы модели в Редакторе Simulink к соответствующим строкам в сгенерированном коде путем щелчка правой кнопкой по элементу модели и навигации к сгенерированному коду.

Эти примеры иллюстрируют, как проследить различные элементы Stateflow.

Встроенная трассируемость для элементов Stateflow

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

  1. В командной строке введите old_sf_car.

  2. Выберите Simulation> Model Configuration Parameters.

  3. В панели Code Generation перейдите к разделу Target selection и введите ert.tlc для системного конечного файла. Нажмите Apply.

  4. На Code Generation> панель Report, проверьте, что вы выбрали эти параметры:

  5. Перейдите к Code Generation> панель Interface. В разделе Software environment выберите continuous time. Нажмите Apply. Прежде, чем сгенерировать код, необходимо выполнить этот шаг, потому что эта модель содержит блок со временем непрерывной выборки.

  6. Нажмите Ctrl+B.

    После того, как процесс генерации кода завершен, отчет генерации кода появляется.

  7. В отчете, на левой панели навигации, кликают по гиперссылке old_sf_car.c.

  8. К представлению встроенные гиперссылки трассируемости просмотрите код путем прокрутки. Эти номера строки могут отличаться от чисел, которые появляются в вашем отчете генерации кода.

  9. Кликните по гиперссылке на номере строки 190. Соответствующий элемент подсвечен.

Двусторонняя отслеживаемость для состояний и переходов

  1. В командной строке введите old_sf_car.

  2. Выберите Simulation> Model Configuration Parameters.

  3. В панели Code Generation перейдите к разделу Target selection и введите ert.tlc для системного конечного файла. Нажмите Apply. Комментарии трассируемости появляются в сгенерированном коде только для встроенных целей в реальном времени.

  4. Проверьте, что вы выбрали эти параметры на Code Generation> панель Report:

    • Create code generation report

    • Open report automatically

    • Code-to-model

    • Model-to-code

  5. Перейдите к Code Generation> панель Comments и выберите Stateflow object comments. Этот параметр включает комментарии трассируемости для элементов Stateflow.

  6. Перейдите к Code Generation> панель Interface. В разделе Software environment выберите continuous time. Нажмите Apply. Прежде, чем сгенерировать код, необходимо выполнить этот шаг, потому что эта модель содержит блок со временем непрерывной выборки.

  7. Нажмите Ctrl+B, чтобы сгенерировать файлы исходного кода и заголовочные файлы для модели old_sf_car, которая содержит график shift_logic. После того, как процесс генерации кода завершен, отчет генерации кода появляется.

  8. В отчете кликните по гиперссылке old_sf_car.c.

Просмотр результатов

  1. Чтобы видеть комментарии трассируемости, просмотрите код путем прокрутки. Эти номера строки могут отличаться от чисел, которые появляются в вашем отчете генерации кода.

  2. Кликните по гиперссылке <S5>:2 в этом комментарии трассируемости:

    /* During 'gear_state': '<S5>:2' */

    Соответствующее состояние кажется подсвеченным в графике.

  3. Кликните по гиперссылке <S5>:12 в этом комментарии трассируемости:

    /* Transition: '<S5>:12' */

    Соответствующий переход кажется подсвеченным в графике. Чтобы удалить выделение из элемента в графике, выберите Display> Remove Highlighting.

  4. Вы можете также микроэлементы в модели к строкам сгенерированного кода. В графике щелкните правой кнопкой по элементу gear_state и выберите C/C++ Code> Navigate to C/C++ Code.

    Код для того состояния кажется подсвеченным в old_sf_car.c.

  5. В графике щелкните правой кнопкой по переходу с условием [speed > up_th] и выберите C/C++ Code> Navigate to C/C++ Code.

    Код для того перехода кажется подсвеченным в old_sf_car.c.

    Примечание

    Для списка элементов Stateflow в вашей модели, которые прослеживаемы, кликните по гиперссылке Traceability Report в отчете генерации кода.

Двусторонняя отслеживаемость для таблиц переходов состояний

Этот пример показывает, как перейти двунаправлено между элементами в таблице изменения состояния и сгенерированном C/C++ и HDL-коде для трассируемости.

  1. В командной строке введите sf_cdplayer_STT. Эта модель уже сконфигурирована для трассируемости. Для получения дополнительной информации об этих настройках смотрите Трассируемость Объектов Stateflow в Сгенерированном коде (Stateflow).

  2. Нажмите Ctrl+B, чтобы сгенерировать файлы исходного кода и заголовочные файлы для модели sf_cdplayer_STT. После того, как процесс генерации кода завершен, отчет генерации кода появляется.

  3. Кликните по гиперссылке sf_cdplayer_STT.c в отчете.

  4. Чтобы видеть комментарии трассируемости, просмотрите код путем прокрутки. Показанные номера строки могут отличаться от чисел, которые появляются в вашем отчете генерации кода.

  5. Кликните по гиперссылке <S2>:58 в этом комментарии трассируемости:

    /* Entry Internal 'ON': '<S2>:58' */

    Соответствующий state'ON' кажется подсвеченным в таблице изменения состояния.

  6. Щелкните правой кнопкой по подсвеченному состоянию и выберите View state element. 'ON' состояния также кажется подсвеченным на базовой диаграмме переходов состояний.

  7. Можно проследить состояние или переход от таблицы изменения состояния до сгенерированного кода. Щелкните правой кнопкой по Standby состояния и выберите C/C++ Code> Navigate to C/C++ Code.

    Код записи для Standby состояния подсвечен в сгенерированном коде.

Двусторонняя отслеживаемость для блоков таблицы истинности

  1. В командной строке введите sf_climate_control

  2. Полные шаги 2 - 6 в Двусторонней отслеживаемости для состояний и Переходов.

  3. Чтобы создать модель, нажмите Ctrl+B.

  4. В отчете генерации кода кликните по гиперссылке sf_climate_control.c.

  5. Чтобы видеть комментарии трассируемости, просмотрите код путем прокрутки. Эти номера строки могут отличаться от чисел, которые появляются в вашем коде.

  6. Кликните по гиперссылке <S1>:1:47 в этом комментарии трассируемости:

    /* Action '3': '<S1>:1:47' */

    В Редакторе Таблицы истинности строка 3 Таблицы Действия кажется подсвеченной.

  7. Можно также проследить условие, решение или действие в таблице к строке сгенерированного кода. Например, щелкните правой кнопкой по ячейке по столбцу D2 и выберите C/C++ Code> Navigate to C/C++ Code.

    Код для того решения кажется подсвеченным в sf_climate_control.c.

    Совет

    Чтобы выбрать C/C++ Code>, Navigate to C/C++ Code для условия, решения, или действия, щелкает правой кнопкой по ячейке по строке или столбцу, который соответствует тому элементу таблицы истинности.

Двусторонняя отслеживаемость для графических функций

  1. В командной строке введите sf_clutch_enabled_subsystems.

  2. Полные шаги 2 - 6 в Двусторонней отслеживаемости для состояний и Переходов.

  3. В диалоговом окне Model Configuration Parameters перейдите к панели Solver. В разделе Solver selection выберите Fixed-step в поле Type. Нажмите Apply. Прежде, чем сгенерировать код, необходимо выполнить этот шаг, потому что модель не работает с решателями переменного шага.

  4. Чтобы создать модель, нажмите Ctrl+B.

  5. В отчете генерации кода кликните по гиперссылке sf_clutch_enabled_subsystems.c.

  6. Чтобы видеть комментарии трассируемости, просмотрите код путем прокрутки. Эти номера строки могут отличаться от чисел, которые появляются в вашем отчете генерации кода.

  7. Кликните по гиперссылке <S1>:3 в этом комментарии трассируемости:

    /* Graphical Function 'getSlipTorque': '<S1>:3' */

    В графике графическая функция getSlipTorque кажется подсвеченным.

  8. Можно проследить графическую функцию в графике к строке сгенерированного кода. Например, щелкните правой кнопкой по графической функции detectSlip и выберите C/C++ Code> Navigate to C/C++ Code.

    Код для той графической функции кажется подсвеченным в sf_clutch_enabled_subsystems.c.

Трассируемость кода к модели для Событий

  1. В командной строке введите sf_security.

  2. Полные шаги 2 - 6 в Двусторонней отслеживаемости для состояний и Переходов.

  3. Чтобы создать модель, нажмите Ctrl+B.

  4. В отчете генерации кода кликните по гиперссылке sf_security.c.

  5. Чтобы видеть этот комментарий трассируемости, просмотрите код путем прокрутки. Эти числа могут отличаться от чисел, которые появляются в вашем отчете генерации кода.

  6. Кликните по гиперссылке <S3>:56 в этом комментарии трассируемости:

    /* Event: '<S3>:56' */

    В панели Contents Model Explorer событие Sound кажется подсвеченным.

Трассируемость модели к коду для соединений

  1. В командной строке введите sf_abs.

  2. Полные шаги 2 - 6 в Двусторонней отслеживаемости для состояний и Переходов.

  3. В диалоговом окне Model Configuration Parameters перейдите к панели Solver. В разделе Solver selection выберите Fixed-step в поле Type. Нажмите Apply. Прежде, чем сгенерировать код, необходимо выполнить этот шаг, потому что модель не работает с решателями переменного шага.

  4. Чтобы создать модель, нажмите Ctrl+B.

  5. В отчете генерации кода откройте график AbsoluteValue.

  6. Щелкните правой кнопкой по левому соединению и выберите C/C++ Code> Navigate to C/C++ Code.

    Код для первого исходящего перехода того соединения кажется подсвеченным в sf_abs.c.

Формат комментариев трассируемости для элементов Stateflow

Формат комментария трассируемости зависит от типа элемента Stateflow.

Состояние

Синтаксис

/* <ActionType> '<StateName>': '<elementHyperlink>' */

Пример

/* During 'gear_state': '<S5>:2' */

Этот комментарий относится к действию during gear_state состояния, который имеет гиперссылку <S5>:2.

Переход

Синтаксис

/* Transition: '<elementHyperlink>' */

Пример

/* Transition: '<S5>:12' */

Этот комментарий относится к переходу, который имеет гиперссылку <S5>:12.

Функция MATLAB

Синтаксис

/* MATLAB Function '<Name>': '<elementHyperlink>' */

В рамках встроенного кода для функции MATLAB®, комментирует, что ссылка на отдельные строки функции имеет этот синтаксис:

/* '<elementHyperlink>' */

Примеры

/* MATLAB Function 'test_function': '<S50>:99' */
/* '<S50>:99:20' */

Первый комментарий относится к функции MATLAB под названием test_function, который имеет гиперссылку <S50>:99.

Второй комментарий относится, чтобы выровнять 20 из функции MATLAB в вашем графике.

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

Синтаксис

/* Truth Table Function '<Name>': '<elementHyperlink>' */

В рамках встроенного кода для блока Truth Table комментарии для условий, решений и действий имеют этот синтаксис:

/* Condition '#<Num>': '<elementHyperlink>' */
/* Decision 'D<Num>': '<elementHyperlink>' */
/* Action '<Num>': '<elementHyperlink>' */

<Num> является номером строки или номером столбца, который появляется в Редакторе Таблицы истинности.

Примеры

/* Truth Table Function 'truth_table_default': '<S10>:100' */
/* Condition '#1': '<S10>:100:8' */
/* Decision 'D1': '<S10>:100:16' */
/* Action '1': '<S10>:100:31' */

Первый комментарий относится к блоку Truth Table под названием truth_table_default, который имеет гиперссылку <S10>:100.

Другие три комментария обращаются к элементам того блока Truth Table. Каждое условие, решение и действие в блоке Truth Table имеют уникальную гиперссылку.

Функция таблицы истинности

Для синтаксиса и примеров, смотрите Блок Таблицы истинности.

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

Синтаксис

/* Graphical Function '<Name>': '<elementHyperlink>' */

Пример

/* Graphical Function 'hello': '<S1>:123' */

Этот комментарий относится к графической функции под названием hello, который имеет гиперссылку <S1>:123.

Функция Simulink

Синтаксис

/* Simulink Function '<Name>': '<elementHyperlink>' */

Пример

/* Simulink Function 'simfcn': '<S4>:10' */

Этот комментарий отсылает к функции с именем Simulink® simfcn, который имеет гиперссылку <S4>:10.

Событие

Синтаксис

/* Event: '<elementHyperlink>' */

Пример

/* Event: '<S3>:33' */

Этот комментарий относится к событию, которое имеет гиперссылку <S3>:33.

Похожие темы