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


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

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

 

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

В данной работе приведен вариант учебного задания для студентов, изучающих курс «Основы моделирования». Учебное задание содержит в себе задачу, в которой на языке определенной предметной области описывается конкретная система и приводится математическое представление ее поведения.

Студент должен в качестве решения задания представить следующие результаты:

  • описание системы в терминах унифицированного языка моделирования UML;
  • модели данной системы, реализованные в конкретных пакетах визуального моделирования (Simulink и MVS)  на основе полученного описания;
  • результаты, полученные в процессе исследования данных моделей и их объяснение в терминах данной прикладной области.

В качестве примера учебного задания рассматривается конкретная система, описанная в работе [15]. Это задача об управлении протеканием воды через систему, состоящую из двух цилиндрических баков, расположенных на разной высоте, или, более кратко, задача о двух баках. Авторы статьи объясняют выбор этой задачи в качестве примера  типичной гибридной системы следующими причинами:

  • наличием реальной установки, модель которой исследуется;
  • нелинейным поведением компонент системы;
  • наличием аварийных ситуаций в поведении системы, которые необходимо обрабатывать;

Ниже приводится содержание задачи о двух баках.

1. Задача о двух баках

Система представляет собой два цилиндрических бака, расположенных вертикально на разной высоте таким образом, что дно первого бака находится на расстоянии H=0.39[м] от дна второго (рис.5.1). Баки имеют одинаковую высоту h=1[м] и различные диаметры: первый - D1=12 [см], второй - D2=5 [см]. Система имеет входную трубу, находящуюся в первом баке на расстоянии h от его дна. Баки соединены, трубой, являющейся выходной трубой первого бака (и располагающейся у самого его дна) и входной трубой второго бака (располагающейся на расстоянии Н от его дна). Также система имеет выходную трубу, располагающуюся у самого дна второго бака. Входная труба системы снабжена входным краном Vinput (он же входной кран первого бака). Труба, соединяющая выход первого бака со входом второго, снабжена краном V1. Выходная труба системы снабжена выходным краном V2 (он же выходной кран второго бака). Подача воды в систему контролируется краном Vinput , который открывается мгновенно и скорость входного потока воды определяется как (л/час):

Рисунок 5.1 "Сиcтема двух баков"

Краны V1 и V2  являются медленными устройствами и открываются и закрываются с одной о той же постоянной скоростью, так что от момента начала открытия (закрытия) до полного открытия (закрытия) требуется 80 сек. Их открытие и закрытие контролируется задвижкой, меняющей свое положение от значения P=0 (полное закрытие в условных единицах) до P=80 (полное открытие).

Управление открытием/закрытием кранов Vinput, V1 и V2 осуществляется неким устройством, называемым в статье контроллером и также входящим в описываемую систему.

Если через A1  и A2 обозначить площади оснований баков, то система уравнений для уровней воды в баках h1 и h2 запишется так:

где dV12/dt - скорость протекания воды по трубе между баками, а dVout/dt – скорость вытекания воды из системы. Скорость протекания воды между баками зависит от уровней воды h1 и h2, значения H и положения задвижки P 1 в кране V1 :

Скорость вытекания воды из системы зависит от уровня воды во втором баке h2 и положения задвижки P2 на кране V2:

Индивидуальные свойства кранов определяются функциями:

Работа всей системы описывается следующим алгоритмом. В исходном состоянии все краны закрыты и оба бака пусты. В начальный момент контроллер посылает сигнал входному крану Vinput, тот мгновенно открывается и в течении времени Time1 [сек] наполняется только первый бак. По истечении времени Time1 контроллер посылает команду открыть кран V1 и вода начинает поступать во второй бак. Второе состояние сохраняется на протяжении Time2 [сек]. По истечении времени Time2 начинает контролироваться положение крана V2. А именно, если контроллер обнаруживает, что уровень воды во втором баке опустился ниже значения L_minus [м], поступает команда закрыть выходной кран, если вода во втором баке превышает уровень L_plus [м] – выдается команда открыть выходной кран. Аварийными считаются ситуации, когда переполняется один из баков или происходит периодическое открытие и закрытие выходного крана. Нормальным режимом системы считается состояние, когда все краны открыты, и вода протекает через систему с постоянной скоростью.

