Разработка автоматизированной системы управления газоперекачивающим агрегатом Сургутского месторождения

Автоматизация управления газоперекачивающим агрегатом компрессорной станции Сургутского месторождения. Характеристика технологического процесса. Выбор конфигурации контроллера и программного обеспечения. Разработка алгоритмов работы объекта автоматизации.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид дипломная работа
Язык русский
Дата добавления 29.09.2013
Размер файла 3,9 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

QSA

+

СТМ-10

24 В

-

-

-

-

109. Загазованность отсека нагнетателя > 12 %

QSA

+

СТМ-10

24 В

-

-

-

-

110. Пожар на агрегате

TSA

+

ДПС-038

24 В

-

-

-

-

111. Пожар в отсеке двигателя

TSA

+

ДПС-038

24 В

-

-

-

-

112. Пожар в отсеке нагнетателя

TSA

+

ДПС-038

24 В

-

-

-

-

113. Подача гасящего вещества в блок двигателя

NS

+

Высоковольтный включатель

24 В

-

-

-

-

114. Подача гасящего вещества в блок нагнетателя

NS

+

Высоковольтный включатель

24 В

-

-

-

-

ПРИЛОЖЕНИЕ В (обязательное)

Алгоритмы управления технологическим процессом

ПРИЛОЖЕНИЕ Г (обязательное)

Листинг программы на языке Техно ST

Предпусковая готовность:

PROGRAM

VAR_INPUT СостКр1_закр: BOOL; END_VAR

VAR_INOUT Активизир_ПредПускГотовн: BOOL; END_VAR

VAR_INPUT СостКр2_закр: BOOL; END_VAR

VAR_INPUT СостКр4_закр: BOOL; END_VAR

VAR_INPUT СостКр_АПК_закр: BOOL; END_VAR

VAR_INPUT СостКр12_закр: BOOL; END_VAR

VAR_INPUT ОборотыКНД: REAL; END_VAR

VAR_INPUT СостКлСтопорн_закр: BOOL; END_VAR

VAR_INPUT СостКлВоздЗаборн_закр: BOOL; END_VAR

VAR_INPUT L_МаслМБД: REAL; END_VAR

VAR_INPUT Т_МаслМБД: REAL; END_VAR

VAR_INPUT СигнНормОстанова: BOOL; END_VAR

VAR_INPUT СигнАварОстанова: BOOL; END_VAR

VAR_OUTPUT УпрКр1_закр: BOOL; END_VAR

VAR_OUTPUT УпрКр2_закр: BOOL; END_VAR

VAR_OUTPUT УпрКр4_закр: BOOL; END_VAR

VAR_OUTPUT УпрКр_АПК_закр: BOOL; END_VAR

VAR_OUTPUT УпрКр12_закр: BOOL; END_VAR

VAR_OUTPUT УпрТРК: REAL; END_VAR

VAR_INOUT АварОстан: BOOL; END_VAR

VAR_INOUT НормОстан: BOOL; END_VAR

VAR_OUTPUT ВклНасосЗакачМ_МБД: BOOL; END_VAR

VAR_OUTPUT ВклПодогревМ_МБД: BOOL; END_VAR

VAR_INOUT Кн_АО: BOOL; END_VAR

VAR_INOUT Кн_НО: BOOL; END_VAR

VAR VAR_000: REAL; END_VAR

VAR VAR_001: REAL; END_VAR

VAR VAR_002: REAL; END_VAR

if Активизир_ПредПускГотовн = then

if СостКр1_закр = 1 then goto label_1;

else УпрКр1_закр:= 1;

end_if;;

label_1:

if СостКр2_закр = 1 then label_2;

else УпрКр2_закр:= 1;

end_if;

label_2:

if СостКр4_закр = 1 then label_3;

else УпрКр4_закр:= 1;

end_if;

label_3:

if СостКр_АПК_закр = 1 then label_4;

else УпрКр_АПК_закр:= 1;

end_if;

