Диаграммы Stateflow ® в моделях Simulink ® имеют свойство языка действий, определяющее синтаксис действий состояния и перехода. Значок в левом нижнем углу холста диаграммы указывает язык действий для диаграммы.
MATLAB ® в качестве языка действий.
C как язык действий.
Язык действий диаграммы можно изменить в поле Язык действий диалогового окна Свойства диаграммы. Дополнительные сведения см. в разделе Различия между MATLAB и C как синтаксисом языка действий.
MATLAB - это синтаксис языка действий по умолчанию для новых диаграмм Stateflow. Чтобы создать диаграмму, использующую C в качестве языка действий, введите:
sfnew -CЧтобы изменить язык действий по умолчанию для новых диаграмм, используйте эти команды.
| Команда | Результат |
|---|---|
sfpref('ActionLanguage','MATLAB') | Все созданные новые диаграммы имеют MATLAB в качестве языка действий, если не указано иное в sfnew. |
sfpref('ActionLanguage','C') | Все созданные новые диаграммы имеют C в качестве языка действий, если не указано иное в sfnew. |
Дополнительные сведения см. в разделе sfpref.
Диаграммы потока состояний, использующие 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. Например, // и /* */ изменить на %.
Если диаграмма содержит конструкции C, которые не могут быть преобразованы в MATLAB, Stateflow отображает сообщение в диалоговом окне. Щелкните ссылку Предупреждения, чтобы отобразить предупреждения в Средстве просмотра диагностики. Укажите, следует ли продолжать преобразование поддерживаемого синтаксиса. Конструкции C, не преобразованные в MATLAB, включают:
Явные слепки типа с cast и type
Операторы, такие как &, * и :=
Пользовательские данные
Доступ к переменным рабочей области с помощью ml оператор
Функции, не поддерживаемые при создании кода
Шестнадцатеричная и точная нотация
Контекстно-зависимые константы
Использовать уникальные имена для данных в диаграмме
Использовать уникальные имена для функций в диаграмме
Включить префикс типа для идентификаторов перечисляемых значений
Использование формата MATLAB для комментариев
Использование одноосновного индексирования для векторов и матриц
Используйте скобки вместо скобок для индексирования в векторы и матрицы
Не использовать логику потока управления в действиях условий и переходах
Не использовать действия перехода в графических функциях
Заключить действия перехода с раскосами
Не объявляйте глобальные или постоянные переменные в действиях состояния
Для создания кода из модели используйте языковые функции MATLAB, поддерживаемые для создания кода