Лекции.Орг


Поиск:




Краткое описание палитр и блоков




С. ДАНИЛОВ

SCICOS

ПАКЕТ SCILAB ДЛЯ МОДЕЛИРОВАНИЯ ДИНАМИЧЕСКИХ СИСТЕМ

РУКОВОДСТВО

 

Тамбов

2009

 

 

Руководство по Scicos – составной части свободно распространяемого пакета Scilab предназначено для первого знакомства и приобретения навыков работы. Scicos имеет дружественный графический интерфейс и удобен в работе. В настоящее время в нашей стране нет подобного руководства, что затрудняет распространение этого мощного и эффективного средства. Знание этого инструмента моделирования необходимо специалистам во всех областях науки и техники. Особенно полезен он для студентов и аспирантов.

В тексте пособия не делались ссылки на используемую литературу, чтобы не затруднять работу с руководством. Список использованной литературы приведен в конце руководства.


Введение

 

Почти за полтора десятка лет массового использования средств вычислительной техники для решения задач моделирования сложилось представление о наборе подходящих программных средств. Эти программные продукты достаточно дорогие и их использование наносит серьезный ущерб бюджету любого проекта. Использование этих программ в учебном процессе (несмотря на наличие специальных цен) также ощутимо для бюджета. Использование пиратских копий является неэтичным, если ориентироваться на легально приобретаемые копии, или преступным, если использовать пиратские копии и ориентировать обучаемых на использование пиратских копий.

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

Свободно распространяемый пакет Scilab был разработан в 1994 году во Франции, в Национальном исследовательском институте информатики и автоматизации INRIA и Национальной школе дорожного ведомства ENPC. С 2003 года поддержкой Scilab занимается консорциум Scilab Consortium.

Scicos (Scilab Connected Object Simulator) – составная часть пакета Scilab. Scicos в его составе обеспечивает возможность визуального моделирования динамических систем. Эти моделируемые системы могут быть как непрерывными, так и дискретными.

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

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

