Векторные входы/выходы блоков и их соразмерность в Xcos

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

Явление многомерного подключения блоков в диаграмме Xcos назовём векторизацией входа/выхода блока. Очевидно, в случае многомерных портов блоков, имеет смысл говорить об их соразмерности

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

В предыдущей статье мы познакомились с одним из блоков, использующихся для графического представления результата моделирования на временной оси – CSCOPEДанный блок используется для графического представления результата моделирования на временной оси. Вход у него только один - векторный, а значит, с помощью блока CSCOPE мы можем отобразить только одну координатную сетку, но со множеством графиков на ней. Осталось только понять, как объединить множество графиков в векторный объект.

Отображение нескольких графиков в одной системе координат

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

Внутренний параметр у блока MUX всего один – Number of input ports or vector of sizes и определяется автоматически, путем конкатенации входных сигналов. Значение данного параметра необходимо для корректировки внутренних настроек блоков, принимающих на вход сигнал, испускаемый MUX’ом, в нашем случаем, блока CSCOPE.

Перейдём, наконец, к примеру использования мультиплексора. Для этого на рабочую область уже собранной модели из блоков CSCOPE, GENSIN_f, CLOCK_c добавьте блок MUX
и блок Отображение нескольких графиков в Xcos  с вкладки «Математические операции».

 

Далее выполните действия:

  1. Удалите соединительную линию между выходом генератора синусоиды и входом осциллографа;

  2. Соедините выход блока GENSIN_f со входом блока GAINBLK_f;

  3. Соедините выход блока GAINBLK_f с верхним входом блока MUX;

  4. Выход блока MUX соедините со входом блока CSCOPE;

  5. Распараллельте синусоидальный сигнал. Для этого из существующей соединительной линии между GENSIN_f и GAINBLK_f вытяните еще одну линию и подведите её ко второму входу блока MUX. (Линию можно вытянуть и в противоположном направлении: от входа блока MUX провести до существующей соединительной линии между GENSIN_f и GAINBLK_f). Если всё сделано правильно, новая соединительная линия как бы «прилипнет» к существующей, а в месте их соединения появится оранжевый квадратик.

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

    Рисунок 14. Создание блочной диаграммы с мультиплексором и редактирование стиля соединительных линий. Рисунок 14. Создание блочной диаграммы с мультиплексором и редактирование стиля соединительных линий.

    Расположение блоков в рабочей области Xcos может быть произвольным, но как правило, их располагают таким образом, чтобы обеспечить наибольшую наглядность и удобочитаемость модели. Для большего эстетического эффекта, соединительные линии могут быть выровнены путем вызова Меню соединительной линии: для этого кликните правой кнопкой мыши по линии, в выпадающем меню выберите пункт Стиль соединения, далее
    стиль Optimal (см. рис. 14). Результатом редактирования стиля соединений будет модель, приведённая на рис. 15.

    Рисунок 15. Блоки, соединённые оптимальными типами линий. Рисунок 15. Блоки, соединённые оптимальными типами линий.

    Перейдём теперь к редактированию внутренних параметров блоков GAINBLK_f и GENSIN_f:

  6. Установите внутренний параметр блока GAINBLK_f равным 2;

  7. Установите внутренний параметры блока GENSIN_f следующими: Абсолютная величина=0.5, Частота=1, Фаза=0.

Запустите моделирование и убедитесь, что в одной системе координат отображаются две синусоиды, амплитуда одной из которых равна 0.5, а второй 2*0.5=1 (рис. 16).

Рисунок 16. Отображение двух синусоидальных сигналов в одной системе координат. Рисунок 16. Отображение двух синусоидальных сигналов в одной системе координат.

Отображение нескольких систем координат в одном графическом окне

Итак, мы рассмотрели пример отображения нескольких графиков в одной системе координат с помощью объединяющего блока MUX и блока-рисовальщика осциллографа CSCOPE.

 

Далее перейдём к вопросу отображения нескольких систем координат в одном графическом окне. Для этого нам понадобится блок Отображение нескольких графиков в Xcos  с вкладки «Регистрирующие устройства».  

Блок CMSCOPE имеет то же назначение, что и блок CSCOPE – отображать графический результат моделирования, но, в отличие от CSCOPE, умеет разбивать графики по разным системам координат, при этом количество черных входных треугольничков будет соответствовать количеству отображаемых систем координат. Но с этим блоком не всё так просто.

 

Больший функционал, как известно, влечёт бОльшую ответственность. При использовании многопортового блока CMSCOPE придётся строго следить за соразмерностью портов выхода сигнала и значений параметров самого блока.

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

 

Для этого проделайте следующие действия:

  1. Удалите блок осциллографа CSCOPE. Заметьте, что его соединительные линии удалятся автоматически;

  2. Добавьте блок CMSCOPE с вкладки «Регистрирующие устройства»;

  3. Соедините выход блока CLOCK_c с красным входом блока CMSCOPE;

  4. Соедините выход блока MUX с верхним черным входом блока CMSCOPE;

  5. Распараллельте синусоидальный сигнал. Для этого из существующей соединительной линии между блоками GENSIN_f и GAINBLK_f вытяните еще одну линию и подведите её ко второму черному входу блока CMSCOPE;

  6. Отредактируйте Стиль соединения линий.

В результате у Вас должна получиться схема, изображенная на рисунке 17.

Рисунок 17. Блок схема с использованием блока CMSCOPE Рисунок 17. Блок схема с использованием блока CMSCOPE

