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

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

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

Кафедра АИТ

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

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

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

                                                                  Хакимов Р.К. 

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

                                                                

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

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

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

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

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

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

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

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

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

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

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

Проект АСУ ТП под оболочкой  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