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

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

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

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

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

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

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

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

    openExample('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. Откройте модель.

    openExample('old_sf_car')
  2. Полные шаги 2 - 5 во Встроенной Трассируемости для Элементов 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. Откройте модель. Эта модель уже сконфигурирована для трассируемости.

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

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

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

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

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

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

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

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

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

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

    openExample('sf_climate_control')
  2. Полные шаги 2 - 5 во Встроенной Трассируемости для Элементов 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. Откройте модель.

    openExample("stateflow/ClutchWithEnabledSubsystemsExample")
  2. Полные шаги 2 - 5 во Встроенной Трассируемости для Элементов Stateflow.

  3. В диалоговом окне 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. Откройте модель.

    openExample('sf_security')
  2. Полные шаги 2 - 5 во Встроенной Трассируемости для Элементов Stateflow.

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

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

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

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

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

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

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

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

    openExample('ex_if_else_SF')
  2. Полные шаги 2 - 5 во Встроенной Трассируемости для Элементов 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>' */

В рамках встроенного кода для блока 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.

Похожие темы