В качестве тестов авторами статьи [15] предлагается пять задач (табл. 5.1):

  Тiме1 [c] Time2 [c] L_plus [м] L_minus [м]
1 90 20 0.94 0.16
2 70 30 0.94 0.16
3 70 20 0.94 0.16
4 60 25 0.9 0.30
5 70 26.85 0.94 0.16

Таблица 5.1

Они соответствуют ситуациям:

  1. переполнение первого бака;
  2. переполнение второго бака;
  3. нормальный режим;
  4. периодическое открытие и закрытие выходного крана;
  5. система находится на границе между нормальным состоянием и режимом переполнения второго бака, оставаясь в нормальном состоянии.

В данном работе в качестве учебного задания предлагается рассмотреть систему в состоянии 4, то есть, в состоянии, когда происходит периодическое открытие и закрытие выходного крана. Утверждается, что время выдачи первой команды на закрытие выходного крана равно 303. 13 сек (h2=L_minus=0.3 м), а десятой – 2669.9 сек.

2. Описание системы в терминах UML

Как уже упоминалось в разделе 2.2, UML содержит шесть основных типов диаграмм: диаграммы классов (содержащие в себе диаграммы пакетов и диаграммы объектов), диаграммы вариантов использования, диаграммы взаимодействия (подразделяющиеся на диаграммы последовательности и на диаграммы коллективного взаимодействия), диаграммы состояний, диаграммы действий и диаграммы размещения. Для описания заданной в задаче о двух баках системы будут использованы диаграммы классов, диаграмма вариантов использования, диаграмма взаимодействия (из двух альтернативных типов диаграмм выбрана диаграмма последовательности), диаграмма состояний и диаграмма деятельностей. Диаграмма размещения не используется, так как предназначается для описания физических взаимосвязей между аппаратными и программными компонентами системы, которые в данной системе отсутствуют.

Диаграммы классов, диаграммы пакетов, диаграммы объектов

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

В задаче с двумя баками в первую очередь можно выделить два основных элемента: саму систему из двух баков и некое управляющее открытием/закрытием кранов устройство, называемое контроллером.

Как говорилось ранее, контроллер посылает системе из двух баков сигналы, управляющие поведением кранов Vinput, V1 и V2. Для правильного управления системой баков ему необходимо иметь значения интервалов времени Time1 и Time2, уровней L_plus и L_minus, а также получать от системы баков значение уровня воды во втором баке h2, необходимое для управления поведением выходного крана V2. Обобщая все вышеописанное, контроллер можно представить классом Controller:

Рисунок 5.2 "Диаграмма классов №1"

Как видно из рис.5.3, класс Controller содержит атрибуты h2 (для ясности описанный как элемент группы "inputs"), VinOn, VinOff , V1On, V1Off, V2On , V2Off (объединенные в группу "outputs "), Time1, Time 2, L_plus , L_minus (объединенные в группу "state "). Также класс содержит операции send_VinOn (), send_V 1On (), send _V2On (), send_V 2Off, необходимые для подачи сигналов на включение входного крана Vinput, крана V1, крана V2 и отключение крана V2. В описание класса внесена некая избыточность в виде сигналов VinOff, V1Off (избыточность, так как эти сигналы никогда не посылаются). Это сделано для того, чтобы в дальнейшем логичнее построить модель системы (так как логично предполагать, что если кран можно включить, то его можно и отключить). Также они введены на случай, если в задании потребуется, например, в определенный момент отключить подачу воды в систему, или изолировать баки друг от друга. И хотя в данном варианте задания эти сигналы никогда не будут посылаться, в дальнейшем в других элементах системы теоретическое существование этих сигналов также будет учитываться.

