- •Лабораторная работа №1
- •1 Теоретические положения
- •2 Ход работы
- •3 Отчет
- •4 Контрольные вопросы
- •Лабораторная работа №2
- •1 Теоретические положения
- •2 Ход работы
- •3 Отчет
- •4 Контрольные вопросы
- •Лабораторная работа №3
- •1 Теоретические положения
- •2 Ход работы
- •3 Отчет
- •4 Контрольные вопросы
- •Лабораторная работа №4
- •1 Теоретические положения
- •2 Ход работы
- •3 Отчет
- •4 Контрольные вопросы
- •Лабораторная работа №5
- •1 Теоретические положения
- •2 Ход работы
- •3 Отчет
- •4 Контрольные вопросы
- •Лабораторная работа №6
- •1 Теоретические положения
- •2 Ход работы
- •3 Отчет
- •4 Контрольные вопросы
- •Лабораторная работа №7
- •1 Теоретические положения
- •2 Ход работы
- •3 Отчет
- •4 Контрольные вопросы
- •Лабораторная работа №8
- •1 Теоретические положения
- •2 Ход работы
- •3 Отчет
- •4 Контрольные вопросы
- •Лабораторная работа №9
- •1 Теоретические положения
- •2 Ход работы
- •3 Отчет
- •4 Контрольные вопросы
- •Лабораторная работа № 10
- •1 Теоретические положения
- •2 Ход работы
- •3 Отчет
- •4 Контрольные вопросы
2 Ход работы
Обеспечить автоматический режим работы объекта, состоящий из следующих этапов:
- заполнение емкости 1 из двух трубопроводов. Заполнение емкости начинается после открытия одного из клапанов.
- при достижении заданного оператором уровня в емкости 1, начинается режим отстаивания.
- после окончания заданного времени реакции, начинается опорожнение емкости 1 в емкость 2 при помощи клапана 3, и одновременно открываются клапана подачи компонентов сверху емкости 2.
- при достижении заданного оператором уровня в емкости 2, начинается режим перемешивания.
- после окончания заданного времени перемешивания, начинается режим отстаивания в емкости 2.
- после окончания заданного времени реакции, начинается опорожнение емкости 2 при помощи клапана 6. После опорожнения емкости 2 начинается заново заполнение емкости 1.
Для модели работы объекта используйте скрипты типа Condition.
Сценарий по условию Condition |
Условие: Klapan_1 |
On False: Flow_1_old = Flow_1; Flow_1 = 0; On True: Flow_1 = Flow_1_old; While True 100 Msec: Level_1 = Level_1 + Flow_1/600; IF Level_1 >= Level_set_1 THEN Klapan_1 = 0; Klapan_2 = 0; Start_ots_1 = 1; ENDIF; |
Условие: Klapan_2 |
On False: Flow_2_old = Flow_2; Flow_2 = 0; On True: Flow_2 = Flow_2_old; While True 100 Msec: Level_1 = Level_1 + Flow_2/600; IF Level_1 >= Level_set_1 THEN Klapan_1 = 0; Klapan_2 = 0; Start_ots_1 = 1; ENDIF; |
Условие: Start_ots_1 |
On True: Time_1 = 0; While True 1000 Msec: Time_1 = Time_1 + 1; IF Time_1 >= Time_set_1 THEN Start_ots_1 = 0; Klapan_3 = 1; Klapan_4 = 1; Klapan_5 = 1; ENDIF;
|
Условие: Klapan_3 |
On False: Flow_3_old = Flow_3; Flow_3 = 0; On True: Flow_3 = Flow_3_old; While True 100 Msec: Level_2 = Level_2 + Flow_3/600; Level_1 = Level_1 - Flow_3/600; IF Level_1 <= 1 THEN Klapan_3 = 0; ENDIF; |
Условие: Klapan_4 |
On False: Flow_4_old = Flow_4; Flow_4 = 0; On True: Flow_4 = Flow_4_old; While True 100 Msec: Level_2 = Level_2 + Flow_4/600; |
Условие: Klapan_5 |
On False: Flow_5_old = Flow_5; Flow_5 = 0; On True: Flow_5 = Flow_5_old; While True 100 Msec: Level_2 = Level_2 + Flow_5/600; |
Условие: Level_1 >= Level_set_1 |
On True: Start_ots_1 = 1; While True 100 Msec: Klapan_1 = 0; Klapan_2 = 0; |
Условие: Level_2 >= Level_set_2 |
On True: Start_ots_2 = 1; While True 100 Msec: Klapan_3 = 0; Klapan_4 = 0; Klapan_5 = 0; |
Условие: Start_ots_2 |
On True: Time_2 = 0; While True 1000 Msec: Time_2 = Time_2 + 1; IF Time_2 >= Time_set_2 THEN Start_ots_2 = 0; Start_ots_3 = 1; ENDIF; |
Условие: Start_ots_3 |
On True: Time_3 = 0; While True 1000 Msec: Time_3 = Time_3 + 1; IF Time_3 >= Time_set_3 THEN Start_ots_3 = 0; Klapan_6 = 1; ENDIF; |
Условие: Klapan_6 |
On False: Flow_6_old = Flow_6; Flow_6 = 0; On True: Flow_6 = Flow_6_old; While True 100 Msec: Level_2 = Level_2 - Flow_6/600; Level_all = Level_all + Flow_6/600; IF Level_2 <= 1 THEN Klapan_6 = 0; Klapan_1 = 1; Klapan_2 = 1; ENDIF; |
2. По формуле зависимости объема заполнения бака от уровня наполнения с помощью QuickFunction вычислить объем заполнения емкостей 1 и 2, а также общий объем готовой продукции за все циклы работы объекта.
Создайте новую Quick – функцию с одним действительным аргументом (имя аргумента не должно совпадать с именем какого-либо тэга). Для возврата в вызывающий сценарий используйте оператор вида: «RETURN Аналоговое выражение для расчета объема;». В вызывающем сценарии используйте оператор следующего вида: «Тэг объема = CALL ИмяФункции(Тэг уровня);».
Пример:
Quick Function |
|
Функция – Volume |
Аргумент – TankLevel (Real) |
RETURN PI()*0.5*0.5* TankLevel |
|
3. Для клапанов задать открытие и закрытие и цветом показать работу клапана.
На клапан задайте анимационную связь Touch Pushbuttons – Discrete и в поле Tagname введите тэг работы клапана: Klapan_1, с условием Action - Toggle. Для цветовой визуализации используйте анимационную связь Fill Color– Discrete и задайте Tagname: Klapan_1.
