Stateflow® графики в Simulink® модели имеют свойство языка действий, которое задает синтаксис для действий состояния и перехода. Значок в левом нижнем углу холста графика указывает язык действий для графика.
MATLAB® как язык действий.
C как язык действия.
Язык действий графика можно изменить в Action Language окне диалогового окна Свойства графика. Для получения дополнительной информации смотрите Различия между MATLAB и C как синтаксис языка действий.
MATLAB является синтаксисом языка действий по умолчанию для новых диаграмм Stateflow. Чтобы создать график, которая использует C в качестве языка действий, введите:
sfnew -C
Чтобы изменить язык действий по умолчанию для новых графиков, используйте эти команды.
Команда | Результат |
---|---|
sfpref('ActionLanguage','MATLAB') | Все новые графики имеют MATLAB в качестве языка действий, если иное не указано в sfnew . |
sfpref('ActionLanguage','C') | Все новые графики имеют C в качестве языка действий, если иное не указано в sfnew . |
Для получения дополнительной информации смотрите sfpref
.
Диаграммы Stateflow, которые используют MATLAB в качестве языка действий, автоматически исправляют общие конструкции C в синтаксис MATLAB:
Инкрементные и декрементные операции, такие как a++
и a--
. Для примера, a++
изменяется на a = a+1
.
Операции назначения, такие как a += b
, a –= b
, a *= b
, и a /= b
. Для примера, a += b
изменяется на a = a+b
.
Оценочные операции, такие как a != b
и !a
. Для примера, a != b
изменяется на a ~= b
.
Маркеры комментариев //
и /* */
изменяются на %
.
Чтобы отключить этот выбор, можно использовать sfpref
функцию и следующую команду:
sfpref('EnableLabelAutoCorrectionForMAL',0)
sfpref
.Для непустых графиков, после изменения свойства языка действий с C на MATLAB, в верхней части графика появляется уведомление. Уведомление предоставляет опцию преобразовать часть синтаксиса C в синтаксис MATLAB. В уведомлении щелкните ссылку, чтобы получить синтаксис преобразования Stateflow в графике. Синтаксисы C, которые преобразуются, включают:
Нулевая индексация.
Инкрементные и декрементные операции, такие как a++
и a--
. Для примера, a++
изменяется на a = a+1
.
Операции назначения, такие как a += b
, a –= b
, a *= b
, и a /= b
. Для примера, a += b
изменяется на a = a+b
.
Двоичные операции, такие как a %% b
, a >> b
, и a << b
. Для примера, a %% b
изменяется на rem(a,b)
.
Побитовые операции, такие как a ^ b
, a & b
, и a | b
. Например, если выбран Enable C-bit operations свойства графика, то a ^ b
изменяется на bitxor(a,b)
.
Маркеры комментария к стилю С. Для примера, //
и /* */
изменяются на %
.
Если график содержит конструкции C, которые не могут быть преобразованы в MATLAB, Stateflow показывает сообщение в диалоговом окне. Щелкните ссылку предупреждений, чтобы отобразить предупреждения в Diagnostic Viewer. Выберите, следует ли продолжать преобразование поддерживаемого синтаксиса. Конструкции C, не преобразованные в MATLAB, включают:
Явные приведения типов с cast
и type
Такие операторы, как &
, *
и :=
Пользовательские данные
Доступ к переменным рабочей области с помощью ml
оператор
Функции, не поддерживаемые в генерации кода
Шестнадцатеричное и одинарная точность обозначения
Контекстно-зависимые константы
Используйте уникальные имена для данных на графике
Используйте уникальные имена для функций на графике
Включите префикс типа для идентификаторов перечисленных значений
Используйте формат MATLAB для комментариев
Используйте индексацию на основе одного для векторов и матриц
Используйте круглые скобки вместо скобок для индекса в векторы и матрицы
Не используйте логику потока управления в действиях условия и переходных действиях
Не используйте переходные действия в графических функциях
Заключайте переходные действия в скобки
Не объявляйте глобальные или постоянные переменные в состояниях активности
Чтобы сгенерировать код из вашей модели, используйте функции языка MATLAB, поддерживаемые для генерации кода