Как описано в задании, система двух баков должна реагировать на сигналы контроллера, а именно, управлять открытием/закрытием кранов, а также отслеживать ситуацию, когда уровень воды во втором баке становится выше уровня Н и при возникновении такой ситуации изменять скорость поступления воды во второй бак в соответствии с формулой (5.3). Также система должна отслеживать ситуацию переполнения баков и должным образом на нее реагировать. Исходя из этих требований можно провести декомпозицию системы на несколько частей, а именно выделить элемент, отвечающий за открытие (закрытие) крана Vinput, элемент, управляющий открытием/закрытием задвижек Р1 и Р2 (один для обоих кранов, так как описанные в формуле (5.5) функции, определяющие индивидуальные свойства кранов V1 и V2 совпадают  друг с другом с точностью до коэффициента при 10-4 и коэффициента в показателе экспоненты). Третьим элементом системы можно выделить сами два бака, на которые возлагается задача управления протеканием воды между баками и отслеживания аварийной ситуации переполнения.

Первый элемент можно описать следующим классом Vinput_Control:

Рисунок 5.3 "Диаграмма классов №2"

Как видно из рис.5.3, класс Vinput_Control содержит атрибуты VinOn, VinOff (объединенные в группу "inputs"), Vin (для ясности описанный как элемент группы "outputs") описывающий входной поток воды в систему. Также класс содержит операции open_Vin (), close_Vin () управляющие входным потоком в зависимости от получаемых от контроллера сигналов в соответствии с формулой (5.1).

Второй элемент можно описать классом К_Control:

Рисунок 5.4 "Диаграмма классов №3"

Как видно из рис.5.4, класс K_Control содержит атрибуты Param_1, Param_2 (объединенные в группу "parameters") и представляющие собой как раз те коэффициенты, различающие между собой формулы (5.5) и (5.6) , VXOn, VXOff (объединенные в группу "inputs"), атрибут K (для ясности описанный как элемент группы "outputs"), описывающий выходной поток воды из первого и второго бака; атрибут Р (для ясности описанный как элемент группы "state") и управляющий положением задвижки в кранах V1 и V2. Также класс содержит операции up_K (), open_K (), down_K (), close_K () управляющие значением функций, определяющих свойства кранов V1 и V2 в зависимости от получаемых от контроллера сигналов в соответствии с формулами (5.5) - (5.6).

Третий элемент можно описать классом Two_Tanks:

Рисунок 5.5 "Диаграмма классов №4"

Как видно из рис.5.5, класс Two_Tanks содержит атрибуты K1, K2, Vin (объединенные в группу "input"), представляющие собой управляющие потоками V12 и Vout функции и входной поток в систему, h1 и h2 (объединенные в группу "outputs") представляющие собой уровни воды в первом и втором баках; H, D1, D2, A1, A2, V12, Vout (объединенные в группу "state") представляющие собой расстояние между дном первого и второго баков, диаметры баков, площади их оснований , а также выходные потоки воды из первого и второго баков. Также класс содержит операции up_V12_Vout (), down_V 12_Vout () вычисляющие значения h1 и h2 и управляющие выходным потоком из первого бака (в зависимости от уровня воды во втором баке и значения К1 в соответствии с формулой (5.3)) и выходным потоком из системы (в зависимости от значения К2 в соответствии с формулой (5.4)).

Так как классы Vinput_Control, K_Control и Two_Tanks были ранее выделены как элементы системы двух баков, то логично создать класс Tank_System, находящийся в отношении композиции с этими классами (рис.5.6):

Рисунок 5.6 "Диаграмма классов №5"

В свою очередь, класс Tank_System и класс Controller логично связать отношением композиции с классом System, представляющий собой всю систему двух баков (рис.5.7):

Рисунок 5.7 "Диаграмма классов №6"

На диаграмме объектов №1 для данной системы представлены объект класса Controller, объект класса Vinput_Control, объект класса Two_Tanks и два объекта класса K_Control, определяющие поведение крана К1 и К2 (рис.5.8):

Рисунок 5.8 "Диаграмма объектов №1"

На диаграммах объектов №2 и №3 представлены два составных объекта – объект класса Tank_System и класса System (рис.5.9 и рис.5.10):

Рисунок 5.9 "Диаграмма объектов №2"

Рисунок 5.10 "Диаграмма объектов №3"

Диаграмма вариантов использования

Как уже говорилось в разделе 2.4, вариант использования - это пример взаимодействия пользователя и системы, чаще всего представляющий реализацию некого конкретного требования к системе.

В примере задачи с двумя баками можно выделить один основной вариант использования - "Режим нормальной работы системы". Но, как говорилось в задании, в системе существуют три аварийные ситуации, а именно: "Переполнение первого бака", "Переполнение второго бака" и "Периодическое открытие/закрытие выходного крана".