Scilab – пакет числовой обработки данных. Он очень хорош для обработки сигналов. Основной режим работы – командный. К основным функциям пакета Scilab можно отнести работу с матрицами (в том числе разреженными), решение обыкновенных дифференциальных уравнений, численное дифференцирование и интегрирование, построение двумерных и трехмерных графиков по формулам и по результатам расчетов, решение задач линейного программирования, а также возможность создания пользовательских программ. Пакет является кроссплатформенным, на сайте проекта (http://www.scilab.org/) можно найти самые последние сборки для различных операционных систем. На русском языке подробную информацию и пособия по работе с пакетом можно получить как на сайте http://www.csa.ru/~zebra/my_scilab/, так и на сайте http://www.scilab.land.ru/.

С системой Scilab доступны следующие комплекты инструментов:

• 2-х и 3-х мерная графика, анимация;

• линейная алгебра, матрицы;

• полиномы и рациональные функции;

• моделирование: ОДУ и ДАУ решатель;

• классическое и робастное управление, LMI оптимизация;

• дифференциальная и недифференциальная оптимизация;

• обработка сигналов;

• графы и сети;

• параллельно Scilab, используемый PVM;

• статистика;

• интерфейс с компьютерной алгеброй: генерация кодов пакетом Maple для Scilab;

• Scicos и др.

Перечислим основные составные части Scicos.

• Графический редактор: Scicos предоставляет иерархическому графическому редактору для строительства моделей динамических систем, используя блок-схемы. Многие предопределенные блоки также предоставлены в различных палитрах. Новые блоки могут быть определены пользователем в C, Fortran’ е или Scilab.

• Компилятор: компилятор Scicos использует образцовое описание, обычно собираемое редактором Scicos, построить столы планирования, которые могут тогда использоваться тренажером и кодовой функцией поколения.

• Симулятор: симулятор Scicos использует таблицы планирования и другую информацию, предоставленную компилятором, чтобы управлять моделированиями. Симулятор имеет гибридную природу, при которой он должен иметь дело с дискретными и непрерывными системами времени, и событиями. Для непрерывного времени используется решатель однородных дифференциальных уравнений (ОДУ) LSODAR или решатель дифференциальных алгебраических уравнений (ДАУ) DASKR в зависимости от природы рассматриваемой непрерывной системы.

• Генератор объектного кода: Scicos может генерировать код C для того, чтобы «понять» поведение некоторых подсистем. Эти подсистемы не должны включать непрерывные во времени компоненты.

 

Scicos – независимое программное приложение для моделирования, но доступ к Scilab и его функциональным возможностям обеспечивает большую гибкость и расширяет диапазон возможностей моделирования.

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

 

Наличие доступа к функциям Scilab, при создании моделей очень важно.

1. Пользователь Scicos часто имеет необходимость использовать функции Scilab, например предназначенные для создания фильтров обработки сигналов и др.

2. Язык программирования Scilab может использоваться для пакетной обработки множества задач моделирования или обобщая – модели, разработанные Scicos, могут использоваться как функции в Scilab.

3. Графические возможности Scilab могут использоваться для последующей обработки результатов моделирования.

 

Но интеграция Scicos и Scilab идет дальше. Редактор Scicos полностью написан на языке Scilab и это обеспечивает много преимуществ:

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

гибкость в проектировании формы и изображений блоков и связей (стандартная графика Scilab);

простота разработки и отладки;

Scicos переносим на новую платформу, на которую переносим Scilab;

структура данных Scicos аналогична структуре данных Scilab и может быть обновлена функциями Scilab: легкий способ взаимодействия с блоками.

Есть и неудобства:

Scilab - интерпретируемый язык и для очень больших моделей, некоторые функции редактора могут быть медленными;

ограниченные возможности графического интерфейса.

Обычно, создание простой новой модели Scicos предусматривает выполнение следующих операций:

запуска Scicos с пустым окном;

открытия одной или более палитр;

копирования нужных блоков из палитр в окно;

установки параметров блоков нужной величины;

соединения входов и выходов блоков;

компиляцию и запуск модели;

переименования и сохранения.

Вышеуказанное не включает использование более сложных операций, как например, создание суперблочных конструкций, создание новых базовых блоков, и т.п., а также косметических операций, как например, редактирование иконок, окрашивание или изменение размеров блоков в окне. Эти операции будут рассмотрены ниже.

Ниже, мы последовательно, по операциям выполним простой сеанс Scicos, в котором создадим модель и запустим ее.

Для запуска Scicos необходимо выбрать Scicos в меню Applications или набрать в основном окне Scilab:

--> scicos();

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

--> scicos(‘Flight.sci’)

Окно остается открытым в течение всего сеанса Scicos. Откроем палитру блоков. Для того, чтобы открыть ее, выберите Palette в меню Edit и найдите имя нужной палитры среди предлагаемых.

Палитра содержит имеющиеся блоки Scicos. В Scicos есть три типа базовых блоков: обычные базовые блоки, блоки пересечения нуля и блоки синхронизации. Эти блоки могут быть скопированы в окно, которое используется для создания модели Scicos. Эти палитры не могут быть отредактированы. Для редактирования палитры, она должна быть загружена как элемент модели Scicos. Подробнее рассмотрим это ниже. Ниже показан вид палитры источников сигналов (Sources).

Палитра Sources

Перечень палитр и их состав с краткой характеристикой элементов дан ниже.

Краткое описание палитр и блоков

Палитра по сути просто подобна любой другой модели Scicos; фактически любая модель может быть загружена как палитра, с использованием опции Load как пункта команды Palette в меню. Чтобы заставить Scicos признавать новую палитру, вы должны добавить имя файла, который содержит ее в вектор scicos_pal в Scilab. Это делается автоматически, когда Вы используете пункт Save as Palette в меню Palette. Рекомендуется для более удобной работы набрать в окно Scicos наиболее часто используемые вами блоки и сохранить как новую палитру под именем, которое вы выберете.

Источники (Sources)

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

CLKINV_f – входной порт активизации. Он должен использоваться только внутри суперблоков Scicos в качестве входного порта активации. Если этих входов несколько, они нумеруются подряд, начиная с единицы (12).

CLOCK_c - часы активации. Устанавливается шаг работы и время начала работы (6).

CONST_m – константа (18).

Counter – счетчик. Устанавливается максимальная величина счета и способ счета: на увеличение или на уменьшение (2).

CURV_f – формирует табулированную функцию времени. Между точками используется линейная интерполяция. После окончания времени вывода данных на выходе остается последняя табличная величина. Пользователь может изменить функцию, редактируя кривую (13).

FROMWSB – передача данных из рабочего пространства Scilab в Scicos (5).

GENSIN_f - генератор синусоидального сигнала (7).

GENSQR_f – генератор прямоугольных волновых сигналов. Начальное состояние единица. Второе минус единица. Необходима дискретная активация. Блок CLOCK_c для этого не подходит.

IN_f - входной порт. Он должен использоваться только внутри суперблоков Scicos в качестве входного порта активации. Если этих входов несколько они нумеруются подряд, начиная с единицы (19).

INIMPL_f - входной порт, вход в систему снаружи (по умолчанию) (8).

Modulo_Count - счетчик по модулю. Параметр – величина модуля (11).

RAMP - блок выдает сигнал в установленное время, величина и скорость нарастания которого задаются (20).

RAND_m - генератор равномерно распределенных случайных чисел в диапазоне 0…1 (21).

READAU_f - считывание звуковых файлов AU (15).

READC_f - считывание двоичных данных (9).

RFILE_f - считывание из файла (22).

SampleCLK - Разница между SampleCLK и CLOCK_c заключается в том, что все блоки SampleCLK в схеме являются синхронными. Синхронизм осуществляется за счет двух разных методов вычисления на этапе компиляции. Первый способ основывается на применении часов, которые непосредственно связаны со счетчиком и которые активируют блок выбора событий. Часы работают в соответствии со следующим правилом. Если все блоки имеют одинаковый сдвиг времени, тогда частота часов есть функция периода, и смещение часов равно этому сдвигу. Если смещения являются различными, то частота хода часов это функция периода и смещения, и смещение часов равно нулю. Счетчик считает от единицы до наименьшего общего кратного периодов (НОК). Число выходов в ESELECT_f блока совпадает с НОК. Второй метод основывается на многочастотном блоке Sources, который генерирует события только для определенного времени. События при этом генерируются не периодически, как и в первом случае (3).

SAWTOOTH_f - генератор пилообразного сигнала в диапазоне 0…1. Установок нет (16).

SIGNAL_CREATOR – генератор функции заданной в трех точках с интерполяцией. Он может быть периодическим (установить параметр). Выход активации работает по пересечению нуля от плюса к минусу (1).

STEP_FUNCTION - генератор ступенчатого сигнала (17).

TIME_f – время. Установок нет. Линейно нарастающий сигнал. Крутизна равна единице (10).

TK SCALE – блок выдает постоянный сигнал, величина которого может быть изменена в установленном диапазоне непосредственно во время работы модели с помощью ползункового регулятора с учетом фактора нормализации (для увеличения точности) (4).

Линейные блоки (Linear)

CLINDUMMY_f – блок должен устанавливаться в любой схеме, которая содержит блок с пересечением нуля, но не в непрерывной системе с состоянием, потому что это ode-решатель, который находит нулевое пересечение (16).

CLR - непрерывная передаточная функция. Блок реализует линейную систему, представленную рациональной функцией типа (1+s)/(1+s)*(1+s) и т.п. (9).

CLSS – непрерывная система в пространстве состояний. Должны быть заданы матрицы A, B, C, D и начальное состояние x0 (1).

DERIV – блок производной. Она вычисляется по входному сигналу Δu/Δt (5).

DLR - дискретная передаточная функция. Блок реализует линейную дискретную систему, представленную рациональной функцией типа (1+z)/(1+z)*(1+z) и т.п (13).

DLSS - дискретная система в пространстве состояний. Должны быть заданы матрицы A, B, C, D и начальное состояние x0 (17).

DOLLAR_m - оператор задержки (1/z). Входная величина подается на выход по сигналу активации, а после этого на входе запоминается новая входная величина (15).

GAINBLK – усилитель (10).

INTEGRAL_m – интегратор (3).

PID – PID регулятор (6).

Shift REGISTER – сдвиговый регистр (7).

SAMPHOLD_m – (S/H) экспозиция на выходе входного сигнала и считывание нового входного по сигналу активации (11).

SUM_f – сложение (4).

SUMMATION - блок выполняет суммирование или вычитание входных сигналов. Этот блок может суммировать или вычитать скаляр, вектор, или матрицы. Число входов задается параметром. Этот параметр может быть вектор, состоящий из плюс и минус единиц или это может быть положительная величина (скаляр). В первом случае количество единиц указывает число входов, а знаки указывают, является ли это суммированием или вычитанием. Во втором случае это блок суммирования и величина указывает число входов.

При переполнении результат может иметь различные формы:

1 – нормальный не ограниченный результат.

2 – ограниченный результат.

3 – сообщение об ошибке, предупреждающее пользователя о переполнении.

Пользователь может выбирать одну из этих трех форм, установкой в поле "DO ON OVERFLOW": 0, 1 или 2. (2).

TCLSS - непрерывная линейная система со скачком (14).

TIME_DELAY – постоянная задержка по времени (8).

VARIABLE_DELAY – переменная задержка. Первый сигнал – задерживаемый, второй величина задержки (12).

Нелинейные блоки (Non_linear)

ABS_VALUE – абсолютная величина (8).

EXPBLK_m – экспонента (13).

EXPRESSION – математическое выражение (1).

INTRP2BLK_f – 2D интерполяция (11).

INTRPLBLK_f – интерполяция (12).

INVBLK – инвертирование (16).

LOGBLK_f – логарифмирование (4).

LOOKUP_f – блок, заданный таблицей (5).

MAXMIN – блок выдает на выход наибольший или наименьший элемент или элементы входных элементов. Функцию можно выбрать, обращаясь к параметрам (6).

POWBLK_f – степень. Блок реализует операцию y(i) = u(i)^a. Размерность входного и выходного портов определяются при компиляции в соответствии с подсоединенными портами (7).

PROD_f – умножение (8).

PRODUCT – умножение (9).

QUANT_f – квантизатор (10).

SATURATION – ограничитель (2).

SIGNUM – функция Signum (3).

TrigFun – тригонометрическая функция (12).

Переход (Branching)

CLKFROM – прием данных от соответствующего CLKGOTO (9).

CLKGOTO – передача данных соответствующему блоку CLKFROM (8).

CLKGotoTagVisibility - определяют область видимости этикетки CLKGOTO (10).

DEMUX – демультиплексор (17).

EDGE_TRIGGER – этот блок генерирует событие на увеличение, уменьшение или и то, и другое (см. установку параметров). Он реагирует только на скачек совпадающий с событием. Выходное событие синхронно с событием, вызвавшим скачек. Непрерывное пересечение нуля не обнаруживает (16).

ESELECT_f – блок синхронизации подобный If-Then-Else. Вход и выход синхронны. Входное событие направляется на тот или иной порт в зависимости от величины сигнала основного входа (12).

Extract_Activation – блок преобразования входного сигнала в сигнал активации (4).

EXTRACTOR – выделяет конкретный заданный входной сигнал из многомерного входного сигнала (20).

FROM – прием данных от соответствующего GOTO (6).

FROMMO – прием данных от соответствующего GOTOMO (2).

GOTO – передача данных блоку FROM (5).

GOTOMO – передача данных блоку FROMMO (1).

GotoTagVisibility – определяют область видимости этикетки (7).

GOTO GotoTagVisibilityMO – определяют область видимости этикетки GOTOMO (3).

IFTHEL_f – блок синхронизации с условием If-Then- Else (11).

ISELECT_m – выбирает сигналы из поступающих событий. Блок имеет один вход (22).

M_SWITCH – многопозиционный ключ (13).

MUX – мультиплексор (18).

NRMSOM_f – слияние данных (19).

RELAY_f – реле (23).

SCALAR2VECTOR – преобразование скаляра в вектор (14).

SELECT_m – блок принимает векторные или матричные сигналы. Нужно установить параметр типа сигнала, который будет приниматься – Input Type (вектор или матрица). Блок решает, какие элементы выбрать в зависимости от типа входа (21).

SWITCH2_m – блок пропускает сигнал через первый (верхний) вход или через третий (нижний) в зависимости от величины сигнала на среднем (втором) управляющем входе. Можно выбрать критерий (порог) подключения к первому входу (24).

SWITCH_f – блок ручного переключения. В параметрах задается количество положений переключателя, и в каком положении переключатель находится (15).

Другие (Others)

AUTOMAT – Этот блок дает возможность строить гибридные автоматы, то есть гибридные системы, чья дискретная часть определена способами и переходами между способами, а непрерывная часть определена через дифференциальные алгебраические уравнения. Блок обеспечивает автоматическое переключение между подсистемами. Подсистемы построены таким способом, что они имеют стационарный входной вектор, и вычисляют плавную и скачкообразную функции (пересечение нуля) и передают их назад к блоку автомата. Стационарные переменные определены в блоке автомата, подсистемы – статические функции (подробнее см. help на панели меню) (2).

BACKLASH – мертвый ход (10).

c_block – блок, задаваемый пользователем на языке C (20).

CBLOCK – блок создает шаблон функции на языке С. Кроме того создает библиотечные и объектные файлы (15).

CONSTRAINT_f – определение имплицитных алгебраических отношений (13).

DEADBAND – обеспечивает заданную область нулевого выходного сигнала (11).

DEBUG_SCICOS – блок отладки - мощный инструмент отладки в Scicos. Когда он помещен в модель Scicos, в течение моделирования он проверяет каждый блок перед активацией и после. Открывая блок отладки, пользователь может писать scilab сценарий, который будет выполнен при его активации. Блок отладки очень похож на стандартный Scilab блок пятого типа, который вызывается двумя аргументами (блок и флаг). Он имеет доступ к функциям типа curblock (), scicos_time (), и т.д. Для каждого блока, в течение моделирования, блок отладки вызывается первым (как будто это сам блок).

Потом работает сам блок, а потом опять блок отладки. Таким образом, он контролирует величины блока до и после его работы. Блок отладки может также изменять эти величины. Например, если в блоке отладки установлена простая пауза, то моделирование идет пошагово. Но объявление паузы может быть условным. Например:

If curblock () == 3 and scicos_time () > 2 and флаг == 2 then pause, end.

Испытание может также быть сделано зависящим от величин блока, например: If block.outptr (1 ()) > 1 9 then disp (scicos_time) (), end.

Этот блок может также использоваться, чтобы создать файлы, с информацией о величинах блока в течение моделирования.

Следует помнить, что для функционирования блока отладки, уровень отладок должен быть установлен два или выше. Уровень отладок изменяется автоматически, когда блок отладки помещен внутрь модели. Можно вернуть уровень отладок к нулю не удаляя его из модели. Это может быть выполнено, используя меню Debug Level, или в Scilab немедленно (часто во время паузы), используя функцию scicos_debug (3).

ENDBLK – этот блок может быть использован для установки конечного времени работы модели. При этом модель будет остановлена по данным этого блока, а не по установке в Simulate/Setup. Этот параметр может быть числом или символической переменной определенной в контексте scicos (2).

EXPRESSION – математическое выражение (12).

fortran_block – блок задаваемый пользователем на языке Fortran (16).

generic_block3 – блок обеспечивает общую функцию интерфейса, но вычислительная функция должна быть определена отдельно или как функция Scilab, или Fortran, или функция C. Помимо имени функции пользователь должен определить тип и т.п.. Функция, должна быть сохранена вместе с моделью и загружена или динамически связана перед моделированием (6).

HYSTHERESIS – гистерезис (14).

LOGICAL_OP – логическая операция (установка вида операции в параметрах) (4).

MBLOCK – блок обеспечивает легкий способ создания блока Scicos, поведение которого описано программой Modelica. При использовании этого блока, пользователь может писать и собирать Modelica программы в Scicos без создания интерфейса (7).

PDE – этот блок является реализацией нескольких численных методов (конечные элементы, разности и объемы 1 и 2 порядка) решения одномерных дифференциальных уравнений в частных производных (ЧДУ) в пределах Scicos. Математические рамки ограничивают ЧДУ линейным скаляром максимальным порядком два (время и пространство). Цель состоит в том, чтобы обеспечить инженеров и физиков удобным комплектом инструментов в Scicos, который позволит им графически описывать такие решаемые уравнения. Система решения выбирает наиболее эффективный численный способ в зависимости от типа уравнения и управляет решением (8).

RATELIMITER – блок ограничивает первую производную сигнала, проходящего через него. Сигнал на выходе изменяется не быстрее, чем заданный предел (9).

RELATIONALOP - операция логического сравнения. Вид сравнения устанавливается в параметрах блока (5).

scifunc_block_m - функциональный блок Scilab (18).

SUPER_f – создание суперблока (17).

TEXT_f – текстовый блок (19).

Порог (Threshold)

NEGTOPOS_f - порог пересечения нуля от минуса к плюсу (1).

POSTONEG_f - порог пересечения нуля от плюса к минусу (2).

ZCROSS_f - обнаружение пересечения нуля (3).

Средства отображения (Sinks)

AFFICH_m – дисплей (13).

CANIMXY – y = f(x) визуализирует изменение входных сигнала. Можно задать тип линии и ее размер (17).

CANIMXY3D – z = f(x,y) визуализирует изменение входных сигналов. Можно задать тип линии и ее размер (2).

CEVENTSCOPE – просмотр сигнала активации (8).

CFSCOPE - осциллограф с плавающей точкой подключения. Output window number – номер графического окна, используемого для показа. Его нужно задавать большим, чтобы не перепутать с другими окнами. Links to view – номер линии связи, с которой наблюдается сигнал (11).

CLKOUTV_f - выходной порт активизации (11).

CMAT3D – матричный 3D осциллограф (4).

CMATVIEW - матричный осциллограф с цветным отображением (3).

CMSCOPE – многооконный дисплей (14).

CSCOPE – простой осциллограф (18).

CSCOPXY – отображает зависимость y = f(x). Переменные х и у подаются на два входа (15).

CSCOPXY3D – отображает зависимость z = f(x,y). Переменные z, х и у подаются на три входа (1).

OUT_f - выходной порт (9).

OUTIMPL_f - выходной порт внешний (6).

TOWORK_c – передача данных в рабочую область Scilab (5).

WFILE_f - запись в файл (10).

WRITEAU_f – запись звукового файла AU (12).

WRITEC_f - запись двоичных данные (16).

События – (Event)

ANDBLK – блок формирует событие на выходе при наличии на входе двух событий вместе (8).

ANDLOG_f – Блок формирует +1, если события пришли на оба входа вместе и –1, если пришло только одно событие (11).

CLKSOMV_f – этот блок суммирует до трех событий. Выход воспроизводит входные события. Этот блок собственно не блок scicos, т.к. при компиляции он игнорируется. Вход и выход синхронны (3).

CLOCK_c – часы активации (4).

ESELECT_f – синхронный блок Event-Select. Специальный блок, подобный If-Then-Else. Вход и выход синхронизованы. Входящее событие направляется на тот или иной выход в зависимости от управляющего сигнала (2).

EVTDLY_f – задержка события (6).

EVTGEN_f – генератор события. Генерирует одно событие в установленное время (5).

EVTVARDLY – переменная задержка события. После поступления события на вход активации, оно задерживается на величину, определяемую сигналом, поступающим на сигнальный вход. Блок может также генерировать начальное событие на выходе (12).

freq_div – деление частоты (10).

STOP_f – при поступлении события работа модели останавливается и активируется главное окно Scicos. Работа может быть начата вновь или продолжена (кнопка Run) (9).

IFTHEL_f – блок синхронизации If-Then-Else, т.е. синхронизация по первому или второму выходу в зависимости от выполнения или не выполнения условия (13).

M_freq – блок создает события в определенные моменты времени работы модели. Периоды задаются в поле " Sample Time ", а временные сдвиги в поле "Offset". Блок имеет один вход, а количество выходов зависит от числа моментов задаваемого времени. Например, если вектор времени [1 1 2], и вектор сдвига - [0 0.5 0], тогда блок имеет 7 выходов.

- первый активизирован, когда время моделирования кратно первому периоду плюс первый сдвиг;

- второй активизирован, когда время моделирования кратно второму периоду плюс второй сдвиг;

- третий выход активизирован, когда произошло первое и второе событие;

- четвертый, когда время моделирования кратно третьему периоду плюс третий сдвиг;

- пятый, когда произошло первое и четвертое событие;

- шестой, когда произошло второе и четвертое событие;

- седьмое, когда произошло третье и четвертое событие и т.д.

Так что число выходов равно (2 ** (количество периодов)-1) (7).

SampleCLK – см. выше (1).

Электрический – (Electrical)

Capacitor – конденсатор электрический (17).

CCS – источник тока управляемый (1).

ConstantVoltage – источник постоянного напряжения (20).

CurrentSensor – амперметр (11).

CVS – управляемый генератор напряжения (2).

Diode – диод (14).

Ground – заземление (точка нулевого потенциала) (18).

Gyrator – фазовращатель (4).

IdealTransformer – идеальный трансформатор (3).

Indutor – индуктор электрический (21).

NMOS – NMOS транзистор (10).

NPN – транзистор n-p-n (16).

OpAmp – норатор-нуллатор пары (8).

PMOS – PMOS транзистор (9).

PNP – транзистор p-n-p (5).

PotentialSensor – потенциалоскоп (22).

Resistor – резистор (12).

SineVoltage – источник синусоидального напряжения (6).

Switch – неидеальный электрический ключ (7).

VariableResistor – электрический переменный резистор (23).

VoltageSensor – вольтметр (13).

VsourceAC – электрический источник переменного напряжения (15).

VVsourceAC – регулируемый источник переменного напряжения (19).

Инструментарий термогидравлики – (ThermoHydraulics)

Thermal-Hydraulics Bache –термогидравлический резервуар (1).

PerteDP – термогидравлическая труба (3).

PuitsP – термогидравлическая утечка (5).

SourceP – термогидравлический источник постоянного давления (4).

VanneReglante – термогидравлический управляющий клапан (2).

Матрицы – (Matrics)

CUMSUM – кумулятивная сумма (1).

EXTRACT – экстракция матрицы (16).

EXTTRI – треугольная или диагональная экстракция (20).

MATBKSL – левое матричное деление (5).

MATCATH – горизонтальная конкатенация (11).

MATCATV – вертикальная конкатенация (8).

MATDET – детерминант матрицы (18).

MATDIAG – создание диагональной матрицы (25).

MATDIV – матричное деление (13).

MATEIG – собственная матрица (26).

MATEXPM – экспоненциальная матрица (17).

MATINV – обращение матрицы (6).

MATLU – факторизация (12).

MATMAGPHI – блок производит два типа преобразования.

1. Блок преобразовывает комплексное число к модулю и углу в радианах, в этом случае вход комплексный, а выход два вещественных числа. Если вход два вещественных числа, то выход по углу ноль или π, а по величине модуля – модуль входного числа.

2. Обратное преобразование (15).

MATMUL - матричное умножение (21).

MATPINV - псевдообращение матрицы (19).

MATRESH – блок изменяет размерность матрицы или вектора на заданную в поле "output size desired". Выходная размерность может быть меньше или равна входной (24).

MATSING SVD (23).

MATSUM – сумма матриц (8).

MATTRAN – транспонирование матрицы (22).

MATZCONJ – объединение матриц (14).

MATZREIM – комплексная декомпозиция (3).

RICC – решение уравнения Риккати (9).

ROOTCOEF - вычисление коэффициента (10).

SQRT - квадратный корень (2).

SQRT SUBMAT - субматричное извлечение SUBMAT (4).

Цифровые блоки (Integer)

BITCLEAR - очистка битов (6).

BITSET – установка битов (7).

CONVERT – преобразование типа данных (8).

DFLIPFLOP – D-триггер (3).

DLATCH – D блокированный триггер (2).

EXTRACTBITS – EXTRACTBITS (9).

INTMUL – матричное умножение целого INTMUL (10).

JKFLIPFLOP – JK триггер (4).

LOGIC – блок комбинационной логики (1).

SHIFT – сдвиговый регистр (11).

SRFLIPFLOP – SR триггер (5).

Примеры (DemoBlocks)

BOUNCE – генератор координат шаров (1).

BOUNCEXY – подпрыгивающие шары (2).

BPLATFORM – шар на платформе (3).

Старые блоки

 

Первая простая модель

Скопируйте с палитр: sinusoid generator, Cloc_c (палитра Sources), Csscope (палитра Scope), и Gain (палитра Linear).

Для того, чтобы скопировать блок, его можно перетащить мышью или, выделив блок (регион блоков) и щелкнув правой клавишей мыши (далее по тексту ЩПК), выбрать copy, а потом щелкнув ЩПК в окне, вставить – paste.

Генераторы Event (они выделены красным цветом) задают временную последовательность событий. Эти события, доступные как сигнал активизации с выхода блоков Event, могут быть использованы, чтобы активизировать другие блоки (задать моменты, когда блоки производят какие-то действия, например, выдают выходной сигнал) через свой входной порт активизации. Входные и выходные порты активизации находятся соответственно на верхней и нижней сторонах блоков. Основные входные и выходные порты установлены на боковых сторонах.

Позиции блоков могут быть выбраны так, что входные и выходные порты (подсоединенные), будут выровнены в линию, используя опцию Align (выстраивать в линию) в меню Edit.

Соединение блоков

Для соединения блоков делается один щелчок левой клавишей мыши (ЩЛК) на порте одного блока и затем один на порте второго блока. Если в процессе протягивания связи сделать еще один ЩЛК, то линию можно повернуть под прямым углом. Для удаления связи ее выделяют одним ЩЛК и Delete.

Для создания ответвления от линии делают на нужном месте два ЩЛК и тянут линию в нужное место. Или сделав ЩПК, выбирают в появившемся меню 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 с именем файла, который нужно загрузить, в качестве аргумента. Пример:

--> scicos('Untitled.cos');

Установка параметров моделирования

 

Модель Scicos может работать от t = 0 до указанного времени окончания работы. В зависимости от модели используется решатель для обычного дифференциального уравнения (ОДУ) или решатель для дифференциального алгебраического уравнения (ДАУ), а если модель является дискретной, ни один из них не используется. У каждой задачи есть свои собственные специфические особенности. Это требует некоторой гибкости при моделировании и анализе моделей. Рассмотрим параметры моделирования, которые пользователь должен задать прежде, чем начать моделирование.

1. Время окончания работы (Final Simulation Time): это время по умолчанию составляет 10000 секунд, время начала работы всегда равно нулю.

2. Вычисление в режиме реального времени (Realtime Scaling): время моделирования и фактическое время не одинаково. Например, моделирование десяти секунд обычно не занимает десять секунд реального счета. Реальное время зависит от многих факторов, включая сложность модели, размеры шага выбранного решателя и быстродействие компьютера. В основном время моделирования меньше, чем реальное время. Эта опция увеличивает время реального моделирование, устанавливая единицу времени Scicos в одну секунду.

• Отклонение (Tolerances): относительное допустимое отклонение задает ошибку относительной величины каждого состояния, то есть, процент от величины. Например, 10-6 означает, что точность вычисленного состояния в пределах 10-4 %. Абсолютное отклонение, представляет приемлемую ошибку. Его величина по умолчанию 10-4.

• Максимальный шаг (Maximum Step-size): максимальный шаг задает наибольший шаг интегрирования, который может выбрать решатель. Величина по умолчанию 100001 (inf). Эта установка важна тем, что ограничивает шаг интеграции, препятствуя тому, чтобы решатель не выбрал слишком крупный шаг.

• Максимальный временной интервал интегрирования (Maximum Integration 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!





Поделиться с друзьями:


Дата добавления: 2016-11-02; Мы поможем в написании ваших работ!; просмотров: 3512 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Люди избавились бы от половины своих неприятностей, если бы договорились о значении слов. © Рене Декарт
==> читать все изречения...

1020 - | 837 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.