exponenta event banner

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

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

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

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

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

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

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

sfnew -C

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

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

Дополнительные сведения см. в разделе sfpref.

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

Диаграммы потока состояний, использующие 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. Например, // и /* */ изменить на %.

Если диаграмма содержит конструкции C, которые не могут быть преобразованы в MATLAB, Stateflow отображает сообщение в диалоговом окне. Щелкните ссылку Предупреждения, чтобы отобразить предупреждения в Средстве просмотра диагностики. Укажите, следует ли продолжать преобразование поддерживаемого синтаксиса. Конструкции C, не преобразованные в MATLAB, включают:

  • Явные слепки типа с cast и type

  • Операторы, такие как &, * и :=

  • Пользовательские данные

  • Доступ к переменным рабочей области с помощью ml оператор

  • Функции, не поддерживаемые при создании кода

  • Шестнадцатеричная и точная нотация

  • Контекстно-зависимые константы

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

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

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

 Включить префикс типа для идентификаторов перечисляемых значений

 Использование формата MATLAB для комментариев

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

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

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

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

 Заключить действия перехода с раскосами

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

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

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