Автоматизация работ газокомпрессорной установки нефтегазодобывающего комбинат ТОО "Тенгизшеврой"

Понятие эффективности и её критерии. Разработка автоматизированной системы управления газокомпрессорной установки нефтегазодобывающего комбината ТОО "Тенгизшевройл" в области низкого давления для сжатия метана. Планирование и финансирование мероприятий.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 20.05.2013
Размер файла 2,7 M

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

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

begin

if bb.Caption='Старт' then

begin

bb.Caption:='Пауза';

tt.Enabled:=true;

n4.Caption:='Пауза';

animate1.Active:=true;

animate2.Active:=true;

animate3.Active:=true;

animate4.Active:=true;

animate5.Active:=true;

animate6.Active:=true;

end

else

begin

bb.Caption:='Старт';

tt.Enabled:=false;

n4.Caption:='Старт';

animate1.Active:=false;

animate2.Active:=false;

animate3.Active:=false;

animate4.Active:=false;

animate5.Active:=false;

animate6.Active:=false;

end

end;

procedure TfMain.ttTimer(Sender: TObject);

begin

//

if wrk=1 then

begin

inc(t);

//форма

{

ltime.caption:=floattostr(time1);

}

ltd1.caption:=formatfloat('0.0',td1);

ltd2.caption:=formatfloat('0.0',td2);

ltd3.caption:=formatfloat('0.0',td3);

ltp1.caption:=formatfloat('0.0',tp1);

ltp2.caption:=formatfloat('0.0',tp2);

ltp3.caption:=formatfloat('0.0',tp3);

ltp4.caption:=formatfloat('0.0',tp4);

ltp5.caption:=formatfloat('0.0',tp5);

ltp6.caption:=formatfloat('0.0',tp6);

lpp1.caption:=formatfloat('0.0',pp1);

lpp2.caption:=formatfloat('0.0',pp2);

lpp3.caption:=formatfloat('0.0',pp3);

lpp4.caption:=formatfloat('0.0',pp4);

lpp5.caption:=formatfloat('0.0',pp5);

lpp6.caption:=formatfloat('0.0',pp6);

lth1.caption:=formatfloat('0.0',th1);

lth2.caption:=formatfloat('0.0',th2);

ls1.caption:=formatfloat('0',trunc(s1));

ls2.caption:=formatfloat('0',trunc(s2));

lpg.caption:=formatfloat('0.0',pg);

lmc.caption:=formatfloat('0',mc);

lpg.caption:=formatfloat('0.0',pg);

lpout.caption:=formatfloat('0.0',pout);

lpin.caption:=formatfloat('0.0',pin);

ltc.caption:=floattostr(trunc(tc));

lvc.caption:=floattostr(trunc(vc));

//график

series1.AddY(pin);

series2.AddY(pout);

series3.AddY(pg);

series4.AddY(td);

series5.AddY(tc);

series6.AddY(s1);

if t>30 then

begin

ch.BottomAxis.Minimum:=t-30;

ch2.BottomAxis.Minimum:=t-30;

ch3.BottomAxis.Minimum:=t-30;

ch.BottomAxis.Maximum:=t+1;

ch2.BottomAxis.Maximum:=t+1;

ch3.BottomAxis.Maximum:=t+1;

end;

//статус бар

statusbar1.Panels.Items[0].Text:='Продолжительность сеанса наблюдения '+inttostr(t div 3600)+' часов '+inttostr((t mod 3600)div 60)+' минут '+inttostr(t mod 60) +'секунд';

//база

if t mod 20 = 0 then

begin

time1:=now;

dm.a2006.Append;

dm.a2006.FieldValues['time']:=time1;

dm.a2006.FieldValues['td1']:=td1;

dm.a2006.FieldValues['td2']:=td2;

dm.a2006.FieldValues['td3']:=td3;

dm.a2006.FieldValues['tp1']:=tp1;

dm.a2006.FieldValues['tp2']:=tp2;

dm.a2006.FieldValues['tp3']:=tp3;

dm.a2006.FieldValues['tp4']:=tp4;

dm.a2006.FieldValues['tp5']:=tp5;

dm.a2006.FieldValues['tp6']:=tp6;

dm.a2006.FieldValues['pp1']:=pp1;

