Создание проекта с использованием программы GeniDAQ и контроллеров серии АДАМ-4000

Министерство образования РТ



Альметьевский нефтяной институт



Кафедра АИТ











Лабораторная работа 



«СОЗДАНИЕ ПРОЕКТА С ИСПОЛЬЗОВАНИЕМ ПРОГРАММЫ GeniDAQ И КОНТРОЛЛЕРОВ СЕРИИ АДАМ-4000»













                                                     Выполнили: студенты гр. 38-61

                                                                  Хакимов Р.К.  

                                                                    Кузьмина О.И.

                                                                 

                                          Проверил: преподаватель

                                                                   Тугашова Л. Г.

















Альметьевск 2003



Для создания АСУ ТП НПС использовалась SCADA-система на базе программы GeniDAQ и модульные контроллеры серии ADAM 4000.



Объём автоматизации колонны ректификации:

Измерение, индикация и регулирование уровня смеси в колонне;

Измерение притока нефти на входе в колонну;

Измерение притока смеси на рибойлер;

Сигнализация и сигнализация предельного уровня смеси.

Измерение температуры рибойлера, пара и кубовой жидкости.



При создании АСУ ТП, ввиду отсутствия реальных технологических объектов и процессов, использовались их математические модели.

Проект АСУ ТП под оболочкой  SCADA-сиcтемы GeniDAQ представляет собой программно оформленный алгоритм работы системы, разбитый на два вида окона: TASK и DISPLAY. В окнах TASK задаётся собственно алгоритм функционирования АСУ ТП с помощью готовых программных блоков (объектов программной среды), объединяемых в единую систему посредством линий связи.

В окнах DISPLAY создаётся рабочий интерфейс оператора АСУ ТП, также посредством готовых элементов.







TASK1 разработчик задач (Task Designer).

В данном окне используются следующие блоки:

Basic Script (SCR#) - блок встроенного средства программирования;

Tag (Tag*) - блок-контейнер переменной типа Tag, используется для передачи значения переменной между окнами TASK, DISPLAY;



Блок SCR1служит для формирования текущего значения расхода   жидкости на входе в колонну и регулирующего воздействия, Значение расхода выводится в окне DISPLAY1 в блоке Numeric String.



Блок SCR2: здесь формируются значения тепературы жидкости на входе колонны, значение тепературы рибойлера и расхода кубовой жидкости, индикация текущего уровня жидкости в кубовой секции, его сигнализация при аварийной ситуации, расход газа  и кубовой жидкости, тепература кубовой жидкости, а также качество смеси. Индикация выводится в  окнах DISPLAY1 в блоке Numeric String.

Блок SCR3предназначен для формирования значения тепературы пара и кубовой жидкости на выходе колонны, значение расхода пара, индикация текущего расхода пара и тепературы жидкости в кубовой секции. Индикация выводится в  окнах DISPLAY1 в блоке Numeric String





DISP1 разработчик экрана (Display Designer).

В данных окнах используются блоки:

Numeric Control - блок числового ввода, данные блоки используются для задания величин технологических параметров. 

Numeric String - блок вывода числовых значений, служит для отображения текущих значений величин: расхода нефти, температуры, уровня в ёмкости.

ABC (Text String) - для выведения на экран надписей и обозначений;

   Indicator - в данном случае используется для отображения сигнализации.

Realtime Trend Graph ( блок построения графиков в реальном времени)  - данный блок позволяет наблюдать за изменением во времени сразу нескольких величин.

 

Структура окна Task Designer (TASK1).



















Структура окна Display Designer (DISP1).

















Описание скриптов:





Sub SCR1()

	F=GetTag("Task1","AI1")

	Xp=GetTag("Task1","PID1")

	F1=F+Xp/10

	Outputf 0, F1

End Sub











public L, Qpr0, Sum

Sub SCR2()

	T1=GetTag("Task1","AI2")

	F1=GetTag("virtask","F1")

	Ffleg=GetTag("Disp1","NCTL5")

	Tfleg=GetTag("Disp1","NCTL6")

	Trib=GetTag("virtask","TRIB")

	Fkb=GetTag("Task1","PID2")

	Fg=0.553*F1

	Qpr=F1-Fg+Fkb/4

	dQpr=Qpr-Qpr0

	Qpr0=Qpr

	Sum=Sum+dQpr

	L=L+0.08*Sum

    P105=0.985+0.183*Fg

	Tkb=0.31*Trib+0.28*T1*0.43*F1

	P29=0.156*Tkb

	if l>=3 then k=1 else k=0

	Outputf 0, L

	Outputf 1, Fg

	Outputf 2, -Fkb

	Outputf 3, Tkb

	Outputf 5, P105

        End Sub











Sub SCR3()

	Fpar=GetTag("Disp1","NCTL3")

	Tpar=GetTag("Disp1","NCTL4")

	Tkb=GetTag("virtask","TKB")

	Xp=GetTag("Task1","PID4")

	Fpar1=Fpar+Xp

	Trib=0.54*Tpar*0.4*Fpar1-0.21*Tkb

	Outputf 0, Fpar1

	Outputf 1, Trib

End Sub