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

Simulink® позволяет вам задавать начальные значения сигналов и дискретных состояний, т.е. значения сигналов и дискретных состояний в Start time симуляции. Можно использовать объекты сигнала, чтобы задать начальные значения любого сигнала или дискретного состояния в модели. В сложение для некоторых блоков, например, Outport, Data Store Memory или Memory, можно использовать объект сигнала или параметров блоков или оба, чтобы задать начальное значение состояния блока или вывода. В таких случаях Simulink проверяет, чтобы убедиться, что значения, заданные объектом сигнала и параметром, согласованы. Для получения информации об инициализации сигналов шины смотрите Задайте Начальные Условия для Элементов Шины

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

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

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

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

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

  • Используйте Model Data Editor (на вкладке Modeling нажмите Model Data Editor). Используйте этот метод, чтобы сконфигурировать несколько сигналов и состояний с помощью таблицы с возможностью поиска и сортировки. Чтобы инициализировать состояние блока или хранилища данных, можно использовать соответствующую вкладку (States или Data Stores). Чтобы инициализировать сигнал, состояние или хранилище данных, можно использовать вкладку Parameters и найти строку, которая соответствует соответствующим параметрам блоков.

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

  • Используйте Property Inspector (на вкладке Modeling, под Design, нажмите Property Inspector). Используйте этот метод, чтобы сконфигурировать один сигнал или состояние за раз. Выберите блок, который поддерживает целевое состояние или генерирует целевой сигнал и находит соответствующие параметры блоков.

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

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

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

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

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

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

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

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

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

    S1 = Simulink.Signal;

    Имя объекта сигнала должно совпадать с именем сигнала, который инициализируется объектом. Хотя это не требуется, рассмотрите установку опции Signal name must resolve to Simulink signal object в диалоговом окне Свойства. Эта настройка делает объекты сигнала в рабочем пространстве MATLAB совместимыми с сигналами, которые появляются в вашей модели.

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

  2. Установите класс памяти объекта сигнала на значение, отличное от Auto или Model default. На Contents панели Model Explorer выберите объект сигнала. На панели Диалоговое окно задайте Storage class ExportedGlobal. Также используйте эту команду в командной строке:

    S1.CoderInfo.StorageClass = 'ExportedGlobal';

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

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

    На панели Диалоговое окно Model Explorer задайте Initial value 0.5. Также используйте эту команду в командной строке:

    S1.InitialValue = '0.5'

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Если вы используете панель Data Import/Export диалогового окна Параметров конфигурации, чтобы задать значения для корневых входов, начальное значение перезаписывается и может отличаться на каждом временном шаге. В противном случае значение остается постоянным.

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

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

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

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

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

X2Data Store Memory блок
  • Рабочий вектор типа данных (DWork) инициализирован в X2.InitialValue. Для получения информации о рабочих векторах см. DWork Vector Basics.

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

  • Data Store Write блоки перезаписывают значение.

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

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

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

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

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

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

Похожие темы