exponenta event banner

Инициализация сигналов и дискретных состояний

Simulink ® позволяет задавать начальные значения сигналов и дискретных состояний, т.е. значения сигналов и дискретных состояний во время начала моделирования. Объекты сигнала можно использовать для задания начальных значений любого сигнала или дискретного состояния в модели. Кроме того, для некоторых блоков, например, «Outport», «Data Store Memory» или «Memory», можно использовать либо сигнальный объект, либо параметр блока, либо и то, и другое для задания начального значения состояния блока или вывода. В таких случаях Simulink проверяет непротиворечивость значений, заданных сигнальным объектом и параметром. Сведения о инициализации сигналов шины см. в разделе Определение начальных условий для элементов шины.

При указании сигнального объекта для инициализации сигнала или дискретного состояния или переменной в качестве значения параметра блока Simulink разрешает указанное имя соответствующему объекту или переменной, как описано в разделе Разрешение символов.

Данный сигнал может быть связан максимум с одним сигнальным объектом при любых обстоятельствах. Сигнал может ссылаться на объект несколько раз, но каждая ссылка должна разрешаться на один и тот же объект. Другой сигнальный объект, имеющий точно такие же свойства, не будет отвечать требованиям уникальности. Ошибка компиляции возникает, если модель связывает более одного сигнального объекта с каким-либо сигналом. Дополнительные сведения см. в разделе Simulink.Signal и блок «Слияние».

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

Для блоков, имеющих начальное значение или параметр начального условия, этот параметр можно использовать для инициализации сигнала. Например, в следующем диалоговом окне «Параметры блока» инициализируется сигнал для блока «Единичная задержка» с начальным условием 0.

Чтобы получить доступ к этим параметрам блока, выберите один из следующих способов:

  • Используйте Редактор данных модели (на вкладке Моделирование (Modeling) щелкните Редактор данных модели (Model Data Editor)). Этот метод используется для конфигурирования нескольких сигналов и состояний с возможностью поиска и сортировки. Для инициализации состояния блока или хранилища данных можно использовать соответствующую закладку (Состояния или Хранилища данных). Для инициализации сигнала, состояния или хранилища данных можно использовать вкладку «Параметры» и найти строку, соответствующую соответствующему параметру блока.

    Дополнительные сведения о редакторе данных модели см. в разделе Настройка свойств данных с помощью редактора данных модели.

  • Используйте инспектор свойств (на вкладке «Моделирование» в разделе «Проектирование» выберите «Инспектор свойств»). Этот метод используется для одновременного конфигурирования одного сигнала или состояния. Выберите блок, поддерживающий целевое состояние или генерирующий целевой сигнал, и найдите соответствующий параметр блока.

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

Дополнительные сведения о методах доступа к параметрам блока (включая параметры, управляющие сигналом и инициализацией состояния) см. в разделе Установка свойств и параметров.

Использование сигнальных объектов для инициализации сигналов и дискретных состояний

Можно использовать сигнальные объекты с классом хранения, отличным от 'auto' или при установке для класса хранения по умолчанию соответствующей категории данных значения Default (параметр по умолчанию) в редакторе отображения кода, 'Model default' для инициализации:

  • Дискретные состояния с начальным параметром условия

  • Сигналы в модели, за исключением сигналов шины и блоков, выводящих постоянное значение

Чтобы задать начальное значение, используйте команды Проводника моделей или MATLAB ® для выполнения следующих действий.

  1. Создайте сигнальный объект.

    На панели инструментов Обозревателя моделей выберите «Добавить» > «Simulink Signal». Сигнальный объект появляется в базовой рабочей области с именем по умолчанию. Переименование объекта в S1. Также можно использовать следующую команду в командной строке:

    S1 = Simulink.Signal;

    Имя сигнального объекта должно совпадать с именем сигнала, инициализируемого объектом. Несмотря на то, что это не обязательно, рекомендуется задать параметр Имя сигнала (Signal name) в диалоговом окне Свойства сигнала (Signal Properties) для параметра Объект сигнала симуляции (Simulink signal object). Эта настройка приводит сигнальные объекты в рабочей области MATLAB в соответствие с сигналами, появляющимися в модели.

    Рекомендуется использовать мастер объектов данных для создания сигнальных объектов. Мастер объектов данных выполняет поиск в модели сигналов, для которых сигнальные объекты не существуют. Затем можно выборочно создать объекты сигналов для нескольких сигналов, перечисленных в результатах поиска, с помощью одной операции. Дополнительные сведения о мастере объектов данных см. в разделе Создание объектов данных для модели с помощью мастера объектов данных.

  2. Задайте для класса хранения объекта сигнала значение, отличное от Auto или Model default. На панели Содержимое проводника моделей (Model Explorer Contents) выберите объект сигнала. В диалоговом окне установите для класса Storage значение ExportedGlobal. Также можно использовать следующую команду в командной строке:

    S1.CoderInfo.StorageClass = 'ExportedGlobal';

  3. Задайте начальное значение. Можно указать выражение MATLAB, включая имя переменной рабочей области, которое вычисляется как числовое скалярное значение или массив.

    Модуль Simulink преобразует начальное значение таким образом, чтобы тип, сложность и размер соответствовали соответствующему значению параметра блока. При указании недопустимого значения или выражения при обновлении модели появляется сообщение об ошибке.

    В диалоговом окне «Обозреватель моделей» задайте для параметра «Начальное значение» значение 0.5. Также можно использовать следующую команду в командной строке:

    S1.InitialValue = '0.5'

    Если также можно использовать параметр блока для установки начального значения сигнала или состояния, следует установить параметр пустым ([]) или к тому же значению, что и начальное значение сигнального объекта. Если для параметра задано пустое значение, Simulink использует значение, заданное сигнальным объектом, для инициализации сигнала или состояния. Если для параметра задано любое другое значение, Simulink сравнивает значение параметра со значением сигнального объекта и отображает ошибку, если они отличаются.

    В следующем примере показан объект сигнала, задающий начальный выход включенной подсистемы.

    Сигнал s инициализировано до 4.5. Чтобы избежать ошибки непротиворечивости, начальное значение активированного блока Outport подсистемы должно быть [] или 4,5.

    Если необходимо, чтобы объект сигнала и его начальное значение сохранялись в сеансах Simulink, см. раздел Создание постоянных объектов данных.

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