dm.a2006.FieldValues['pp2']:=pp2;

dm.a2006.FieldValues['pp3']:=pp3;

dm.a2006.FieldValues['pp4']:=pp4;

dm.a2006.FieldValues['pp5']:=pp5;

dm.a2006.FieldValues['pp6']:=pp6;

dm.a2006.FieldValues['th1']:=th1;

dm.a2006.FieldValues['th2']:=th2;

dm.a2006.FieldValues['s1']:=s1;

dm.a2006.FieldValues['s2']:=s2;

dm.a2006.FieldValues['pg']:=pg;

dm.a2006.FieldValues['mc']:=mc;

dm.a2006.FieldValues['pin']:=pin;

dm.a2006.FieldValues['pout']:=pout;

dm.a2006.FieldValues['tc']:=tc;

dm.a2006.FieldValues['vc']:=vc;

dm.a2006.Post;

end;

//подсчет

pin:=pin+(tbpin.Position-pin)/4;

pout:=pout+(tbpout.Position-pout)/6;//плавное изменение давления

//s1:=sqr((pout-pin)/34)*1500;//квадр. зависимость производ. компрессора от оборотв

s2:=s1*4;

tp1:=sqr(max(1500,s1)/1500)*40;tp2:=sqr(max(1500,s1)/1500)*40;

tp3:=sqr(max(1500,s1)/1500)*40;tp4:=sqr(max(1500,s1)/1500)*40;

tp5:=sqr(max(6000,s2)/6000)*40;tp6:=sqr(max(6000,s2)/6000)*40;

pp1:=sqrt(tp1/40); pp2:=sqrt(tp2/40); pp3:=sqrt(tp3/40);

pp4:=sqrt(tp4/40); pp5:=sqrt(tp5/40); pp6:=sqrt(tp6/40);

mc:=mc-(pp1+pp2+pp3+pp4+pp5+pp6)/5;

pg:=2+3*(pin-22)/7;

//температура компрессора зависит от входного, выходного давления и оборотов

tc:=max(75,sqr(max(1.1,(pout+pin)/78))/pg*s2/5800*80);

if tc>100 then lprg.Visible:=true else lprg.Visible:=false;

if td>150 then

begin

lprg2.Visible:=true;

s1:=s1-10; pout:=pout-0.2

end

else

begin

lprg2.Visible:=false;

if s1<sqr((pout-pin)/34)*1500 then s1:=s1+(pout-pin)/34*20 else s1:=s1-(pout-pin)/34*20;

end;

//если дегазац. камера забита, то нагрузка увеличивается

if pg>5 then

begin

ng:=1+3*sqr((MAX(0,(s1-1500))/300)+1.5*(pg-5));

lpg.Font.Color:=clRed;

if td>200 then bbClick(nil);

end else begin

lpg.Font.Color:=clBlack;

ng:=1+3*sqr(max(0,(s1-1500)/300));

end;

//обмотки

td1:=50*ng*(1+(random(5)-2)/100);

td2:=50*ng*(1+(random(5)-2)/100);

td3:=50*ng*(1+(random(5)-2)/100);

td:=(td1+td2+td3)/3;

th1:=30+td/3;

th2:=30+td/3;

vc:=5114/56*pout;

end;

end;

procedure TfMain.Button1Click(Sender: TObject);

begin

//

t:=0;

s1:=1500;s2:=s1*4;

pin:=22;pout:=56;

pg:=3;

mc:=500000;

td1:=50;td2:=50;td3:=50;td:=(td1+td2+td3)/3;

th1:=30;th2:=30;

tc:=80;

tp1:=40;tp2:=40;tp3:=40;tp4:=40;tp5:=40;tp6:=40;

pp1:=1;pp6:=1;pp2:=1;pp3:=1;pp4:=1;pp5:=1;

ng:=1;

ltd1.caption:=formatfloat('0.0',td1);

ltd2.caption:=formatfloat('0.0',td2);

ltd3.caption:=formatfloat('0.0',td3);

ltp1.caption:=formatfloat('0.0',tp1);

ltp2.caption:=formatfloat('0.0',tp2);

ltp3.caption:=formatfloat('0.0',tp3);

ltp4.caption:=formatfloat('0.0',tp4);

