Цель: знакомство с средой Matlab Simulink (Scilab), исследование возможностей Scilab.
Интерактивная среда Xcos позволяет использовать библиотеку блоков для моделирования электросиловых, механических и гидравлических систем, а также применять модельно-ориентированный подход при разработке систем управления, средств цифровой связи и устройств реального времени. Дополнительные пакеты расширения Xcos позволяют решать весь спектр задач от разработки концепции модели до тестирования, проверки, генерации кода и аппаратной реализации.
Xcos интегрирован в среду Scilab, что позволяет использовать встроенные математические алгоритмы и мощные средства обработки данных. Инженеры и ученые со всего мира используют среду Scilab & Xcos для модельно-ориентированного проектирования (имитационного моделирования), разработки систем управления, систем связи, анализа и сбора данных, а также для иных вычислительных задач.
В качестве примера создания модели в среде Xcos рассмотрим построение блок-диаграммы для решения задачи моделирования работы дешифратора на четыре выхода.
Дешифратор преобразует входной двоичный код в такой выходной код, в котором только на одном из всех выходов имеется единица. Сигнал на входы дешифратора поступает от двух источников: Источник 1, Источник 2.
Результат, полученный с выхода дешифратора необходимо зарегистрировать (визуально отобразить).
В таблице 1 представлена таблица истинности работы дешифратора. Где: C – управляющий сигнал, X0 и X1 – входные сигналы, Y0 – Y3 – выходные сигналы.
Библиотека Xcos насчитывает достаточно большое количество блоков. В настоящей статье мы познакомимся с блоками, которые понадобятся нам для реализации этой задачи. Функции остальных блоков будут рассмотрены в следующих статьях данного цикла.
Для решения задачи моделирования работы дешифратора выберем следующие блоки библиотеки Xcos:
- LOGIC (раздел библиотеки «Целое число») – блок обеспечивает преобразование входных булевых величин в выходную в соответствии с заданной таблицей истинности, которая задается пользователем явно или при помощи функций (в нашем случае мы использовали функции zeros( ) и eye( )) в поле «Таблица истинности (матрица значений на выходе)» окна настроек параметров блока;
- MUX (раздел библиотеки «Общеупотребительные блоки») – данный блок выполняет объединение входных величин в единый выходной вектор. Порядок элементов в векторе выхода определяется порядком входов (сверху вниз). Количество входов данного блока (оно же размер выходного вектора) задается в поле number of input ports or vector of size окна настроек параметров блока;
- CONST_m (раздел библиотеки «Общеупотребительные блоки») – формирует постоянную величину. Значение константы вводится в окне настроек параметров данного блока в поле «Постоянное значение». Так же в этом поле может устанавливаться тип данных выходных значений данного блока;
- CLOCK_c (раздел библиотеки «Обработка событий») – является источником сигналов активации для блоков, имеющих управляющий вход. Если блок имеет управляющий вход, то он срабатывает каждый раз, когда на него поступает сигнал активации. Поведение блока, не имеющего управляющего входа, определяется его внутренними параметрами;
- CONVERT (раздел библиотеки «Общеупотребительные блоки») – используется для преобразования типа данных;
- AFFICH_m (раздел библиотеки «Регистрирующие устройства») – данный блок при моделировании играет роль обзорного окна. Он имеет один вход данных и один управляющий вход и предназначен для отображения на экране численных значений входных величин, фигурирующих в блок-диаграмме. Для блока можно настроить следующие параметры (рис. 1а):
- 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 таблицей истинности параметр «Таблица истинности (матрица значений на выходе)» должен быть представлен в виде матрицы, которая имеет следующий вид [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в).
Для упрощения чтения блок-диаграммы присвоим блокам осмысленные имена: для блоков CONST_m – Источник 1 и Источник 2, Сигнал управления, блоку LOGIC – Дешифратор, блоку AFFICH_m – Результат. Для того, чтобы добавить имена, можно воспользоваться блоком TEXT_f (раздел библиотеки «Примечания»). Для этого выберите блок TEXT_f в окне «Палитры блоков» и переместите его при помощи мыши в рабочее поле программы. Для ввода текстовых надписей в данном блоке необходимо дважды щелкнуть по нему левой кнопкой, в результате чего указатель примет вид мигающей черточки. Далее необходимо при помощи клавиатуры стереть стандартное название блока и ввести свое, после чего щелкнуть левой кнопкой мыши в свободной области блок-диаграммы.
После того как все блоки размещены в поле блок-диаграммы, соединим их в соответствии с логикой их взаимодействия: сигналы с выходов блоков Источник 1, Источник 2, Сигнал управления должны поступать на входы блока Дешифратор. Далее соединим выходы блока Дешифратор с входом блока Результат через блоки CONVERT и MUX. В Xcos может случиться так, что при построении модели типы данных порта источника и приемника информационного сигнала могут отличаться. Для их согласования используют блок CONVERT. При этом тип входного сигнала указывается в поле «Тип на входе», а тип выходного сигнала – в поле «Тип на выходе» окна настроек параметров блока (рис. 1г).
Блок MUX преобразует полученные с блока CONVERT сигналы в вектор значений и передает далее полученный вектор на вход блока Результат. Далее соединим выход блока CLOCK_c с входом блока Результат. На рисунке 2 показана собранная нами блок-диаграмма.
Сохраним нашу модель на диск компьютера при помощи команды основного меню «Файл/Сохранить как» и проведем пробное моделирование, посредством нажатия кнопки «Запустить» на панели инструментов окна модели Xcos. В процессе моделирования системой могут быть обнаружены ошибки, описание которых будет представлено во всплывающем окне (рис. 3).
В то же время на блок-диаграмме модели будут отображены цветные маркеры, которые указывают на область диаграммы, в которой возникла ошибка. В нашем случае (как видно из рисунка) ошибка заключается в том, что входные и выходные сигналы имеют разный тип. Для того, что бы исправить эту ошибку зайдем в окно настроек блока CONVERT и изменим параметр «Тип на выходе» – установим значение «1», которое соответствует типу double.
Теперь можно снова запустить процесс моделирования. Как видно из рисунка 4 (а, б) - полученный результат соответствует таблице истинности дешифратора. Необходимо отметить, что параметры модели дешифратора в целом были установлены по умолчанию.
Разработанная в данном примере модель является достаточно простой, однако, основные приемы, которые были использованы для ее создания, используются и при разработке более сложных моделей.
Литература: https://www.kv.by/content/335330-modelirovanie-sistem-v-programmnoi-srede-scilab-xcos-551-chast-3
Порядок выполнения работы:
Построить модель дешифратора в среде Xcos, проверить таблицу истинности
В отчет занести скриншоты проверки таблицы истинности
Промоделировать импликацию и эквиваленцию, занести скриншоты в отчет
С помощью Scilab найти выражение, соответствующее приведенной таблице истинности (делайте через матрицы)
X1 |
X2 |
X3 |
X4 |
X5 |
X6 |
X7 |
F |
0 |
1 |
0 |
1 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
Каким выражением может быть F:
1) ~x1&x2&~x3&x4&x5&x6&~x7
2) ~x1|x2|~x3|x4|~x5|~x6|x7
3) ~x1&x2&~x3&x4&~x5&x6&~x7
4) x1|~x2|~x3|~x4|~x5|~x6|x7
X1 |
X2 |
X3 |
X4 |
X5 |
X6 |
X7 |
F |
0 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
Каким выражением может быть F:
1) ~x1&x2&~x3&x4&x5&x6&~x7