label_4:

if СостКр12_закр = 1 then;

else УпрКр12_закр:= 1;

end_if;

if ОборотыКНД < 300 then АварОстан:= 1;

else

if L_МаслМБД < 750 then ВклНасосЗакачМ_МБД:= 1;

end_if;

label_5:

if L_МаслМБД >= 950 then ВклНасосЗакачМ_МБД:= 0;

else goto label_5;

end_if;

if T_МаслМБД < 15 then ВклПодогревМ_МБД:= 1;

end_if;

label_6:

if T_МаслМБД >= 35 then ВклПодогревМ_МБД:= 0;

else goto label_6;

end_if;

if СостКлСтопорн_закр = 0 then АварОстан:= 1;

end_if;

if СостКлВоздЗаборн_закр = 0 then АварОстан:= 1;

end_if;

end_if;

if Кн_НО = 1 then НормОстан:= 1;

else НормОстан:= 0;

end_if;

if Кн_АО = 1 then АварОстан:= 1;

else АварОстан:= 0;

end_if;

end_if;

END_PROGRAM

Холодная (технологическая) прокрутка:

PROGRAM

VAR_INOUT Активизир_Технол_Прокрутку: BOOL; END_VAR

VAR_INOUT Активизир_Хол_Прокрутку: BOOL; END_VAR

VAR_INOUT Активизир_ПредПускГотовн: BOOL; END_VAR

VAR_OUTPUT ВклМНС_1: BOOL; END_VAR

VAR_INPUT Р_МаслНагнет: REAL; END_VAR

VAR_OUTPUT ВклМНУ_1: BOOL; END_VAR

VAR_INPUT Р_МаслНагнетУплотн: REAL; END_VAR

VAR_INOUT ВклУпрНЭМНД: BOOL; END_VAR

VAR_INPUT Р_МаслВхДвиг: REAL; END_VAR

VAR_INOUT ВклУпрОЭМНД: BOOL; END_VAR

VAR_OUTPUT ВклСтартер_1скор: BOOL; END_VAR

VAR_INPUT Р_МаслОткачМДвиг: REAL; END_VAR

VAR_INPUT TEMP_TIME: TIME; END_VAR

VAR_INOUT TEMP: REAL; END_VAR

VAR_INOUT АварОстан: BOOL; END_VAR

VAR_INPUT ОборотыКНД: REAL; END_VAR

if Активизир_Технол_Прокрутку = 1 or Активизир_Хол_Прокрутку = 1 then

Активизир_ПредПускГотовн = 1;

ВклМНС_1 = 1;

TEMP = TEMP_TIME;

while (TEMP_TIME - TEMP) < 10000 do

end_while

if Р_МаслНагнет < 1.3 then АварОстан = 1;

else

ВклМНУ_1 = 1;

TEMP = TEMP_TIME;

while (TEMP_TIME - TEMP) < 40000 do

end_while

if Р_МаслНагнетУплотн < 1.3 then АварОстан = 1;

else

TEMP = TEMP_TIME;

while (TEMP_TIME - TEMP) < 40000 do

end_while

ВклУпрНЭМНД = 1;

if Р_МаслВхДвиг < 0.2 then АварОстан = 1;

else

ВклУпрОЭМНД = 1;

if Р_МаслОткачМДвиг < 0.2 then АварОстан = 1;

else

TEMP = TEMP_TIME;

while (TEMP_TIME - TEMP) < 40000 do

end_while

ВклСтартер_1скор = 1;

end_if;

end_if;

end_if;

end_if;

if Активизир_Технол_Прокрутку = 1 then

TEMP = TEMP_TIME;

while (TEMP_TIME - TEMP) < 900000 do

end_while

else

TEMP = TEMP_TIME;

while (TEMP_TIME - TEMP) < 180000 do

end_while

end_if;

ВклСтартер_1скор = 0;

label_1:

if ОборотыКНД > 300 then goto label_1;

else

TEMP = TEMP_TIME;

