Выбор методов и средств контроля системы управления компрессорной установкой

Цели производственного контроля изготовления молочных продуктов. Разработка системы управления компрессорной установкой в составе технологического процесса переработки молока на предприятии ТОО "Восток-Молоко". Программная реализация системы управления.

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

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

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

SaveVal (frmMain. ProgressCyl8. Tag, nMasTvor,1);

SaveVal (frmMain. ProgressCyl9. Tag, nMasOxl,1);

SaveVal (frmMain. ProgressCyl10. Tag, nMasRez,1);

frmMain. Label39. Caption: = 'T ';

frmMain. Label40. Caption: = 'P ';

setSlivAnimation (2);

end;

procedure TSliv. setProc;

var nRan, T1, P1: Integer;

begin

// если в ванне1 больше 3 - масса в ванне1 уменьшается на 3

if nMasVan1 > 3 then

begin

// по 1 кг закинем

if nMasTvor < nMaxTvor then

begin

nMasTvor: = nMasTvor + 1;

nMasVan1: = nMasVan1 - 1;

end;

if nMasRez < nMaxRez then

begin

nMasRez: = nMasRez + 1;

nMasVan1: = nMasVan1 - 1;

end;

if nMasOxl < nMaxOxl then

begin

nMasOxl: = nMasOxl + 1;

nMasVan1: = nMasVan1 - 1;

end;

end;

// если в ванне2 больше 2 - масса в ванне2 уменьшается на 2

if nMasVan2 > 2 then

begin

// по 1 кг закинем

if nMasSep < nMaxSep then

begin

nMasSep: = nMasSep + 1;

nMasVan2: = nMasVan2 - 1;

end;

if nMasVan3 < nMaxVan3 then

begin

nMasVan3: = nMasVan3 + 1;

nMasVan2: = nMasVan2 - 1;

end;

end;

if (nMasVan1<=3) and (nMasVan2<=2) then

begin

isSliv: = False;

setSlivAnimation (2);

end;

// параметры

T1: = getParVal (3);

P1: = getParVal (4);

frmMain. Label39. Caption: = 'T ' + IntToStr (T1);

frmMain. Label40. Caption: = 'P ' + IntToStr (P1);

frmMain. ProgressCyl3. Position: = nMasVan1;

frmMain. ProgressCyl4. Position: = nMasVan2;

frmMain. ProgressCyl5. Position: = nMasSep;

frmMain. Label28. Caption: = IntToStr (nMasSep) +' кг. ';

frmMain. ProgressCyl6. Position: = nMasVan3;

frmMain. Label29. Caption: = IntToStr (nMasVan3) +' кг. ';

frmMain. ProgressCyl8. Position: = nMasTvor;

frmMain. Label22. Caption: = IntToStr (nMasTvor) +' кг. ';

frmMain. ProgressCyl10. Position: = nMasRez;

frmMain. Label24. Caption: = IntToStr (nMasRez) +' кг. ';

frmMain. ProgressCyl9. Position: = nMasOxl;

frmMain. Label23. Caption: = IntToStr (nMasOxl) +' кг. ';

nRan: = frmMain. TrackBar4. Position * 100;

Sleep (nRan);

end;

end.

unit Vedom;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons, ComCtrls, ExtCtrls, DateUtils, ComObj;

type

TfrmVedom = class (TForm)

Bevel1: TBevel;

Label1: TLabel;

DateTimePicker1: TDateTimePicker;

BitBtn1: TBitBtn;

BitBtn2: TBitBtn;

procedure BitBtn2Click (Sender: TObject);

