Купить Matlab  |  Mathematica  |  Mathcad  |  Maple  |  Statistica  |  Другие пакеты Поиск по сайту
Internet-класс  |  Примеры  |  Методики  |  Форум  |  Download
https://hub.exponenta.ru/


 
Компьютерный лабораторный практикум "Моделирование"
дипломная работа
выполнила: студентка Е.С.Бенькович
Санкт-Петербургский Государственный Технический Университет
Кафедра распределенных вычислений и компьютерных сетей
Санкт-Петербург
2001

Вернуться на страницу <Model Vision Studium>
В начало

 

Макет учебного задания

3. Модель системы, реализованная в подсистеме Simulink пакета Matlab

Как уже говорилось в разделе 3.2.2, построение модели в Simulink сводится к перемещению с помощью мыши необходимых блоков из библиотек Simulink в окно создаваемой модели и соединению этих блоков между собой с помощью функциональных связей. Библиотеки Simulink содержат большое количество разнообразных функциональных блоков, которые отображаются на экране в виде пиктограмм.

Используя описание задачи о двух баках в терминах UML, можно выделить в данном примере подсистему System (рис.5.20), представляющую собой составной блок, который содержит в себе функциональную схему, содержащую в себе диаграмму Stateflow (представленную  блоком Controller, являющимся экземпляром стандартного блока Chart и описывающую поведение контроллера) и составной блок Tank_System_Block, соединенные соответствующими функциональными связями (рис.5.21). Так же в блоке System присутствуют часы Clock, подающие системное время из Simulink в диаграмму Stateflow. Это объясняется тем, что (как говорится в статье [15]) при построении моделей, где используются блоки Stateflow (содержащие в себе переходы, инициируемые истечением неких временных интервалов) необходимо синхронизировать внутренее системное время в Stateflow и в Simulink. Для этого необходимо на отдельный вход в блоке Stateflow подавать системное время из Simulink и именно это время использовать при составлении условий переходов (таких как истечение отрезков времени Time1 и Time2 в задаче о двух баках ). Как видно из рис.5.21, к связи, соединяющей блок Clock и Controller, подсоединены два экземпляра блока Hit Cross. Еще два экземпляра блока Hit Cross подсоединены к связи блока Controller и выхода h2 блока Tank _System_Block. Использование Hit Cross блоков (как говорится в статье [15]) необходимо для правильного выполнения переходов в диаграмме Stateflow, включенной в модель Simulink , в которой происходит непрерывное интегрирование. На вход Hit Cross блока подается некая величина (в модели двух баков для двух Hit Cross блоков это системное время, для еще двух - величина h2). Сам Hit Cross  блок содержит в себе некую величину, при совпадении которой с величиной, подаваемой на вход Hit Cross блока, система уменьшает шаг интегрирования. В связи со спецификой системы Stateflow это влияет на правильное выполнение переходов и не позволяет системе «проскочить момент», когда должен выполнится тот или иной переход. У первого Hit Cross блока внутренней величиной является момент времени Time1, у второго - Time 1+Time2, у третьего - значение L_plus, у четвертого - L_minus.

Блок System не имеет входов и имеет два выхода - h1 и h2, соединенные со стандартным блоком Mux (объединяющим их в вектор (h1,h2)), соединенный со стандартным блоком вывода Scope (на который он подает вектор выходных величин (h1,h2)).

Рисунок 5.20

Рисунок 5.21

В свою очередь, составной блок Tank_System_Block содержит в себе функциональную схему, состоящую из составного блока Tank_System (имеющего три входа, соединенные с соответствующими выходами блока Chart, на которые подаются сигналы контроллера, и два выхода - h1 и h2) и пар экземпляров стандартных блоков Const, Relational Operetor и Stop Simulation (выполняющих проверку на переполнение баков), соединенных соответствующими функциональными связями (рис.5.22). Блок Tank_System_Block имеет три входа (на которые подаются сигналы от контроллера) и два выхода (h1 и h2).

Рисунок 5.22

