Изменение языка действий для графика

Stateflow® графики в Simulink® модели имеют свойство языка действий, которое задает синтаксис для действий состояния и перехода. Значок в левом нижнем углу холста графика указывает язык действий для графика.

  • MATLAB® как язык действий.

  • C как язык действия.

Язык действий графика можно изменить в Action Language окне диалогового окна Свойства графика. Для получения дополнительной информации смотрите Различия между MATLAB и C как синтаксис языка действий.

Изменение языка действий по умолчанию

MATLAB является синтаксисом языка действий по умолчанию для новых диаграмм Stateflow. Чтобы создать график, которая использует C в качестве языка действий, введите:

sfnew -C

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

КомандаРезультат
sfpref('ActionLanguage','MATLAB')Все новые графики имеют MATLAB в качестве языка действий, если иное не указано в sfnew.
sfpref('ActionLanguage','C')Все новые графики имеют C в качестве языка действий, если иное не указано в sfnew.

Для получения дополнительной информации смотрите sfpref.

Автоматическая коррекция при использовании MATLAB в качестве языка действий

Диаграммы 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, в верхней части графика появляется уведомление. Уведомление предоставляет опцию преобразовать часть синтаксиса 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 для комментариев

 Используйте индексацию на основе одного для векторов и матриц

 Используйте круглые скобки вместо скобок для индекса в векторы и матрицы

 Не используйте логику потока управления в действиях условия и переходных действиях

 Не используйте переходные действия в графических функциях

 Заключайте переходные действия в скобки

 Не объявляйте глобальные или постоянные переменные в состояниях активности

 Чтобы сгенерировать код из вашей модели, используйте функции языка MATLAB, поддерживаемые для генерации кода

 Присвойте начальное значение локальным и выходным данным