Сделай Сам Свою Работу на 5

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





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

Используя описание задачи о двух баках в терминах UML, можно выделить в данном примере подсистему System (рис.20), представляющую собой составной блок, который содержит в себе функциональную схему, содержащую в себе диаграмму Stateflow (представленную блоком Controller, являющимся экземпляром стандартного блока Chart и описывающую поведение контроллера) и составной блок Tank_System_Block, соединенные соответствующими функциональными связями (рис.21). Так же в блоке System присутствуют часы Clock, подающие системное время из Simulink в диаграмму Stateflow. Это объясняется тем, что при построении моделей, где используются блоки Stateflow (содержащие в себе переходы, инициируемые истечением неких временных интервалов) необходимо синхронизировать внутренее системное время в Stateflow и в Simulink. Для этого необходимо на отдельный вход в блоке Stateflow подавать системное время из Simulink и именно это время использовать при составлении условий переходов (таких как истечение отрезков времени Time1 и Time2 в задаче о двух баках ). Как видно из рис.21, к связи, соединяющей блок Clock и Controller, подсоединены два экземпляра блока Hit Cross. Еще два экземпляра блока Hit Cross подсоединены к связи блока Controller и выхода h2 блока Tank _System_Block. Использование Hit Cross блоков необходимо для правильного выполнения переходов в диаграмме 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)).

 

Рисунок 20

Рисунок 21

 

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

 

Рисунок 22

 

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

 

Рисунок 23

 

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



 

Рисунок 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 имеет один вход и один выход (на рис.25 представлен блок K1_Control, блок K2_Control идентичен):

 

Рисунок 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 (рис.26):

 

Рисунок 26

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

 

Рисунок 27

 

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

 

Рисунок 28

 

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

 

Рисунок 29

 

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

Рисунок 30

 

 

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

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

 

Рисунок 31

 

Приложение П1

 








Не нашли, что искали? Воспользуйтесь поиском по сайту:



©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.