Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Примеры. Три основных отличия между




Три основных отличия между

Simulink и Scicos:

 

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

2. Размерность входов и выходов: Scicos требует установки этих параметров для блоков, в то время как в Simulink’е они устанавливаются в соответствии с вычислительным кодом.

Иллюстрация 1 показывает пример PID моделей в исполнении Simulink и Scicos.

Из графиков видно, что оба имитатора приводят к одинаковым результатам.


 

Изучать программирование на наглядных примерах намного легче, чем читать учебники, как бы хорошо они ни были написаны. Хороший пример заставляет быстро поверить в свои силы и подвигает на создание своих собственных моделей.

Пример 1. Рассмотрим структуру системы оценивания в пространстве состояний, получающую выборку данных от линейной системы. Система смоделирована как линейная непрерывная:

= Ах + Вu,

у = Cx,

где A, B, C - постоянные матрицы.

Наблюдению доступен вектор y, поступающий на вход без шумов. Кроме того, на вход поступает управление u и начальное значение вектора х: х0. На выходе формируется оценка . Переходный процесс в такой системе должен быть по возможности коротким, но при этом флуктуационная составляющая ошибки не должна быть велика.

Уравнение оценивания в таком случае имеет вид:

= A + Bu + K(y−C ).

Матрица K должна быть выбрана так, чтобы у собственных значений − KC были отрицательные вещественные части.

Текст программы Scilab для выполнения этой процедуры с неопределенными заранее матрицами, помещенными в контекст модели, является следующим:

Функция ppol используется, чтобы получить матрицу усиления K. На вход u подается sin (t).

 

Использование символических параметров полезно, потому что оно позволяет нам создавать универсальную модель. Чтобы изменить матрицы A, B, и C и размерность системы или время дискретизации, мы должны изменить только определение m, n и матрицы. Никаких изменений в схеме не требуется.

На верхней панели показаны параметры до их изменения. На нижней после изменения.

 

Фактически, перезаписывая контекст, мы можем сделать диаграмму полностью универсальной.

Сделаем загрузку:

Мы только должны удостовериться, что файл данных datafile содержит переменные A, B, C, D, x0, и dt прежде, чем начать сеанс Scicos. Этот файл может быть создан в Scilab следующим образом:

→save('datafile'',A,B,C,x0,dt)

Комментарий.

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

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

Пример 2. Решить дифференциальное уравнение

y'"' + y'"+ y" + 0.5y' + 0.1y = 0.1,

при нулевых начальных условиях.

Для самой высокой производной запишем

y'"' = - y'"- y" - 0.5y´- 0.1y + 0.1.

Предположим, что y'"' известна. Тогда, после четырехкратного интегрирования получим у. Самая высокая производная, y'"' существует между блоками 8 и 1.

Постоянное слагаемое 0.1 формируется блоком 7 как шаг в момент t=0. Производные y'", y", y' и y отoбражаются в MScope 12.

Результаты решения через мультиплексор 9 записаны в файл в ASCII-коде блоком 10.

Начальные условия у всех интеграторов нулевые, в соответствии с условиями задачи.

У интеграторов есть верхние и нижние пределы. Необходимо не забывать задать их перед пуском.

Блок 7 по умолчанию имеет начальное время ступени равное 1. Его необходимо заменить на 0.

Блоки 5 и 6 не обязательны, так как можно установить входной множитель в блоке 8. Здесь они включены для наглядности.

Часы активации имеют начальное время равное нулю, а период 0.1. Это не имеет никакого отношения к точности решения, а только задает шаг выхода.

MScope имеет размерность входных портов портов {1 1 1 1}. Величины Ymin и Ymax были установлены после первого прогона. Период обновления (refresh-period) такой же как окончательное время интегрирования.

Запись в файл (блок 10) удобна тем, что данные могут быть импортированы в другие программы. Необходимо задать имя файла и задать строку формата в стиле Fortran. Это значит:

формат пишется в круглых скобках и включает:

/ – новая линия;

iw – область целого числа с шириной w знаков;

fw.d – область числа с плавающей запятой шириной w знаков, включая d цифры после десятичной запятой. Здесь w> = d+3, чтобы включить по крайней мере одну цифру целого числа, знак и точку;

ew.d – область числа с плавающей запятой, степень десяти шириной w знаков, включая d цифры после десятичной запятой. Здесь w> = d+7, чтобы включить по крайней мере одну цифру целого числа, знак для мантиссы, трех знаков для экспоненты, знака экспоненты и одного для точки;

nx n – пробелы;

tn – перемещает курсор принтера в положение n.

В этом примере выбрано (7 (e16.8,1x)) для строки формата (8 десятичных чисел), так как величины переменных малы.

 

Пример 3. Рассмотрим решение еще одного ДУ.

Продемонстрируем простым примером, как моделирование некоторых уравнений может стать сложным (можно показать как эту задачу можно облегчить с помощью компонентов Modelica). Рассмотрим систему ДУ:

Теперь покажем реализацию этих уравнений в модели.

В блочном подходе есть несколько недостатков. Для моделирования часто необходимо слишком много блоков. Это делает модель неудобочитаемой. Также в такой сложной блок-схеме трудно отразить наглядно структуру физической или технической задачи.

 




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


Дата добавления: 2014-12-25; Просмотров: 876; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.019 сек.