Министерство науки и высшего образования Российской Федерации КАМЧАТСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМЕНИ ВИТУСА БЕРИНГА Р. И. Паровик ИМИТАЦИОННОЕ МОДЕЛИРОВАНИЕ В СРЕДЕ XCOS Лабораторный практикум Сетевое научное издание Рекомендовано УМО РАЕ по классическому университетскому и техническому образованию в качестве учебного пособия для студентов высших учебных заведений, обучающихся по специальностям: 01.03.02 – «Прикладная математика и информатика» © Паровик Р. И., 2022 © ИД «Академия Естествознания» ISBN 978-5-91327-729-9 09.03.03 – «Прикладная информатика» Москва 2022 УДК 517 ББК 22.161 П18 Рецензенты: Марапулец Ю. В. – доктор физико-математических наук, доцент, профессор кафедры «Системы управления», КамчатГТУ. Шибзухов З. М. – доктор физико-математических наук, доцент, профессор кафедры теоретической информатики и дискретной математики Московского государственного педагогического университета. Научный редактор: Кашутина И. А. – кандидат технических наук, заведующий кафедрой «Информатики» КамГУ им. Витуса Беринга. П18 Паровик Р. И. Имитационное моделирование в среде Xcos: лабораторный практикум / Р. И. Паровик. – М.: Издательский дом Академии Естествознания, 2022. – 102 с. ISBN 978-5-91327-729-9 Лабораторный практикум «Имитационное моделирование в среде Scilab/Xcos» предназначен для организации самостоятельной работы при изучении дисциплины «Математическое и имитационное моделирование» направления подготовки 01.03.02 «Прикладная математика и информатика (уровень бакалавриата)» и направления подготовки 09.03.03 «Прикладная информатика» (уровень бакалавриата). В лабораторном практикуме представлены 11 лабораторных работ по вопросам имитационного моделирования в среде Xcos. Лабораторные работы посвящены изучению блоков среды Xcos, созданию моделей динамических, алгебраических, логических объектов, а также моделей системы массового обслуживания и систем управления. Лабораторный практикум может быть полезен для студентов, обучающихся по инженерным и физико-математическим специальностям. УДК 517 ББК 22.161 ISBN 978-5-91327-729-9 © Паровик Р. И., 2022 © ИД «Академия Естествознания» ОГЛАВЛЕНИЕ ВВЕДЕНИЕ ............................................................................................................4 ОПИСАНИЕ БЛОКОВ И ПРИМЕРЫ ИХ РАБОТЫ В SCILAB .......................5 Лабораторная работа № 1. ПРОСТАЯ МОДЕЛЬ XCOS .................................................................34 Лабораторная работа № 2. ПОСТРОЕНИЕ МОДЕЛЕЙ РАЗЛИЧНЫХ СИГНАЛОВ В XCOS ............................................................................39 Лабораторная работа № 3. ПОСТРОЕНИЕ МОДЕЛЕЙ ДИНАМИЧЕСКИХ ОБЪЕКТОВ ........46 Лабораторная работа № 4. ПОСТРОЕНИЕ АЛГЕБРАИЧЕСКИХ ОБЪЕКТОВ ..........................58 Лабораторная работа № 5. РАСЧЕТ ОПТИМАЛЬНОЙ СТАВКИ НАЛОГА.................................65 Лабораторная работа № 6. СПЕКТРОГРАФ ...................................................................................73 Лабораторная работа № 7. МОДЕЛИРОВАНИЕ СМО НА ПРИМЕРЕ ЭФФЕКТИВНОСТИ РАБОТЫ ОРГАНИЗАЦИИ ..................................................................75 Лабораторная работа № 8. МОДЕЛИРОВАНИЕ ЛОГИЧЕСКИХ СТРУКТУР ............................79 Лабораторная работа № 9. МОДЕЛИРОВАНИЕ ЦИФРОВЫХ СИСТЕМ УПРАВЛЕНИЯ .......86 Лабораторная работа № 10. МОДЕЛИРОВАНИЕ СИСТЕМ УПРАВЛЕНИЯ С ОБРАТНОЙ СВЯЗЬЮ ......................................................................90 Лабораторная работа № 11. ИСПОЛЬЗОВАНИЕ СУПЕРБЛОКОВ В СИСТЕМЕ УПРАВЛЕНИЯ .....................................................................................96 СПИСОК ЛИТЕРАТУРЫ ................................................................................. 101 3 ВВЕДЕНИЕ Scilab – пакет прикладных математических программ, предоставляющий открытое окружение для инженерных, технических и научных расчетов. Пакет можно скачать с официального сайта http://www.scilab.org. Программная система общедоступна, что, несомненно, является весомым преимуществом по сравнению с широко известными пакетами [1, 2]. Scilab предоставляет широкие возможности по созданию и редактированию различных видов графиков и поверхностей. Несмотря на то, что система Scilab содержит достаточное количество встроенных команд, операторов и функций, отличительная ее черта – гибкость. Пользователь может создать любую новую команду или функцию, а затем использовать ее наравне со встроенными. К тому же, система имеет достаточно мощный собственный язык программирования высокого уровня, что говорит о возможности решения новых задач. Кроме того, в состав Scilab входит утилита, осуществляющая конвертирование документов из Matlab в Scilab, что немаловажно при разработке программ в системе Scilab, использующих готовые модули пакета Matlab [3]. Все это способствует успешному применению программной системы Scilab в обучении студентов решению разного рода вычислительных задач [4]. Xcos (название первых версий Scicos, от «Scilab Connected Object Simulator») – часть системы Scilab [5–10]. Xcos позволяет осуществлять визуальное математическое моделирование различных процессов и систем. В практикуме предполагается, что выполнение лабораторных работ должно отражаться в отчете, который обучающий должен защитить в рамках дисциплины. Требования к оформлению и содержанию отчета даются преподавателем. 4 ОПИСАНИЕ БЛОКОВ И ПРИМЕРЫ ИХ РАБОТЫ В SCILAB Цель работы: ознакомиться с блоками Xcos Scilab – пакет прикладных математических программ, предоставляющий открытое окружение для инженерных (технических) и научных расчётов. Это самая полная общедоступная альтернатива MATLAB [1]. Отличия от некоторых коммерческих программ: 1. Бесплатность. 2. Свободность (с версии 5.0). 3. Маленький размер – дистрибутив 4 версии занимал менее 20 МБ против более чем двухгигабайтного пакета MATLAB. Инсталлятор 6 версии (6.6.1) увеличился в объёме до 172 МБ. 4. Возможность запуска в консоли без использования графического интерфейса, в том числе в версии под Windows. Это позволяет производить автоматизированные вычисления, есть пакетный режим. В системе доступно множество инструментов [6]: 1. 2D и 3D графики, анимация 2. Линейная алгебра, разреженные матрицы (sparsematrices) 3. Полиномиальные и рациональные функции 4. Интерполяция, аппроксимация 5. Симуляция: решение ОДУ и ДУ 6. Xcos: гибрид системы моделирования динамических систем и симуляции 7. Дифференциальные и не дифференциальные оптимизации 8. Обработка сигналов 9. Параллельная работа 10. Статистика Рассмотрим интересующий нас инструмент Xcos (Scicos) – инструмент для редактирования блочных диаграмм и симуляции (аналог Simulink в пакете MATLAB) рис. 1. Имеется возможность совместной работы Scilab с программой LabVIEW [1]. При моделировании с использованием Xcos реализуется принцип визуального программирования, в соответствии с которым разработчик на экране из стандартных библиотечных блоков создает модель устройства и осуществляет расчеты. При этом, в отличие от классических способов моделирования, разработчику не нужно досконально знать язык программирования и численные методы математики, а достаточно общих знаний, требующихся при работе на компьютере и, естественно, знаний той предметной области, в которой он работает. 5 Р. И. Паровик При работе с Xcos есть возможность модернизировать библиотечные блоки, создавать свои собственные, а также составлять новые библиотеки блоков [5]. Рис. 1. Графический редактор Xcos Создание моделей в пакете Xcos основывается на использовании технологии Drag-and-Drop (перетяни и оставь). В качестве «кирпичиков» при построении модели используются визуальные блоки (модули), которые хранятся в библиотеке Xcos. Для каждого блока в Xcos разработчик может настраивать определенные параметры, переменные, установки моделирования. Эти параметры сохраняются вместе с файлом модели, поэтому даже в том случае, когда файл будет открыт на другом компьютере, установки будут использованы те же [5, 6]. В данном пакете визуальные блоки разделены на следующие палитры: 1. Общеупотребительные блоки. 2. Системы с непрерывным временем. 3. Системы с разрывами. 4. Системы с дискретным временем. 5. Задание табличных значений. 6. Математические операции. 7. Обработка событий. 8. Матричные операции. 9. Электрические блоки. 10. Целое число. 11. Порты и подсистемы. 12. Обнаружение перехода через нуль. 13. Маршрутизация сигналов. 14. Обработка сигналов. 6 Описание блоков и примеры их работы в SCILAB 15. Блоки неявных данных. 16. Примечания. 17. Регистрирующие устройства. 18. Источники сигналов и взаимодействий. 19. Термогидравлические блоки. 20. Примеры блоков. 21. Пользовательские функции. Рассмотрим подробнее каждую палитру и блоки, которые она в себя включает. Общеупотребительные блоки [5]. Данная палитра содержит набор блоков, которые, как правило, используются при моделировании любого рода систем. В общеупотребительные блоки входят объекты из других палитр, поэтому более подробно они будут рассмотрены ниже. Рис. 2. Общеупотребительные блоки Системы с непрерывным временем. Данная палитра содержит блоки, которые можно условно поделить на три группы: блоки общего назначения (интеграторы, дифференциаторы), блоки задержки сигнала, блоки линейных стационарных звеньев. 1. Блок CLINDUMMY_f ( ) – этот блок должен быть помещен в любую блок-схему, содержащую блок с нулевым пересечением, но не систему с непрерывным состоянием. Причиной этого является то, что именно решатель находит нулевые пересекающиеся поверхности. 2. Блок CLR ( )– этот блок реализует линейную систему SISO (Single-input, single-output), представленную ее рациональной передаточной 7 Р. И. Паровик функцией числитель/знаменатель. Рациональная функция должна быть правильной (степень знаменателя должна быть меньше или равна степени числителя). )– этот блок реализует линейную систему со- 3. Блок CLSS ( стояний с непрерывным временем. Х – вектор состояния, U – вектор входных функций и Y – вектор выходных переменных. Система определяется (А, B, С, D) матрицей и исходным состояниемХ0. Размеры должны быть совместимы. )– производный блок аппроксимирует мгновенную 4. Блок DERIV ( производную от его ввода по времени t. В производном блоке нет настройки, а исходный вывод для блока равен нулю. ) – этот блок является интегратором. Вы- 5. Блок INTEGRAL_f ( ход – первообразная ввода. ) – этот блок является интегратором. Вы- 6. Блок INTEGRAL_m ( ходной параметр Y есть интеграл от входного сигнала U на текущем шаге по времени t. где у0 определяется начальным условием, а t0 является его соответствующим временем. 7. Блок PID ( ) – этот блок реализует ПИД (пропорционально-ин- тегрально-дифференциальный) контроллер. Он вычисляет значение «ошибки» Ue как разница между измеряемой переменной процесса Ur и желаемой Upr. Ue = Ur – Upr. 8. Блок TCLSS ( ) – этот блок реализует линейную систему со- стояний с непрерывным временем с возможностью прыжков в состоянии. Количество входов этого блока равно двум. Первый вход – это регулярный ввод линейной системы, второй – новое значение состояния, которое копируется в состояние, когда событие достигает уникального входного порта события этого блока. Это означает, что состояние системы переходит на значение, присутствующее на втором входе (размер которого равен состоянию состояния). Система определяется матрицами (A, B, C, D) и начальным состоянием x0. Размеры должны быть совместимы. Размеры входов и выходов настраиваются автоматически. 8 Описание блоков и примеры их работы в SCILAB 9. Блок TIME_DELAY ( ) – данный блок называют «Задержка переноса». Он задерживает ввод на определенный промежуток времени. Его можно использовать для имитации временной задержки. Параметр блока должен быть неотрицательным. 10. Блок VARIABLE_DELAY ( ) – блок может использоваться для моделирования переменной временной задержки между действием и его эффектом. Блок может использоваться, например, для моделирования системы с трубой, где скорость работы насосной жидкости двигателя в трубе варьируется. 11. Блок PDE ( ) – этот блок представляет собой реализацию не- скольких числовых схем, конечных разностей, для решения одномерного PDE (дифференциального уравнения в частных производных) в Xcos. Математическая структура ограничена линейными скалярами PDE с максимальным порядком 2 во времени и пространстве. Система принятия решений выбирает наиболее эффективную численную схему в зависимости от типа PDE и запускает решатель. Системы с разрывами. Палитра содержит 7 элементов, которые реализуют разного вида кусочно-линейные зависимости выхода от входа или осуществляют разного вида переключения сигнала. 1. Блок BACKLASH ( ) – блок позволяет смоделировать систему, представляющую механическую игру, такую как система передач. 2. Блок DEADBAND ( ) – блок обеспечивает область нулевого вы- хода. Это диапазон входов, для которых выход остается неизменным. Вне этого диапазона существует линейная зависимость между нечувствительным входом u(k) и выходом мертвой зоны v(k). 3. Блок DELAYV_f ( 4. Блок HYSTHERESIS ( ) – аналог блока VARIABLE_DELAY. ) – блок реле позволяет его выходу пере- ключаться между двумя указанными значениями. Когда реле включено, оно 9 Р. И. Паровик остается включенным до тех пор, пока вход не опустится ниже значения параметра точки выключения. Когда реле выключено, оно остается выключенным, пока вход не превысит значение параметра точки включения. Блок принимает один вход и генерирует один выход. 5. Блок RATELIMITER ( ) – данный блок ограничивает первую производную от проходящего через нее сигнала. Выход изменяется не быстрее указанного предела. ) – этот блок выводит квантование ввода в соот- 6. Блок QUANT_f ( ветствии с выбором методов (типов квантования). 7. Блок SATURATION ( ) – блок насыщения налагает верхнюю и нижнюю границы сигнала. Когда входной сигнал находится в пределах диапазона, заданного параметрами Нижний предел и Верхний предел, входной сигнал проходит без изменений. Когда входной сигнал выходит за пределы этих границ, сигнал обрезается до верхней или нижней границы. Системы с дискретным временем. В данную палитру входят блоки, с помощью которых в модели может быть описано поведение дискретных систем. 1. Блок AUTOMAT ( ) – этот блок дает возможность постро- ить гибридные автоматы, то есть гибридную систему, дискретная часть которой определяется через моды и переходы между модами, а непрерывная часть определяется через DAE (дифференциальные алгебраические уравнения). 2. Блок DELAYV_f ( 3. Блок DELAY_f ( ) – рассмотрен выше. ) – этот скомпилированный суперблок реализует дискретизированную задержку. Он построен со сдвижным регистром и часами. Величина задержки задается шагом времени дискретизации, умноженным на состояния регистра. 4. Блок DLR ( 10 ) – аналог CLR, только для дискретных моделей. Описание блоков и примеры их работы в SCILAB 5. Блок DLRADAPT_f ( ) – этот блок моделирует систему, представ- ленную нулями и полюсами дискретной передаточной функции. 6. Блок DLSS ( 7. Блок DOLLAR_f ( 8. Блок DOLLAR ( ) – рассмотрен выше. ) – этот блок эквивалентен DOLLAR. ) – блок задерживает ввод в указанный период выборки. Он принимает один вход и генерирует один вывод, который может быть либо скалярным, либо обоими векторами. 9. Блок DOLLAR_m ( 10. Блок SAMPHOLD_m ( ) –этот блок эквивалентен DOLLAR. ) –каждый раз, когда принимается вход- ное событие, блок копирует свой вход на выходе и удерживает его до ввода события. Для периодической выборки и удержания вход события должен генерироваться часами. 11. Блок TCLSS ( 12. Блок REGISTER ( ) – рассмотрен выше. ) – этот блок реализует регистр сдвига. На каждом входном событии регистр сдвигается на один шаг. Задание табличных значений. В данной палитре всего три блока. 1. Блок INTRP2BLK_f ( ) – выход этого блока является функцией входов, полученных билинейной интерполяцией. Этот блок имеет два скалярных входа и один скалярный выход. X(i) и Y(i) дают соответственно координату X и координату Y i-й точки данных, а Z(Y(i), X(i)) ее значение. 2. Блок INTRPLBLK_f ( ) – выход этого блока является функцией входа, полученного линейной интерполяцией. Этот блок имеет единственный скалярный вход и единственный скалярный выходной порт. 11 Р. И. Паровик 3. Блок LOOKUP_f ( ) – этот блок реализует нелинейную функцию, определенную с помощью графического редактора. Обработка событий. Палитра является одной из самых больших по составу и содержит в себе 25 блоков. 1. Блок CLOCK_c ( ) –уникальный вывод этого блока генерирует регу- лярный ход событий, которые назначаются параметром Период в секундах. Дата начала генерации событий может быть установлена в секундах с параметром Время инициализации. ) – разница между SampleCLK и CLOCK_c за- 2. Блок SampleCLK ( ключается в том, что все блоки SampleCLK в схеме являются синхронными. Синхронизм осуществляется за счет двух разных методов вычисления на этапе компиляции. ) – этот блок считается компилятором как вир- 3. Блок VirtualCLK0 ( туальный. Он используется в подсистемах для запуска всегда активных блоков (например, синусоидального генератора). 4. Блок ANDBLK ( ) – блок объединяет набор сигналов, то есть группу сигналов, представленных одной строкой на блок-диаграмме. Это позволяет сократить количество линий, необходимых для маршрутизации сигналов от одной части диаграммы к другой. 5. Блок ANDLOG_f ( ) – этот блок с двумя входами событий и регу- лярным выходом. Он выводит +1 или –1 на его регулярном выходе в зависимости от входных событий. 6. Блок CEVENTSCOPE ( ) – этот блок реализует визуализацию сигна- лов входных событий. 7. Блок CLKFROM ( ) – этот блок используется для подключения портов событий. Похож на блок FROM. 12 Описание блоков и примеры их работы в SCILAB ) – этот блок используется для подключения 8. Блок CLKGOTO ( портов событий. Похож на блок GOTO. ) – этот блок используется в случае со- 9. Блок CLCGoTagVisibility ( бытия. Похож на блок GoTagVisibility. 10. Блок CLKOUTV_f ( ) – этот блок представляет собой порт вывода ак- тивации. Он должен использоваться только внутри суперблока и подключаться к выходу активации на выходе внутренней активации в подсистеме. ) – этот блок представляет собой блок до- 11. Блок CLKSOMV_f ( бавления событий с тремя входами. Выход воспроизводит события на всех входных портах. 12. Блок EDGE_TRIGGER ( ) – этот блок генерирует событие на восходящем, падающем или обоих краях входного сигнала (в зависимости от параметра блока). 13. Блок ENDBLK ( ) – этот блок можно использовать для установки окончательного времени моделирования. Когда этот блок имеет параметр, тогда симулятор перейдет к окончательному времени интегрирования, определенному в элементе Установка меню имитации, с момента времени, заданного параметром Конечное время моделирования диалогового окна. 14. Блок END_c ( ) – этот блок увеличивает текущее время до конечно- го времени интеграции моделирования при его активации. 15. Блок ESELECT_f ( ) – специальный блок, который похож на Если-То-Иначе. Синхронизированы вход и выход. Входящее событие направляется на один из портов выходных событий в зависимости от значения обычного ввода. 16. Блок EVTDLY_c ( ) – блок генерирует одно событие. Задержка осуществляется после того, как событие входит в уникальный входной порт событий. Начальное выходное событие также определяется параметрами. 13 Р. И. Паровик ) – блок генерирует одно событие на уникаль- 17. Блок EVTGEN_f ( ном порту выходных событий, если время события больше нуля, если нет, событие не генерируется. ) – генерируется одно событие. Задержка по- 18. Блок EVTVARDLY ( сле того, как событие входит в уникальный входной порт событий. Значение задержки считывается из обычного входного порта. Блок также может генерировать начальное событие вывода. 19. Блок Extract_Activation ( ) – блок преобразования входного сиг- нала в сигнал активации. 20. Блок HALT_f ( ) –этот блок имеет уникальный входной порт собы- тий. По прибытии события симуляция останавливается, и основное окно Xcos активируется. 21. Блок IFTHEL_f ( ) – одно событие генерируется на одном из пор- тов выходных событий при поступлении входного события. В зависимости от знака обычного ввода событие генерируется на первом или втором выходе. Это синхронный блок, событие ввода и вывода синхронизировано. 22. Блок M_freq ( ) – эти блоки генерируют события в определенное время выборки времени моделирования. Время выборки задается в поле «Время выборки», а смещение задается в поле «Смещение». Этот блок имеет один вход для события, количество выходов событий зависит от количества разного времени выборки. 23. Блок MCLOCK_f ( ) – этот блок представляет собой суперблок, построенный путем подачи обратно выходов блока MFCLCK_f на его вход. Два выхода этого блока генерируют регулярный ход событий, частоту первого входа, равную значению второго выхода, деленному на целое число n. 14 Описание блоков и примеры их работы в SCILAB 24. Блок MFCLCK_f ( ) – этот блок используется в суперблоке MCLOCK_f. Событие ввода направляется один раз каждые n раз на первый выход, а остальное время – на выход второй. В передаче события происходит задержка. 25. Блок freq_div ( ) – этот блок является суперблоком. Событие ввода направляется один раз каждые n раз для вывода. Вход управляется часами событий. Математические операции. Данная палитра является наибольшей по составу и содержит 26 блоков. Эти блоки условно можно разделить на несколько групп: блоки, реализующие элементарные математические операции (умножения, суммирования разных математических объектов); блоки, реализующие элементарные математические функции; блоки, обеспечивающие логическую обработку входных сигналов; блоки, которые преобразуют комплексный сигнал в два действительных и наоборот тем или другим способом. 1. Блок ABS_VALUE ( ) –этот блок вычисляет абсолютное значение элементов входного вектора. 2. Блок BIGSOM_f ( ) – этот блок выполняет сложение или вычита- ние на его скалярном или векторном вводе. 3. Блок COSBLK_f ( ) – этот блок вычисляет косинус элементов входного вектора. 4. Блок EXPBLK_m ( ) – выходом этого блока является вектор y[i] = a^u[i], где параметр является положительным скаляром или векторным входом. Размеры входного и выходного портов определяются компилятором. 5. Блок GAINBLK_f ( ) – этот блок является блоком усиления. Резуль- тат – время усиления регулярного входа (вектора). Размеры усиления определяет количество входных данных (количество столбцов) и выход (количество строк). 6. Блок GAINBLK ( ) – блок усиления. 15 Р. И. Паровик 7. БлокGAIN_f ( ) – аналог GAINBLK (GAINBLK_f). ) – этот блок вычисляет выходной вектор 8. Блок INVBLK ( y[i] = 1/u[i], где u – входной вектор. Размеры ввода и вывода определяются контекстом. ) – этот блок вычисляет логарифм элементов 9. Блок LOGBLK_f ( входного вектора. Пользователь может задать основание при помощи параметра Основа. 10. Блок MATHMAGPHI ( ) – этот блок вычисляет величину и угол матрицы комплексных чисел или составляет матрицу комплексных чисел из матрицы величин и матрицы углов по отношению к значению параметра типа разложения. 11. Блок MATZREIM ( ) – этот блок разлагает матрицу комплекс- ных чисел, разделяя действительную и мнимую части или составляя матрицу комплексных чисел, объединяя две части по значению параметра типа разложения. 12. Блок MAXMIN ( ) – этот блок находит минимальные/макси- мальные значения и принимает один или два входа в зависимости от параметра. 13. Блок MAX_f ( ) – максимальное значение элементов входного вектора. 14. Блок MIN_f ( ) – минимальное значение элементов входного вектора. 15. Блок POWBLK_f ( ) – этот блок вычисляет выходной вектор y[i] = u[i]^a, где a – вещественный скаляр, заданный параметром. 16. Блок PRODUCT ( ) – этот блок вычисляет элементное умноже- ние или деление его векторных входов. 16 Описание блоков и примеры их работы в SCILAB ) – блок, на выходе которого вычисляется поэле- 17. Блок PROD_f ( ментное произведение двух входных векторов. ) – выход блока представляет собой вектор при- 18. Блок SIGNUM ( знаков элементов входного вектора. 19. Блок SINBLK_f ( ) – блок вычисляет синус элементов входного вектора. 20. Блок SQRT ( ) – блок вычисляет квадратный корень элементов входного вектора. ) –этот блок выполняет скалярное, вектор- 21. Блок SUMMATION ( ное или матричное сложение или вычитание. 22. Блок SUM_f ( ) – этот блок выполняет скалярное, векторное или матричное сложение. 23. Блок SOM_f ( ) – этот блок представляет собой сумму. Выход представляет собой элементарную сумму входов. 24. Блок TANBLK_f ( ) – блок вычисляет тангенс элементов вход- ного вектора. 25. Блок TrigFun ( ) – блок тригонометрических функций. Он выполняет множество общих тригонометрических функций. Пользователь может выбрать любую функцию среди предложенных. 26. Блок RELATIONALOP ( ние двух входов. ) – блок выполняет логическое сравне17 Р. И. Паровик Матричные операции. Палитра, как и Математические операции, является самой большое и содержит в себе 26 блоков. 1. Блок CUMSUM ( ) – блок суммирует элемент входной матри- цы MxN вдоль строк, столбцов или первого немонотонного измерения. 2. Блок EXTRACT ( ) – блок извлекает некоторые элементы из входной матрицы. Размер вывода зависит от количества строк и количества столбцов для извлечения. 3. Блок EXTTRI ( ) – блок извлекает некоторые элементы из вход- ной матрицы u. Размер выходной матрицы такой же, как и входной матрицы. 4. Блок MATBKSL ( ) – блок выводит левое матричное деление. 5. Блок MATCATH ( ) – блок выводит горизонтальную конкатена- цию нескольких матриц. Он также называется конкатенацией по столбцам. 6. Блок MATCATV ( ) – блок выводит вертикальную конкатенацию нескольких матриц. Он также называется конкатенацией по строкам. 7. Блок MATDET ( 8. Блок MATDIAG ( 9. Блок MATDIV ( 10. Блок MATEIG ( ) – блок вычисляет определитель матрицы. ) – блок создает диагональ входной матрицы. ) – блок выводит правое матричное деление. ) – блок вычисляет собственные значения и соб- ственные векторы квадратной входной матрицы U. 18 Описание блоков и примеры их работы в SCILAB 11. Блок MATEXPM ( ) – блок выводит матричную экспоненту ква- дратного матричного входа. Выход представляет собой квадратную матрицу с одинаковым размером ввода. 12. Блок MATINV ( ) – блок выводит матрицу, обратную входной. 13. Блок MATLU ( ) – выводит две матрицы (L и U) с поворотом строки из LU-факторизации входной квадратной матрицы. 14. Блок MATMAGPHI ( 15. Блок MATMUL ( 16. Блок MATPINV ( ) – рассмотрен выше. ) – умножение матриц, либо матрицы на число. ) – блок выводит неквадратную матрицу, об- ратную входной. 17. Блок MATRESH ( ) – блок изменяет размеры матрицы или вектора на другие размеры, заданные пользователем, в требуемом параметре выходного размера. Размеры вывода должны быть меньше или равны размеру ввода. 18. Блок MATSING ( ) – вычисляет SVD (сингулярное разложе- ние) входной матрицы A размерности M×N путем нахождения U, S и V таких, что А = U*S*V. 19. Блок MATSUM ( 20. Блок MATTRAN ( ) – сумма элементов матрицы. ) – блок, на выходе которого получается транспонированная матрица. 21. Блок MATZCONJ ( ) – этот блок вычисляет матрицу, содержа- щую конъюгат из элементов комплексной исходной матрицы. 19 Р. И. Паровик 22. Блок MATZREIM ( ) – рассмотрен выше. ) – этот блок находит решение уравнения Риккати 23. Блок RICC ( с помощью различных методов. Работает в системах с непрерывным и дискретным временем. ) – этот блок вычисляет коэффициенты 24. Блок ROOTCOEF ( многочлена с учетом его значений корня. Эти корни задаются на входе в виде вектора столбца. 25. Блок SQRT ( ) – рассмотрен выше. ) – этот блок выводит подматрицу входной ма- 26. Блок SUBMAT ( трицы. Размеры входной матрицы указаны в параметре Размер входного сигнала. Электрические блоки. В палитре имеются как управляемые источники электрической энергии (тока, напряжения), так и неуправляемые, а также диоды, резисторы и многое другое, что нужно для моделирования электрических систем. 1. Блок CCS ( ) –этот блок является идеальным источником тока. Те- кущее значение контролируется посредством явного ввода блока. Напряжение на блоке не зависит от текущего значения. 2. Блок CVS ( ) – этот блок является идеальным источником напряже- ния. Величина напряжения контролируется через явный вход блока. Ток, проходящий через блок, не зависит от напряжения на клеммах блока. 3. Блок Capacitor ( ) – электрический конденсатор (конденсатор – это компонент, который может хранить энергию). 4. Блок ConstantVoltage ( ) – блок является моделью для любого устройства или системы, которая создает постоянную электродвижущую силу между своим портом. 20 Описание блоков и примеры их работы в SCILAB ) – этот блок вставляется последовательно 5. Блок CurrentSensor ( в электрическую цепь для измерения тока. 6. Блок Diode ( ) – этот компонент состоит из простого диода, параллельного омическому сопротивлению (R). 7. Блок Ground ( ) – элемент заземления. Он является однокомпонент- ным и обеспечивает опорное напряжение в электрических цепях. Потенциал на узле блока равен нулю. Каждая электрическая цепь должна содержать по крайней мере один элемент заземления. ) – гиратор представляет собой элемент с двумя 8. Блок Gyrator ( портами, определяемый следующими уравнениями: i1 = G2*v2, i2 = –G1*v1, где константы G1, G2 называются проводимостью гирации. ) – блок идеального трансформатора – 9. Блок IdealTransformer ( идеальный резистивный элемент схемы с двумя портами. 10. Блок Inductor ( ) – электрический индуктор (индуктор пред- ставляет собой электрический компонент, который может хранить энергию). 11. Блок NMOS ( ) – блок представляет собой простую модель n-канального металлоксидного полупроводникового полевого транзистора. 12. Блок NPN ( ) – блок представляет собой простую модель бипо- лярного транзистора NPN-перехода. 13. Блок OpAmp ( ) – блок с двумя портами, один из которых привя- зан к v1 = 0 и i1 = 0 (нуллатор (идеальный элемент с нулевым сопротивлением)). Во втором порту возможны как любое напряжение v2, так и любой ток i2 (норатор (идеальный элемент с бесконечно большим сопротивлением)). 21 Р. И. Паровик 14. Блок PMOS ( ) – блок представляет собой простую модель р-канального металлоксидного полупроводникового полевого транзистора. 15. Блок PNP ( ) – блок представляет собой простую модель бипо- лярного транзистора PNP-перехода. ) – этот блок используется для измерения 16. Блок PotentialSensor ( напряжения в электрической цепи. 17. Блок Resistor ( 18. Блок SineVoltage ( 19. Блок Switch ( ) – электрический резистор. ) – синусоидальный источник напряжения. ) – неидеальный электрический переключатель с двумя портами. 20. Блок VVsourceAC ( ) – блок источника переменного напряжения является моделью для управляемого источника переменного напряжения. Этот компонент обеспечивает синусоидальное напряжение через его порты. 21. Блок VariableResistor ( 22. Блок VoltageSensor ( ) – переменный омический резистор. ) – этот компонент используется для изме- рения разницы напряжения между двумя узлами в электрической цепи. 23. Блок VsourceAC ( ) – этот компонент является источником пере- менного напряжения с выходным напряжением синусоиды. Целое число. Палитра содержит двенадцать блоков. 1. Блок BITCLEAR ( ) – этот блок устанавливает 0 для указан- ного бита. Пользователь дает индекс бита в поле Индекс Бит. 22 Описание блоков и примеры их работы в SCILAB ) – этот блок устанавливает 1 для указанного 2. Блок BITSET ( бита. Пользователь вводит индекс бита в поле Индекс бит. ) – преобразование типов данных (целое 3. Блок CONVERT ( в вещественное). ) – блок выводит на Q свое входное состоя- 4. Блок DFLIPFLOP ( ние (D), когда установлен входной сигнал разрешения (en), и на передний фронт входного сигнала синхронизации (clk). Выход !Q является логическим отрицанием Q. ) – блок копирует свое входное состояние (D) на 5. Блок DLATCH ( выходе (Q), когда вход разрешения (C) высок, и в этой конфигурации он выглядит прозрачным. Выход !Q является логическим отрицанием Q. ) – для целочисленного ввода этот 6. Блок EXTRACTBITS ( блок выводит смежный набор битов. 7. Блок INTMUL ( 8. Блок JKFLIPFLOP ( ) – целочисленное умножение матриц. ) – самый универсальный из базовых тригге- ров. Он имеет два входа, традиционно обозначаемые J (Set) и K (Reset). 9. Блок LOGIC ( ) – блок реализует стандартные таблицы истинно- сти для логических выражений (комбинаторная логика). 10. Блок SHIFT ( ) – блок сдвигает биты входного сигнала. В этой операции цифры перемещаются вправо или влево. Пользователь может выбрать правило для смещения битов, которые могут быть нормальными или циклическими, установив параметр ShiftType равным 0 или 1. 23 Р. И. Паровик 11. Блок SRFLIPFLOP ( ) – этот блок описывает простейшую и са- мую фундаментальную защелку SR. Выход Q зависит от состояния входов S и R. Выход !Q является логическим отрицанием Q. 12. Блок LOGICAL_OP ( ) – логический блок, который выполняет логические операции (конъюнкция, дизъюнкция, отрицание и др.). входные значения могут принимать 0 и 1. Порты и подсистемы. Палитра содержит семь блоков, предназначенных, как правило, для моделирования подсистем. ) – входной порт активации. 1. Блок CLKINV_f ( 2. Блок CLKOUTV_f ( 3. Блок IN_f ( ) – выходной порт активации. ) – обычный входной порт. ) – неявный входной порт. 4. Блок INIMPL_f ( ) – неявный выходной порт. 5. Блок OUTIMPL_f ( 6. Блок OUT_f ( ) – обычный выходной порт. 7. Блок SUPER_f ( ) – суперблок, применяемый для построения подсистем. Обнаружение перехода через нуль. Палитра насчитывает четыре блока. 1. Блок GENERAL_f ( ) – в зависимости от знака (непосредственно перед пересечением) входов и входных номеров входов, которыеперешли нуль, событие запрограммировано (или нет) с заданной задержкой для каждого выхода. 2. Блок NEGTOPOS_f ( ) – событие вывода генерируется, когда уни- кальный вход пересекает ноль с положительным наклоном. 24 Описание блоков и примеры их работы в SCILAB 3. Блок POSTONEG_f ( ) – событие вывода генерируется, когда уни- кальный вход пересекает ноль с отрицательным наклоном. ) – событие генерируется, когда все входы (если 4. Блок ZCROSS_f ( их больше одного) пересекают нуль одновременно. Маршрутизация сигналов [4]. Палитра с двадцатью двумя блоками. 1. Блок DEMUX ( ) – демультиплексор. Разделяет входной вектор на выходные значения. 2. Блок DEMUX_f ( ) – аналог DEMUX. ) – извлекает или выбирает обычный 3. Блок EXTRACTOR ( ввод из нескольких регулярных входных данных. 4. Блок SCALAR2VECTOR ( 5. Блок FROM ( ) – преобразование скаляра в вектор. ) – основная роль блока заключается в передаче сигналов от блока к другому блоку без физического подключения. 6. Блок FROMMO ( ) – этот блок используется для подключения блоков Modelica. 7. Блок GOTO ( ) – основная роль блока заключается в передаче сигналов от блока к другому блоку без физического подключения. 8. Блок GOTOMO ( ) – этот блок используется для подключения блоков Modelica. 9. Блок CLKFROM ( 10. Блок CLKGOTO ( ) – рассмотрен выше. ) – рассмотрен выше. 25 Р. И. Паровик ) – этот блок определяет доступность бло- 11. Блок GotoTagVisibility ( ка GOTO, когда он настроен как ограниченный. 12. Блок GotoTagVisibilityMO ( ) – этот блок определяет доступность блока GOTOМО, когда он настроен как ограниченный(Modelica). 13. Блок ISELECT_m ( ) – выбирайте сигналы от входящих со- бытий. Этот блок имеет один обычный входной порт. 14. Блок MUX ( ) – мультиплексор. Объединяет входные вектора в один. 15. Блок MUX_f ( ) – аналог MUX. 16. Блок M_SWITCH ( ) – мультипортовый блок, представляю- щий собой коммутатор, который выбирает между несколькими входами. 17. Блок NRMSOM_f ( ) – блок объединяет свои входы в одну вы- ходную линию, значение которой в любой момент равно самому последнему расчетному выходу своих блоков управления. Пользователь может указать любое количество входов. 18. Блок RELAY_f ( ) – этот блок направляет один из регулярных входов на уникальный регулярный вывод. 19. Блок SELECT_m ( ) – блок принимает входные сигналы как вектора, так и матрицы. Способ, которым блок определяет элементы для выбора, немного отличается в зависимости от типа ввода. 20. Блок SWITCH2_m ( ) – блок проходит через первый (верхний) вход или третий (нижний) вход, основанный на значении второго (среднего) ввода. 26 Описание блоков и примеры их работы в SCILAB 21. Блок SWITCH_f ( ) – блок ручного переключения. Он выбирает один из своих входов для перехода к выходу. ) – блок автоматического переключения. 22. Блок SELF_SWITCH ( Двойной щелчок по блоку инвертирует его состояние (вкл/выкл). Обработка сигналов. Палитра насчитывает всего два блока. ) – рассмотрен выше. 1. Блок QUANT_f ( 2. Блок SAMPHOLD_m ( ) – рассмотрен выше. Блоки неявных данных. В палитре всего три блока. 1. Блок CONSTRAINT_c ( ) – ограничение (определяет неявное алгебраическое отношение). 2. Блок CONSTRAINT2_c ( 3. Блок DIFF_f ( ) – двойное ограничение. ) – блок вычисляет производную входного сигнала. Примечания [4]. Палитра содержит один блок TEXT_f ( предназначен для подписей, сносок, комментариев. ), который Регистрирующие устройства. Блоки, собранные в данной палитре, имеют только входы и не имеют выходов данных. Условно их можно разделить на 3 вида: блоки, которые используются как обзорные окна при моделировании; блоки, обеспечивающие сохранение промежуточных и исходных результатов моделирования; блок управления моделированием, который позволяет перерывать моделирование при выполнении тех или других условий. 1. Блок AFFICH_m ( ) – дисплей; блок, позволяющий выводить промежуточные вычисления. 27 Р. И. Паровик 2. Блок BARXY ( ) –блок реализует визуализацию эволюции двух ре- гулярных входных сигналов, вытягивая сплошные полосы между двумя последовательными входами, представляющими координаты x и y. 3. Блок CANIMXY ( ) – блок реализует визуализацию эволюции двух правильных входных сигналов, рисуя второй вход как функцию первого в моменты событий на входе в порт события. Когда точка отображается на экране, она остается до тех пор, пока длина буфера не будет достигнута. Этот блок полезен для создания простых анимаций. 4. Блок CANIMXY3D ( ) – аналог CANIMXY, только с тремя входны- ми сигналами. 5. Блок CFSCOPE ( ) – блок с плавающей областью. 6. Блок CLKOUTV_f ( ) – рассмотрен выше. 7. Блок CMAT3D ( ) – блок, который показывает значения матрицы как значения z в сетке x;y. 8. Блок CMATVIEW ( ) – блок представляет собой область, которая отображает значения матрицы в сетке с кодовыми ячейками. 9. Блок CMSCOPE ( ) – блок отображает на графике значения его вхо- дов относительно времени моделирования. 10. Блок CSCOPE ( 11. Блок CSCOPXY ( ) – аналог CMSCOPE, только с одним входом. ) – блок реализует визуализацию эволюции двух регулярных входных сигналов, рисуя второй вход как функцию первого в моменты событий на входе в порт события. 28 Описание блоков и примеры их работы в SCILAB 12. Блок CSCOPXY3D ( ) – аналог CSCOPXY, только с тремя входны- ми сигналами. ) – рассмотрен выше. 13. Блок ENDBLK ( 14. Блок END_c ( ) – рассмотрен выше. 15. Блок HALT_f ( 16. Блок OUTIMPL_f ( 17. Блок OUT_f ( 18. Блок TOWS_c ( ) – рассмотрен выше. ) – рассмотрен выше. ) – рассмотрен выше. ) – блок используется для размещения ими- тируемых данных в рабочей области Scilab. 19. Блок TRASH_f ( ) – блок является конечным блоком. Он ничего не делает. 20. Блок WRITEAU_f ( ) – блок, предназначенный для записи данных в звуковой файл. 21. Блок WRITEC_f ( ) – блок, предназначенный для записи данных в двоичный файл. Источники сигналов и взаимодействий. Блоки, которые входят эту палитру, предназначены для формирования сигналов, которые обеспечивают работу Xcos-модели в целом или отдельных ее частей при моделировании. Все блоки-источники имеют по одному информационному выходу и не имеют информационных входов. 1. Блок CLKINV_f ( ) – рассмотрен выше. 29 Р. И. Паровик ) – рассмотрен выше. 2. Блок CLOCK_c ( ) – аналог CONST. 3. Блок CONST_m ( ) – блок является генератором постоянного значения. 4. Блок CONST ( ) – аналог CONST. 5. Блок CONST_f ( ) – блок определяет табличную функцию времени. 6. Блок CURV_f ( Между блоками точек сетки выполняется линейная интерполяция. Внешний блок табуляции выводит последнее табличное значение. ) –блок подсчитывается с величиной прираще- 7. Блок Counter ( ния/уменьшения, равной единице от минимального до максимального или от максимального к минимуму, в зависимости от выбора параметра Rule. ) – блок используется для получения 8. Блок FROMWSB ( определенных данных в Scilab в рабочей области для использования их в Xcos. ) – генератор синусоиды. 9. Блок GENSIN_f ( 10. Блок GENSQR_f ( ) – рассмотрен выше. 11. Блок INIMPL_f ( 12. Блок IN_f ( ) – генератор квадратной волны. ) – рассмотрен выше. 13. Блок Modulo_Count ( ) – дискретный блок. Выводит периоди- ческий скалярный кусочно-постоянный сигнал. Сигнал начинается с начального значения состояния. Выход увеличивается, когда блок получает событие на входе активации, пока выход не достигнет значения параметра верхнего предела. 30 Описание блоков и примеры их работы в SCILAB 14. Блок RAMP ( ) – блок генерирует сигнал, который начинается с указанного начального времени и начального значения и увеличивается на указанную скорость (параметр наклона). 15. Блок RAND_m ( ) – генератор случайных чисел. ) – блок для считывания данных из 16. Блок READAU_f ( звукового файла. )–блок для считывания данных из двоич- 17. Блок READC_f ( ного файла. 18. Блок RFILE_f( ) –блок для считывания данных из файла. ) – блок представляет собой генератор пи- 19. Блок SAWTOOTH_f ( лообразной волны. 20. Блок STEP_FUNCTION ( ) –блок выводит сигнал шага между двумя определяемыми уровнями Начальное значение и Конечное значение, начиная с заданного времени. 21. Блок PULSE_SC ( 22. Блок SampleCLK ( 23. Блок Sigbuilder ( ) – генератор импульсов. ) – рассмотрен выше. ) – построитель сигналов. Блок построителя сигналов – это суперблок, содержащий блок, выходной порт которого связан с его входным порт события. 24. Блок TIME_f ( ) – генератор времени. 31 Р. И. Паровик 25. Блок TKSCALE ( ) – блок, генерирующий кусочно-постоянный сигнал, значение которого можно задать в интерактивном режиме, используя виджет в ходе моделирования. Термогидравлические блоки. Палитра содержит шесть блоков, предназначенных для моделирования систем термогидравлики. 1. БлокBache ( ) – термогидравлический бак (резервуар). 2. Блок PerteDP ( 3. Блок PuitsP ( 4. Блок SourceP ( ) – термогидравлическая труба. ) – термогидравлический слив (колодец). ) – термогидравлический постоянный источник давления. 5. Блок VanneReglante ( 6. Блок Flowmeter ( ) – термогидравлический клапан. ) – термогидравлический датчик потока. Примеры блоков. Палитра с тремя блоками. 1. Блок BOUNCE ( ) – генератор координат шаров. 2. Блок BOUNCEXY ( ) –показатель шаров. 3. Блок BPLATFOTM ( ) – шары под платформой просмотра. Пользовательские функции. Одиннадцать блоков для создания пользовательских функция включает данная палитра. Как правило, это суперблоки, некоторые из которых были уже рассмотрены. 1. Блок CBLOCK ( ) – этот блок создает скелет функции Cи. Он также создает файлы библиотеки и объектные файлы. 32 Описание блоков и примеры их работы в SCILAB ) – устаревший аналог CBLOCK. 2. Блок CBLOCK4 ( 3. Блок DEBUG ( ) – блок позволяет установить ко- манду Scilab, которая выполняется до и после выполнения каждого блока во время моделирования. 4. Блок EXPRESSION ( ) – блок для расчёта математиче- ского выражения. ) – суперблок обеспечивает простой способ 5. Блок MBLOCK ( для построения блоков, поведение которых задается программой, написанной на базе языка modelica. 6. Блок PDE ( ) – рассмотрен выше. 7. Блок SUPER_f ( ) – рассмотрен выше. 8. Блок c_block ( ) – этот блок создает скелет функции Cи вычис- лениями. Также создает файл библиотеки и объектные файлы. 9. Блок fortan_block ( ) – аналог блока c_block, только на языке ФОРТРАН. 10. Блок generic_block3 ( ) – блок обеспечивает универсальную функцию сопряжения, но вычислительная функция должна быть определена отдельно, либо в качестве функции Scilab, fortran или функции Cи. 11. Блок scifunc_block_m ( ) – блок может реализовать любой тип блока Xcos. Функция блока определяется интерактивно с помощью диалоговых окон и языка Scilab. 33 Р. И. Паровик Лабораторная работа № 1. ПРОСТАЯ МОДЕЛЬ XCOS Цель работы: научиться строить простейшие модели в Xcos. Построим простейшую схему для вывода графика синусоиды. Для этого понадобится три блока: CLOCK_c, CSCOPE и GENSIN_f. Расположите блоки в окне моделирования, перетаскивая их мышкой. Соедините CLOCK_c и GENSIN_f с CSCOPE. В конечном итоге у Вас должна получить следующая модель. Рис. 3. Простейшая схема Для запуска моделирования выберите Моделирование → Выполнить в главном меню редактора или просто нажмите на соответствующую кнопку в панели инструментов. Для остановки моделирования выберите Моделирование → Завершить или же воспользуйтесь соответствующей кнопкой в панели инструментов. 34 Рис. 4. Результат моделирования Время моделирования можно задавать несколькими способами. Первый способ. Выберите палитру Обработка событий и добавьте к диаграмме блок ENDBLK. Установите параметр блока Final simulation time (конечное время моделирования) равным 30. Запустите моделирование. Второй способ. Выбрать пункт Моделирование → Установки в главном меню графического редактора и установить параметр Конечное время интегрирования равным нужному значению. Рис. 5. Настройки параметров пункта Моделирование Замечание. При наличии блока ENDBLK система выберет в качестве конечного наименьшее значение из Final simulation time и Конечное время интегрирования. 35 Р. И. Паровик Третий способ. Выберите пункт Моделирование → Установить контекст в главном меню редактора. Задайте следующие переменные рис. 6. Рис. 6. Задание параметров моделирования Установите частоту генератора равной freq, интервал дискретизации равным stime и конечное время моделирования равным endtime. Переменные окружения должны быть заданы перед их использованием. Значения переменных могут быть любой инструкцией, понятной Scilab. Рис. 7. Настройки блоков CLOCK_c, CSCOPE и GENSIN_f 36 Лабораторная работа № 1 Задания для самостоятельной работы 1. Измените значения параметров в нашей простой модели. Для этого воспользуйтесь двойным щелчком мышью по блоку в окне графического редактора, который вызывает окно Ввод значений. Это окно позволяет менять параметры блока (если блок допускает изменение параметров). Вызовите окно Ввод значений для блока GENSIN_f. Поменяйте значения частоты на 10. Запустите моделирование (рис. 8). Рис. 8. Результат моделирования Изучите параметры блока CSCOPE, измените их посмотрите, как изменится рис. 8. 2. Добавьте к текущей схеме блоки INTEGRAL_f, MUX, ABS_VALUE и CMSCOPE. Добавьте третий элемент к CMSCOPE в Input port sizes, равный 1. Задайте размерность первого входа равной 2. Соедините все блоки, согласно рис. 9. Рис. 9. Образец схемы 37 Р. И. Паровик Результаты моделирования приведены на рис. 10. Рис. 10. Результат моделирования Проведите исследование результатов моделирования, дайте интерпретацию полученных результатов. Измените параметры модели, исследуйте как будет меняться рис. 10. 38 Лабораторная работа № 2. ПОСТРОЕНИЕ МОДЕЛЕЙ РАЗЛИЧНЫХ СИГНАЛОВ В XCOS Цель работы: научиться составлять схемы с использованием различных блоков для описания различных функций (сигналов). Пример 1. Рассмотрим пример, на котором покажем, как строится модель на интервале t [0; 2] в среде моделирования сигнала вида Xcos. На рис. 11 приведены модельные блоки этого сигнала. Рассмотрим каждый блок более подробно. Рис. 11. Модель сигнала Сигнал 0,5sin(πt) задан в параметрах блока GENSIN_f ( ) (рис. 2). Для сигнала t2 использовались два блока – блок линейного сигнала блок RAMP ( ) и блок математической функции POWBLK_f ( ) при а = 2, где была выбрана функция возведения в квадрат. Блок SUMMATION ( ) суммирует два сигнала, а блок CSCOPE ( ) вы- водит график функции (рис. 12). 39 Р. И. Паровик Рис. 12. Изображение сигнала на экране осциллятора СSCOPE Пример 2. Рассмотрим более сложный пример. Необходимо построить систему базисных степенных функций вида: Рис. 13. Модельные блоки системы степенных функций 40 Лабораторная работа № 2 На рис. 13 использовано каскадное соединение интеграторов INTEGRAL_m ( ), на вход первого из которых подается сигнал константы. Выходные сигналы интеграторов масштабируются с помощью масштабных звеньев (бло)) и подаются вместе с сигналом константы на входы ки GAINBLK_f ( блока MUX ( ) – мультиплексор для отображения на экране виртуального осциллографа CSCOPE ( ) (рис. 14). Рис. 14. Изображение системы степенных функций на экране осциллятора СSCOPE Пример 3. Рассмотрим модель системы экспоненциальных функций В этой модели используются четыре идентичных последовательно соединенных блока источника линейного сигнала (RAMP) ( ) и блока 41 Р. И. Паровик математической функции EXPBLK_m ( ), где a = e (%e) для функ- ции exp. С помощью меню параметров решающих блоков задаются различные наклоны (крутизну) линейных сигналов (аргументов экспоненциальных функций) и выбирается тип функции блоков математической функции (в данном случае – exp) (рис. 15). Рис. 15. Параметры блока RAMP Выходные сигналы блоков математической функции через блок MUX подаются на вход блока виртуального осциллографа CSCOPE. К одному из входов смесителя MUX подключен сигнал константы CONST ( ), изображающий первую из экспоненциальных функций (e 0). Здесь блок CLINDUMMY_f ( ) используется, так как блок RAMP – блок с пере- сечением нуля (рис. 16). Визуализация представлена на рис. 17. 42 Лабораторная работа № 2 Рис. 16. Структурная модельная схема системы степенных функций Рис. 17. Визуализация экспоненциальных функций в блоке CSCOPE 43 Р. И. Паровик Задания для самостоятельной работы 1. Смоделировать и визуализировать сигнал заданной формы: Указание. Использовать блоки: Constant, Integrator, Gain, Trigonometric Function, Math Function, Sum, Scope. 2. Смоделировать и визуализировать сигнал заданной формы: Указание. Использовать те же блоки, что и в упр. 1, перестроив блок Math Function. 3. Смоделировать и визуализировать сигнал заданной формы: Указание. Использовать блоки: Constant, Integrator, Gain, Trigonometric Function, Math Function, Product, Scope. 4. Смоделировать и визуализировать сигнал заданной формы: Указание. Использовать в необходимых количествах блоки: Constant, Integrator, Gain, Math Function, Sum, Scope. 5. Смоделировать и визуализировать сигнал заданной формы: Указание. Использовать блоки: Constant, Integrator, Gain, Math Function, Sum, MinMax, Scope. 6. Смоделировать и визуализировать сигнал заданной формы: Указание. Использовать блоки: Constant, Integrator, Gain, Abs, Math Function, Scope. 7. Смоделировать и визуализировать систему базисных функций: 44 Лабораторная работа № 2 Указание. Использовать блоки: Сonstant, Integrator, Gain, Trigonometric Function, Mux, Scope. 8. Смоделировать и визуализировать систему базисных функций: Указание. Использовать блоки: Сonstant, Integrator, Gain, Trigonometric Function, Mux, Scope. 9. Смоделировать и визуализировать систему базисных функций: Указание. Использовать блоки: Сonstant, Integrator, Gain, Math Functions, Product, Mux, Scope. 10. Смоделировать и визуализировать систему базисных функций: Указание. Использовать блоки: Сonstant, Integrator, Gain, Product, Mux, Scope. 45 Лабораторная работа № 3. ПОСТРОЕНИЕ МОДЕЛЕЙ ДИНАМИЧЕСКИХ ОБЪЕКТОВ Цель работы: Цель работы: научиться составлять схемы решения обыкновенных дифференциальных уравнений (ОДУ) и их систем в среде Xcos пакета Scilab. 1. Решение ОДУ первого порядка Пример 1. Решить задачу Коши: (1) с помощью инструментов среды моделирования Xcos. После запуска системы Scilab нажмем кнопку Xcos . В открывшем- ся файле создадим схему решения уравнения, перетаскивая при нажатой левой кнопки мыши необходимые блоки из окна Браузера палитр. Для построения схемы решения задачи Коши (рис. 18) в Xcos используется блок INTEGRAL_m ( ). На его вход подается производная, а на выходе получают величину x(t). Блоки SUM (Сумматор) и GAIN (Усилитель) необходимы для формирования значения в соответствии с ОДУ. Для получения сигнала sin(t) используется блок блока GENSIN_f ( ), в котором необходимо провести установки, соответствующие задаче, открыв блок двойным щелчком мыши или выбрав опцию Параметра блока при нажатой правой кнопке мыши. Полученное значение x(t) подается на вход блока СSCOPE ( ). При открытии данного блока появляется график решения задачи (1) (рис. 19). 46 Рис. 18. Структурная схема решения задачи Коши Рис. 19. Визуализация решения в блоке CSCOPE 2. Решение систем ОДУ первого порядка Рассмотрим решение системы ОДУ первого порядка. Пример 2. Модифицированная задача Лотки – Вольтерра1. С учетом самоограничения на рост популяции жертв: (2) 1 Альфред Джеймс Лотка (англ. Alfred James Lotka; 2 марта 1880 года – 5 декабря 1949 года) – американский математик, физикохимик, статистик, демограф. Ви́то Вольте́рра (итал. Vito Volterra; 3 мая 1860, Анкона – 11 октября 1940, Рим) – итальянский математик и физик. 47 Р. И. Паровик Зададим параметры задачи (2): α = 0.1; β = 0.05; γ = 0.03; δ = 0.2; ε = 0.15, а также начальные условия x(0) = y(0) = 1. Блок – схема решения задачи в системе Xcos приведена на рис., а ее визуализация на рис. 20. Рис. 20. Структурная схема решение задача Лотки-Вольтерры График решения приведен на рис. 21. Рис. 21. Визуализация решение задачи Лотки-Вольтерра 48 Лабораторная работа № 3 Блоки INTEGRAL_m ( ) отвечают за формировании левой ча- сти системы дифференциальных уравнений. Блоки PRODUCT ( и SUMMATION ( ) ) отвечают за формирование правой части. Необ- ходимо отметить, что начальные условия задачи, задаются в параметрах блоков INTEGRAL_m. Визуализация решения проводится с помощью блока CMSCOPE ( ), который позволяет выводить несколько графиков. Блок CSCOPXY ( ) позволяет построить фазовую траекторию про- цесса рис. 22. Рис. 22. Фазовая траектория 49 Р. И. Паровик Для этого примера фазовая траектория является незамкнутой, следовательно, процесс является затухающим. Фазовая траектория соответствует точке покоя устойчивый фокус. Пример 3. Система Лоренца2. (3) где a = 10, b = 28, c = 8/3. Система (3) вначале была введена как первое нетривиальное галёркинское приближение для задачи о конвекции морской воды в плоском слое. На рис. 23 приведена структура решения системы Лоренца в Xcos. Рис. 23. Структура системы Лоренца 2 Э́двард Но́ртон Ло́ренц (англ. Edward Norton Lorenz; 23 мая 1917, Уэст-Хартфорд, Коннектикут, США – 16 апреля 2008, Кембридж, Массачусетс, США) – американский математик и метеоролог, один из основоположников теории хаоса, автор выражения «эффект бабочки», а также создатель аттрактора Лоренца. 50 Лабораторная работа № 3 Значения переменных и начальные условия задачи зададим в меню Моделирование в пункте Установить контекст (рис. 24). Рис. 24. Значения параметров для системы Лоренца Результаты моделирования в зависимости от начальных условий приведены на рис. 25. Рис. 25. Визуализация решения в зависимости от различных начальных условий 51 Р. И. Паровик Из рис. 25 видно, что расчетные кривые решений зависят от начальных условий, что указывает на нелинейный характер решения. Настройки блока CMSCOPE ( ) приведены на рис. 26. Рис. 26. Настройка блока CMSCOPE В блоке INTEGRAL_m ( ) начальные условия задаются, исходя из контекста (рис.). Пример установки значений параметров для этого блока приведен на рис. 27. Модель Лоренца является реальным физическим примером динамических систем с хаотическим поведением. На рис. 28 приведен аттрактор Лоренца или странный аттрактор Лоренца, визуализация которого осуществляется с помощью блока CANIMXY3D ( 52 ). Лабораторная работа № 3 Рис. 27. Настройка блока INTEGRAL_m Рис. 28. Аттрактор Лоренца в 3D и 2D Напомним, что странный аттрактор – это притягивающее множество неустойчивых траекторий в фазовом пространстве диссипативной динамической системы. 3. Решение ОДУ высших порядков Рассмотрим решение обыкновенного дифференциального уравнения высшего порядка при помощи Xcos. Пример 4. Решить: y″″ + y‴ + y″ + 0.5y′ + 0.1y = 0.1, (4) при нулевых начальных условиях. Для самой высокой производной запишем: y″″ = –y‴ – y″ – 0.5y′ – 0.1y + 0.1. 53 Р. И. Паровик Предположим, что y″″ известна. Тогда, после четырехкратного интегрирования получим у. Соберите схему, согласно рис. 29. Используйте такие блоки как CMSCOPE, CLOCK_c, STEP_FUNCTION, INTEGRAL_m, SUMMATION, GAIN_f. Рис. 29. Модель для решения дифференциального уравнения Постоянное слагаемое 0.1 формируется блоком STEP_FUNCTION как шаг в момент времени t = 0. Производные y‴, y″, y′ и y отображаются в CMSCOPE. Начальные условия у всех интеграторов нулевые, в соответствии с условиями задачи. У интеграторов есть верхние и нижние пределы. Необходимо не забывать задать их перед пуском. Блок STEP_FUNCTION по умолчанию имеет начальное время ступени равное 1. Его необходимо заменить на 0. В целом, блоки GAIN_f не обязательны, так как можно установить входной множитель в блоке SUMMATION. Здесь они включены для наглядности. Часы активации имеют начальное время равное нулю, а период 0.1. CMSCOPE имеет размерность входных портов {1 1 1 1}. Величины Ymin и Ymax устанавливаются путем перебора наиболее подходящих значений при нескольких прогонах (рис. 30). 54 Лабораторная работа № 3 Рис. 30. Результат моделирования Задания для самостоятельной работы 1. Построить схему решения в Xcos и получить графики решения следующих задач: 1) 2) 3) 55 Р. И. Паровик 4) 5) 6) y(0) = 0 на [0, 1]. 7) на [1, 2]. 8) на [0.3, 0.6]. на [1, 2]. 9) 10) 11) Генератор Ван-дер-Поля: 12) Осциллятор Дуффинга: 13) Осциллятор Ван-дер-Поль-Дуффинга x x 2 x x x 3 b sin t , 0,5, 0.8, b 0, 4, 1 14) Генератор с инерционной нелинейностью: 15) Система Чуа 56 Лабораторная работа № 3 16) Система Ресслера 17) Система Фиц Хью-Нагумо 18) Модель Мориса-Лекара 19) Система Хиндмарш-Розе 20) Система Хиндмарш-Розе (2-мерная) 57 Лабораторная работа № 4. ПОСТРОЕНИЕ АЛГЕБРАИЧЕСКИХ ОБЪЕКТОВ Цель работы: научится синтезировать алгебраические объекты в системе Xcos с помощью динамических объектов. В аналоговой вычислительной технике существует несколько способов моделирования объектов, описываемых системами алгебраических уравнений. Один из них, наиболее распространенный, сводится к решению системы обыкновенных дифференциальных уравнений. Установившееся решение такой системы дает решение алгебраической задачи. Для решения разнообразных математических задач, создан пакет прикладных программ Scilab. Пакет имеет специальные функции для работы с линейной алгеброй, матрицами, графикой, дифференциальной и линейной оптимизации и многие другие. С помощью этих функций решаются задачи в частном виде. Рассмотрим решение системы линейных алгебраических уравнений с помощью функций программы Scilab и моделирования в среде Xcos. Дана система линейно-алгебраических уравнений: (5) Здесь a11, a22, …, ann – неизменяемые коэффициенты, х1, х2, …, хn – неизвестные переменные, b1, b2, …, bn – свободные члены. Для построения модели данного алгебраического объекта (5) применяется метод сведения к эквивалентной системе дифференциальных уравнений. Введем следующую систему дифференциальных уравнений: (6) 58 Как только все производные будут сведены к нулю получим сигнал решения {x1, x2, …, xn}. Для эквивалентности систем (5) и (6) уравнений должно обеспечиваться затухающее решение системы дифференциальных уравнений. Достаточным условием, обеспечивающим затухающее решение, является положительная определенность матрицы коэффициентов линейной системы уравнений. Это возможно, в частности, при условии, когда Блоки, используемые в примерах: 1. BIGSOM_f – этот блок выполняет сложение или вычитание на его скалярном или векторном вводе. 2. 3. CONST_m – блок является генератором постоянного значения. GAIN_f – этот блок является блоком усиления. Результат – время усиления регулярного входа (вектора). Размеры усиления определяет количество входных данных (количество столбцов) и выход (количество строк). 4. INTEGRAL_f – этот блок является интегратором. Выход – пер- вообразная ввода. 5. CSCOPE – блок отображает на графике значения его входов отно- сительно времени моделирования. 6. 7. MUX – мультиплексор. Объединяет входные вектора в один. AFFICH_m – дисплей; блок, позволяющий выводить промежу- точные вычисления. 59 Р. И. Паровик Пример 1. Найти решение системы линейных алгебраических уравнений: Перейдем к эквивалентной системе дифференциальных уравнений: Загрузив программную систему Scilab и библиотечную панель Xcos, выбираем пользовательский блок: GAIN_f (умножение неизменяемого коэффициента в сигнал), CONST_m (источник неизменяемого сигнала), INTEGRAL_f (интегральный сигнал), AFFICH_m (произведение цифрового сигнала в виде числа) Scope (виртуальный осциллограф). В виртуальном осциллографе видно, что графическая функция означает, что с истечением времени продолжается часть неизменяемой системы уравнения. Структурная схема модели данной системы приведена на рис. 31. Она построена с использованием классических методов аналоговой вычислительной техники. Переходный процесс установления решения изображен на экране виртуального осциллографа (рис. 32). Рис. 31. Структурная схема модели 60 Лабораторная работа № 4 На рис. 32 видно, что после t = 2 на выходах виртуальных интеграторов устанавливаются сигналы, соответствующие решению системы линейных алгебраических уравнений: x1 = 5, x2 = –3. Расширение класса алгебраических объектов, матрица коэффициентов которых имеет произвольный вид, возможно путем использования методов квазианалогового моделирования. Примеры таких методов будут рассмотрены ниже. Рис. 32. Визуализация решения Пример 2. Найти решение системы: Модель системы и результаты ее работы представлены на рис. 33 и 34 соответственно. 61 Р. И. Паровик Рис. 33. Модель системы линейных алгебраических уравнений 3 порядка Решение системы уравнений, отображенное на цифровых регистраторах (AFFICH_m1 – AFFICH_m3) равно: Рис. 34. Переходный процесс установления решения системы уравнений 62 Лабораторная работа № 4 Пример 3. Найти решение системы: При решении системы уравнений, состоящих из неизменяемых чисел, вводим каждый эквивалент дифференциальной величины Модель системы представлена на рис. 35 запустив данную модель, получим график, изображенный на рис. 36. Рис. 35. Модель системы линейных алгебраических уравнений 3 порядка 63 Р. И. Паровик Рис. 36. График системы линейных алгебраических уравнений 3 порядка Задания для самостоятельной работы 1. Синтезировать структурную схему модели системы линейных алгебраических уравнений: 2. Синтезировать структурную схему модели системы линейных алгебраических уравнений: 3. Синтезировать структурную схему модели системы линейных алгебраических уравнений: 64 Лабораторная работа № 5. РАСЧЕТ ОПТИМАЛЬНОЙ СТАВКИ НАЛОГА Цель работы: с помощью имитационного моделирования в системе Xcos найти оптимальную ставку налога для бизнеса [11]. Рассмотрим решение экономических задач с помощью инструмента Xcos. Этот инструмент имеет библиотеку стандартных графических блоков со встроенными математическими функциями. В этом практическом занятии мы составим имитационную модель для определения оптимальной ставки налогообложения. Постановка задачи. Государство стремится увеличить налоги, чтобы наполнить бюджет для выполнения своих социально-экономических и оборонных функций. Бизнес жалуется, что налоговое бремя велико и налоговые ставки надо уменьшить. Экономисты утверждают, что большие налоги сдерживают развитие экономики, а значит и будущее наполнение бюджета. Проблема: теория и практика не знают величину приемлемой для всех налоговой ставки. Задача: обосновать величину налоговой ставки. Рабочая гипотеза. Поступления в бюджет за определенный период времени будут наибольшими не при максимальной, а при оптимальной для бюджета ставке налога. То есть с ростом налоговой ставки поступления в бюджет будут увеличиваться, а затем уменьшаться. Цель работы исследовать зависимость поступлений в бюджет от величины налоговой ставки. Феноменологическая модель. Уточнение и ограничение проблемы. Несмотря на массу налогов и терминов источником развития бизнеса и источником налогового наполнения бюджета в конечной инстанции является прибыль, т. е. превышение доходов над расходами. Выделение проблемной системы (объекты и функции). Законодатель объявляет ставку налога. Бюджет получает налоговые отчисления от прибыли предприятий. Предприятия по налоговой ставке на прибыль отчи сляют средства в бюджет. Словарная модель (описательная, дескриптивная, вербальная). Государство объявляет ставку налога на прибыль и получает от фирм средства в бюджет. Фирмы обладают собственным капиталом, производят прибыль, отчисляют по налоговой ставке средства в бюджет. 65 Р. И. Паровик Постналоговая прибыль как нераспределенная прибыль полностью включается в собственный капитал фирмы. Дивиденды не выплачиваются, никаких других отчислений от прибыли не производится. Вся прибыль распределяется только на два потока: в бюджет, а остаток в собственный капитал фирмы. Теперь перейдем к построению математической модели. Сумма налоговых поступлений N(t) от предприятий за моделируемый период t [tb, tf] накапливается на бюджетных счетах и представляется интегралом: где P(t) – доналоговая прибыль, получаемая пред приятием в момент t, руб/год.; R – ставка налога на прибыль; t – текущее время, год; tb – начальный момент моделирования; tf – последний момент моделирования. Капитализируемый предприятием за время моделирования остаток прибыли: Прибыль в момент t, можно определить по формуле: P(t) = C(t)Rn, где Rn – рентабельность капитала предприятия. Задается как параметр предприятия, исходное данное. Имитационная модель в программе Xcos Для составления компьютерной модели необходимо запустить программу Scilab. Затем создать новую модель в Xcos: «Файл–Создать диаграмму». Компьютерная Xcos-модель представляется в виде блок-схемы, содержащей типовые функциональные блоки систем управления и управляемых объектов. В блоки включены компьютерные программы, вычисляющие математические функции. Значки на блоках представляют формулы аналитических выражений передаточных функций как отношение выходной информации к входной. Для заполнения модели необходимо открыть браузер палитр. Затем с помощью мыши перетащить необходимые элементы из окна библиотеки в окно модели и соединить их стрелками, моделирующими материальные, денежные и информационные потоки, запасы и сигналы. Окно модели представлено на рис. 37. 66 Лабораторная работа № 5 Рис. 37. Модель для определения оптимальной ставки налогообложения прибыли предприятия Рассмотрим более подробно блоки, входящие в имитационную модель на рис. «Интегратор», Блок INTEGRAL_f ( ). Используется в модели два раза. Первый раз – под именем «Biznes». На вход блока поступает поток капиталовложений CapF – постналоговая, нераспределенная прибыль. Она аккумулируется, бизнесом и увеличивает его собственный капитал. Выход блока – это величина капитала бизнеса CapS. Второй раз – под именем «GosBudjet». В этом случае он аккумулирует налоговые поступления TxF за период моделирования в виде переменной BdjS. Блок PRODUCT ( ) находится в группе «Математические операции». Используется в модели два раза. Первый раз – под именем «Product 1». Производит поток прибыли PrfF как произведение капитала предприятия на рентабельность Rntb. Второй раз – под именем «Product 2». В этом случае он выдает произведение потока прибыли на налоговую ставку TaxRate. Это поток отчислений от прибыли в госбюджет TxF. «Сумматор» находится в группе «Математические операции». Вычисляет прибыль в распоряжении предприятия как разницу между доналоговой прибылью и частью прибыли, отчисляемой по налоговой ставке в бюджет. «Блок константы», находится в группе «Источники сигналов и взаимодействий». Используется в модели два раза. Первый раз – под именем «Rntb». Задает рентабельность предприятия. Второй раз – под именем «TaxRate». Задает ставку налогов. 67 Р. И. Паровик «Графопостроитель» СSCOPE1 ( ), находится в группе «Регистри- рующие устройства». Является средством отображения информации о показателях экспериментов. CSCOPE2 выполняет аналогичные функции. Блок AFFICH_m ( ) – индикатор чисел, находится в группе «Регистрирую- щие устройства». Является средством отображения информации о показателях экспериментов. В качестве исходных данных задаются числовые значения: налоговой ставки, рентабельности, начального капитала фирм и интервала моделирования. Рентабельность Rntb и налоговую ставку TaxRate зададим с помощью Установить контекст (рис. 38). Рис. 38. Задание рентабельности Rntb и налоговой ставки TaxRate Начальный капитал фирмы зададим в блоке «Biznes» (рис. 39). Рис. 39. Начальный капитал фирмы Biznes 68 Лабораторная работа № 5 Параметры моделирования приведена на рис. 40. Рис. 40. Параметры моделирования Результаты моделирования приведены на рис. 41 и 42. Рис. 41. Расчетная кривая накопления бизнеса Рис. 42. Расчетная кривая бюджетных накоплений 69 Р. И. Паровик Из рисунков можно наблюдать, что рост бизнес капитала приводит к росту бюджетных отчислений. Однако бюджетные отчисления будут уменьшаться при достаточно высокой ставки налога. Поэтому необходимо найти оптимальную ставку налога для бизнеса. Задания для самостоятельной работы 1. Однофакторный имитационный эксперимент. Исследовать зависимость налоговых поступлений в бюджет за конкретный период времени от величины налоговой ставки на прибыль предприятий. Запустив модель из меню Моделирование, наблюдаем в окнах СSCOPE изменение показателей предприятий и бюджета во времени: рост поступлений прибыли, отчислений по налогу в бюджет и капитализацию нераспределенной прибыли бизнесом. Устанавливая различные ставки налога, каждый раз прогоняем модель. По мере увеличения ставки поступления в бюджет увеличиваются, а затем уменьшаются (блок Display). Имеется ярко выраженный максимум, т. е. оптимальная для бюджета ставка налога. Построить расчетные кривые Biznes и BdjS в зависимости от времени, с учетом того, что рентабельность Rntb изменяется от 20 % с шагом 20 % до 80 %, а ставка налога TaxRate от 0 % с шагом 5 % до 100 %. Имитация подтверждает и уточняет логическую словарную модель здравого смысла: отнимешь в налоги много сегодня, значит лишишь бизнес развития и завтра получишь в бюджет меньше – или вообще ничего не получишь. 2. Двухфакторный имитационный эксперимент. Для проведения двухфакторного эксперимента несколько изменим модель, согласно рис. 43. Рис. 4.3. Двуфакторная модель 70 Лабораторная работа № 5 Для автоматизации планирования экспериментов добавим Блок TOWS_c для вывода данных: – блок вывода значений переменной в рабочее пространство, находится в группе «Регистрирующие устройства». Является средством вывода информации о показателях экспериментов. Настройки блока TOWS_c, приведены на рис. 44. Рис. 44. Настройки блока TOWS_c Размер буфера можно вычислить, разделив время моделирования (20 с) на период импульсов, которые приходят с часов (0,1 с). В командной строке Scilab запишем: --> out out = values: [200x1 constant] time: [200x1 constant] Согласно этой информации, переменная out представляет собой структуру с двумя полями, каждое из которых – это массив из 200 элементов. Поле time содержит отсчёты времени, а поле values – соответствующие им значения измеряемого сигнала. Для построения графика можно создать новое окно и вызвать функцию plot: --> scf() --> plot( out.time, out.values ) 71 Р. И. Паровик Задание. Необходимо построить графики функции (кривые Лаффера3) поступления в бюджет в зависимости от налоговой ставки TaxRate и различной рентабельности Rntb (рис. 45). Рис. 45. Зависимость поступлений в бюджет от налоговой ставки для предприятий различной рентабельности Чем выше рентабельность предприятия, тем ярче выражена оптимальная ставка налогообложения. С ростом рентабельности оптимальная ставка уменьшается (сдвигается влево), стремясь к фиксированной величине. Необходимо эту величину определить. Анализ результатов имитации будет неожиданным для публики, взволнованной сверхдоходами корпораций, и стран с прогрессивным налогообложением. Чем выше рентабельность бизнеса, тем выгоднее государству уменьшить ставку налога. Предприятия с низкой рентабельностью целесообразно облагать более высокими налогами. Выбраковывать, как это делает крестьянин с малопродуктивным скотом, а заводы – с неэффективным оборудованием. Разумеется, урожай не собирают, пока он не созрел и молодым предприятиям необходим льготный период. 3 Артур Лаффер (англ. Arthur Betz Laffer; 14 августа 1940) – американский экономист, представитель экономики, ориентированной на предложение. 72 Лабораторная работа № 6. СПЕКТРОГРАФ Цель работы: изучить работу спектрографа для версий Scilab 5. Блок FFT SCOPE палитры модуля bufferblock отображает спектр входного сигнала, вычисленный на заданном интервале. Для расчёта спектра используется быстрое преобразование Фурье (БПФ). Если входной сигнал векторный, блок FFT SCOPE ведёт себя аналогично блоку CSCOPE, т. е. рассматривает элементы вектора, как точки различных сигналов и отображает спектры этих сигналов единой системе координат. Параметры блока: ● Buffer size размер буфера БПФ (число отсчётов); ● Windowing function type тип оконной функции: 0 (прямоугольная), 1 (Бартлета), 2 (Хемминга), 3 (Ханна), 4 (Блэкмана); ● Averaging number число усредняемых реализаций спектра: < 1 бесконечность, 1 без усреднения, > 1 число усредняемых реализаций; ● Autoscale использовать (1) или не использовать (0) автомасштабирование; ● Display power spectra отобразить спектр амплитуд (0) или спектр мощности (1); ● Semilog x-axis использовать (1) или не использовать логарифмический масштаб по оси частот; ● Display grid отображать (1) или не отображать (0) сетку; ● Amplitude min минимальное значение амплитуды; ● Amplitude max максимальное значение амплитуды; ● Refresh period интервал обновления окна спектрографа; ● Padding value начальное заполнение буфера БПФ; ● Sampling frequency частота дискретизации. Значение частоты дискретизации не влияет на результат БПФ, оно используется для вычисления масштаба по оси частот. Подключите модуль bufferblock. Создайте новую диаграмму. Соберите схему генератора одиночного прямоугольного импульса длительностью 0,8. Добавьте к схеме счётчик времени, осциллограф и спектрограф. Установите интервал дискретизации счётчика равным 0,1. Установите размер буфера БПФ спектрографа равным 1024, параметр Display power spectra равным 0 (отобразить спектр амплитуд), Refresh period равным 1 и частоту дискретизации равной 10. Подайте сигнал с выхода генератора 73 Р. И. Паровик одиночного прямоугольного импульса на входы осциллографа и спектрографа. Установите конечное время моделирования и интервал обновления осциллографа равными 10. Рис. 46. Использование спектрографа Задание. Отключите автомасштабирование окна спектрографа и установите пределы по оси амплитуд от 0 до 8. Медленно уменьшая длительность импульса до значения 0,1 пронаблюдайте за изменением спектра. 74 Лабораторная работа № 7. МОДЕЛИРОВАНИЕ СМО НА ПРИМЕРЕ ЭФФЕКТИВНОСТИ РАБОТЫ ОРГАНИЗАЦИИ Цель работы: научится моделировать СМО в среде Xcos. Теория массового обслуживания, изучающая СМО, представляет собой область прикладной математики, занимающуюся анализом процессов в системах производства и обслуживания, в которых однородные события повторяются многократно. Большой вклад в развитие теории массового обслуживания внесли российские математики А.Я. Хинчин, Б.В. Гнеденко, А.Н. Колмогоров, Е.С. Вентцель [12]. В свою очередь, под системой массового обслуживания (СМО) следует понимать математическую модель, разработанную для описания многочисленных сложных систем, назначением которых является массовое обслуживание заявок. При этом под заявкой подразумевается спрос на удовлетворение той или иной потребности [13]. Входной поток заявок – это временная последовательность событий на входе СМО, для которой появление события (заявки) подчиняется вероятностным законам. Поток заявок называется простейшим, если он удовлетворяет следующим условиям [14]: 1. Отсутствие последействия (заявки поступают независимо друг от друга). 2. Стационарность (в среднем количество заявок за определенный промежуток времени одинаковое). 3. Ординарность (в любой момент времени в СМО поступает заявка). Если заявка, поступающая в СМО, может получить отказ в обслуживании и в случае отказа вынуждена покинуть СМО, то такая система является СМО с отказами. Однако если в случае отказа заявки могут стать в очередь, то такие системы называют СМО с очередью или ожиданием. По количеству каналов обслуживания СМО делятся на одноканальные и многоканальные (2 и более каналов обслуживания) [14]. В данной статье авторами была проанализирована работа отдела бухгалтерии коммерческой организации на примере многоканальной СМО с очередью. Имитационная модель СМО является довольно востребованной на сегодняшний день, поскольку она автоматизирует работу по расчету эффективности системы массового обслуживания и предоставляет простой и понятный интерфейс. Модель позволяет пользователю вводить свои параметры, менять настройки, производить анализ работы системы. 75 Р. И. Паровик Перейдем к рассмотрению составленной имитационной модели в работе [15]. На первом этапе вводим необходимые условия, а именно: в бухгалтерии предприятия есть два кассира, каждый из которых может обслуживать тридцать сотрудников в час. Поток сотрудников, получающих заработную плату – простейший, с интенсивностью сорок сотрудников в час. Очередь в кассе ограничена – три человека. На втором этапе необходимо построить граф состояния, записать уравнения Колмогорова и вычислить вероятностные характеристики СМО в стационарном режиме в целях выяснения целесообразности принятия третьего кассира на предприятие. Решение. S0 – состояние системы свободно; S1 – 1 кассир занят, 1 свободен, 3 места в очереди свободны; S2 – 2 кассира заняты, 3 места в очереди свободны; S3 – 2 кассира заняты, 1 место в очереди занято, 2 свободно; S4 – 2 кассира заняты, 2 места в очереди заняты, 1 свободно; S5 – 2 кассира заняты, 3 места в очереди также заняты. P0 – пребывание системы в состоянии S0; P1 – пребывание системы в состоянии S1; P2 – пребывание системы в состоянии S2; P3 – пребывание системы в состоянии S3; P4 – пребывание системы в состоянии S4; P5 – пребывание системы в состоянии S5. P0 + P1 + P2 + P3 + P4 + P5 = 1. Граф состояний – это схема, на которой условно изображают возможные состояния системы и показывают возможные переходы между состояниями (рис. 47). Рис. 47. Граф состояния системы организации 76 Лабораторная работа № 7 Далее составим уравнения Колмогорова: dP0/dt = –αP0 + μP1 dP1/dt = +αP0 – αP1 + 2μP2 – μP1 dP2/dt = +αP1 – αP2 + 2μP3 – 2μP2 dP3/dt = +αP2 – αP3 + 2μP4 – 2μP3 dP4/dt = +αP3 – αP3 + 2μP4 – 2μP4 dP5/dt = +αP4 – 2μP5 P0 + P1 + P2 + P3 + P4 + P5 = 1 Схема моделирования выглядит следующим образом (рис. 48) Рис. 48. Система модели в Xcos 1 этап – Устанавливаем 5 интеграторов под каждую функцию. 2 этап – Добавляем сумматор под известную нам переменную P4. 3 этап – Вводим переменные состояния α и μ. 77 Р. И. Паровик 4 этап – Запрограммируем функции dP0, dP1, dP2, dP3, dP5. 5 этап – Объединим входные сигналы в вектор, посредством Мультиплексора (Mux). 6 этап – Обозначим цифровой дисплей Display. 7 этап – Вводим часы активации (CLOCK_c). 8 этап – Установка AFFICH_m – дисплея. Задание. Реализовать схему (рис. 48). Запустить ее на выполнение. Исходя из полученных результатов, сделать вывод о стабильной работе предприятия, а также ответить на вопрос привлечения новых сотрудников на предприятие. Построить необходимые графики. Далее необходимо смоделировать СМО с другими переменными состояния α и μ. Дать интерпретацию результатов. 78 Лабораторная работа № 8. МОДЕЛИРОВАНИЕ ЛОГИЧЕСКИХ СТРУКТУР Цель работы: научится моделировать логические структуры в среде Xcos. Задача 1. Модель комбинационной логики. Создать модель с блоком комбинационной логики с известной таблицей истинности. Блок использует два входных сигнала. Каждый сигнал формируется с использованием соединенных генераторов прямоугольных импульсов, ограничителя и преобразователя формата чисел double в формат Integer. Регистратор с тремя входами позволяет наблюдать сигналы на входах и выходе логического блока. Для выхода логического блока надо добавить преобразователь формата Integer в формат double. Провести моделирование согласно схеме (рис. 49). Рис. 49. Модель комбинационной логики Двойным щелчком по блоку часов, соединенным с генератором прямоугольного импульса вызвать окно со свойствами блока. В его полях выбрать параметры. В данном случае установить период Period (начальное время Init time можно не менять). Для одного генератора период равен 1, для второго 2. 79 Р. И. Паровик Рис. 50. Окно свойства блока генератора Двойным щелчком по блоку Saturation в модели вызвать окно со свойствами блока (рис. 51). В нем установить верхний и нижний пределы ограничения. Для двух блоков параметры одинаковы. Рис. 51. Окно со свойствами блока Saturation Двойным щелчком по блоку Convert в модели вызвать окно со свойствами блока (рис. 52). В нем установить типы данных на входе и выходе. На входе тип doble (номер 1), на выходе Int8 (номер 5). Для двух блоков параметры одинаковы. Рис. 52. Окно со свойствами блока Convert Двойным щелчком по блоку Logic в модели вызвать окно со свойствами блока. В нем установить данные из таблицы истинности. Это матрица строк, в которой задаются выходы блока для возможных входных наборов. В примере логика – совпадение (На выходе 1, если на входах 00 или 11). 80 Лабораторная работа № 8 Рис. 53. Окно со свойствами блока Logic Двойным щелчком по блоку Clock в модели вызвать окно со свойствами блока (рис. 54). В нем установить период дискретизации Period и начальное время Init time. Рис. 54. Окно со свойствами блока Clock Двойным щелчком по блоку Scope в модели вызвать окно со свойствами блока (рис. 55). В нем установить параметры. В поле Input ports sizes ввести вектор [1 1 1], задающий три поля в графическом окне блока. С остальными параметрами можно согласиться. Рис. 55. Окно со свойствами блока Scope 81 Р. И. Паровик Включить моделирование командой Simulate => Run. В окне графики отображаются графики сигналов (рис. 56). Рис. 56. Графики сигналов Задание. Необходимо провести интерпретацию результатов моделирования. Далее надо поменять параметры модели и также описать результаты моделирования. Задача 2. Модель счетчика по модулю. Создать модель со счетчиком. Счетчик получает импульсы от источника, в качестве которого используются часы. На каждый импульс содержимое счетчика увеличивается на 1, а при достижении модуля сбрасывается на 0. Регистратор с одним входом позволяет наблюдать сигнал на входе и выходе счетчика. Провести его моделирование. В модель включаем блоки часов, счетчик по модулю 15 и наблюдатель Scope (рис. 57). 82 Лабораторная работа № 8 Рис. 57. Схема модели счетчика по модулю Двойным щелчком по блоку Clock в модели вызвать окно со свойствами блока (рис. 58). В нем установить период дискретизации Period и начальное время Init time. Рис. 58. Окно со свойствами блока Clock Двойным щелчком по блоку Modulo_Count в модели вызвать окно со свойствами блока (рис. 59). В нем установить модуль счета. Рис. 59. Окно со свойствами блока Modulo_Count 83 Р. И. Паровик Двойным щелчком по блоку Scope в модели вызвать окно со свойствами блока (рис. 60). В нем установить параметры. Размеры графика определяются полями Ymin = 0 и Ymax = 15. В поле Refresh Period задаем размер графика по горизонтали. С остальными параметрами можно согласиться. Рис. 60. Окно со свойствами блока Scope Включить симулирование (моделирование) командой Simulate => Run. В окне графики отображается график сигнала (рис. 61). Видно, что счетчик наращивает содержимое от 0 до 15, после чего сбрасывается на 0. Рис. 61. График сигнала 84 Лабораторная работа № 8 Задание. Выбрать в качестве источника сигнала один из таблицы и провести моделирование. Варианты заданий № п/п Тип логики Модуль счета 1 Sinusoid Generator (Синус) 8 2 Square Wave Generator (Прямоугольные импульсы) 10 3 Sawtooth Generator (Пила) 12 4 RMP Линейно нарастающий 16 5 Sinusoid Generator Синус 10 6 Square Wave Generator Прямоугольные импульсы 13 7 Sawtooth Generator Пила 9 8 RMP Линейно нарастающий 7 85 Лабораторная работа № 9. МОДЕЛИРОВАНИЕ ЦИФРОВЫХ СИСТЕМ УПРАВЛЕНИЯ Цель работы: научиться моделировать цифровые системы управления в среде Xcos c использованием квантования. Особенностью цифровых систем управления непрерывными динамическими объектами является квантование всех входных непрерывных (аналоговых) сигналов с помощью аналого-цифрового преобразователя (АЦП). В результате цифровой регулятор использует для управления только значения входов в моменты квантования, то есть при t = 0, T, 2T, 3T, …, где T – интервал квантования [16]. Получение выборки отдельных значений аналогового сигнала называется квантованием по времени (англ. sampling). Например, квантование синусоидального сигнала x(t) = Asin(ωt + φ), здесь A – амплитуда сигнала; ω – угловая частота в рад/с; а φ – фаза в радианах) с периодом T состоит в том, что из него выбираются значения x[k] = x(kT) = Asin(ωkT + φ), при целых значениях k 0. Последовательность значений {x[k]} = {x[0], x[1], x[2], …} представляет собой оцифрованный (дискретный) сигнал. Системы с квантованием сигналов по времени называют импульсными системами. Вся информация о значениях сигнала между моментами квантования теряется. Однако согласно теореме Котельникова-Шеннона сигнал теоретически всё же можно точно восстановить по его дискретным значениям, если частота квантования более чем в 2 раза превышает максимальную частоту в спектре сигнала. То есть синусоиду с частотой ω нужно квантовать с частотой большей, чем 2ω. Все измеренные значения хранятся в памяти компьютера как целые числа, разрядность которых определяется разрядностью АЦП. Из-за этого близкие, но различные значения могут при квантовании получить одинаковый числовой код. Этот эффект называется квантованием по уровню. Системы, в которых присутствует как квантование по времени, так и квантование по уровню, называют цифровыми системами. 86 Квантование по уровню – это ещё один источник потери информации при квантовании, этот эффект делает систему нелинейной. Современные АЦП имеют достаточно высокую разрядность (16–32 бита), поэтому при теоретическом исследовании цифровых систем квантованием по уровню обычно пренебрегают, а для уточнения результата моделируют его как эквивалентный шум на входе цифровой части. Управляющий сигнал (цифровой код), рассчитанный с помощью цифрового регулятора, нужно преобразовать в аналоговый сигнал управления исполнительным механизмом, например, рулевым устройством судна. Эту функцию выполняет устройство-экстраполятор (англ. hold), который реализуется в виде цифро-аналогового преобразователя (ЦАП). Простейший из экстраполяторов – фиксатор нулевого порядка (англ. zero-order hold) – удерживает на выходе полученное значение входного сигнала до следующего момента квантования. Для исследования процессов квантования и восстановления аналоговых сигналов можно собрать модель, показанную на рис. 62. На входе – синусоидальный сигнал с генератора (амплитуда 1, период 1, сдвиг фазы 0,48). Он поступает на устройство квантования и фиксации (англ. sample-and-hold), которое представляет собой квантователь (АЦП) и установленный за ним фиксатор нулевого порядка (ЦАП). Рис. 62. Модель квантования и восстановления аналоговых сигналов Через мультиплексор на осциллограф подаются два сигнала – преобразованный блоком квантования и исходный. Часы с номером 1 задают период квантования сигнала (он равен 1), а часы с номером 2 – период фиксации значений выхода, его можно установить достаточно малым (например, 0,001), чтобы скачки в моменты квантования не превратились в наклонные линии. 87 Р. И. Паровик Результат моделирования показан на рис. 63. Рис. 63. Результат квантования аналоговых сигналов В результате квантования и восстановления аналогового сигнала x(t) = Asin(ωt + φ) получается ступенчатый сигнал, который сохраняет постоянное значение на каждом временном отрезке длиной T и описывается формулой y(t) = x(kT) = Asin(ωkT + φ), kT < t < (k + 1)T. Задание 1. Исследуйте различные аналоговые сигналы квантованием с помощью модели Xcos (рис. 6). Построите графики. Задание 2. Привести пример «дискретизации» аналогового сигнала (синусоида с круговой частотой 1 и амплитудой 2), путем перемножения этого сигнала с последовательностью коротких прямоугольных импульсов (амплитудой 1, длительность импульса 1–2 % от периода, период следования импульсов необходимо выбрать так, чтобы на периоде синусоиды было 10–15 импульсов). Повторить эксперимент, увеличив частоту синусоидального сигнала в 10 раз. Сделать выводы. Методические указания: перемножение осуществляется блоком PRODUCT из группы Mathematical operations. 88 Лабораторная работа № 9 Задание 3. Осуществить квантование дискретного сигнала, полученного в п. 2. Для этого использовать блок QUANT_f группы Discontinuities c шагом 0.5. Используя сумматор (блок SUMMATION группы Mathematical operations), вычислить разность дискретного и квантованного сигнала – ошибку квантования. Задание 4. Используя блоки INTEGRAL_f (группа Continuous time systems), GAIN_f (группа Mathematical operations) и AFFICH_m (группа Sinks) провести вычисление среднего значения X0 и коэффициентов ak, bk первых пяти гармоник последовательности прямоугольных импульсов x(t) (амплитуда 2, длительность импульса 50 %, период следования импульсов 1) по формулам (результат – 11 чисел в блоках AFFICH_m): где T – период x(t). 89 Лабораторная работа № 10. МОДЕЛИРОВАНИЕ СИСТЕМ УПРАВЛЕНИЯ С ОБРАТНОЙ СВЯЗЬЮ Цель работы: научиться моделировать простейшие системы управления с обратной связью в среде Xcos. Системы управления с обратной связью, пожалуй, самые распространённые из динамических систем, моделирование которых требуется в совершенно различных областях науки и техники: от управления манипуляторами в тяжёлой промышленности, до контроля за ростом бактерий в биолаборатории. Управление динамическими системами, описывающими процессы, протекающие в реальном времени, происходит при помощи управляющих устройств – контроллеров (или регуляторов), обеспечивающих различные законы управления. В зависимости от режима управления, выделяют оптимальные, ПИД-, нейро-нечеткие и другие регуляторы. В данном материале мы рассмотрим самый простой вид контроллера – индикатор включения\выключения, который ещё носит название двухступенчатого контроллера, так как не имеет промежуточных состояний, то есть принимает всего два значения: включен или выключен. Итак, представим термоконтроллер, который отслеживает температуру и срабатывает на разницу температур в помещении. В терминах управляемых систем, работа данного устройства происходит следующим образом: в определённые моменты времени на вход контроллера подаётся разница температур между текущим и необходимым к поддержанию значением, называемая ошибкой, а на выход контроллера поступает сигнал срабатывания. Управляемой переменной в данном случае является температура, которая дополнительно измеряется датчиком, и информация передаётся обратно в термоконтролер. Разница между заданным значением температуры и замеренной производительностью отопительных приборов возникает из-за неизбежных помех – утечек тепла, которые влияют на общую температуру помещения. Стоит отметить, что большинство управляемых систем с обратной связью обладает некоторой инертностью, то есть система управления не может мгновенно реагировать на внешнее возмущение и требуется некоторое время, пока на выход управляющего объекта будет подано необходимое значение, оказывающее воздействие на значение, снимаемое с выхода объекта управления. 90 Рис. 64. Система управления термодатчиком В рассматриваемом примере такое явление возникает, например, при открытии форточки в комнате. Для того, чтобы контроллер включил систему отопления на обогрев, потребуется некоторое время, пока температура в помещении не упадёт до критической отметки. Такого рода задержка в работе управляющего устройства, с одной стороны позволяет системе не реагировать на краткосрочные возмущения, но, с другой стороны, вносит ограничения на быстродействие термоконтроллера. Другой важной характеристикой управляемой динамической системы является её ёмкость. Ёмкость системы можно рассматривать, как сопротивление внешним изменениям. Причём, чем выше ёмкость системы, тем больше времени потребуется, чтобы вносимый вклад управляющего устройства подействовал на объект управления. Адаптировать понятие ёмкости на рассматриваемый случай можно как теплоёмкость. Например, чтобы прогреть остывшее за время отсутствия хозяев, помещение, потребуется время не только на нагрев воздуха, но и прогрев стен и пола. Описанная система управления с контроллером и объектом управления, обладающая обозначенными особенностями, схематически изображена на рис. 65. Рис. 65. Система управления температурой в помещении 91 Р. И. Паровик Процесс управления температурой в помещении рассматривается, как дифференциально уравнение первого порядка с запаздыванием, передаточная функция которого имеет вид: где K – коэффициент усиления; τ – ёмкость системы; s – задержка реагирования системы; T – время. Начнём собирать схему с объекта управления [17]. 1. Отапливаемое помещение в нашем случае, можно рассматривать как передаточную функцию с палитры «Системы с непрерывным вре- менем» с блоком запаздывания TIME_DELAY, располагающимся на той же палитре. Добавьте данные блоки на рабочую область. 2. Далее в контексте задайте значения переменных K = 18, T = 24, τ = 5, Tfix = 12, чтобы их можно было использовать в дальнейшем. 3. Во внутренних параметрах блока передаточной функции CLR укажите значения Numerator (числитель) = K и Denominator (знаменатель) = T∙s + 1. 4. Во внутренних параметрах блока задержки TIME_DELAY укажите значение Delay = τ . 5. Соедините выход блока CLR со входом блока TIME_DELAY. В итоге должна получиться схема, изображённая на рис. 66. Рис. 66. Реализация объекта управления 6. Сбор схемы термоконтроллера начнём с решения неравенства Tfix − H(s) > 0. (*) Левая часть данного неравенства реализуется сумматором BIGSOM_f, вектор знаков портов которого имеет вид [1; –1]. Положительный порт сумматора нужно соединить с константным блоком, в котором установлено значение желаемой температуры. Далее, на порт сумматора с отрицательным множителем, нужно подать фиксируемую датчиком температуру, то есть, – значение с выхода блока TIME_DELAY. Результат представлен на рис. 67. 92 Лабораторная работа № 10 Рис. 67. Оценка ошибки Tfix − H(s) 7. Знак ошибки, то есть сравнение с нулём выхода блока BIGSOM_f, будем определять с помощью блока , который можно найти на палитре «Математические операции». 8. Во внутренних параметрах блока RELATIONALOP для параметра Operator необходимо указать значение 4, что соответствует знаку «больше», а значение Use zero crossing = 1 (переход через нуль). 9. Далее на входы RELATIONALOP нужно подать сравниваемые выражения: это выход блока BIGSOM_f и константный блок со значением 0, как показано на рис. 68. Рис. 68. Формирование неравенства (*) 93 Р. И. Паровик 10. На выход блока сравнения будет подано значение «1», если условие сформированного неравенства выполняется, и «0», если ошибка окажется отрицательной. 11. Осталось реализовать сам двухступенчатый контроллер, который можно интерпретировать как блок переключателя с палитры «Маршрутизация сигналов». На вход блока SWITCH2_m должен подаваться результат сравнения разницы температур с «0», а на выход SWITCH2_m – значение «0» или «1», в зависимости от знака ошибки. 12. Значения переключателя «0» и «1» реализуем блоками постоянных CONST, и подадим их на первый и третий входы блока SWITCH2_m. На данном этапе блок контроллера должен выглядеть, как показано на рис. 69. Рис. 69. Выходные значения двухступенчатого контроллера 13. Для реализации контроллера осталось соединить выход блока, решающего неравенство RELATIONALOP со свободным регулярным входом блока переключателя (см. рис. 70). Рис. 70. Блок-схема контроллера, принимающего значения «0» и «1» в зависимости от знака разницы температур 94 Лабораторная работа № 10 14. Напомним, что на средний вход SWITCH2_m подаётся «1», если текущая температура не превышает желаемой температуры и «0», если текущая температура поднялась выше желаемой. Соответственно, нам нужно включать контроллер, кода ошибка больше нуля и выключать его, когда ошибка отрицательна. Реализовать смену положений выключателя можно с помощью внутренних параметров. 15. Во внутренних параметрах блока SWITCH2_m нас интересует параметр pass first input – условие подачи на выход SWITCH2_m его первого входа, т. е. «1». Параметр pass first input может принимать следующие значения: 1. значение «0» для проверки условия, что вход a; 2. значение «1» для проверки условия, что вход > a; 3. значение «2» для проверки условия, что вход = a; В нашем случае, необходимо поставить «1», что соответствует условию, что значение, подаваемое на средний вход блока SWITCH2_m больше параметра. Параметр задаётся в следующей строке – для внутреннего параметра threshold и равняется «0». Итак, получив на вход контроллера SWITCH2_m значение «1», соответствующее температуре, ниже желаемой, мы сравниваем её с «0» в блоке SWITCH2_m и на выход контроллера SWITCH2_m подаётся «1», что соответствует режиму «вкл». Если же снимаемая температура опускается ниже значения, то на вход блока SWITCH2_m подаётся «0», который сравнивается с «0» его внутренних параметров и переводит контроллер в состояние «выкл», что соответствует выходу блока SWITCH2_m со значением «0». 16. Построение схемы управления подходит к концу. Осталось выход управления со входом управляемого объекта и добавить блоки для вывода графической информации, как показано на рис. 71. Рис. 71. Блок-схема замкнутой системы управления температурой с двухступенчатым контроллером Задание. Запустите моделирование на 60 с, удостоверившись, что в блоке задержке стоит корректный размер буфера, а у блока осциллографа правильно настроены параметры осей, размерности входов и буферизации. Дайте интерпретацию результатов моделирования по графикам. 95 Лабораторная работа № 11. ИСПОЛЬЗОВАНИЕ СУПЕРБЛОКОВ В СИСТЕМЕ УПРАВЛЕНИЯ Цель работы: научится использовать суперблоки при моделировании системы управления в Xcos. В лабораторной работе № 10 мы рассмотрели пример реализации простейшего управляющего элемента в Xcos. Заметим, что частота переключения режимов двухфазного термоконтроллера высока (около 10 сек.), что на практике оказывало бы дополнительную нагрузку на исполнительные механизмы устройства и приводило бы к его быстрой поломке. Поэтому более рациональным было бы указывать не фиксированное значение температуры, а диапазон температур, характерных для комфортного пребывания в помещении. Рассмотрим, как можно модернизировать созданную блок-схему для осуществления поставленной задачи. Прежде всего, для большей наглядности созданной схемы, прибегнем к помощи супер-блоков [18]. Чтобы объединить несколько Xcos блоков в один суперблок нужно: ● выделить нужные блоки с их соединительными линиями (см. рис. 72); Рис. 72. Преобразование блоков в супер-блок / выделение объединяемых блоков ● кликнуть правой кнопкой мыши по одному из блоков; ● в выпадающем меню выбрать пункт «Selection to superblock». После чего на месте группы блоков появится новый блок (см. рис. 73). 96 Рис. 73. Преобразование блоков в супер-блок/ результат объединения нескольких блоков То же самое необходимо проделать для блока управления, предварительно удалив лишние соединительные линии (см. рис. 74 и 75). Рис. 74. Выделение объединяемых блоков Рис. 75. Результат объединения нескольких блоков 97 Р. И. Паровик В результате исходная схема примет удобочитаемый вид, как показано на рис. 76. Рис. 76. Блок-схема замкнутой системы управления с использование супер-блоков После проведения всех манипуляций настоятельно рекомендуется запустить моделирование, дабы убедиться, что ничего не сломалось. Как правило, чего-то всегда ломается. Но процесс отладки полезен потому, что позволяет лучше разобраться в происходящем. Итак, чтобы найти ошибку, необходимо проанализировать, где она могла бы возникнуть. Вопросы с настройкой осциллографа мы разбирать не будем, так как это тема давно минувших дней параграфов. Обратимся к ново-созданным супер-блокам. Для того, чтобы просмотреть содержимое супер-блока, нужно дважды по нему кликнуть левой кнопкой мыши, после чего, в новом окне откроется блок-схема, входящая в состав данного супер-блока. Обратимся к содержимому зелёного блока (см. рис. 77). Рис. 77. Ошибка, возникающая при создании супер-блоков Вот оно! Подозрительный треугольник с восклицательным знаком, сигнализирующий о наличии ошибки. Дело в том, что в данных блоках используются переменные, указанные в контексте исходной рабочей области. Контекст же открытого окна, на проверку, оказывается пустым. Следовательно, для устранения данной ошибки, необходимо перенести используемые переменные из контекста исходного окна в окно редактирования супер-блока. 98 Лабораторная работа № 11 Важно! Иногда устранить ошибки, при создании супер-блоков из имеющихся в схеме, не удаётся – это баг бесплатного программного обеспечения. В этом случае построение схемы нужно начать в новой рабочей области именно с создания супер-блоков , которые можно найти на палитре «Пользова- тельские функции». После краткого знакомства с пользовательскими супер-блоками, вернёмся к задаче модификации контроллера, регулирующего температуру в заданных пределах. Для моделирования такого контроллера потребуется блок , который располагается на палитре «Системы с разрывами». Данный блок имеет один регулярный вход и один регулярный выход и осуществляет переключение между двумя константами. Блок реле остаётся включенным до тех пор, пока на вход не передано пороговое значение, после чего реле выключается и принимает второе значение до тех пор, пока вновь не будет пройдено пороговое значение. Из описания блока HYSTHERESIS следует, что целый блок, реализующий включение и отключение термоконтроллера, можно заменить одним блоком реле, как показано на рис. 78. Рис. 78. Использование блока реле в качестве управляющего устройства Внутренние параметры блока HYSTHERESIS представлены на рис. 79. Рис. 79. Внутренние параметры блока 99 Р. И. Паровик Согласно заданным параметрам, блок HYSTHERESIS будет работать следующим образом: по умолчанию блок считается включенным и остаётся таковым до тех пор, пока значение, подаваемое на его вход не превысит delta, при этом на выход блока реле подается значение output when on = 1. Как только значение, подаваемое на вход блока реле превышает delta, блок выключается и подаёт на выход значение output when off = 0 до тех пор, пока входное значение не упадёт ниже – delta. Далее процесс повторяется. Иначе на этот процесс можно взглянуть, обратившись к неравенству, которое решалось в лабораторной работе № 10. Если прежде разность температур сравнивалась с нулём, то сейчас ошибка должна попадать в диапазон значений, иными словами, с помощью блока HYSTHERESIS в блок-схеме (см. рис. 80) решается неравенство. |Tfix − H(s)| < δ. (*) Рис. 80. Блок-схема с управлением релейного типа Задание. Запустите моделирование на 100 с со следующими параметрами delta = 3; Tfix = 22; K = 50; T = 30; τ = 5, указанными в контексте. Сделайте вывод по полученным графикам. 100 СПИСОК ЛИТЕРАТУРЫ 1. Википедия. [Электронный ресурс] – Режим доступа: https://ru.wikipedia. org/wiki/Scilab, свободный. – Загл. с экрана. 2. Официальный сайт. Режим доступа: http://www.scilab.org/ 3. Васильев В.В., Симак Л.А., Рыбникова А.М. Математическое и компьютерное моделирование процессов и систем в среде MATLAB/SIMULINK. – К., НАН Украины, 2008. – 91 с. 4. Алексеев Е.Р. Scilab: Решение инженерных и математических задач / Е.Р. Алексеев, О.В. Чеснокова, Е.А. Рудченко. – М.: ALT Linux; БИНОМ. Лаборатория знаний, 2008. 5. Данилов, А.Н. Scicos. Пакет Scilab для моделирования динамических систем / А.Н. Данилов. – Тамбов: ТГТУ, 2011. – 74 с. 6. Визуальное моделирование в Scilab: Xcos. Краткое руководство для начала работы / сост.: А.М. Чингаева. – Самара: ФГБОУ ВПО ПГУТИ, 2012. – 24 с. 7. Nikoukhah, R., Steer S. Scicos – A Dynamic System Builder and Simulator. User’s Guide. [Электронный ресурс] / R. Nikoukhah, S. Steer. – Rocquencourt, France: INRIA, 1998. – 330 p. – режим доступа свободный: http://www.scicos.org/. 8. Чингаева А.М Визуальное моделирование в Scilab: Xcos. – Самара, ФГОБУ ВПО ПГУТИ. – 2012. – 24 с. 9. Глибин Е.С. Моделирование источников питания электротехнологических установок в Scilab Xcos: лабораторный практикум. – Тольятти: Изд-во ТГУ, 2016. 10. Чингаева А.М. Моделирование системы электрической связи: задание и методические указания к лабораторным работам по дисциплине «Теория электрической связи» для студентов 3 курса направления 10.05.02 дневной формы обучения / А.М. Чингаева. – Самара: ПГУТИ, 2022. – 36 с. 11. Паровик Р.И. Математическое и имитационное моделирование динамических процессов. – Петропавловск-Камчатский: КамГУ им. Витуса Беринга, 2016. 12. Фомин Г.П. Математические методы и модели в коммерческой деятельности [Текст]: Г.П. Фомин: учебник. 2-е изд. – М.: Финансы и статистика. 2005. – 393 с. 13. Розенберг В.Я. Что такое теория массового обслуживания / В.Я. Розенберг // Книга по Требованию. – 2012. – 255 с. 14. Саати Т.Л. Элементы теории массового обслуживания и ее приложения / Т.Л. Саати. – СПб., Либроком. 2010. – 520 с. 15. Ермолаева Е.Б., Филатова А.В., Горелова И.В. Оценка эффективности работы организации посредством моделирования СМО в системе программирования Scilab // Научный вестник Волгоградского филиала РАНХиГС. Серия: Экономика. – 2018. – № 1. – С. 93–96. 16. Поляков К.Ю. Исследование непрерывных и цифровых систем управления в среде Scilab. – СПб.: СПбГМТУ, 2020. – 274 с. 17. INCLAB. Режим доступа. https://inclab.ru/xcos/zamknutaya-sistemaupravleniya-scilab-xcos. (Дата обращения: 17.04.2022). 18. INCLAB. Режим доступа. https://inclab.ru/xcos/ispolzovanie-super-blokovv-scilab-xcos (Дата обращения: 17.04.2022). 101 Учебное издание Паровик Роман Иванович ИМИТАЦИОННОЕ МОДЕЛИРОВАНИЕ В СРЕДЕ XCOS Лабораторный практикум Сетевое научное издание © Паровик Р. И. © ИД «Академия Естествознания»