Запустите моделирование. И.. Получите ошибку (см. рис. 18).

Рисунок 18. Ошибка несоответствия размерности портов на примере использованием блока CMSCOPE Рисунок 18. Ошибка несоответствия размерности портов на примере использованием блока CMSCOPE

Вот мы и подобрались к вопросу соответствия размерностей векторных портов. Сообщение об ошибке гласит «Problem in port size or type», что означает несоответствие в типе или размерности портов. Разберёмся, почему возникла данная ошибка и как избежать её появления в будущем.

Рассмотрим нижний порт блока CMSCOPE. На него передаётся сгенерированная синусоида, не претерпевающая по дороге никаких изменений. На рисунке 19 это красная траектория движения сигнала и сиреневая стрелочка у нижнего входа CMSCOPE.

Итак, по красной траектории движется один сигнал, условная размерность которого равна 1 (см. рис 19).

Теперь обратимся к верхнему порту блока CMSCOPE. Рассмотрим, что за сигнал попадает на него. Верхний вход блока CMSCOPE принимает на себя выход блока MUX.

Выше мы выяснили, что блок MUX объединяет входные данные в векторный объект. В нашем случае в мультиплексор входит два сигнала:
! первый, движущийся по зелёной траектории, который представляет собой синусоиду с увеличенной в 2 раза амплитудой и
! второй – исходная синусоида, которая движется по синей траектории.
 Соответственно, на выходе у MUX’а получается объект условной размерности 2, который подаётся на верхний чёрный вход осциллографа (розовые стрелки на рисунке 19).


Итак, по сине-зелёной траектории движется сигнал, условная размерность которого равна 2 (см. рис 19).

Рисунок 19. Траектории движения сигналов в блок-схеме Xcos. Рисунок 19. Траектории движения сигналов в блок-схеме Xcos.

Дело в том, что по умолчанию, все порты блока CMSCOPE имеют размерность 1. Следовательно, для соразмерности портов блок-схемы, необходимо прибегнуть к редактирования внутренних параметров блока CMSCOPE. Щёлкните по блоку осциллографа правой кнопкой мыши и выберите пункт «Параметры блока».

В Открывшемся окне внутренних параметров блока, необходимо исправить значение параметра Input ports sizes. В поле значений данного параметра через пробел указываются размерности соответствующих входов осциллографа, начиная с верхнего. В нашем случае на верхний черный порт подаётся сигнал условной размерности 2, а на нижний – размерности 1, поэтому необходимо указать «2 1» (см. рис. 20).

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

Для корректного отображения синусоиды с амплитудой=0.5 следует изменить вертикальные пределы второго графика, рисующего исходную синусоиду, движущуюся по красной траектории. Поэтому, в полях значений параметров Ymin vector и Ymax vector, необходимо изменить числа, соответствующие второй системе координат, а именно, указать значения -0.5 и 0.5 соответственно, как показано на рисунке 20.

Рисунок 20. Редактирование внутренних параметров блока CMSCOPE. Рисунок 20. Редактирование внутренних параметров блока CMSCOPE.

Ещё одним векторным параметром, за которым следует внимательно следить при настройке параметров блока CMSCOPE является параметр Refresh period, отвечающий за максимальное одновременное отображение значений графика в системе координат. Поясним, пожалуй, что это значит. Например, для процесса моделируемого на временном отрезке t=[0..40] при значении параметра Refresh period=30 на систему координат будет выведен график для значений t=[0..30], после чего, сетка обновится, и будут выведены оставшиеся значения для t=[31..40]. Как и в случае с рассмотренными векторными параметрами, значения Refresh period для каждой из систем координат вводятся через пробел, причём число значений должно совпадать с числом входов у блока CMSCOPE.

Результат моделирования рассмотренного примера с настроенными параметрами моделирования и непосредственно блоков, представлен на рисунке 21.

Рисунок 21. Отображение двух систем координат с помощью блока CMSCOPE. Рисунок 21. Отображение двух систем координат с помощью блока CMSCOPE.

Задание для самостоятельной работы

Для лучшего понимания работы блоков с векторными входами и выходами, мы предлагаем читателю самостоятельно создать блок-схему, реализующую вывод трёх систем координат.

На первой из которых будут изображены три синусоидальных сигнала с различной амплитудой, один из которых будет отражён относительно горизонтальной оси.

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

На третьей координатной сетке нужно вывести пару синусоид: одну – с исходными параметрами блока генератора GENSIN_f, а вторую – соответствующую знаковой функции sgn(sin(t)), где

блок для реализации функции sgn(sin(t)),  содержится на палитре «Математические операции».

Результат моделирования описанных процессов изображён на рисунке 22.

Рисунок 22. Результат визуального моделирования с использованием математических функций, сумматора и осциллографа с векторными входами. Рисунок 22. Результат визуального моделирования с использованием математических функций, сумматора и осциллографа с векторными входами.

Блок-схему, реализующую построение данных графиков, мы тоже приведём в помощь читателю (см. рис. 23), но настоятельно рекомендуем обращаться к ней только в случае крайних затруднений.

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

Рисунок 23. Блок-схема, моделирующая синусоидальные сигналы Рисунок 23. Блок-схема, моделирующая синусоидальные сигналы

Комментарии

Гость
Ответить
Войдите, чтобы оставить комментарий.
Гость
Ответить
Гость
Ответить
Гость
Ответить
Еще нет комментариев, оставьте первый.