while (TEMP_TIME - TEMP) < 20000 do

end_while

ВклМНУ_1 = 0;

TEMP = TEMP_TIME;

while (TEMP_TIME - TEMP) < 80000 do

end_while

ВклМНС_1 = 0;

end_if;

end_if;

END_PROGRAM

Комплексная проверка кранов:

PROGRAM

VAR_INOUT Активизир_ПредПускГотовн: BOOL; END_VAR

VAR_INPUT Кн_КомплПроверКранов_Нажата: BOOL; END_VAR

VAR_OUTPUT ВклМНС_1: BOOL; END_VAR

VAR_INPUT Р_МаслНагнет: REAL; END_VAR

VAR_OUTPUT ВклМНУ_1: BOOL; END_VAR

VAR_INPUT L_Масл_ГАМ: REAL; END_VAR

VAR_INPUT Р_МаслНагнетУплотн: REAL; END_VAR

VAR_OUTPUT УпрКр4_откр: BOOL; END_VAR

VAR_OUTPUT УпрКр4_закр: BOOL; END_VAR

VAR_OUTPUT УпрКр1_откр: BOOL; END_VAR

VAR_OUTPUT УпрКр1_закр: BOOL; END_VAR

VAR_OUTPUT УпрКр9_откр: BOOL; END_VAR

VAR_OUTPUT УпрКр9_закр: BOOL; END_VAR

VAR_OUTPUT УпрКр12_откр: BOOL; END_VAR

VAR_OUTPUT УпрКр12_закр: BOOL; END_VAR

VAR_INPUT dP_Кр1_: REAL; END_VAR

VAR_INPUT СостКр1_откр: BOOL; END_VAR

VAR_INPUT СостКр1_закр: BOOL; END_VAR

VAR_INPUT СостКр4_откр: BOOL; END_VAR

VAR_INPUT СостКр4_закр: BOOL; END_VAR

VAR_INPUT СостКр9_откр: BOOL; END_VAR

VAR_INPUT СостКр9_закр: BOOL; END_VAR

VAR_INPUT СостКр12_откр: BOOL; END_VAR

VAR_INPUT СостКр12_закр: BOOL; END_VAR

VAR_INPUT TEMP_TIME: TIME; END_VAR

VAR_INOUT TEMP: REAL; END_VAR

VAR_INOUT АварОстан: BOOL; END_VAR

if Кн_КомплПроверКранов_Нажата = 1 then

Активизир_ПредПускГотовн:= 1;

ВклМНС_1:= 1;

TEMP:= TEMP_TIME;

while (TEMP_TIME - TEMP) < 10000 do

end_while

if Р_МаслНагнет < 1.3 then АварОстан = 1;

else

ВклМНУ_1:= 1;

TEMP:= TEMP_TIME;

while (TEMP_TIME - TEMP) < 40000 do

end_while

if L_Масл_ГАМ < 350 then АварОстан = 1;

else

if Р_МаслНагнетУплотн < 1.3 then АварОстан = 1;

else

УпрКр4_закр:= 0;

УпрКр4_откр:= 1;

TEMP:= TEMP_TIME;

while (TEMP_TIME - TEMP) < 20000 do

end_while

if dP_Кр1_ > 3.50 then АварОстан = 1;

else

УпрКр1_закр:= 0;

УпрКр1_откр:= 1;

TEMP:= TEMP_TIME;

while (TEMP_TIME - TEMP) < 20000 do

end_while

УпрКр9_откр:= 0;

УпрКр9_закр:= 1;

УпрКр4_откр:= 0;

УпрКр4_закр:= 1;

TEMP:= TEMP_TIME;

while (TEMP_TIME - TEMP) < 20000 do

end_while

УпрКр12_закр:= 0;

УпрКр12_откр:= 1;

if СостКр1_откр = 1 and СостКр4_закр = 1 and СостКр9_закр = 1 then

УпрКр12_откр:= 0;

УпрКр12_закр:= 1;