procedure BitBtn1Click (Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

frmVedom: TfrmVedom;

implementation

uses DM, Main, Util, DB;

{$R *. dfm}

procedure TfrmVedom. BitBtn2Click (Sender: TObject);

begin

Close;

end;

procedure TfrmVedom. BitBtn1Click (Sender: TObject);

var dDat: TDate;

i: Integer;

cDat, cDat1, cDat2, cSmena1, cSmena2: String;

oExcel: Variant;

begin

dDat: = DateTimePicker1. Date;

cDat1: = IntToStr (MonthOf (dDat)) +'/'+IntToStr (DayOf (dDat)) +'/'+IntToStr (YearOf (dDat)) + ' 00: 01: 00';

cDat2: = IntToStr (MonthOf (dDat)) +'/'+IntToStr (DayOf (dDat)) +'/'+IntToStr (YearOf (dDat)) + ' 23: 59: 59';

// узнать, работали ли смены в этот день

dt. qSmena. Close;

dt. qSmena. sql. Clear;

dt. qSmena. SQL. Add ('SELECT s_smena. nam, d_process. dtime, s_process. nam_process, s_bak. nam_bak, d_process. val');

dt. qSmena. SQL. Add ('FROM s_bak INNER JOIN (s_process INNER JOIN (s_smena INNER JOIN d_process ON s_smena. id_smena = d_process. id_smena) ');

dt. qSmena. SQL. Add ('ON s_process. id_process = d_process. id_process) ON s_bak. id_bak = d_process. id_bak');

dt. qSmena. SQL. Add ('WHERE d_process. dtime>=#'+cDat1+'# and dtime<=#'+cDat2+'# order by d_process. dtime');

dt. qSmena. Open;

if dt. qSmena. RecordCount = 0 then

begin

ShowMessage ('Пустая выборка. Данных за выбранный день нет. ');

Exit;

end;

// ************* EXCEL ************** //

if not CopyFile (PChar (gcExePath + 'Rep1. xls'), PChar (gcExePath+'Report1. xls'), False) then

begin

ShowMessage ('Ошибка копирования макета отчета. Продолжение невозможно. ');

Exit;

end;

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

oExcel. Application. Visible: = False;

oExcel. WorkBooks. Open (gcExePath+'Report1. xls');

oExcel. Range ['e1']. value: = DateToStr (dDat);

i: = 5;

cSmena2: = '';

while not dt. qSmena. Eof do

begin

cSmena1: = dt. qSmena. FieldByName ('nam'). AsString;

if cSmena1 <> cSmena2 then oExcel. Range ['A'+IntToStr (i)]. Value: = cSmena1;

oExcel. Range ['B'+IntToStr (i)]. Value: = dt. qSmena. FieldByName ('dtime'). AsString;

oExcel. Range ['C'+IntToStr (i)]. Value: = dt. qSmena. FieldByName ('nam_process'). AsString;

oExcel. Range ['D'+IntToStr (i)]. Value: = dt. qSmena. FieldByName ('nam_bak'). AsString;

oExcel. Range ['E'+IntToStr (i)]. Value: = dt. qSmena. FieldByName ('val'). AsString;

i: = i + 1;

cSmena2: = cSmena1;

dt. qSmena. Next;

end;

oExcel. Application. ActiveWorkbook. Save;

oExcel. Application. Visible: = True;

end;

end.

unit Stakan;

interface

uses

Classes;

type

TStakan = class (TThread)

private

{ Private declarations }

protected

procedure Execute; override;

procedure setProc;

end;

implementation

uses DM, Main, Util, SysUtils;

var nMassVann, nMassXol, nMaxXol: Integer;

{ TStakan }

procedure TStakan. Execute;

begin

// массы в ванне и сепараторе

nMassVann: = getValBak (frmMain. ProgressCyl6. Tag);

nMassXol: = getValBak (frmMain. ProgressCyl12. Tag);

nMaxXol: = getMaxValBak (frmMain. ProgressCyl12. Tag);

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

if (nMassVann=0) or (nMassXol>=nMaxXol) then

begin

frmMain. SpeedButton13. Enabled: = True;

frmMain. Animate15. Active: = false;

frmMain. Animate16. Visible: = false;

frmMain. Animate16. Active: = false;

frmMain. Animate17. Visible: = false;

frmMain. Animate17. Active: = false;

frmMain. Animate18. Visible: = false;

frmMain. Animate18. Active: = false;

isStakan: = False;

Exit;

end;

frmMain. Animate15. Active: = true;

frmMain. Animate16. Visible: = true;

frmMain. Animate16. Active: = true;

frmMain. Animate17. Visible: = true;

frmMain. Animate17. Active: = true;

frmMain. Animate18. Visible: = true;

frmMain. Animate18. Active: = true;

// продолжать загрузку пока не будет команды "СТОП"

while isStakan = True do

begin

Synchronize (setProc);

end;

// запись в остаток

SaveVal (frmMain. ProgressCyl6. Tag, nMassVann,2);

SaveVal (frmMain. ProgressCyl12. Tag, nMassXol,1);

frmMain. SpeedButton13. Enabled: = True;

frmMain. Animate15. Active: = false;

frmMain. Animate16. Visible: = false;

frmMain. Animate16. Active: = false;

frmMain. Animate17. Visible: = false;

frmMain. Animate17. Active: = false;

frmMain. Animate18. Visible: = false;

frmMain. Animate18. Active: = false;

end;

procedure TStakan. setProc;

begin

// масса на весах уменьшается

nMassVann: = nMassVann - 1;

// масса в ванне увеличивается

nMassXol: = nMassXol + 1;

// если в баке кончилось или на весах максимум, тогда стоп

if (nMassVann = 0) or (nMassXol>=nMaxXol) then

begin

isStakan: = False;

frmMain. Animate15. Active: = false;

frmMain. Animate16. Visible: = false;

frmMain. Animate16. Active: = false;

frmMain. Animate17. Visible: = false;

frmMain. Animate17. Active: = false;

frmMain. Animate18. Visible: = false;

frmMain. Animate18. Active: = false;

end;

frmMain. ProgressCyl6. Position: = nMassVann;

frmMain. Label29. Caption: = IntToStr (nMassVann) +' кг. ';

frmMain. ProgressCyl12. Position: = nMassXol;

frmMain. Label26. Caption: = IntToStr (nMassXol) +' кг. ';

Sleep (300);

end;

end.

unit Bak_Zagr;

interface

uses

Classes;

type

TBak_zagr = class (TThread)

private

{ Private declarations }

protected

procedure Execute; override;

procedure setProc;

end;

implementation

uses DM, Main, Util, SysUtils;

var nMass, nMax: Integer;

{ Bak_zagr }

procedure TBak_zagr. Execute;

// var nMass, nMax: Integer;

begin

// сколько в баке лежит, MAX

nMass: = getValBak (frmMain. ProgressCyl1. Tag);

nMax: = getMaxValBak (frmMain. ProgressCyl1. Tag);

// продолжать загрузку пока не будет команды "СТОП"

while (isBak_zagr = True) do

begin

Synchronize (setProc);

end;

// запись в остаток

SaveVal (frmMain. ProgressCyl1. Tag, nMass,1);

frmMain. SpeedButton1. Enabled: = True;

end;

procedure TBak_zagr. setProc;

begin

nMass: = nMass + 1;

// если в баке максимум, тогда стоп

if nMass >= nMax then

begin

isBak_zagr: = False;

nMass: = nMax;

end;

frmMain. ProgressCyl1. Position: = nMass;

frmMain. Label19. Caption: = IntToStr (nMass) +' кг. ';

Sleep (100);

frmMain. ProgressCyl1. Refresh;

end;

end.

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


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

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