exponenta event banner

Проверка сигналов переменного размера на моделях Simulink

Генерация и работа сигналов переменного размера

В этом примере модели показано, как создать сигнал переменного размера из нескольких сигналов фиксированного размера и из одного сигнала данных. Здесь также показаны некоторые операции, которые можно применить к сигналам переменного размера.

Полный список блоков, поддерживающих сигналы переменного размера, см. в разделе Поддержка блоков Simulink для сигналов переменного размера.

  1. В окне команд MATLAB ® введите

    sldemo_varsize_basic

  2. В редакторе Simulink ® на вкладке «Отладка» выберите «Информационные наложения» > «Размеры сигнала». Запустите моделирование или нажмите Ctrl-D.

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

  3. Чтобы увидеть имена блоков в модели, на вкладке Формат (Format) снимите флажок Авто (Auto) > Скрыть имена автоматических блоков (Hide Automatic Block Names).

Создание сигнала переменного размера из сигналов фиксированного размера

Одним из способов создания сигнала переменного размера является использование блока Switch. Входные сигналы блока коммутатора могут отличаться по количеству размеров и размеру.

Выход из блока Switch представляет собой 2-D сигнал переменного размера с максимальным размером 3x2. При выборе параметра Разрешить разные размеры ввода данных в блоке Switch Simulink не расширяет скалярное значение из блока Constant1.

Сохранить данные сигнала переменного размера

Можно добавить блок В рабочую область (To Workspace) к выходу из блока Переключить (Switch). Поскольку в модели уже имеется блок В рабочую область (To Workspace), второй блок В рабочую область (To Workspace) сохранит данные в массиве сигналов с именем simout2 values в поле регистрируются фактические значения сигнала. Если записанные данные сигнала меньше максимального размера, значения дополняются NaNs или соответствующими значениями. Для получения этих значений сигнала введите:

simout2.signals.values

ans(:,:,1) =

     1    -1
    -2     2
    -3     3


ans(:,:,2) =

     1    -1
    -2     2
    -3     3


ans(:,:,3) =

     0   NaN
   NaN   NaN
   NaN   NaN

valueDimensions поле регистрирует размеры сигнала переменного размера. Чтобы получить размеры, введите:

simout2.signals.valueDimensions

Показаны размеры сигнала для первых трех шагов времени.

ans =

     3     2
     3     2
     1     1

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

Сигнал данных (Constant5) представляет собой 3x4 матрица. Генератор импульсов представляет управляющий сигнал, который выбирает начальное и конечное значение индекса ( [1 2] или [1 3]). Блок селектора затем использует значения индекса для выбора различных частей сигнала данных на каждом временном шаге и вывода сигнала переменного размера.

Просмотр изменений в размере сигнала

Выходной сигнал блока селектора: 2x2 или 3x3 матрица. Поскольку максимальный размер сигнала переменного размера равен 3x4 матрица из сигнала данных, записанные выходные сигналы дополняются NaNs.

Используйте блоки «Зонд» или «Ширина» для проверки текущих размеров и ширины сигнала переменного размера. Кроме того, можно отображать сигналы переменного размера в блоках области действия и сохранять сигналы переменного размера в рабочей области с помощью блока «В рабочую область».

Сигналы с переменным размером технологического процесса

Остальная часть модели показывает различные операции, которые возможны с сигналами переменного размера. Операции включают использование блоков Gain, Sum, Math Function и Matrix Concatenate. Сигналы переменного размера можно соединять с блоками From, Goto, Bus Assignment, Bus Creator и Bus Selector.

Адаптация длины сигнала переменного размера

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

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

Чтобы открыть пример модели, в окне команды MATLAB введите:

sldemo_varsize_dataLengthAdapt

Для отображения имен блоков в модели на вкладке «Формат» снимите флажок «Авто» > «Скрыть имена автоматических блоков».

Создание сигнала переменного размера путем адаптации длины сигнала данных

Эта модель генерирует сигнал данных и преобразует сигнал в сигнал переменного размера. Размер сигнала зависит от значения управляющего сигнала. Необработанный сигнал данных представляет собой вектор столбца со значениями от 1 кому 9.

[1:9].'

ans =
     1
     2
     3
     4
     5
     6
     7
     8
     9
Подсистема выбора размера определяет качество сигнала данных и выводит значение качества (1, 2 или 3). Это значение помогает выбрать длину сигнала данных в подсистеме адаптации длины.

В подсистеме адаптации длины подсистема размера сигнала генерирует индекс на основе значения качества из подсистемы выбора размера (In2). Блок селектора данных использует начальный и конечный индексы для адаптации длины сигнала данных (In1) и вывода сигнала переменного размера.

Обработка сигнала переменного размера