Составной блок Tank_System содержит в себе функциональную схему, состоящую из составных блоков Two_Tanks, Vin_Control, K1_Control и K2_Control, соединенных между собой функциональными связями (рис.5.23). Блок Tank_System имеет то же количество входов и выходов с теми же значениями, что и предыдущий блок.

Рисунок 5.23

Составной блок Vin_Control содержит в себе функциональную схему, состоящую из стандартного блока Switch и двух экземпляров стандартного блока Const, содержащих в себе значения, соответствующие скорости входного потока воды в систему двух баков, когда входной кран открыт и закрыт. Переключения между этими значениями происходит в блоке Switch в зависимости от значения, поступающего на вход блока Vin_Control от контроллера. Соответствующее значение Vin подается на выход. Блок Vin_Control имеет один вход и один выход (рис.5.24):

Рисунок 5.24

Составные блоки K1_Control и K2_Control содержат в себе идентичные функциональные схемы, различающиеся только значением коэффициентов в уравнении, представленном в стандартном блоке fcn. Функциональная схема состоит из двух экземпляров стандартного блока Switch (один из которых необходим для переключения между положениями кранов V1/V2 открыто/закрыто, а второй для отслеживания ситуации, когда параметр р становиться равным 80 и соответствующего переключения между значениями функции К(р)), трех экземпляров стандартного блока Const (содержащих в себе значения, 1 и -1, соответствующие положению крана V1/V2 (открывается/закрывается) и значение 0 для функции К(р) в ситуации, когда р>=80), стандартного блока Integrator (интегрирующего поступающее от переключателя значение в пределах от 0 до 80 с начальным значением интегрируемой величины 80) и стандартного блока f(u), в котором происходит вычисление значение функции K1(p)/K2(p). Переключения в блоке Switch происходит в зависимости от значения, поступающего на вход блока К1_Control/К2_Control от контроллера. Соответствующее значение k1/k2 подается на выход. Блок K1_Control/K2_Control имеет один вход и один выход (на рис.5.25 представлен блок K1_Control, блок K2_Control идентичен):

Рисунок 5.25

Составной блок Two_Tanks содержит в себе функциональную схему, состоящую из составных блоков Vout_calc, V12_calc1 и V12_calc2 (отвечающих за вычисление значений Vout и V12), стандартного блока Switch, двух экземпляров стандартного блока Mux (объединяющих в вектора соответствующие значения - Vin (поступающее на вход блока Two _Tanks с выхода блока Vin_Control)) и V12, а также V12 и Vout), двух экземпляров стандартного блока fcn (производящих вычисление производных h1 и h2), двух экземпляров стандартного блока Integrator, выходами которых являются значения h1 и h2, поступающие на выход. Переключения в блоке Switch происходит в зависимости от значения h2, поступающего на вход блока Switch от интегратора, и в зависимости от этого значения, подключается один из блоков, вычисляющих V12. Блок Two_Tanks имеет три входа, на которые подаются значения Vin, k1 и k2; и два выхода - h1 и h2 (рис.5.26):

Рисунок 5.26

Составной блок Vout_calc содержит в себе функциональную схему, состоящую из стандартного блока Mux, объединяющего в один вектор значения k2 и h2, поступающие на вход блока Vout_calc, и подающего этот вектор на вход стандартного блока fcn, в котором происходит вычисление выходной величины Vout. Блок Vout_calc имеет два входа и один выход (рис.5.27):

Рисунок 5.27

Составной блок V12_calc1 содержит в себе функциональную схему, состоящую из стандартного блока Mux, объединяющего в один вектор значения k1 и h>1, поступающие на вход блока V12_calc1, и подающего этот вектор на вход стандартного блока fcn, в котором происходит вычисление выходной величины V12. Блок V12_calc1 имеет два входа и один выход (рис.5.28):

Рисунок 5.28

Составной блок V12_calc2 содержит в себе функциональную схему, состоящую из стандартного блока Mux, объединяющего в один вектор значения k1, h1 и h2, поступающие на вход блока V12_calc2, и подающего этот вектор на вход стандартного блока fcn, в котором происходит вычисление выходной величины V12. Блок V12_calc2 имеет три входа и один выход (рис.5.29):

Рисунок 5.29

