Графики Stateflow® в моделях Simulink® имеют свойство языка действия, которое задает операции, которые можно использовать в действиях перехода и состоянии. Свойства языка:
MATLAB® как язык действия.
C как язык действия.
Для получения дополнительной информации смотрите Различия Между MATLAB и C как Синтаксис языка Действия.
Эта таблица суммирует интерпретацию всех бинарных операций в диаграммах Stateflow согласно их порядку очередности (0 = самый высокий, 10 = самый низкий). Бинарные операции левоассоциативны так, чтобы в любом выражении операторы с тем же приоритетом были оценены слева направо. Порядок оценки для других операций не задан. Например, в этом присвоении
A = f() > g();
f()
и g()
не задан. Для более предсказуемых результатов это - хорошая практика кодирования, чтобы разделить выражения, которые зависят от порядка оценки в несколько операторов.
Операция | Приоритет | MATLAB как язык действия | C как язык действия |
---|---|---|---|
0 | Степень. | Степень. Включите эту операцию путем очистки Разрешения свойства диаграммы операций C-bit. Смотрите Задают Свойства для диаграмм Stateflow. | |
1 | Умножение. | Умножение. | |
1 | Деление. | Деление. | |
1 | Остаток. Операнды нецелого числа сначала брошены к целым числам. | ||
2 | Сложение. | Сложение. | |
2 | Вычитание. | Вычитание. | |
3 | Не поддерживаемый. Используйте функцию | Переключите | |
3 | Не поддерживаемый. Используйте функцию | Переключите | |
4 | Сравнение, больше, чем. | Сравнение, больше, чем. | |
| 4 | Сравнение, меньше, чем. | Сравнение, меньше, чем. |
| 4 | Сравнение, больше, чем или равный. | Сравнение, больше, чем или равный. |
| 4 | Сравнение, меньше чем или равное. | Сравнение, меньше чем или равное. |
| 5 | Сравнение, равное. | Сравнение, равное. |
| 5 | Сравнение, не равное. | Сравнение, не равное. |
| 5 | Не поддерживаемый. Используйте операцию | Сравнение, не равное. |
| 5 | Не поддерживаемый. Используйте операцию | Сравнение, не равное. |
6 | Логический AND. Для поразрядного AND используйте функцию |
Смотрите задают свойства для диаграмм Stateflow. | |
7 | Не поддерживаемый. Для поразрядного XOR используйте функцию | Поразрядный XOR (значение по умолчанию). Операнды нецелого числа сначала брошены к целым числам. Включите эту операцию путем выбора Разрешения свойства диаграммы операций C-bit. Смотрите Задают Свойства для диаграмм Stateflow. | |
8 | Логический OR. Для битового "ИЛИ" используйте функцию |
Смотрите задают свойства для диаграмм Stateflow. | |
9 | Логический AND. | Логический AND. | |
10 | Логический OR. | Логический OR. |
Эта таблица суммирует интерпретацию всех унарных операций и действий в диаграммах Stateflow. Унарные операции:
Имейте более высокий приоритет, чем бинарные операторы.
Правоассоциативны так, чтобы в любом выражении они были оценены справа налево.
Операция | MATLAB как язык действия | C как язык действия |
---|---|---|
| Логический НЕТ. Для битового "НЕ" используйте функцию |
Смотрите задают свойства для диаграмм Stateflow. |
| Не поддерживаемый. Используйте операцию | Логический НЕТ. |
| Отрицательный. | Отрицательный. |
| Не поддерживаемый. Используйте выражение | Шаг. Эквивалентный |
| Не поддерживаемый. Используйте выражение | Декремент. Эквивалентный |
Эта таблица суммирует интерпретацию операций присвоения в диаграммах Stateflow.
Операция | MATLAB как язык действия | C как язык действия |
---|---|---|
| Простое присвоение. | Простое присвоение. |
| Не поддерживаемый. Используйте операции броска типа, чтобы заменить правила продвижения фиксированной точки. Смотрите Операции Броска Типа. | Присвоение чисел фиксированной точки. Смотрите Продвижение Фиксированной точки Переопределения в Графиках C. |
| Не поддерживаемый. Используйте выражение | Эквивалентный |
| Не поддерживаемый. Используйте выражение | Эквивалентный |
| Не поддерживаемый. Используйте выражение | Эквивалентный |
| Не поддерживаемый. Используйте выражение | Эквивалентный |
| Не поддерживаемый. Используйте выражение | Эквивалентный |
| Не поддерживаемый. Используйте выражение | Эквивалентный |
| Не поддерживаемый. Используйте выражение | Эквивалентный |
Эта таблица суммирует интерпретацию указателя и операции адреса в диаграммах Stateflow.
Операция | MATLAB как язык действия | C как язык действия |
---|---|---|
| Не поддерживаемый. | Операция Address. Используйте с переменными Stateflow и пользовательским кодом. |
| Не поддерживаемый. | Операция Pointer. Используйте только с переменными пользовательского кода. |
Например, модель sf_bus_demo содержит пользовательскую функцию C, которая берет указатели в качестве аргументов. Когда график вызывает функцию пользовательского кода, он использует операцию &
, чтобы передать данные Stateflow адресом. Для получения дополнительной информации смотрите, Интегрируют Пользовательские Структуры в диаграммах Stateflow.
Чтобы преобразовать значение одного типа к значению другого типа, используйте операции броска типа. Можно бросить данные к явному типу или к типу другой переменной.
Чтобы бросить числовое выражение к явному типу данных, используйте функцию преобразования типов MATLAB формы:
<type_fun>(expression)
<type_fun>
является функцией преобразования типов, которая может быть double
, single
, int32
, int16
, int8
, uint32
, uint16
или uint8
. В графиках, которые используют C в качестве языка действия, <type_fun>
может также быть boolean
. Например, этот оператор бросает выражение x+3
к 16-битному беззнаковому целому и присваивает его значение данным y
:
y = uint16(x+3)
Также в графиках, которые используют MATLAB в качестве языка действия, можно использовать функцию cast
с ключевым словом типа <type_key>
:
cast(expression,<type_key>)
Ключевые слова типа включают 'double'
, 'single'
, 'int32'
, 'int16'
, 'int8'
, 'uint32'
, 'uint16'
и 'uint8'
. Например, как в предыдущем примере, этот оператор бросает выражение x+3
к 16-битному беззнаковому целому и присваивает его y
:
y = cast(x+3,'uint16')
Чтобы сделать преобразование типа легче, можно преобразовать тип числового выражения на основе типов других данных.
В графиках, которые используют MATLAB в качестве языка действия, вызовите функцию cast
с ключевым словом 'like'
. Например, этот оператор преобразовывает значение x+3
к тому же типу как те из данных z
и присваивает его y
:
y = cast(x+3,'like',z)
z
могут иметь любой приемлемый тип Stateflow.В графиках, которые используют C в качестве языка действия, оператор type
возвращает тип существующих данных Stateflow. Используйте это возвращаемое значение вместо явного типа в операции cast
. Например, этот оператор преобразовывает значение x+3
к тому же типу как те из данных z
и присваивает его y
:
cast(x+3,type(z))
Если у вас есть Embedded Coder® или Simulink Coder™, можно сконфигурировать генератор кода, чтобы применить заменяющую библиотеку кода (CRL) во время генерации кода. Генератор кода изменяет код, который он генерирует для операций, чтобы соответствовать требованиям к приложению. С Embedded Coder можно разработать и применить заменяющие библиотеки пользовательского кода.
Записи операции заменяющей библиотеки кода могут задать операнд интегральной или фиксированной точки и шаблоны результата. Можно использовать записи операции для этих операций:
Сложение +
Вычитание -
Умножение *
Деление /
Например, в этом выражении, можно заменить оператор сложения +
на целевую реализацию, если u1
, u2
и y
имеют типы, которые разрешают соответствие с записью сложения в заменяющей библиотеке кода:
y = u1+u2
C строят диаграмму записи оператора предела семантики, соответствующей, потому что график использует целевой целочисленный размер в качестве своего промежуточного типа в арифметических выражениях. Например, это арифметическое выражение вычисляет промежуточное сложение в целевое целое число:
y = (u1 + u2) % 3
Для получения дополнительной информации об использовании заменяющих библиотек кода, которые обеспечивает MathWorks®, смотрите то, Что Замена Кода? (Simulink Coder) и Заменяющие Библиотеки Кода (Simulink Coder). Для получения информации о разработке заменяющих библиотек пользовательского кода смотрите то, Что Заменяющая Индивидуальная настройка Кода? (Embedded Coder) и Код Можно Заменить Из Моделей Simulink (Embedded Coder).