ltp5.caption:=formatfloat('0.0',tp5);

ltp6.caption:=formatfloat('0.0',tp6);

lpp1.caption:=formatfloat('0.0',pp1);

lpp2.caption:=formatfloat('0.0',pp2);

lpp3.caption:=formatfloat('0.0',pp3);

lpp4.caption:=formatfloat('0.0',pp4);

lpp5.caption:=formatfloat('0.0',pp5);

lpp6.caption:=formatfloat('0.0',pp6);

lth1.caption:=formatfloat('0.0',th1);

lth2.caption:=formatfloat('0.0',th2);

ls1.caption:=formatfloat('0',trunc(s1));

ls2.caption:=formatfloat('0',trunc(s2));

lpg.caption:=formatfloat('0.0',pg);

lmc.caption:=formatfloat('0',mc);

lpg.caption:=formatfloat('0.0',pg);

lpout.caption:=formatfloat('0.0',pout);

lpin.caption:=formatfloat('0.0',pin);

ltc.caption:=floattostr(trunc(tc));

lvc.caption:=floattostr(trunc(vc));

if not(bb.Caption='Старт') then

begin

bb.Caption:='Старт';

tt.Enabled:=false;

n4.Caption:='Старт';

animate1.Active:=false;

animate2.Active:=false;

animate3.Active:=false;

animate4.Active:=false;

animate5.Active:=false;

animate6.Active:=false;

end

end;

procedure TfMain.FormShow(Sender: TObject);

begin

t:=0;

if dm.a2006.RecordCount>0 then

begin

dm.a2006.Last;

s1:=dm.a2006s1.AsFloat;s2:=s1*4;

pin:=dm.a2006pin.AsFloat;pout:=dm.a2006pout.AsFloat;

pg:=dm.a2006pg.AsFloat;

mc:=dm.a2006mc.AsFloat;

td1:=dm.a2006td1.AsFloat;td2:=dm.a2006td2.AsFloat;td3:=dm.a2006td3.AsFloat;td:=(td1+td2+td3)/3;

th1:=dm.a2006th1.AsFloat;th2:=dm.a2006th2.AsFloat;

tc:=dm.a2006tc.AsFloat;

tp1:=dm.a2006tp1.AsFloat;tp2:=dm.a2006tp2.AsFloat;tp3:=dm.a2006tp3.AsFloat;

tp4:=dm.a2006tp4.AsFloat;tp5:=dm.a2006tp5.AsFloat;tp6:=dm.a2006tp6.AsFloat;

pp1:=dm.a2006pp1.AsFloat;pp2:=dm.a2006pp2.AsFloat;pp3:=dm.a2006pp3.AsFloat;

pp4:=dm.a2006pp4.AsFloat;pp5:=dm.a2006pp5.AsFloat;pp6:=dm.a2006pp6.AsFloat;

ng:=1;

end else

begin

s1:=1500;s2:=s1*4;

pin:=22;pout:=56;

pg:=3;

mc:=500000;

td1:=50;td2:=50;td3:=50;td:=(td1+td2+td3)/3;

th1:=30;th2:=30;

tc:=80;

tp1:=30;tp2:=30;tp3:=30;tp4:=30;tp5:=30;tp6:=30;

pp1:=1;pp6:=1;pp2:=1;pp3:=1;pp4:=1;pp5:=1;

ng:=1;

end;

ltd1.caption:=formatfloat('0.0',td1);

ltd2.caption:=formatfloat('0.0',td2);

ltd3.caption:=formatfloat('0.0',td3);

ltp1.caption:=formatfloat('0.0',tp1);

ltp2.caption:=formatfloat('0.0',tp2);

ltp3.caption:=formatfloat('0.0',tp3);

ltp4.caption:=formatfloat('0.0',tp4);

ltp5.caption:=formatfloat('0.0',tp5);

ltp6.caption:=formatfloat('0.0',tp6);

lpp1.caption:=formatfloat('0.0',pp1);

lpp2.caption:=formatfloat('0.0',pp2);

lpp3.caption:=formatfloat('0.0',pp3);

lpp4.caption:=formatfloat('0.0',pp4);

lpp5.caption:=formatfloat('0.0',pp5);

lpp6.caption:=formatfloat('0.0',pp6);