Классический режим инициализации: В этом режиме настройки начального значения для сигнальных объектов, представляющих следующие сигналы и состояния, переопределяют соответствующие начальные значения параметров блока, если они не определены (указано как []):

  • Выходные сигналы условно выполненных подсистем и блоков объединения

  • Состояния блоков

Упрощенный режим инициализации: В этом режиме начальные значения сигнальных объектов, связанных с выходом следующих блоков, игнорируются. Вместо этого используются начальные значения соответствующих блоков.

  • Выходные сигналы условно выполненных подсистем

  • Объединить блоки

Использование сигнальных объектов для настройки начальных значений

Simulink позволяет использовать сигнальные объекты в качестве альтернативы объектам параметров (см. Simulink.Parameter) для настройки начальных значений блочных выходов и состояний, которые могут быть заданы с помощью настраиваемого параметра. Чтобы использовать сигнальный объект для настройки начального значения, создайте сигнальный объект с тем же именем, что и сигнал или состояние, и установите начальное значение сигнального объекта в выражение, включающее переменную, определенную в рабочей области MATLAB. Затем можно настроить начальное значение, изменив значение соответствующей переменной рабочей области во время моделирования.

Например, предположим, что требуется настроить начальное значение состояния блока памяти с именем M1. Для этого можно создать сигнальный объект с именем M1, установите для его класса хранения значение 'ExportedGlobal', установить его начальное значение в K (M1.InitialValue='K'), где K является переменной рабочей области в рабочей области MATLAB и задает для соответствующего параметра начального условия блока памяти значение [] во избежание ошибок согласованности. Затем можно изменить начальное значение состояния блока памяти в любое время во время моделирования, изменив значение K в командной строке MATLAB и обновление блок-схемы (например, путем ввода Ctrl + D ).

Сводка по поведению инициализации для сигнальных объектов

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

Сигнальное или дискретное состояниеОписаниеПоведение
S1Корневой входной порт
  • Инициализировано в S1.InitialValue.

  • При использовании панели Импорт/экспорт данных (Data Import/Export) диалогового окна Параметры конфигурации (Configuration Parameters) для задания значений для корневых входных данных начальное значение перезаписывается и может отличаться на каждом шаге времени. В противном случае значение остается постоянным.

X1Блок единичной задержки - блок с дискретным состоянием, имеющим начальное условие
  • Инициализировано в X1.InitialValue.

  • Simulink проверяет, X1.InitialValue соответствует начальному условию, указанному для блока, и отображает ошибку в случае несоответствия.

  • При первой записи выходной сигнал равен X1.InitialValue и состояние равно S1.

  • На каждом шаге времени после первой записи выходной сигнал равен состоянию, и состояние обновляется до равного S1.

  • Если блок находится внутри включенной подсистемы, можно использовать начальное значение в качестве значения сброса, если для параметра Enable block Stations при включении установлено значение reset.

X2Блок памяти хранилища данных
  • Рабочий вектор типа данных (DWork) инициализирован в X2.InitialValue. Сведения о векторах работы см. в разделе Основные сведения о векторах DWork.

  • Simulink проверяет, X2.InitialValue соответствует начальному условию, указанному для блока, и отображает ошибку в случае несоответствия.

  • Блоки записи хранилища данных перезаписывают значение.

S2Вывод включенной подсистемы
  • Инициализировано в S2.InitialValue или значение блока Outport. Если для одного и того же сигнала задано несколько начальных значений, все исходные значения должны быть одинаковыми.

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

  • Начальное значение также используется в качестве значения сброса, если подсистема Enable block parameter States when enabling или Outport block parameter Output when disabled имеет значение reset.

S3Постоянные сигналы
  • Инициализировано в S3.InitialValue.

  • Выходное значение сбрасывается блоком на каждом временном шаге.

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

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