Вернуться
на страницу <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> |