Memory

Выход входных данных из предыдущего временного шага

  • Библиотека:
  • Simulink/Дискретный

    HDL-кодер/дискретный

  • Memory block

Описание

Блок Memory удерживает и задерживает свой вход на один большой временной шаг интегрирования. Когда он помещается в подсистему итератора, он удерживает и задерживает его вход на одну итерацию. Этот блок принимает непрерывные и дискретные сигналы. Блок принимает один вход и генерирует один выход. Каждый сигнал может быть скалярным, векторным, матричным или N-D массивом. Если вход не нескаляром, блок удерживает и задерживает все элементы входа на один временной шаг.

Вы задаете выход блока для первого временного шага, используя параметр Initial condition. Тщательный выбор этого параметра может минимизировать нежелательное выходное поведение. Однако вы не можете задать шаг расчета. Шаг расчета этого блока зависит от типа используемого решателя, или можно задать, чтобы наследовать его. Параметр Inherit sample time определяет, наследуется ли шаг расчета или основывается на решателе.

Совет

Избегайте использования блока Memory, когда оба эти условия верны:

  • Ваша модель использует решатель с переменной степенью ode15s или ode113.

  • Вход в блок изменяется во время симуляции.

Когда блок Memory наследует дискретный шаг расчета, блок аналогичен блоку Unit Delay. Однако блок Memory не поддерживает логгирование состояния. Если логгирование окончательного состояния необходимо, используйте вместо этого блок Unit Delay.

Сравнение с аналогичными блоками

Блоки Memory, Unit Delay и Zero-Order Hold обеспечивают сходную функциональность, но имеют различные возможности. Кроме того, назначение каждого блока отличается.

В этой таблице показано рекомендуемое использование для каждого блока.

БлокНазначение блокаСправочные примеры
Unit DelayРеализуйте задержку с помощью дискретного шага расчета, который вы задаете. Блок принимает и выводит сигналы с дискретным шагом расчета.
ПамятьРеализуйте задержку на один большой временной шаг интегрирования. В идеале блок принимает непрерывные (или фиксированные в незначительном временном шаге) сигналы и выводит сигнал, который фиксируется в незначительном временном шаге.
Zero-Order HoldПреобразуйте входной сигнал с непрерывного шага расчета в выход сигнал с дискретного шага расчета.

Каждый блок имеет следующие возможности.

СпособностьПамятьUnit DelayУдержание нулевого порядка
Спецификация начального условияДаДаНет, потому что выход в момент t = 0, должен совпадать с входным значением.
Спецификация шага расчетаНет, потому что блок может наследовать только шаг расчета от ведущего блока или решателя, используемого для всей модели.ДаДа
Поддержка основанных на кадрах сигналовНет ДаДа
Поддержка логгирования состоянийНетДаНет

Поддержка шины

Блок Memory является блоком с поддержкой шины. Входной вход может быть виртуальным или невиртуальным шинным сигналом, удовлетворяющим следующим ограничениям:

  • Initial condition должны быть нулем, ненулевым скаляром или конечной числовой структурой.

  • Если Initial condition меньше нуля или структуры, и вы задаете State name, вход не может быть виртуальной шиной.

  • Если Initial condition является ненулевым скаляром, вы не можете задать State name.

Для получения информации об указании структуры начальных условий см. раздел «Определение начальных условий для элементов шины».

Все сигналы в невиртуальной шине, вводимой в блок Memory, должны иметь одинаковый шаг расчета, даже если элементы связанного объекта шины задают унаследованные шаги расчета. Можно использовать блок Rate Transition, чтобы изменить шаг расчета отдельного сигнала или всех сигналов в шине. Смотрите Modify Sample Times для Невиртуальных Шин и Блоков с поддержкой Шины для получения дополнительной информации.

Можно использовать массив шин в качестве входного сигнала к блоку Memory. Можно задать параметр Initial condition с:

  • Значение 0. В этом случае все отдельные сигналы в массиве шин используют начальное значение 0.

  • Массив структур, который задает начальное условие для каждого из отдельных сигналов в массиве шин.

  • Одна скалярная структура, которая задает начальное условие для каждого из элементов, заданных типом шины. Используйте этот метод, чтобы задать те же начальные условия для каждой из шин в массиве.

Для получения дополнительной информации об определении и использовании массива шин смотрите Group Nonvirtual Buses in Arrays of Buses.

Порты

Вход

расширить все

Входной сигнал, заданный как скаляр, вектор, матрица или N-D массив. Вход может быть непрерывным или дискретным, содержащим вещественные или комплексные числа любого типа данных Simulink® поддерживает.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus

Выход

расширить все

Выход является входом от предыдущего временного шага.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | Boolean | fixed point | enumerated | bus

Параметры

расширить все

Главный

Задайте выход на начальном шаге интегрирования. Это значение должно быть 0, если вы не используете встроенный тип входных данных.

Программное использование

Параметры блоков: InitialCondition
Тип: Вектор символов
Значения: скаляр | вектор
По умолчанию: '0'

Выберите для наследования шага расчета из ведущего блока:

  • Если ведущий блок имеет дискретный шаг расчета, блок наследует шаг расчета.

  • Если ведущий блок имеет непрерывный шаг расчета, установка этого флажка не влияет. Значение шага расчета зависит от типа решателя, используемого для симуляции модели.

Когда этот флажок снят, шаг расчета блока зависит от типа решателя, используемого для симуляции модели:

  • Если решатель является решателем с переменным шагом, шаг расчета блока непрерывен, но фиксировано в незначительном временном шаге: [0, 1].

  • Если решатель является решателем с фиксированным шагом, [0, 1] Шаг расчета преобразует в размер шага решателя после распространения шага расчета.