Центральная секция модели обрабатывает сигнал переменного размера. Блок MATLAB Function добавляет нули между значениями данных способом, сходным с повышением дискретизации сигнала. Размер сигнала изменяется от 9 кому 18. Блоки Математическая функция (Math Function) показывают различные манипуляции, которые можно выполнять с сигналами переменного размера.

Визуализация сигнала переменного размера

Правая часть модели определяет ширину (размер) сигнала и использует область для визуализации ширины и обработанного сигнала данных.

Зависящие от режима сигналы переменного размера

В этом примере представлена система с тремя режимами работы. Для каждого режима обрабатываемый сигнал данных имеет различный размер.

Подсистема процесса в этой модели принимает сигнал переменного размера, где размер сигнала зависит от режима работы системы. При каждом изменении режима диаграмма Stateflow ® (Mode Control Logic) определяет, когда изменяется размер сигнала данных. Затем он генерирует вызов функции для сброса блоков в подсистеме процесса.

Чтобы открыть модель, в окне команды MATLAB введите:

sldemo_varsize_multimode

Для отображения имен блоков в модели на вкладке «Формат» снимите флажок «Авто» > «Скрыть имена автоматических блоков».

Создание сигнала переменного размера на основе режима

Подсистема выбора режима определяет режим обработки сигнала данных и выводит значение режима (1, 2 или 3). Это значение помогает выбрать длину сигнала данных с помощью подсистем выбора размера и данных.

Подсистема выбора размера создает значение индекса из значения режима. В этом примере значения индекса: [1 3], [1 2], и [1 1].

Подсистема данных принимает сигнал данных (блок констант) и выбирает часть сигнала данных в зависимости от режима. Выходной сигнал является сигналом переменного размера с размером матрицы 3x3, 2x2, и 1x1.

Размеры необработанного сигнала данных (константный блок) 3x3. После подключения блока «К рабочей области» к сигнальной линии можно просмотреть сигнал в окне команд MATLAB, введя:

simout.signals.values

ans(:,:,1) =

     1     4     7
     2     5     8
     3     6     9

Сигнал переменного размера, генерируемый подсистемой данных, также является сигналом 3x3 матрица. Для более коротких сигналов матрица дополняется NaNs.

simout.signals.values

ans(:,:,1) =

     1   NaN   NaN
   NaN   NaN   NaN
   NaN   NaN   NaN


ans(:,:,2) =

     1     4   NaN
     2     5   NaN
   NaN   NaN   NaN


ans(:,:,3) =

     1     4     7
     2     5     8
     3     6     9

Обработка сигнала переменного размера с помощью условно выполняемой подсистемы

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

В диалоговом окне функционального блока и из списка Распространить размеры сигналов переменного размера выберите Only when enabling. Если модель включает эту подсистему, при выборе этой опции программное обеспечение Simulink будет распространять размеры сигналов переменного размера внутри условно выполняемой подсистемы. Размеры сигнала могут изменяться только при переходе от отключенного к включенному. Описание обработки изменений размера сигнала с блоками, содержащими состояния, см. в разделе Как распространяются сигналы переменного размера.

Диаграмма Stateflow определяет, происходит ли изменение размера сигнала. Функция size_detect вычисляет ширину сигнала переменного размера на каждом временном шаге и сравнивает текущую ширину с предыдущей. При изменении размера сигнала диаграмма выводит событие вывода вызова функции, которое сбрасывает и повторно распространяет размеры сигнала в подсистеме процесса.

Визуализация данных

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

Поскольку сигналы являются n x n матрицы, размерные линии сигнала перекрываются на экране области.

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

S-функции, использующие сигналы переменного размера

Level-2 S-функция MATLAB с сигналами переменного размера

И Уровень 2 MATLAB S-Functions и S-функции C поддерживают сигналы переменного размера, когда Вы устанавливаете DimensionMode для порта продукции к Variable. Также необходимо учитывать текущую размерность входных и выходных сигналов в методах обновления входных и выходных данных.

Чтобы открыть эту примерную модель, в окне команды MATLAB введите:

msfcndemo_varsize

Подсистема Enabled включает в себя Level-2 MATLAB S-Function, которая показывает, как реализовать блок, который сохраняет свои состояния до сброса. Поскольку этот блок содержит состояния и задерживает входной сигнал, размер входного сигнала может изменяться только при сбросе.

Расширить блок - Уровень 2 MATLAB S-Function, который берет скалярный вход и производит вектор длины, обозначенной ее входной стоимостью. Выходной сигнал: 1:n где n - входное значение.

C S-функция с сигналами переменного размера

Чтобы открыть эту примерную модель, в окне команды MATLAB введите:

sfcndemo_varsize

Включенные подсистемы имеют две S-функции:

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

  • sfun_varsize_concat1D - C S-функция, реализующая конкатенацию двух неориентированных векторов. Эту функцию можно использовать внутри включенной подсистемы самостоятельно.

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