lth1.caption:=formatfloat('0.0',th1);

lth2.caption:=formatfloat('0.0',th2);

ls1.caption:=formatfloat('0',trunc(s1));

ls2.caption:=formatfloat('0',trunc(s2));

lpg.caption:=formatfloat('0.0',pg);

lmc.caption:=formatfloat('0',mc);

lpg.caption:=formatfloat('0.0',pg);

lpout.caption:=formatfloat('0.0',pout);

lpin.caption:=formatfloat('0.0',pin);

ltc.caption:=floattostr(trunc(tc));

lvc.caption:=floattostr(trunc(vc));

bevel1.Hint:=dm.aCompnamecomp.AsString+^M+'Текущие значения: '+^M+' Входное давление: '+inttostr(trunc(pin))+' бар'+^M+

' Выходное давление: '+inttostr(trunc(pout))+' бар'+^M+' Поток: '+inttostr(trunc(vc))+' м3/ч'+^M+

'Значения по умолчанию: '+^M+' Входное давление: '+dm.aCompsuctpress.AsString+' бар'+^M+

' Выходное давление: '+dm.aCompdishpress.AsString+' бар'+^M+' Поток: '+dm.aCompflow.AsString+' м3/ч';

bevel2.Hint:=dm.aMotornamemotor.AsString+^M+'Текущее значение скорости: '+inttostr(trunc(s1))+' об/м'+^M+

'Номинальная скорость 1500 об/м'+^M+'Мощность: 5400 кВт';

bevel3.Hint:=dm.aDegaznametank.AsString+^M+'Размеры: d'+dm.aDegazdimensionD.AsString+

'*'+dm.aDegazdimensionL.AsString+' мм'+^M+'Объем: '+dm.aDegazvolume.AsString+' м3'+^M+

'Рачитан: '+dm.aDegazdesignP.AsString+' бар'+^M+'Текущее значение: '+inttostr(trunc(pg))+' бар';

bevel4.Hint:=dm.aOilTanknameTank.AsString+^M+'Размеры: d'+dm.aoiltankdimensionD.AsString+

'*'+dm.aoiltankdimensionL.AsString+' мм'+^M+'Объем: '+dm.aoiltankvolume.AsString+' м3'+^M+

'Рачитан: '+dm.aOilTankdesignP.AsString+' атм, '+dm.aOilTankdesignT.AsString+'* С';

wrk:=1;

end;

procedure TfMain.N2Click(Sender: TObject);

begin

close

end;

procedure TfMain.N4Click(Sender: TObject);

begin

bbClick(nil);

end;

procedure TfMain.N8Click(Sender: TObject);

var XLApp,Sheet:Variant;

y:integer;

begin

//excel

dm.asql.Filtered:=false;

dm.asql.Active:=false;

dm.asql.SQL.Clear;

dm.asql.SQL.Add('select * from t2006 where t2006.time>date()');

dm.asql.Active:=true;

dm.asql.Filter:=format('time>=''%s'' and time<=''%s''',[datetimetostr(now-2*0.0417),datetimetostr(now)]);

dm.asql.Filtered:=true;

dm.asql.First;

XLApp:= CreateOleObject('Excel.Application');

XLApp.Visible:=true;

xlapp.workbooks.open(ExtractFilePath(ParamStr(0))+'\t2006.xls');

Sheet:=XLApp.Workbooks[1].WorkSheets['t2006'];

y:=1;

repeat

inc(y);

sheet.cells[y,1].value:=TimetoStr(dm.asqltime.AsDateTime);

sheet.cells[y,2].value:=dm.asqlpin.AsFloat;

sheet.cells[y,3].value:=dm.asqlpout.AsFloat;

sheet.cells[y,4].value:=dm.asqlpg.AsFloat;

sheet.cells[y,5].value:=dm.asqltd1.AsFloat;

sheet.cells[y,6].value:=dm.asqltd2.AsFloat;

sheet.cells[y,7].value:=dm.asqltd3.AsFloat;

sheet.cells[y,8].value:=dm.asqlth1.AsFloat;

sheet.cells[y,9].value:=dm.asqlth2.AsFloat;

sheet.cells[y,10].value:=dm.asqltp1.AsFloat;

sheet.cells[y,11].value:=dm.asqltp2.AsFloat;