TEMP:= TEMP_TIME;

while (TEMP_TIME - TEMP) < 20000 do

end_while

УпрКр9_закр:= 0;

УпрКр9_откр:= 1;

УпрКр1_откр:= 0;

УпрКр1_закр:= 1;

else АварОстан:= 1;

end_if;

end_if;

end_if;

end_if;

end_if;

end_if;

END_PROGRAM

Автоматический пуск:

PROGRAM

VAR_INOUT Активизир_ПредПускГотовн: BOOL; END_VAR

VAR_INOUT АвтоматичПуск: BOOL; END_VAR

VAR_INPUT Кн_Пуск_Нажата: BOOL; END_VAR

VAR_OUTPUT ВклМНС_1: BOOL; END_VAR

VAR_INPUT Р_МаслНагнет: REAL; END_VAR

VAR_OUTPUT ВклМНУ_1: BOOL; END_VAR

VAR_INPUT L_Масл_ГАМ: REAL; END_VAR

VAR_INPUT Р_МаслНагнетУплотн: REAL; END_VAR

VAR_OUTPUT УпрКр4_откр: BOOL; END_VAR

VAR_OUTPUT УпрКр4_закр: BOOL; END_VAR

VAR_OUTPUT УпрКр1_откр: BOOL; END_VAR

VAR_OUTPUT УпрКр1_закр: BOOL; END_VAR

VAR_OUTPUT УпрКр9_откр: BOOL; END_VAR

VAR_OUTPUT УпрКр9_закр: BOOL; END_VAR

VAR_OUTPUT УпрКр12_откр: BOOL; END_VAR

VAR_OUTPUT УпрКр12_закр: BOOL; END_VAR

VAR_INPUT dP_Кр1_: REAL; END_VAR

VAR_INPUT СостКр1_откр: BOOL; END_VAR

VAR_INPUT СостКр1_закр: BOOL; END_VAR

VAR_INPUT СостКр4_откр: BOOL; END_VAR

VAR_INPUT СостКр4_закр: BOOL; END_VAR

VAR_INPUT СостКр9_откр: BOOL; END_VAR

VAR_INPUT СостКр9_закр: BOOL; END_VAR

VAR_INPUT СостКр12_откр: BOOL; END_VAR

VAR_INPUT СостКр12_закр: BOOL; END_VAR

VAR_INPUT TEMP_TIME: TIME; END_VAR

VAR_INOUT TEMP: REAL; END_VAR

VAR_INOUT АварОстан: BOOL; END_VAR

VAR_INPUT Р_ГазНагнет: REAL; END_VAR

VAR_INOUT ВклУпрОЭМНД: BOOL; END_VAR

VAR_INOUT ВклУпрНЭМНД: BOOL; END_VAR

VAR_INOUT ВклУпрВОД: BOOL; END_VAR

VAR_INPUT УпрКл_КПР_1_открыть: REAL; END_VAR

VAR_INPUT УпрКл_КПР_2_открыть: REAL; END_VAR

VAR_INPUT УпрКл_КПР_1_закрыть: REAL; END_VAR

VAR_INPUT Р_МаслОткачМДвиг: REAL; END_VAR

VAR_INPUT Р_МаслВхДвиг: REAL; END_VAR

VAR_OUTPUT ВклСтартер_1скор: BOOL; END_VAR

VAR_OUTPUT ВклСтартер_2скор: BOOL; END_VAR

VAR_OUTPUT ПускПлазмВосп: BOOL; END_VAR

VAR_OUTPUT УпрКл_КПР_откр: BOOL; END_VAR

VAR_OUTPUT УпрКл_КПР_закр: BOOL; END_VAR

VAR_OUTPUT УпрКл_СК_откр: BOOL; END_VAR

VAR_OUTPUT УпрКл_СК_закр: BOOL; END_VAR

VAR_INPUT ОборотыКНД: REAL; END_VAR

VAR_OUTPUT УпрТРК: REAL; END_VAR

