exponenta event banner

Укажите размер данных потока состояний

В диаграмме Stateflow ® в модели Simulink ® размер объекта данных задается следующим образом:

  • Установка свойства Size, как описано в разделе Set Data Properties. Дополнительные сведения см. в разделе Размер.

  • Установка Props.Array.Size через API Stateflow. Дополнительные сведения см. в разделе Stateflow.Data.

Для задания размера используйте один из следующих методов:

  • Наследовать размер из сигнала Simulink или из его определения в диаграмме Stateflow.

  • Введите числовое значение.

  • Введите выражение MATLAB ®.

Поддержка каждого метода определения размеров зависит от объема данных.

Объем данныхМетод определения размеров данных
Наследовать размерИспользовать числовые значенияИспользование выражений MATLAB
МестныйТолько в диаграммах, использующих MATLAB в качестве языка действийДаДа
ПостоянныйНетДаДа
ПараметрДаДаДа
ВходДаДаДа
ПродукцияДаДаДа
Память хранилища данныхДаНетНет

Наследовать размер данных

Чтобы настроить объект данных Stateflow для наследования его размера из соответствующего сигнала Simulink или его определения в диаграмме, укажите размер –1. После моделирования или построения модели наследуемый размер данных можно найти в обозревателе моделей в столбце Скомпилированный размер.

Примечание

Диаграммы не могут наследовать размеры данных из сигналов на основе кадров Simulink. Дополнительные сведения см. в разделе Концепции на основе образцов и кадров (панель системных инструментов DSP).

Задание размера данных с помощью числовых значений

При указании размера данных путем ввода числового значения следуйте следующим инструкциям.

  • Для задания скаляра введите 1 или оставьте поле пустым.

  • Чтобы указать n-по-1 вектор столбца, введите n.

  • Задание 1-по-n вектор строки, введите [1 n].

  • Чтобы указать nоколо-m матрица, введите [n m].

  • Чтобы указать n-мерный массив, введите [d1 d2dn], где di - размер i измерение.

В диаграммах, использующих C в качестве языка действий, одномерные векторы Stateflow совместимы с векторами строк или столбцов Simulink одинакового размера. Например, входные данные Stateflow размера 3 совместим с вектором строки Simulink размера [1 3] или вектор столбца размера [3 1].

Задание размера данных с помощью выражений

Можно указать размер данных, введя выражение MATLAB, которое вычисляет одну из спецификаций размера, описанных в разделе Задание размера данных с помощью числовых значений. Эти руководящие принципы также применяются:

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

  • Выражения, указывающие размер размера, должны вычисляться как положительное целое значение.

  • Выражения могут объединять только совместимые значения. Например, целые числа могут быть объединены только с другими целыми числами того же типа или со скалярными двойниками.

  • Если выражение содержит перечисляемое значение, необходимо включить префикс типа для согласованности с правилами именования MATLAB. Например, Colors.Red является действительным, но Red имеет значение not. Дополнительные сведения см. в разделе Нотация для перечисляемых значений.

  • Нельзя использовать выражение MATLAB для:

    • Укажите размер наследуемых данных. Не использовать выражения, вычисляющие -1.

    • Укажите размер входных данных Stateflow, которые принимают данные на основе кадров из Simulink. Дополнительные сведения см. в разделе Концепции на основе образцов и кадров (панель системных инструментов DSP).

Примеры допустимых выражений размера данных

Эти примеры являются допустимыми выражениями MATLAB для указания размера данных на диаграмме:

  • K+3, где K является константой или параметром Stateflow на уровне диаграммы.

  • N/2, где N является переменной в базовой рабочей области MATLAB.

  • [P Q], где P и Q - параметры Simulink. Диаграммы, использующие C в качестве языка действий, распространяют эти символьные размеры по всей модели. См. раздел Распространение символьных размеров данных потока состояний.

  • 2*Colors.Red, где Red является перечисляемым значением типа Colors.

  • size(u), где u является переменной уровня диаграммы. Функция size позволяет указать размер одного объекта данных на основе размера другого объекта данных. Этот тип выражения полезен в библиотечной диаграмме, которая используется повторно с данными разных размеров. В других ситуациях можно улучшить четкость диаграммы, избегая size и определение размера данных напрямую.

  • floor((a*b)/c), где a и c скаляры типа int16 и b является скаляром типа double.

  • [fi(2,1,16,2) fi(4,1,16,2)]. Это выражение указывает размер данных [2 4] путем вызова функции fi (Конструктор фиксированных точек). Эта функция возвращает подписанные числа с фиксированной точкой с длиной слова 16 и длиной дроби 2.

Избегайте переменных, которые могут привести к конфликтам имен

Если модель содержит несколько переменных с одинаковыми именами, для задания размера используется переменная с наивысшим приоритетом.

ПриоритетПеременная
1Параметр маски
2Переменная рабочего пространства модели
3Базовая переменная рабочей области MATLAB
4Данные о потоке состояний

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

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

При выборе параметра конфигурации модели Разрешить спецификацию символьных размеров диаграммы, использующие C в качестве языка действий, могут распространять символьные размеры данных Stateflow по всей модели. При использовании Embedded Coder ® символьные размеры входят в созданный код для целей ERT. Укажите размер символьных размеров с помощью параметров Simulink с одним из следующих классов хранения:

  • Define или ImportedDefine с указанным файлом заголовка

  • CompilerFlag

  • Пользовательский пользовательский класс хранения, определяющий данные как макрос в указанном файле заголовка

Дополнительные сведения см. в разделах Разрешение спецификации символьных измерений (Simulink) и Реализация вариантов измерений для размеров массива в сгенерированном коде (Embedded Coder).

Диаграммы потока состояний, использующие MATLAB в качестве языка действий, не поддерживают распространение символьных измерений. Чтобы задать размер данных с помощью параметров Simulink, снимите флажок Разрешить спецификацию символьных размеров (Allow symbolic dimension specification).

См. также

| (Конструктор фиксированных точек)

Связанные темы