"Режим нормальной работы системы" содержит следующие требования:

  • В начальный момент времени контроллер посылает системе двух баков сигнал открыть входной кран,
  • По истечении Time1 контроллер посылает системе двух баков сигнал открыть кран V1,
  • В течении 80 сек. происходит открытие крана V1,
  • По истечении Time2 контроллер посылает системе двух баков сигнал открыть кран V2,
  • В течении 80 сек. происходит открытие крана V2.

Далее система работает в нормальном режиме, то есть, вода протекает свободно через систему, при этом не происходит переполнения баков.

"Периодическое открытие/закрытие выходного крана" расширяет основной вариант использования и содержит следующие дополнительные требования:

  • Если после включения входного крана уровень воды во втором баке становиться ниже уровня L_minus, то контроллер посылает системе двух баков сигнал закрыть кран V2,
  • В течении 80 сек. происходит закрытие крана V2,
  • Если уровень воды во втором баке становится выше уровня L_plus, то контроллер посылает системе двух баков сигнал  открыть кран V2;
  • В течении 80 сек. происходит открытие крана V2.

Далее цикл замыкается и система работает в режиме периодического открытия/закрытия выходного крана.

"Переполнение первого бака" также расширяет основной вариант использования и содержит следующие дополнительные требования:

  • Если в любой момент работы системы происходит переполнение первого бака, система блокируется (то есть, прекращается всякое движение воды в системе).

"Переполнение второго бака" также расширяет основной вариант использования и содержит следующие дополнительные требования:

  • Если в любой момент работы системы происходит переполнение второго бака, система блокируется (то есть, прекращается всякое движение воды в системе).

Диаграмма вариантов использования представлена на рис.5.11:

Рисунок 5.11 "Диаграмма вариантов использования"

Диаграмма последовательности

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

В задаче о двух баках диаграммой последовательности удобно описать поведение системы в основном варианте использования - "Режим нормальной работы системы".

Диаграмма последовательности для данного варианта использования представлена на рис.5.12 (временные интервалы соответствуют параметрам, представленным в табл.5.1):

Рисунок 5.12 "Диаграмма последовательности"

Диаграмма деятельностей

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

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

На рис.5.13 представлена диаграмма, описывающая взаимодействие вариантов использования:

Рисунок 5.13 "Диаграмма деятельностей №1"

На рис.5.14 представлено описание варианта использования "Периодическое открытие/закрытие выходного крана":

Рисунок 5.14 "Диаграмма деятельностей №2"

На рис.5.15 представлено описание вариантов использования Переполнение первого бака и Переполнение второго бака:

Рисунок 5.15 "Диаграмма деятельностей №3"

Диаграмма состояний

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

Исходя из этого, а также используя ранее построенные диаграммы, в задаче о двух баках можно определить диаграммы состояний следующих объектов: Controller : Controller, Two_Tanks : Two_Tanks, Vin_Control : Vinput _Controller; а также диаграмма состояний объектов K1_Control и K2_Control класса K_Control (общая для обоих объектов, так как у них одинаковая логика поведения).

Диаграмма состояний объекта Controller : Controller представлена на рис.5.16:

Рисунок 5.16 "Диаграмма состояний №1"

Данная диаграмма отражает логику поведения объекта Controller. Процесс начинается с начальной точки, затем следует мгновенный переход в состояние Ожидание_1, в котором входным действием является посылка сигнала VinOn, открывающего входной кран Vinput. По истечении времени Time1 происходит переход в состояние Ожидание_2, в котором входным действием является посылка сигнала V1On, открывающего кран между баками. По истечении времени Time2 происходит переход в состояние Ожидание_3, в котором входным действием является посылка сигнала V2On, открывающего выходной кран V2. В данном состоянии объект находится до тех пор, пока не станет истинным условие перехода h2<L_minus, говорящий о том, что уровень воды во втором баке стал ниже уровня L_minus. Если условие выполняется, то объект переходит в состояние Ожидание_4, в котором входным действием является посылка сигнала V2Off, отключающее кран V2. Объект находится в этом состоянии до тех пор, пока не выполняется условие перехода h2>=L_plus, говорящее о том, что что уровень воды во втором баке стал выше уровня L_plus. Тогда объект переходит обратно в состояние Ожидание_3 и цикл замыкается.