Диаграмма Stateflow, представленная экземпляром стандартного блока Chart, практически совпадает с соответствующей диаграммой состояний UML (рис.5.30). В ней вместо внутреннего времени t используется подаваемое на вход блока системное время Simulink (входная переменная Systemtime).

Рисунок 5.30

4. Модель системы, реализованная в пакете Model Vision Studium

Как уже говорилось в разделе 4.1.1, основным «строительным» элементом в процессе построения модели в MVS можно назвать устройство. Устройство представляет собой систему типа «вход - выход - состояние» (или просто «вход - выход») и может быть как простым, так и составным. С помощью функциональных связей устройства объединяются в единую схему, которая затем может быть помещена в специальное устройство - контейнер Test,  или собрана сразу в неком устройстве - контейнере, экземпляр которого затем помещается в Test Bench.

Используя описание задачи о двух баках в терминах UML, можно выделить составное устройство System, помещенное в Test Bench (рис.5.31), которое содержит в себе простое устройство Controller и составное устройство Tank_System, соединенные соответствующими функциональными связями (рис.5.32):

Рисунок 5.31

Рисунок 5.32

В свою очередь, устройство Tank_System содержит в себе экземпляр устройства Two_Tanks, экземпляр устройства VinControl и два экземпляра устройства K_Control (описывающих поведения кранов V1 и V2) - K1_Control и K 2_Control, соединенные между собой функциональными связями (рис.5.33):

Рисунок 5.33

Устройство-контейнер System представлено соответствующим классом System (рис.5.34). Карта поведения устройства имеет вырожденную структуру и содержит в себе одно состояние Init, инициирующие работу устройства при запуске модели.

Рисунок 5.34

Устройство Controller представлено классом Controller, имеющим входной переменной h 2, представляющую уровень воды во втором баке и получаемую от устройства Tank_System, а выходными переменными - сигналы VinOn, VinOff, V 1On, V1Off, V2On, V2Off, управляющие системой Tank_System (рис.5.35). Также в классе находится внутренняя переменная anim, необходимая для управления анимационным окном, представленным в следующем разделе на рис. 5.50. Карта поведения устройства практически совпадает с соответствующей диаграммой состояний UML (рис.5.36):

Рисунок 5.35

Рисунок 5.36

Составное устройство Tank_System представлено классом Tank_Sys, имеющим входными переменными сигналы VinOn, VinOff, V1On, V1Off, V2On, V2Off, управляющие соответствующими устройствами, входящими в Tank_System. Выходной переменной является переменная h2, подаваемая на вход устройства Controller, и переменная h1, представляющая уровень воды в первом баке. Карта поведения устройства имеет вырожденную структуру и содержит в себе одно состояние Init, инициирующие работу устройства при запуске модели. Класс Tank_Sys представлен на рис. 5.37:

Рисунок 5.37

Устройство Two_Tanks представлено классом Two_Tanks, имеющим входными переменными к1, к2 и Vin, представляющие значения функций, управляющих кранами V1 и V2, и скорость входного потока воды в систему. Выходные переменные - уровни воды в первом и втором баках h1 и h2 (рис.5.38). Карта поведения устройства практически совпадает с соответствующей диаграммой состояний UML (рис.5.39). Уравнения, выполняемые в соответствующих состояниях, представлены на рис.5.40.

Рисунок 5.38

Рисунок 5.39

Рисунок 5.40

Устройство VinControl представлено классом Vin_Control, имеющим входными переменными сигналы VinOn и VinOff, получаемые от устройства Controller и управляющие открытием/закрытием входного крана. Выходной переменной является переменная Vin, представляющая скорость входного потока воды в систему (рис.5.41). Карта поведения устройства практически совпадает с соответствующей диаграммой состояний UML (рис.5.42). Уравнения, выполняемые в соответствующих состояниях, представлены на рис.5.43.

Рисунок 5.41

Рисунок 5.42

Рисунок 5.43

