Memory

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

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

    HDL Coder / Дискретный

  • Memory block

Описание

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

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

Совет

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

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

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

Когда Блок памяти наследовал дискретный шаг расчета, блок походит на блок Unit Delay. Однако Блок памяти не поддерживает логгирование состояния. Если логгирование конечного состояния необходимо, используйте блок 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, чтобы изменить шаг расчета отдельного сигнала, или всех сигналов в шине. Смотрите Изменяют Шаги расчета для Невиртуальных Шин и Способных к шине Блоков для получения дополнительной информации.

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

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

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

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

Для получения дополнительной информации об определении и использовании массива шин, смотрите Шины Объединения в Массив Шин.

Порты

Входной параметр

развернуть все

Входной сигнал в виде скаляра, вектора, матрицы или массива 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 модели. Смотрите Пакеты Класса памяти Загрузки в Словарь Embedded Coder (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 будет удален в будущем релизе. Чтобы применить спецификаторы типа хранения к данным, используйте разделы custom storage classes и memory. Если вы не используете основанную на ERT цель генерации кода с Embedded Coder, разделы custom storage classes и memory не влияют на сгенерированный код.

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

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

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

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

Зависимости

Чтобы включить этот параметр, установите 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++ с помощью Simulink® Coder™.

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

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

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