Интерактивная среда Xcos позволяет использовать библиотеку блоков для моделирования электросиловых, механических и гидравлических систем, а также применять модельно-ориентированный подход при разработке систем управления, средств цифровой связи и устройств реального времени. Дополнительные пакеты расширения Xcos позволяют решать весь спектр задач от разработки концепции модели до тестирования, проверки, генерации кода и аппаратной реализации.
Xcos интегрирован в среду Scilab, что позволяет использовать встроенные математические алгоритмы и мощные средства обработки данных. Инженеры и ученые со всего мира используют среду Scilab & Xcos для модельно-ориентированного проектирования (имитационного моделирования), разработки систем управления, систем связи, анализа и сбора данных, а также для иных вычислительных задач. В этой статье рассмотрена настройка параметров, просмотр результатов и работа со следующими блоками Xcos: LOGIC, MUX, CONST_m, CLOCK_c, CONVERT, AFFICH_m. Приведен пример построения модели с использованием блоков Xcos.
Создание модели работы дешифратора.
В качестве примера создания модели в среде Xcos рассмотрим построение блок-диаграммы для решения задачи моделирования работы дешифратора на четыре выхода. Дешифратор преобразует входной двоичный код в такой выходной код, в котором только на одном из всех выходов имеется единица. Сигнал на входы дешифратора поступает от двух источников: Источник 1, Источник 2. Результат, полученный с выхода дешифратора необходимо зарегистрировать (визуально отобразить). В таблице 1 представлена таблица истинности работы дешифратора. Где: C – управляющий сигнал, X0 и X1 – входные сигналы, Y0 – Y3 – выходные сигналы.
Таблица 1. Таблица истинности работы дешифратора.
C |
Х1 |
Х0 |
Y0 |
Y1 |
Y2 |
Y3 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
Выбор блоков
Библиотека Xcos насчитывает достаточно большое количество блоков. В настоящей статье мы познакомимся с блоками, которые понадобятся нам для реализации этой задачи. Функции остальных блоков будут рассмотрены в следующих статьях данного цикла.
Для решения задачи моделирования работы дешифратора выберем следующие блоки библиотеки Xcos:
- LOGIC (раздел библиотеки «Целое число») – блок обеспечивает преобразование входных булевых величин в выходную в соответствии с заданной таблицей истинности, которая задается пользователем явно или при помощи функций (в нашем случае мы использовали функции zeros( ) и eye( )) в поле «Таблица истинности (матрица значений на выходе)» окна настроек параметров блока;
- MUX (раздел библиотеки «Общеупотребительные блоки») – данный блок выполняет объединение входных величин в единый выходной вектор. Порядок элементов в векторе выхода определяется порядком входов (сверху вниз). Количество входов данного блока (оно же размер выходного вектора) задается в поле number of input ports or vector of size окна настроек параметров блока;
- CONST_m (раздел библиотеки «Общеупотребительные блоки») – формирует постоянную величину. Значение константы вводится в окне настроек параметров данного блока в поле «Постоянное значение». Так же в этом поле может устанавливаться тип данных выходных значений данного блока;
- CLOCK_c (раздел библиотеки «Обработка событий») – является источником сигналов активации для блоков, имеющих управляющий вход. Если блок имеет управляющий вход, то он срабатывает каждый раз, когда на него поступает сигнал активации. Поведение блока, не имеющего управляющего входа, определяется его внутренними параметрами;
- CONVERT (раздел библиотеки «Общеупотребительные блоки») – используется для преобразования типа данных;
- AFFICH_m (раздел библиотеки «Регистрирующие устройства») – данный блок при моделировании играет роль обзорного окна. Он имеет один вход данных и один управляющий вход и предназначен для отображения на экране численных значений входных величин, фигурирующих в блок-диаграмме. Для блока можно настроить следующие параметры (рис. 1а):
Рис. 1. Окно настроек параметров блока: (а) AFFICH_m
- Input Size – размерность матрицы входных значений;
- Font number – номер шрифта;
- Font size – размер шрифта;
- Color – цвет шрифта;
- Number of rational part digits – количество знаков после запятой;
- Block inherits (1) or not (0) – обрыв управляющей связи с блоком.
Блок AFFICH_m может использоваться для вывода как скалярных, так и векторных величин. Если отображаемая величина является вектором, то размер блока необходимо будет увеличить – растянуть при помощи мыши. Для этого следует выделить блок, подвести курсор мыши к одному из его углов, нажать левую клавишу мыши и, не отпуская ее, растянуть изображение блока до нужных размеров.
Создание модели
Приступим к созданию модели. Для этого выберем из указанных разделов библиотеки Xcos нужные блоки и разместим их в рабочей области программы, а затем соединим блоки между собой. В качестве источника сигнала будем использовать блок CONST_m. Так как дешифратор имеет два входа данных, то для разработки его модели нам потребуется два таких блока и один блок для подачи управляющего сигнала. Блок LOGIC будем использовать в качестве дешифратора.
Логика поведения дешифратора для разных значений входных сигналов описывается в поле «Таблица истинности (матрица значений на выходе)» окна настройки параметров блока LOGIC (рис. 1б).
Рис. 1. Окно настроек параметров блока: (б) LOGIC
В соответствии с представленной в таблице 1 таблицей истинности параметр «Таблица истинности (матрица значений на выходе)» должен быть представлен в виде матрицы, которая имеет следующий вид [1 0 0 0; 0 1 0 0; 0 0 1 0; 0 0 0 1]. Однако правила синтаксиса данного поля не позволяют задать матрицу значений именно в таком виде. Для решения этой задачи можно воспользоваться функциями zeros( ) и eye( ). Функция zeros(m1,m2) создает матрицу составленную из нулей, где m1, m2 – размер матрицы. Функция eye(m,n) в соответствии со своими аргументами определяет матрицу mxn с единицами по главной диагонали. Таким образом, результатом выражения [zeros(4,4); eye(4,4)] будет матрица размерностью 4х4 заполненная нулями с единицами по диагонали. После запуска моделирования в зависимости от комбинации входных сигналов, на выход блока LOGIC будет подана одна из строк матрицы. Значения входных сигналов в явном виде в окне настроек данного блока не указываются.
Отобразить результаты моделирования на экране можно при помощи блока AFFICH_m. Однако, этот блок имеет такую особенность – на его вход может поступать только один сигнал, а из поставленной задачи известно что дешифратор имеет четыре информационных выхода. Поэтому необходимо объединить четыре отдельных значения поступающих с блока LOGIC в один вектор. Решить эту задачу можно при помощи блока MUX. Входные значения блока LOGIC задаются в окне настроек блоков CONST_m в поле «Постоянное значение» (рис. 1в).
Рис. 1. Окно настроек параметров блока: (в) CONST_m
Для упрощения чтения блок-диаграммы присвоим блокам осмысленные имена: для блоков CONST_m – Источник 1 и Источник 2, Сигнал управления, блоку LOGIC – Дешифратор, блоку AFFICH_m – Результат. Для того, что бы добавить имена, можно воспользоваться блоком TEXT_f (раздел библиотеки «Примечания»). Для этого выберите блок TEXT_f в окне «Палитры блоков» и переместите его при помощи мыши в рабочее поле программы. Для ввода текстовых надписей в данном блоке необходимо дважды щелкнуть по нему левой кнопкой, в результате чего указатель примет вид мигающей черточки. Далее необходимо при помощи клавиатуры стереть стандартное название блока и ввести свое, после чего щелкнуть левой кнопкой мыши в свободной области блок-диаграммы.
После того как все блоки размещены в поле блок-диаграммы, соединим их в соответствии с логикой их взаимодействия: сигналы с выходов блоков Источник 1, Источник 2, Сигнал управления должны поступать на входы блока Дешифратор. Далее соединим выходы блока Дешифратор с входом блока Результат через блоки CONVERT и MUX. В Xcos может случиться так, что при построении модели типы данных порта источника и приемника информационного сигнала могут отличаться. Для их согласования используют блок CONVERT. При этом тип входного сигнала указывается в поле «Тип на входе», а тип выходного сигнала – в поле «Тип на выходе» окна настроек параметров блока (рис. 1г).
Рис. 1. Окно настроек параметров блока: (г) CONVERT
Блок MUX преобразует полученные с блока CONVERT сигналы в вектор значений и передает далее полученный вектор на вход блока Результат. Далее соединим выход блока CLOCK_c с входом блока Результат. На рисунке 2 показана собранная нами блок-диаграмма.
Рис. 2. Модель дешифратора в рабочей области Xcos
Сохраним нашу модель на диск компьютера при помощи команды основного меню «Файл/Сохранить как» и проведем пробное моделирование, посредством нажатия кнопки «Запустить» на панели инструментов окна модели Xcos. В процессе моделирования системой могут быть обнаружены ошибки, описание которых будет представлено во всплывающем окне (рис. 3).
Рис. 3. Окно описания ошибок симуляции модели и цветные подсказки, указывающие на область блок-диаграммы в которой возникла ошибка
В то же время на блок-диаграмме модели будут отображены цветные маркеры, которые указывают на область диаграммы, в которой возникла ошибка. В нашем случае (как видно из рисунка) ошибка заключается в том, что входные и выходные сигналы имеют разный тип. Для того, что бы исправить эту ошибку зайдем в окно настроек блока CONVERT и изменим параметр «Тип на выходе» – установим значение «1», которое соответствует типу double.
Рис. 4. Результаты работы модели дешифратора
Теперь можно снова запустить процесс моделирования. Как видно из рисунка 4 (а, б) - полученный результат соответствует таблице истинности дешифратора. Необходимо отметить, что параметры модели дешифратора в целом были установлены по умолчанию.
Разработанная в данном примере модель является достаточно простой, однако, основные приемы, которые были использованы для ее создания, используются и при разработке более сложных моделей.
Александр Чёрный