VAR_INPUT ОборотыТН: REAL; END_VAR

if Кн_Пуск_Нажата = 1 then

АвтоматичПуск:= 1;

if Р_ГазНагнет < 10 then

Активизир_ПредПускГотовн:= 1;

ВклМНС_1:= 1;

TEMP:= TEMP_TIME;

while (TEMP_TIME - TEMP) < 10000 do

end_while

if Р_МаслНагнет < 1.3 then АварОстан = 1;

else

ВклМНУ_1:= 1;

TEMP:= TEMP_TIME;

while (TEMP_TIME - TEMP) < 40000 do

end_while

if L_Масл_ГАМ < 350 then АварОстан = 1;

else

if Р_МаслНагнетУплотн < 1.3 then АварОстан = 1;

else

УпрКр4_закр:= 0;

УпрКр4_откр:= 1;

TEMP:= TEMP_TIME;

while (TEMP_TIME - TEMP) < 20000 do

end_while

if dP_Кр1_ > 3.50 then АварОстан:= 1;

else

TEMP:= TEMP_TIME;

while (TEMP_TIME - TEMP) < 20000 do

end_while

УпрКр5_откр:= 0;

УпрКр5_закр:= 1;

else

УпрКр4_откр:= 0;

УпрКр4_закр:= 1;

TEMP:= TEMP_TIME;

while (TEMP_TIME - TEMP) < 20000 do

end_while

if Р_ГазНагнет > 10 then

ВклУпрНЭМНД:= 1;

УпрКр9_откр:= 0;

УпрКр9_закр:= 1;

УпрКр1_закр:= 0;

УпрКр1_откр:= 1;

TEMP = TEMP_TIME;

while (TEMP_TIME - TEMP) < 20000 do

end_while

УпрКр12_закр:= 0;

УпрКр12_откр:= 1;

УпрКр4_откр:= 0;

УпрКр4_закр:= 1;

УпрКл_КПР_1_открыть:= 1;

УпрКл_КПР_2_открыть:= 1;

else АварОстан:= 1;

end_if;

end_if;

end_if;

end_if;

end_if;

end_if;

if Р_МаслВхДвиг < 0.2 then АварОстан = 1;

else

if Р_МаслОткачМДвиг < 0.2 then АварОстан = 1;

else

TEMP:= TEMP_TIME;

ВклСтартер_1скор:= 1;

while (TEMP_TIME - TEMP) < 170000 do

end_while

ВклСтартер_1скор:= 0;

ВклСтартер_2скор:= 1;

while (TEMP_TIME - TEMP) < 185000 do

ПускПлазмВосп:= 1;

УпрКл_КПР_закр:= 0;

УпрКл_КПР_откр:= 1;

end_while

while (TEMP_TIME - TEMP) < 195000 do

УпрКл_СК_откр:= 1;

end_while

while (TEMP_TIME - TEMP) < 203000 do

ПускПлазмВосп:= 0;

УпрКл_КПР_откр:= 0;

УпрКл_КПР_закр:= 1;

end_while

while (TEMP_TIME - TEMP) < 285000 or ОборотыКНД < 2150 do

end_while

ВклСтартер_2скор:= 0;

TEMP:= TEMP_TIME;

while (TEMP_TIME - TEMP) < 600000 do

end_while

УпрТРК:= 25;

while ОборотыТН < 3700 do

end_while

TEMP:= TEMP_TIME;

while (TEMP_TIME - TEMP) < 300000 do

end_while

ВклУпрВОД:= 1;

end_if;

end_if;

end_if;

END_PROGRAM

Нормальный останов:

PROGRAM

VAR_INPUT Кн_НО_Нажата: BOOL; END_VAR

VAR_INOUT НО: BOOL; END_VAR

VAR_OUTPUT ВклМНС_1: BOOL; END_VAR

VAR_INPUT Р_МаслНагнет: REAL; END_VAR

VAR_OUTPUT ВклМНУ_1: BOOL; END_VAR

