Memory

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

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

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

Описание

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

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

Совет

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

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

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

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

Сравнение с подобными блоками

Память, Единичная задержка и Нулевой Порядок Содержит блоки, обеспечивают схожую функциональность, но имеют различные возможности. Кроме того, цель каждого блока отличается.

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

БлокЦель блокаСправочные примеры
Единичная задержкаРеализуйте задержку с помощью дискретного шага расчета, который вы задаете. Блок принимает и выходные сигналы с дискретным шагом расчета.
MemoryРеализуйте задержку одним главным временным шагом интегрирования. Идеально, блок принимает непрерывный (или зафиксированный в незначительном временном шаге) сигналы и выводит сигнал, который фиксируется в незначительном временном шаге.
Нулевой порядок содержитПреобразуйте входной сигнал со временем непрерывной выборки к выходному сигналу с дискретным шагом расчета.

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

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

Соедините шиной поддержку

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

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

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

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

Для получения информации об определении начальной структуры условия смотрите, Задают Начальные условия для Сигналов Шины.

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

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

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

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

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

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

Порты

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

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

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

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

Вывод

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

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

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

Параметры

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

Основной

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

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

Параметры блоков: 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'

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

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

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

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

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

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

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

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

Для получения дополнительной информации смотрите, Применяют Классы памяти к Отдельному Сигналу, состоянию и Элементам данных Параметра (Simulink Coder).

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

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

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

Зависимости

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

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

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

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

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

Если класс, который вы хотите, не появляется в списке, выберите Customize class lists. Для инструкций смотрите, что Целевой Класс Не Появляется в Списке Классов объектов Сигнала (Embedded Coder).

Для получения информации о классах памяти смотрите, Применяют Классы памяти к Отдельному Сигналу, состоянию и Элементам данных Параметра (Simulink Coder). Для получения информации о пользовательских классах памяти смотрите, Применяют Пользовательские Классы памяти к Отдельному Сигналу, состоянию и Элементам данных Параметра (Embedded Coder).

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

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

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

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

Зависимости

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

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

Параметры блоков: StateStorageClass
Ввод: символьный вектор
Значения: 'Auto' | 'SimulinkGlobal' | '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