sheet.cells[y,12].value:=dm.asqltp3.AsFloat;

sheet.cells[y,13].value:=dm.asqltp4.AsFloat;

sheet.cells[y,14].value:=dm.asqltp5.AsFloat;

sheet.cells[y,15].value:=dm.asqltp6.AsFloat;

sheet.cells[y,16].value:=dm.asqlpp1.AsFloat;

sheet.cells[y,17].value:=dm.asqlpp2.AsFloat;

sheet.cells[y,18].value:=dm.asqlpp3.AsFloat;

sheet.cells[y,19].value:=dm.asqlpp4.AsFloat;

sheet.cells[y,20].value:=dm.asqlpp5.AsFloat;

sheet.cells[y,21].value:=dm.asqlpp6.AsFloat;

sheet.cells[y,22].value:=dm.asqls1.AsFloat;

sheet.cells[y,23].value:=dm.asqls2.AsFloat;

sheet.cells[y,24].value:=dm.asqlmc.AsFloat;

sheet.cells[y,25].value:=dm.asqltc.AsFloat;

sheet.cells[y,26].value:=dm.asqlvc.AsFloat;

dm.asql.Next;

until dm.asql.Eof;

XLapp.WorkBooks[1].WorkSheets[1].Range[Sheet.Cells[1,1],Sheet.Cells[y,4]].select;

xlapp.Charts.Add;

xlapp.charts[1].type:=4;

end;

procedure TfMain.N12Click(Sender: TObject);

begin

showmessage('Сделано на Delphi 7.0 '+^M+'в 2007 году');

end;

procedure TfMain.N6Click(Sender: TObject);

begin

FormShow(nil);

end;

procedure TfMain.N10Click(Sender: TObject);

begin

windows.WinExec(PChar('hh help.chm'),SW_SHOWNORMAL)

end;

end.

Дата модуль

Код модуля

unit uDM;

interface

uses

SysUtils, Classes, DB, ADODB;

type

Tdm = class(TDataModule)

adoc: TADOConnection;

a2006: TADOTable;

a2006time: TDateTimeField;

a2006td1: TFloatField;

a2006td2: TFloatField;

a2006td3: TFloatField;

a2006tp1: TFloatField;

a2006tp2: TFloatField;

a2006tp3: TFloatField;

a2006tp4: TFloatField;

a2006tp5: TFloatField;

a2006tp6: TFloatField;

a2006pp1: TFloatField;

a2006pp2: TFloatField;

a2006pp3: TFloatField;

a2006pp4: TFloatField;

a2006pp5: TFloatField;

a2006pp6: TFloatField;

a2006th1: TFloatField;

a2006th2: TFloatField;

a2006s1: TFloatField;

a2006s2: TFloatField;

a2006pg: TFloatField;

a2006mc: TFloatField;

a2006pin: TFloatField;

a2006pout: TFloatField;

a2006tc: TFloatField;

a2006vc: TFloatField;

aComp: TADOTable;

aDegaz: TADOTable;

aMotor: TADOTable;

aOilTank: TADOTable;

aCompnamecomp: TWideStringField;

aCompsuctpress: TFloatField;

aCompdishpress: TFloatField;

aCompflow: TFloatField;

aDegaznametank: TWideStringField;

aDegazdimensionD: TFloatField;

aDegazdimensionL: TFloatField;

aDegazdesignP: TFloatField;

aDegazdesignT: TFloatField;

aDegazvolume: TFloatField;

aMotornamemotor: TWideStringField;

aMotordefaultspeed: TFloatField;

aMotordefaultpower: TFloatField;

aOilTanknameTank: TWideStringField;

aOilTankdimensionD: TFloatField;

aOilTankdimensionL: TFloatField;

aOilTankdesignP: TFloatField;

aOilTankdesignT: TFloatField;

aOilTankvolume: TFloatField;

procedure DataModuleCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

dm: Tdm;

implementation

{$R *.dfm}

procedure Tdm.DataModuleCreate(Sender: TObject);

begin

adoc.Connected:=true;

a2006.Active:=true;

aComp.Active:=true;

aDegaz.Active:=true;

aMotor.Active:=true;

aOilTank.Active:=true;

end;

end.

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

...

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

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