VAR_INPUT Р_МаслНагнетУплотн: REAL; END_VAR

VAR_OUTPUT УпрКр5_откр: BOOL; END_VAR

VAR_OUTPUT УпрКр5_закр: BOOL; END_VAR

VAR_OUTPUT УпрКр1_откр: BOOL; END_VAR

VAR_OUTPUT УпрКр1_закр: BOOL; END_VAR

VAR_OUTPUT УпрКр9_откр: BOOL; END_VAR

VAR_OUTPUT УпрКр9_закр: BOOL; END_VAR

VAR_OUTPUT УпрКр12_откр: BOOL; END_VAR

VAR_OUTPUT УпрКр12_закр: BOOL; END_VAR

VAR_INPUT СостКр1_откр: BOOL; END_VAR

VAR_INPUT СостКр1_закр: BOOL; END_VAR

VAR_INPUT СостКр5_откр: BOOL; END_VAR

VAR_INPUT СостКр5_закр: BOOL; END_VAR

VAR_INPUT СостКр9_откр: BOOL; END_VAR

VAR_INPUT СостКр9_закр: BOOL; END_VAR

VAR_INPUT СостКр12_откр: BOOL; END_VAR

VAR_INPUT СостКр12_закр: BOOL; END_VAR

VAR_INPUT TEMP_TIME: TIME; END_VAR

VAR_INOUT TEMP: REAL; END_VAR

VAR_INOUT АварОстан: BOOL; END_VAR

VAR_INPUT ОборотыКНД: REAL; END_VAR

VAR_INPUT ОборотыТН: REAL; END_VAR

VAR_OUTPUT ВклУпрОЭМНД: BOOL; END_VAR

VAR_OUTPUT ВклУпрНЭМНД: BOOL; END_VAR

VAR_OUTPUT ВклУпрВОД: BOOL; END_VAR

VAR_OUTPUT ВклУпрВВЗК: BOOL; END_VAR

VAR_OUTPUT ВклУпрВАВОМД: BOOL; END_VAR

VAR_OUTPUT ВклУпрВАВОМН: BOOL; END_VAR

VAR_OUTPUT УпрКл_СК_откр: BOOL; END_VAR

VAR_OUTPUT УпрКл_СК_закр: BOOL; END_VAR

VAR_INPUT Р_ГазНагнет: REAL; END_VAR

if Кн_НО_Нажата = 1 then

НО:= 1;

lable_1:

if ОборотыТН > 3700 then goto lable_1;

else

ВклМНС_1:= 1;

TEMP:= TEMP_TIME;

while (TEMP_TIME - TEMP) < 10000 do

end_while

ВклМНУ_1:= 1;

ВклУпрОЭМНД:= 1;

ВклУпрНЭМНД:= 1;

ВклУпрВОД:= 1;

ВклУпрВВЗК:= 1;

ВклУпрВАВОМД:= 1;

ВклУпрВАВОМН:= 1;

TEMP:= TEMP_TIME;

while (TEMP_TIME - TEMP) < 600000 do

end_while

УпрКр12_откр:= 0;

УпрКр12_закр:= 1;

УпрКл_СК_откр:= 0;

УпрКл_СК_закр:=1;

УпрКр9_закр:= 0;

УпрКр9_откр:= 1;

lable_2:

if ОборотыТН > 600 then goto lable_2;

else

if ОборотыКНД > 300 then goto lable_2;

else

УпрКр1_откр:= 0;

УпрКр1_закр:= 1;

УпрКр5_закр:= 0;

УпрКр5_откр:= 1;

TEMP:= TEMP_TIME;

lable_3:

if Р_ГазНагнет > 0.21 then goto lable_3;

else

ВклМНУ_1:= 0;

while (TEMP_TIME - TEMP) < 300000 do

end_while

ВклМНС_1:= 0;

end_if;

end_if;

end_if;

end_if;

else

НО:= 0;

end_if;

END_PROGRAM

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.