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

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

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

  • Модель-к-коду: Проследите элементы модели в редакторе Simulink до соответствующих линий в сгенерированном коде, щелкнув правой кнопкой мыши элемент модели и перейдя к сгенерированному коду. Эта трассируемость не поддерживается для некоторых элементов Stateflow в представлении кода.

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

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

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

  1. Откройте модель old_sf_car.

  2. Сконфигурируйте модель как цель ERT.

  3. На панели Code Generation > Report выберите следующие параметры конфигурации модели:

  4. Выберите Code Generation > Comments > Stateflow object comments параметр конфигурации. Этот параметр включает комментарии трассируемости для элементов Stateflow.

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

  6. На вкладке C Code нажмите Build.

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

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

  8. Чтобы просмотреть встроенные гиперссылки трассируемости, прокрутите код. Эти номера линий могут отличаться от номеров, отображаемых в отчете генерации кода.

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

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

  1. Откройте модель old_sf_car .

  2. Выполните шаги 2-5 в Inline Traceability для элементов Stateflow.

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

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

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

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

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

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

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

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

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

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

  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. Эта модель уже сконфигурирована для трассируемости.

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

  3. Нажмите на sf_cdplayer_STT.c гиперссылка в отчете.

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

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

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

    Соответствующее состояние 'ON' отображается в таблице переходов состояний.

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

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

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

  1. Откройте модель sf_climate_control.

  2. Выполните шаги 2-5 в Inline Traceability для элементов Stateflow.

  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-5 в Inline Traceability для элементов Stateflow.

  3. В диалоговом окне Параметров конфигурации перейдите к панели 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.

Трассируемость Code-to-Model для событий

  1. Откройте модель sf_security.

  2. Выполните шаги 2-5 в Inline Traceability для элементов Stateflow.

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

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

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

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

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

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

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

  1. Откройте модель ex_if_else_SF.

  2. Выполните шаги 2-5 в Inline Traceability для элементов Stateflow.

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

  4. В отчете о генерации кода откройте диаграмму Stateflow с именем Chart.

  5. Щелкните правой кнопкой мыши верхний левый узел соединения и выберите C/C++ Code > Navigate to C/C++ Code.

    Код для первого исходящего перехода этого соединения появляется подсвеченным в ex_if_else_SF.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>' */

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

/* 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_default, который имеет гиперссылку <S10>:100.

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

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

Синтаксис и примеры см. в разделе Truth Table Block.

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

Синтаксис

/* 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.

Похожие темы