Устройства K1_Control и K2_Conrtol представлены классом К_Control, имеющим входными переменными сигналы VХOn и VХOff, получаемые от устройства Controller и управляющие открытием/закрытием крана V1 ( или V2). Выходной переменной является переменная к, представляющая значение функции, управляющей скоростью выходного потока воды из первого бака (или из системы) (рис.5.44). Карта поведения устройства практически совпадает с соответствующей диаграммой состояний UML и состоит из двух гиперсостояний  (рис.5.45). Внутренние карты состояний соответствующих гиперсостояний, а также уравнения, выполняемые в соответствующих состояниях, представлены на рис.5.46 и рис.5.47.

Рисунок 5.44

Рисунок 5.45

Рисунок 5.46

Рисунок 5.47

5. Результаты эксперимента

На рис.5.48 представлена временная диаграмма изменений уровней воды в баках, полученная в результате эксперимента с моделью, реализованной в подсистеме Simulink пакета Matlab:

Рисунок 5.48

На рис.5.49 представлена временная диаграмма изменений уровней воды в баках, полученная в результате эксперимента с моделью, реализованной в пакете Model Vision> Studium:

Рисунок 5.49

Данные временные диаграммы отражают изменения уровней воды в системе двух баков при открытиии/закратии выходного крана. Возрастающие участки кривых h1(t) и h2(t) соответствуют состоянию системы, когда выходной кран закрыт. Убывающие участки кривых h1(t) и h2(t) соответствуют состоянию системы, когда выходной кран открыт.

На рис.5.50 представлено анимационное окно для задачи о двух баках, реализованное в пакете Model Vision Studium:

Рисунок 5.50

В таблице 5.2 приведены результаты численных экспериментов для варианта 4 из таблицы 5.1 (периодическое открытие/закрытие выходного крана) для  подсистемы Simulink пакета Matlab. Данные получены для одинаковой для всех методов относительной и абсолютной точности равной 10-5 .

Метод

Первое переключение

Десятое переключение

 

Время
(303.13)

h2

Время
(2669.9)

h2

ode45 (Dormand-Prince) 303.13 0.3 2669.87 0.3
ode23 (Bogacki-Shampine) 303.12 0.3 2669.50 0.3
ode113 (Adams) 303.10 0.3 2669.98 0.3
ode15s (stiff/ NDF) 303.13 0.3 2670.0 0.3

ode23s (stiff/ Mod. Rosenbrock)

303.09 0.3 2669.53 0.3

ode23t (mod. Stiff/ Trapezoidal)

303.11 0.3 2669.69 0.3

Таблица 5.2

В таблице 5.3 приведены результаты численных экспериментов для варианта 4 из таблицы 5.1 (периодическое открытие/закрытие выходного крана) для пакета Model Vision Studium. Данные получены для одинаковой для всех методов относительной и абсолютной точности и точности поиска условия смены состояния равной 10-5.

Метод Первое переключение Десятое переключение
  Время
(303.13)
h2 Время
(2669.9)
h2
Auto 303.13 0.3 2669.88 0.3
RK45 303.13 0.3 2669.88 0.3
RK78 303.13 0.3 2669.87 0.3
RK853 303.13 0.3 2669.87 0.3
m_Adm 303.27 0.3 2670.23 0.3
BDF 303.27 0.3 2670.18 0.3
Imp_RK 303.13 0.3 2669.87 0.3

Таблица 5.3

Выводы:

Как видно из результатов эксперимента, представленных в таблицах 5.2 и 5.3, в обоих пакетах для сходных численных методов значения первого переключения получились практически сходными с друг другом. Также практически сходны значения десятого переключения. Наиболее близкий к теоритическому результат был получен в подсистеме Simulink при использовании методов ode 45, ode15s,а в пакете Model Vision Studium при использовании методов Auto (система автоматически выбирает наиболее подходящий метод интегрирования), RKF45, Imp_RK.

В начало
Вернуться на страницу <Model Vision Studium>

| На первую страницу | Поиск | Купить Matlab

Исправляем ошибки: Нашли опечатку? Выделите ее мышкой и нажмите Ctrl+Enter


Copyright © 1993-2024. Компания Softline. Все права защищены.

Дата последнего обновления информации на сайте: 04.03.17
Сайт начал работу 01.09.00