Программное использование

Параметры блоков: InheritSampleTime
Тип: Вектор символов
Значения: 'off' | 'on'
По умолчанию: 'off'

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

Установка этого флажка может привести к изменению упорядоченного расположения состояний в модели при использовании функций linmod, dlinmod, или trim. Чтобы извлечь это новое упорядоченное расположение состояний, используйте следующие команды.

Сначала скомпилируйте модель с помощью следующей команды, где model - имя модели Simulink.

    [sizes, x0, x_str] = model([],[],[],'lincompile'); 

Затем завершите компиляцию с помощью этой команды.

  model([],[],[],'term'); 

Выходной аргумент, x_str, который является массивом ячеек состояний в модели Simulink, содержит новое упорядоченное расположение состояний. При передаче вектора состояний в качестве входа в linmod, dlinmod, или trim функции, вектор состояния должен использовать это новое упорядоченное расположение состояний.

Программное использование

Параметры блоков: LinearizeMemory
Тип: Вектор символов
Значения: 'off' | 'on'
По умолчанию: 'off'

Выберите для линеаризации блока Memory к модулю задержке, когда блок Memory управляется сигналом с дискретного шага расчета.

Программное использование

Параметры блоков: LinearizeAsDelay
Тип: Вектор символов
Значения: 'off' | 'on'
По умолчанию: 'off'

Атрибуты состояния

Используйте этот параметр, чтобы присвоить уникальное имя состоянию блока. Значение по умолчанию является ' '. Когда это поле не заполнено, имя не присваивается. При использовании этого параметра запоминайте следующие факторы:

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

  • Имя состояния применяется только к выбранному блоку.

Этот параметр включает State name must resolve to Simulink signal object при нажатии кнопки Apply.

Для получения дополнительной информации смотрите Строение Генерации кода C для Элементов Интерфейса Модели (Simulink Coder).

Программное использование

Параметры блоков: StateName
Тип: Вектор символов
Значения: уникальное имя
По умолчанию: ''

Установите этот флажок, чтобы потребовать, чтобы имя состояния разрешилось к объекту сигнала Simulink.

Зависимости

Чтобы включить этот параметр, задайте значение для State name. Этот параметр появляется только, если вы задаете значение параметра конфигурации модели Signal resolution отличное от None.

Установка этого флажка отключает Code generation storage class.

Программное использование

Параметры блоков: StateMustResolveToSignalObject
Тип: Вектор символов
Значения: 'off' | 'on'
По умолчанию: 'off'

Выберите пользовательский пакет класса памяти путем выбора класса объекта сигнала, заданного целевым пакетом. Например, применить пользовательские классы памяти из встроенного пакета mpt, выберите mpt.Signal. Если вы не используете цель генерации кода на основе ERT с Embedded Coder®пользовательские классы памяти не влияют на сгенерированный код.

Чтобы использовать пакет класса памяти, отличный от пакета Simulink, необходимо загрузить пакет в словарь Embedded Coder Dictionary модели. Смотрите Загрузку пакетов класса памяти в словарь встраиваемого кодера (Embedded Coder).

Для получения информации о конфигурировании данных моделей с помощью классов памяти смотрите Строение Генерации кода C для Элементов Интерфейса Модели (Embedded Coder). Для получения дополнительной информации о пользовательских классах классов памяти раздел Организация данных в структуры в Сгенерированном коде (Embedded Coder).

Программное использование

Параметры блоков: StateSignalObject
Тип: Вектор символов
Значения: 'Simulink.Signal' | '<StorageClass.PackageName>'
По умолчанию: 'Simulink.Signal'

Выберите класс памяти состояний для генерации кода.

Используйте Signal object class, чтобы выбрать пользовательские классы памяти из пакета, отличного от Simulink.

Зависимости

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

Программное использование

Параметры блоков: StateStorageClass
Тип: Вектор символов
Значения: 'Auto' | 'Model default' | 'ExportedGlobal' | 'ImportedExtern' | 'ImportedExternPointer' | 'Custom' | ...
По умолчанию: 'Auto'

Укажите классификатор типа хранилища, например const или volatile.

Примечание

TypeQualifier будет удалено в следующем релизе. Чтобы применить проверку типа хранилища к данным, используйте пользовательские классы памяти и разделы памяти. Если вы не используете цель генерации кода на основе ERT с Embedded Coder, пользовательские классы памяти и разделы памяти не влияют на сгенерированный код.

Во время симуляции блок использует следующие значения:

  • Начальное значение объекта сигнала, которому разрешено имя состояния

  • Минимальное и Максимальное значения объекта сигнала

Для получения дополнительной информации см. раздел Объекты данных.

Зависимости

Чтобы включить этот параметр, установите Code generation storage class равным ExportedGlobal, ImportedExtern, ImportedExternPointer, или Model default. Этот параметр скрыт, если вы ранее не установили его значение.

Программное использование

Параметры блоков: RTWStateStorageTypeQualifier
Тип: Вектор символов
Значения: '' | 'const' | 'volatile' | ...
По умолчанию: ''

Характеристики блоков

Типы данных

Boolean | bus | double | enumerated | fixed point | integer | single

Прямое сквозное соединение

yes

Многомерные сигналы

yes

Сигналы переменного размера

no

Обнаружение пересечения нулем

no

Расширенные возможности

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ Simulink ®

.

Генерация кода ПЛК
Сгенерируйте структурированный текстовый код с помощью Coder™ Simulink ® PLC

.

Преобразование с фиксированной точкой
Разрабатывайте и моделируйте системы с фиксированной точкой с помощью Fixed-Point Designer™.

Представлено до R2006a