Просмотр содержимого документа
«Основы имитационного моделирования»
ФБГОУ ВО «Мордовский Государственный педагогический институт им. М.Е. Евсевьева»
Физико-математический факультет
Кафедра информатики и вычислительной техники
Реферат на тему:
«Основы имитационного моделирования в Scicos (Xcoc).
Работа с блоками и моделями»
Выполнила: студентка группы МДМ-116
физико-математического факультета
Каникова Алина
Проверила: кан. физ-мат наук, доцент
Кормилицына Т.В.
Саранск 2019
Scicos (Scilab Connected Object Simulator) – составная часть пакета Scilab. Scicos в его составе обеспечивает возможность визуального моделирования динамических систем. Эти моделируемые системы могут быть как непрерывными, так и дискретными. Scicos имеет дружественный графический интерфейс пользователя для редактирования моделей, состоящих из соединенных блоков Scicos. Scicos блоки могут быть найдены в палитрах Scicos или определены пользователем.
Основные составные части Scicos.
Графический редактор: Scicos предоставляет иерархическому графическому редактору для строительства моделей динамических систем, используя блок-схемы. Многие предопределенные блоки также предоставлены в различных палитрах. Новые блоки могут быть определены пользователем в С или Scilab.
Компилятор: компилятор Scicos использует образцовое описание, обычно собираемое редактором Scicos, построить столы планирования, которые могут тогда использоваться тренажером и кодовой функцией поколения.
Симулятор: симулятор Scicos использует таблицы планирования и другую информацию, предоставленную компилятором, чтобы управлять моделированиями. Симулятор имеет гибридную природу, при которой он должен иметь дело с дискретными и непрерывными системами времени, и событиями. Для непрерывного времени используется решатель однородных дифференциальных уравнений (ОДУ) LSODAR или решатель дифференциальных алгебраических уравнений (ДАУ) DASKR в зависимости от природы рассматриваемой непрерывной системы.
Генератор объектного кода: Scicos может генерировать код C для того, чтобы «понять» поведение некоторых подсистем. Эти подсистемы не должны включать непрерывные во времени компоненты.
Scicos – независимое программное приложение для моделирования, но доступ к Scilab и его функциональным возможностям обеспечивает большую гибкость и расширяет диапазон возможностей моделирования.
Например, при обработке сигнала, легче использовать функции Scilab и написать маленькую программку, чем писать код для базовых функций обработки сигнала. Кроме того, Scilab воспринимает модель Scicos как функцию. Это удобно, когда нужно управлять пакетной работой Scicos.
Наличие доступа к функциям Scilab, при создании моделей очень важно.
Пользователь Scicos часто имеет необходимость использовать функции Scilab, например предназначенные для создания фильтров обработки сигналов и др.
Язык программирования Scilab может использоваться для пакетной обработки множества задач моделирования или обобщая – модели, разработанные Scicos, могут использоваться как функции в Scilab.
Графические возможности Scilab могут использоваться для последующей обработки результатов моделирования.
Но интеграция Scicos и Scilab идет дальше. Редактор Scicos полностью написан на языке Scilab и это обеспечивает много преимуществ:
редактор легко настраивается добавлением меню и функциональных возможностей, изменением поведения и т.п.;
гибкость в проектировании формы и изображений блоков и связей (стандартная графика Scilab);
простота разработки и отладки;
Обычно, создание простой новой модели Scicos предусматривает выполнение следующих операций:
1.запуска Scicos с пустым окном;
2.открытия одной или более палитр;
3.копирования нужных блоков из палитр в окно;
4.установки параметров блоков нужной величины;
5.соединения входов и выходов блоков;
6.запуск модели;
Соединение блоков
Для соединения блоков делается один щелчок левой клавишей мыши (ЩЛК) на порте одного блока и затем один на порте второго блока. Если в процессе протягивания связи сделать еще один ЩЛК, то линию можно повернуть под прямым углом. Для удаления связи ее выделяют одним ЩЛК и Delete27
Для создания ответвления от линии делают на нужном месте два ЩЛК и тянут линию в нужное место. Или сделав ЩПК, выбирают в появившемся меню Linke. На уже выделенной связи можно сделать ЩЛК один раз. Для удаления еще не завершенной линии связи сделайте один ЩПК.
Следует помнить, что линии сигналов активизации, по умолчанию, красные, а основных сигналов черные. Эти цвета можно изменить, используя Default Link Color в меню Misc (прочее) или Default Link Color в меню Format.
Как только все входы и выходы будут связаны, построение модели Scicos завершено и она может быть запущена. Перед этим параметры блоков, если это необходимо, должны быть изменены. Чтобы изменить параметры блока – два ЩЛК мыши на объекте. Это открывает диалоговое меню, которое позволяет модифицировать блочные параметры. Эти параметры могут быть заданы, используя правильные выражения Scilab. Эти выражения запоминаются символически, и затем оцениваются.
И так два ЩЛК мыши на иконке Gain. Появляется диалоговое окно.
Установим параметр Gain равным 7 и нажмем кнопку Ok. На иконке блока Gain появилась цифра 7.
Запустим модель. Для этого в меню Simulation выберем опцию Setap и в появившемся окне установим конечное время работы модели ( параметр Final integration) time равным 30. Далее в меню Simulation выбираем опцию Ran. Появляется графическое окно. Оно представлено на следующем рисунке
Моделирование может быть остановлено с помощью кнопки Stop в правой части панели меню в основном окне Scicos. Далее работа модели может быть продолжена, перезапущена или прекращена: при нажатии кнопки Ran выпадает панелька с кнопками Continue, Restart, End.
Если желательно, то можно проделать косметические изменения ( цвета линий, цвет фона, 3D аспект, и т.п.). Тогда окно Scicos может выглядеть приблизительно так
При необходимости можно сохранить результат моделирования (графическое окно) выбрав File/Save в окне диаграммы с расширением .scg. Для того, чтобы загрузить сохраненный графический результат используйте Load в меню File диаграммы. График будет загружен поверх имеющегося.
Модели Scicos могут быть сохранены в файлах, с расширением .cos или .cosf. Например, если имя модели Untitled, создается двоичный файл Untitled.cos. Также возможно сохранение модели Scicos в формате ASCII с расширением .cosf. Преимущество сохранения в формате ASCII в том, что оно машинонезависимое.
Установка параметров моделирования
Модель Scicos может работать от t = 0 до указанного времени окончания работы. В зависимости от модели используется решатель для обычного дифференциального уравнения (ОДУ) или решатель для дифференциального алгебраического уравнения (ДАУ), а если модель является дискретной, ни один из них не используется. У каждой задачи есть свои собственные специфические особенности. Это требует некоторой гибкости при моделировании и анализе моделей. Рассмотрим параметры моделирования, которые пользователь должен задать прежде, чем начать моделировании.
Время окончания работы (Final Simulation Time): это время по умолчанию составляет 10000 секунд, время начала работы всегда равно нулю.
Вычисление в режиме реального времени (Realtime Scaling): время моделирования и фактическое время не одинаково. Например, моделирование десяти секунд обычно не занимает десять секунд реального счета. Реальное время зависит от многих факторов, включая сложность модели, размеры шага выбранного решателя и быстродействие компьютера. В основном время моделирования меньше, чем реальное время. Эта опция увеличивает время реального моделирование, устанавливая единицу времени Scicos в одну секунду.
Отклонение (Tolerances): относительное допустимое отклонение задает ошибку относительной величины каждого состояния, то есть, процент от величины. Например, 10-6 означает, что точность вычисленного состояния в пределах 10-4 %. Абсолютное отклонение, представляет приемлемую ошибку. Его величина по умолчанию 10-4.
Максимальный шаг (Maximum Step-size): максимальный шаг задает наибольший шаг интегрирования, который может выбрать решатель. Величина по умолчанию 100001 (inf). Эта установка важна тем, что ограничивает шаг интеграции, препятствуя тому, чтобы решатель не выбрал слишком крупный шаг.
Максимальный временной интервал интегрирования (Maximum Inte-gration Time Interval):максимальный временной интервал для каждого вызоварешателя. Он должен быть уменьшен, если поступает сообщение «too many calls» (слишком много запросов).
Допустимое время (Tolerance on Time): наименьший временной интервал, для которого используется численный решатель, чтобы обновить непрерывные величины.
Блок-схема в Scicos
С амое фундаментальное понятие для разработки систем управления - блок-схема (модель). Классическая модель блок- схемы динамической системы графически состоит из блоков и связей, которые представляют непрерывные сигналы и дискретные события.
Отношения между каждой элементарной динамической системой в блок-схеме иллюстрированы при помощи сигналов, соединяющих блоки. Все вместе блоки и линии в блок-схеме описывают полную динамическую систему.
Самый простой элемент модели – блок. На блок поступает входной сигнал и он, с учетом своих динамических свойств, формирует выходной сигнал. Детали внутреннего устройства каждого блока скрыты от внешней части модели, т.е. он похож на черный ящик. Другими словами модель «интересуется» только отношениями в блоке между входом и выходом. В общем, каждый блок имеет структуру, показанную на следующем рисунке.
Каждый блок связан с другими блоками линиями передачи сигналов, как дискретных или непрерывных. Непрерывный сигнал представляет собой величину, которая изменяется в течение некоторого времени и определена для всех моментов времени в течение моделирования, в то время как дискретный сигнал является кусочно-непрерывным и только событие (Event, сигнал активации) изменяет его величину.
Отношения между входом и выходом блока определены рядом непрерывных и дискретных уравнений. Эти уравнения определяют отношения между сигналами, формируют сигналы и переменные внутренних состояний.
Дискретные события играют важную роль в моделях гибридных систем. Чтобы явно определить дискретные события, в Scicos используют специальные связи. Их называют связями активации, в отличие от основных связей. Источник активации может активизировать несколько непрерывных или дискретных блоков. Модель Scicos может содержать несколько источников событий. В связи с событиями в моделях Scicos нужно учитывать два важных момента: существуют одновременные события и синхронные события.
Два события одновременны, только если они активизированы в одно и то же время.
Два события синхронны, только если они активизированы одним и тем же блоком.
Два одновременных события не обязательно синхронны, и два синхронных события не обязательно одновременны.
Иерархия (суперблоки)
Модель, состоящая из очень большого количества блоков не удобна, ее трудно запомнить, работа с ней и ее отладка затруднены . Для больших систем полезно использовать средства создания иерархической модели.
С оздадим модель, копируя блоки из палитр, в соответствии с нижеприведенным рисунком.
Разместим интегратор и усилитель в суперблоке. Для этого можно выбрать Region to super blok в меню Diagram и затем выбрать область, которую нужно поместить в суперблок (удерживая левую клавишу мыши, образовать охватывающий нужные блоки прямоугольник). Суперблок создан. Он заменяет два блока.
Проверим состав суперблока. Для этого сделаем двойной ЩЛК на супер-блоке. Он открывается в новом окне.
В ыйдем из суперблока (меню Diagram/To main diagram) и запустим мо-дель Scicos. Получаем такой результат
Возможен другой путь создания суперблока. Откроем пустое окно Scicos и копируйте в него пустой суперблок из палитры Others. Откройте суперблок щелкая на нем и заполните его необходимыми блоками. Ниже на рисунке показан суперблок, созданный вторым способом и его содержимое.
Созданный суперблок имеет два выходных сигнальных порта и один входной порт. Теперь суперблок может быть использован подобно любому другому блоку. Подключите его порты к другим блокам и Ran!
Переход через нулевой уровень
Пересекающие нулевой уровень события (и соответствующие блоки палитры Treshold) введены, чтобы преодолеть трудность в моделировании непрерывных систем, когда есть некоторые «прерывания», т .е. резкие изменения (скачки) сигналов. Эти явления могут вызвать ошибки при использовании используемых методов интеграции. Численный решатель Scicos, благодаря механизму обнаружения моментов перехода через ноль, может обнаружить такие события. Для обычных случаев в Scicos используется блок пересечения нуля. Цель этого блока состоит в том, чтобы при обнаружении «разрывов» (скачков) сигналов производить переключения уравнений системы.
Применение блоков пересечения нуля чаще всего необходимо в гибридных моделях для непредсказуемых событий. Например, при моделировании системы контроля уровня жидкости в резервуаре в случае прекращения притока, как только уровень превысит определенную величину.
В некоторых приложениях, в дополнение к установлению факта пересечения, мы должны знать направление пересечения. Для этих целях в Scicos имеются два других блока: блок «+ to –» и блок «– to +», которые фиксируют не только факт пересечения, но и учитывают направление этого пересечения.
Рассмотрим простой сеанс Scicos, чтобы проиллюстрировать использование блоков нулевого пересечения.
Мы уже столкнулись с часами активации Event Clock, которые генерировали последовательность равномерно расположенных во времени событий. Они были использованы, чтобы активизировать Scope. Откроем пустое окно Scicos. Создадим следующую модель, копируя блоки из палитр.
Блок «+to-» находим в палитре Treshold, S/H-блок (sample and hold, образец и сохранение) – в палитре линейных блоков и cos-блок – в нелинейной палитре. Отметим, что блок MScope имеет 3 входа. Количество входов MScope является параметром блока; его нужно установить прежде, чем входы будут подсоединены.
Блок «+to-» генерирует событие каждый раз, когда входной сигнал пересекает нулевой уровень, изменяясь от плюса к минусу. Входной сигнал должен быть непрерывной функцией времени. Эти события активизируют блок S/H, который копирует входной сигнал (образец) на свой выход. Сигнал на выходе не изменяется до следующей активации блока.
Результат счета показан на рисунке.
Параметр амплитуды блока генератора sinusoid установлен 8.7. События, с выхода блока пересечения нулевого уровня, были использованы для генерации дискретных сигналов. Эти дискретные сигналы могут быть использованы в свою очередь для управления непрерывными компонентами. Это часто делается в управляющей системе, где дискретные контроллеры управляют непрерывными системами. Простой пример:
Дискретный сигнал возвращается в непрерывную часть схемы. Отметим, что у генератора прямоугольных волн выходной порт слева (в линейной палитре, выход у этого блока справа). Это сделано посредством использования команды Flip в меню Editor. Этот блок выдает на выход 0 или 1, переключение производится сигналом активации. Результат моделирования показан ниже
Блоки с условием
О сновные функциональные блоки выполняют заданные вычислительные функции, тогда как блоки с условием управляют порядком вычислений в модели. Эти блоки могут активизировать другие блоки в модели Scicos при выполнении некоторых условий.
Всякий раз, когда эти блоки получают сигнал активации, они в этот же момент формируют синхронный сигнал активации на выходном порту как функцию величины сигнала на их основном входе.
Сигналы на выходах этих блоков взаимоисключающи.
Ч тобы показать применение блока "Then-If-Else" рассмотрим следующую схему.
У селектора есть два входных порта активации. Блок может быть активизирован в данный момент только одним из них. Всякий раз, когда селектор активизирован по первому или второму входу входной сигнал принимается на вход также с первого или второго входа основного сигнала соответственно. Таким образом, на выходе селектора присутствует пилообразный сигнал, если сигнал random generator положительный и прямоугольный волновой сигнал, если сигнал random generator отрицательный.
Если блок, "Then-If-Else" не имеет входного порта активации, он управляет блоками непрерывного сигнала, которые получают активацию по другим цепям. В этом случае, численный решатель видит только те блоки, которые находятся в активной ветви блока "If-then-Else".
Блоки «Event seleсt» также считаются синхронными блоками. У него есть встроенный индикатор пересечения нуля. Блок имеет один вход и в любой момент активизирован только один выход.
Векторный вход-выход
Мы уже видели, что блоки могут иметь более чем один вход. Они могут также иметь более чем один выход и, кроме того, каждый вход и выход может быть распараллелен (векторизован). Таким образом, каждый порт ассоциируется с размерностью. При соединении выходного порта с входным, размерности портов должны быть равными.
Создадим следующую схему, копируя блоки из палитр.
Mux ( мультиплексор) находится в палитре Branching (расширение). Этот блок может иметь любое количество входов, в том числе и векторных; выход является вектором, полученным как конкатенация входов.
Единственный параметр этого блока – количество входов; нет необходимости определять размерность каждого входа. Scicos определяет эту размерность по блоку, с которым связан входной порт.
В вышерассмотренном примере, входы размерностью единица и, следовательно, выход является двумерным вектором. Аналогично для Scope (здесь - нет необходимости определять размер входного вектора, это делается автоматически.
И зменим схему следующим образом.
Блок Demux производит действие, противоположное блоку Mux, то есть разделяет входной вектор на векторы меньшего размера. Demux отменяет то, что сделал Mux. Чтобы избежать наложения сигналов, убедитесь, что были устанавлены параметры MScope – два входа. При этом он будет использовать два графических окна.
И зменим схему.
Новый блок является линейной динамической системой.
М оделирование гибридных систем
Непрерывные и дискретные сигналы, зависящие от событий могут взаимодействовать по -разному. Во-первых, они могут быть входами одного блока. По существу, нет никакого различия между дискретным и непрерывным сигналом. Фактически сигнал Scicos может быть дискретным в течение какого-то времени, а потом непрерывным. Это означает, что в Scicos можно выполнять совместные операции с непрерывными и дискретными сигналами. Непрерывные сигналы могут создавать события через блоки пересечения нуля. Наконец, события могут создать скачки в непрерывных состояниях так же как в дискретных.
Непрерывные и постоянно активные блоки
Блок может быть всегда объявлен активным, заданием параметра dep_t = True. Это означает, в частности, что блок непрерывный, то есть, его выходные сигналы и его состояния могут изменяться непрерывно во времени. Механизм наследования также относится и к непрерывному блоку. Если следовать формализму Scicos, активность всегда должна определяться сигналом, полученным на входном порту активации. Однако, чтобы избежать излишней сложности, это свойство просто определено как свойство блока. Есть множество блоков в палитрах Scicos, которые являются постоянно активными. Эти блоки могут использоваться с другими блоками, чтобы строить гибридные схемы.
В этом примере генератор синусоиды и блок интегратора (1/s) всегда активны. Блок ABS (вычисление абсолютной величины) наследует активность от генератора синусоиды.
Блок активации с условием также работает с непрерывными сигналами. Рассмотрим схему.
Список литературы
1. Бусленко В. Н. Автоматизация имитационного моделирования сложных систем.-М,: Наука,1987.-238с.
2. Кельтон, В. Имитационное моделирование / В. Кельтон, А. Лоу. – СПб. : Питер, 2004. – 847 с.
3. Клейнрок, Л. Теория массового обслуживания / Л. Клейнрок. – М. :
Машиностроение, 1979. – 432 с.
4. Попов Е. П. теория автоматического регулирования и управления: Учеб. Пособие для втузов. – 4-е изд., перераб. и доп. – М.: наука. Гл. ред. физ.-мат. лит., 1993. – 304с.
5. Соболь И.М. «Метод Монте-Карло», Москва «Наука»,1995г.
6. Шеннон, Р. Имитационное моделирование систем. Искусство и наука / Р. Шеннон. – М. : Мир, 1978. – 418 c.