Диаграмма состояний объекта Two_Tanks : Two_Tanks представлена на рис.5.17:

Рисунок 5.17 "Диаграмма состояний №2"

Данная диаграмма отражает логику поведения объекта Two_Tanks. Процесс начинается с начальной точки, затем следует мгновенный переход в состояние Вычисление_1, в котором выполняется вычисление значений V12, Vout, h1 и h2 до тех пор пока не станет истинным одно из условий перехода. Если истинным станет условие [(h1>=1)^(h2>=1)], то есть, произойдет переполнение какого-либо из баков, то происходит переход в состояние Блокировка, где система блокируется от подачи воды и баки изолируются друг от друга (то есть система как бы «застывает» в состоянии в котором произошла данная аварийная ситуация). Если становится истинным условие [h2>H], то есть, уровень воды во втором баке поднимается выше уровня подключения к нему трубы от первого бака, то объект переходит в состояние Вычисление_2 в котором   уменьшается скорость подачи воды во второй бак и так же происходит вычисление значений V12, Vout, h1 и h2. Это происходит до тех пор, пока истинным не станет одно из условий перехода. Если истинным станет условие [(h1>=1)^(h2>=1)], то произойдет переход в состояние Блокировка, а если истинным станет условие [h2<=H], то есть уровень воды во втором баке опустится до уровня подключения к нему трубы от первого бака, то объект переходит в состояние Вычисление_1 и цикл замкнется.

Диаграмма состояний объекта Vin_Control : Vinput_Control представлена на рис.5.18:

Рисунок 5.18 "Диаграмма состояний №3"

Данная диаграмма отражает логику поведения объекта Vin_Control. Процесс начинается с начальной точки, затем следует мгновенный переход в состояние Выключен, в котором выполняется выключение крана Vinput. Объект находится в этом состоянии до тех пор, пока не поступит сигнал VinOn  и не станет истинным условие [VinOn=true]. Тогда объект переходит в состояние Включен, в котором происходит включение крана Vinput. Объект находится в этом состоянии до тех пор, пока не станет истинным условие [VinOff=true], то есть не будет получен сигнал о выключении входного крана. Тогда объект вернется в состояние Выключен и цикл замкнется.

Диаграмма состояний объектов К1_Control и К2_Control представлена на рис.5.19:

Рисунок 5.19 "Диаграмма состояний №4"

Данная диаграмма отражает логику поведения объектов К1_Control и К2_Control.

Она состоит из двух суперсостояний - Закрытие и Открытие, определяющих закрытие и открытие крана V1 (или V2). Процесс начинается с начальной точки, затем следует мгновенный переход в состояние Закрытие, в котором объект находится до тех пор, пока не выполниться условие [VXOn=true], обозначающее приход сигнала VXOn, включающего кран V1 (или V2). Тогда объект переходит в состояние Открытие, в котором находится до тех пор, пока не придет сигнал на закрытие крана, то есть не станет истинным условие [VXOn=true]. По этому сигналу объект возвращается в предыдущее состояние и цикл замыкается. В суперсостоянии Закрытие содержаться два подсостояния -  Выключение и выключен. При попадании в данное суперсостояние объект сразу попадает в состояние Выключение в котором происходит выключение крана до тех пор, пока не выполниться условие [P>=80]. Это означает, что задвижка крана дошла до предельного состояния. В этот момент выполняется выходное действие, закрывающее кран, и объект переходит в состояние Выключен.  В нем он находится до тех пор, пока не будет получен сигнал на переход во второе суперсостояние. При попадании во второе суперсостояние объект сразу попадает в состояние Включение в котором происходит включение крана до тех пор, пока не выполниться условие [P<=0]. Это означает, что задвижка крана дошла до предельного состояния. В этот момент выполняется выходное действие, открывающее кран, и объект переходит в состояние Включен.  В нем он находится до тех пор, пока не будет получен сигнал на переход обратно в первое суперсостояние. Тогда объект переходит обратно в состояние Закрытие и цикл замыкается.

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

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

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


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

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