Диаграмма последовательности (являющаяся разновидностью диаграмм взаимодействия) представляет взаимодействие объектов в рамках одного варианта использования. Данный тип диаграмм удобно использовать в ситуациях, когда имеет место простое поведение, без возникновения циклов и сложных условных переходов.
В задаче о двух баках диаграммой последовательности удобно описать поведение системы в основном варианте использования - "Режим нормальной работы системы".
Диаграмма последовательности для данного варианта использования представлена на рис. 58 (временные интервалы соответствуют параметрам, представленным в табл. 1):
Рисунок 58 - Диаграмма последовательности
Диаграмма деятельностей
Диаграммы деятельностей удобны для изображения взаимодействия вариантов использования. Также они удобны для описания вариантов использования, содержащих условные переходы.
В задаче с двумя баками удобно диаграммой деятельностей представить взаимодействие вариантов использования, а также описать каждый из "аварийных" вариантов использования.
На рис. 59 представлена диаграмма, описывающая взаимодействие вариантов использования:
Рисунок 59 - Диаграмма деятельностей №1
На рис. 60 представлено описание варианта использования "Периодическое открытие/закрытие выходного крана":
Рисунок 60 - Диаграмма деятельностей №2
На рис. 61 представлено описание вариантов использования Переполнение первого бака и Переполнение второго бака:
Рисунок 61 - Диаграмма деятельностей №3
Диаграмма состояний
Как уже упоминалось выше, диаграммы состояний определяют все возможные состояния, в которых может находиться конкретный объект, а также смены состояний объекта в результате влияния неких событий.
Исходя из этого, а также используя ранее построенные диаграммы, в задаче о двух баках можно определить диаграммы состояний следующих объектов: Controller : Controller, Two_Tanks : Two_Tanks, Vin_Control : Vinput _Controller; а также диаграмма состояний объектов K1_Control и K2_Control класса K_Control (общая для обоих объектов, так как у них одинаковая логика поведения).
Диаграмма состояний объекта Controller : Controller представлена на рис. 62:
Рисунок 62 - Диаграмма состояний №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 представлена на рис. 63:
Рисунок 63 - Диаграмма состояний №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 представлена на рис. 64:
Рисунок 64 - Диаграмма состояний №3
Данная диаграмма отражает логику поведения объекта Vin_Control. Процесс начинается с начальной точки, затем следует мгновенный переход в состояние Выключен, в котором выполняется выключение крана Vinput. Объект находится в этом состоянии до тех пор, пока не поступит сигнал VinOn и не станет истинным условие [VinOn=true]. Тогда объект переходит в состояние Включен, в котором происходит включение крана Vinput. Объект находится в этом состоянии до тех пор, пока не станет истинным условие [VinOff=true], то есть не будет получен сигнал о выключении входного крана. Тогда объект вернется в состояние Выключен и цикл замкнется.
Диаграмма состояний объектов К1_Control и К2_Control представлена на рис. 65:
Рисунок 65 - Диаграмма состояний №4
Данная диаграмма отражает логику поведения объектов К1_Control и К2_Control.
Она состоит из двух суперсостояний - Закрытие и Открытие, определяющих закрытие и открытие крана V1 (или V2). Процесс начинается с начальной точки, затем следует мгновенный переход в состояние Закрытие, в котором объект находится до тех пор, пока не выполниться условие [VXOn=true], обозначающее приход сигнала VXOn, включающего кран V1 (или V2). Тогда объект переходит в состояние Открытие, в котором находится до тех пор, пока не придет сигнал на закрытие крана, то есть не станет истинным условие [VXOn=true]. По этому сигналу объект возвращается в предыдущее состояние и цикл замыкается. В суперсостоянии Закрытие содержаться два подсостояния - Выключение и выключен. При попадании в данное суперсостояние объект сразу попадает в состояние Выключение в котором происходит выключение крана до тех пор, пока не выполниться условие [P>=80]. Это означает, что задвижка крана дошла до предельного состояния. В этот момент выполняется выходное действие, закрывающее кран, и объект переходит в состояние Выключен. В нем он находится до тех пор, пока не будет получен сигнал на переход во второе суперсостояние. При попадании во второе суперсостояние объект сразу попадает в состояние Включение в котором происходит включение крана до тех пор, пока не выполниться условие [P<=0]. Это означает, что задвижка крана дошла до предельного состояния. В этот момент выполняется выходное действие, открывающее кран, и объект переходит в состояние Включен. В нем он находится до тех пор, пока не будет получен сигнал на переход обратно в первое суперсостояние. Тогда объект переходит обратно в состояние Закрытие и цикл замыкается.
Задание
Используя описание в терминах UML построить модель задачи о двух баках, реализованные в подсистеме Simulink пакета Matlab и в пакете Model Vision Studium (MVS).
В отчете по лабораторному практикуму должны быть приведены:
1. описание системы в терминах унифицированного языка моделирования UML;
2. модели данной системы, реализованные в конкретных пакетах визуального моделирования (Simulink и MVS) на основе полученного описания;
3. результаты численных экспериментов и их объяснение (Результаты численных экспериментов для подсистемы Simulink пакета Matlab и пакета Model Vision Studium представить в таблице).
Таблица – Результаты численных экспериментов
Метод
Первое переключение
Десятое переключение
Время (303.13)
h2
Время (2669.9)
h2
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Бусленко В.П. Моделирование сложных систем. – М.: Наука, 1973.
2. Ту Современная теория управления. – М.: Машиностроение, 1971.
3. Колесов Ю.Б., Сениченков Ю.Б. Вычислительные пакеты. – СПб.: Мир и Семья, 2000.
4. Stefan Kowalewski, Olaf Stursberg, Martin Fritz, Holger Graf, Ingo Hoffman, Jorg Preubig, Silke Simon, Manuel Remelhe and Heinz Tresel, "Case study in Tool-Aided Analysis of Discretely Controlled Continuous Systems: the Two Tanks Problem". Presented at the 15th International Workshop on Hybrid Systems (HS V), September 11-13, 1997, Notre Dame, USA.
5. Фаулер, К. Скотт, UML в кратком изложении. Применение стандартного языка объектного моделирования . - М.: Мир, 1999;
6. Скляров, Программирование на языках С и С++. - М.: Высшая школа, 1996;
7. Лингер, Х. Миллс, Б. Уитт Теория и практика структурного программирования. - М.: Мир, 1982;
8. Пановко Я.Г. Введение в теорию механических колебаний. - М.: Наука, 1971;
9. Беликов Б.С. Решение задач по физике. Общие методы. – М.: Высшая школа, 1986;