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

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

,650025-2,5E-05-0,0003895,697160,01063395,70741-3065,707415,6529829,85,6499841,65E-050,00024795,697170,01046695,70789-3065,707895,65

 

 

 

Исходя из вида переходных процессов, определим показатели качества управления:

Статическая ошибка:

 

млн.р./мес.

 

Время управления:

 

8 мес.

 

Максимальное динамическое отклонение:

 

= 3,8 млн.р./мес.

 

Перерегулирование:

 

 

Степень затухания колебаний:

 

 

Модульная интегральная ошибка:

 

104,4

 

Вывод: переходные характеристики при управлении по отклонению с ограничениями практически не отличаются от таковых без ограничений. Единственное существенное отличие в сокращении времени управления до 8 мес.

3.3 Анализ чувствительности СУ к изменениям параметров модели объекта исследования

 

Для нестационарных условий производственных систем последним свойственно со временем изменять структуру или параметры, т.е. характеристики объекта плавают во времени, что приводит к изменению надежности и качества. Целью анализа чувствительности является показать влияние такого изменения на общие характеристики СУ.

Так для объекта с моделью:

 

 

все 3 характеристики , , могут изменяться во времени:

 

(, , )

 

По условию задачи свойства объекта могут изменяться в пределах , поэтому и параметры объекта могут плавать в диапазоне:

 

мес.

мес.

 

Порядок расчета чувствительности:

. Расчет влияния коэффициента передачи на надежность. Построим таблицу по полученным данным о запасе устойчивости по и .

 

-50%-25%+0%+25%+50%6,90%6,90%6,90%6,90%6,90%

2. Аналогично для .

 

-50%-25%0%+25%+50%2,00%4,00%6,90%7,00%7,10%

3. Аналогично для .

 

-50%-25%0%+25%+50,00%9,00%6,90%4,00%0,50%

4. По сводным таблицам построим графики чувствительности и к параметрам объекта.

 

 

. Выводы по анализу чувствительности:

Параметр имеет обратную зависимость с и не влияет на .

Параметр имеет прямую зависимость и с и с .

Параметр имеет обратную зависимость и с и с .

4. Программный модуль

 

.1 Листинг

 

unit Unit1;

interface, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Grids, Series;= class(TForm): TStringGrid;: TChart;: TButton;: TButton;: TButton;: TEdit;: TLabel;: TEdit;: TLabel;: TEdit;: TLabel;: TLineSeries;: TEdit;: TLabel;: TEdit;: TLabel;Button1Click(Sender: TObject);FormActivate(Sender: TObject);Button2Click(Sender: TObject);Button3Click(Sender: TObject);

{ Private declarations }

{ Public declarations };: TForm1;, cs: integer;,ynom,time: real;

{$R *.dfm}TForm1.Button1Click(Sender: TObject);;;TForm1.FormActivate(Sender: TObject);.StringGrid1.Cells[0,0]:=l;.StringGrid1.Cells[1,0]:=t;.StringGrid1.Cells[2,0]:=y(l);.StringGrid1.Cells[3,0]:=-0,99y(l-2);.StringGrid1.Cells[4,0]:=1,98y(l-1);.StringGrid1.Cells[5,0]:=0,00086V(l-5);.StringGrid1.Cells[6,0]:=V(l);.StringGrid1.Cells[7,0]:=y(l)результирующее;:=0.1;;TForm1.Button2Click(Sender: TObject);

//Переходная хар-ка.Series1.Clear;.StringGrid1.RowCount:=3;:=1;:=StrToInt(Form1.Edit4.Text);.StringGrid1.Cells[0,cs]:=0;.StringGrid1.Cells[1,cs]:=FloatToStr(dT*StrToFloat(Form1.StringGrid1.Cells[0,cs]));.StringGrid1.Cells[2,cs]:=Form1.Edit1.Text;.StringGrid1.Cells[3,cs]:=0;.StringGrid1.Cells[4,cs]:=0;.StringGrid1.Cells[5,cs]:=0;.StringGrid1.Cells[6,cs]:=0;.StringGrid1.Cells[7,cs]:=Form1.Edit2.Text;:=StrToFloat(Form1.Edit2.Text);.Series1.AddXY(0,ynom);:=cs+1; (cs<=steps) do

begin

//Увеличение кол-ва строк

Form1.StringGrid1.RowCount:=cs+1;

//Увеличение l.StringGrid1.Cells[0,cs]:=IntToStr(StrToInt(Form1.StringGrid1.Cells[0,cs-1])+1);

//Расчет t.StringGrid1.Cells[1,cs]:=FloatToStr(dT*StrToFloat(Form1.StringGrid1.Cells[0,cs]));

//Расчет -0,99y(l-2)cs<3 then.StringGrid1.Cells[3,cs]:=FloatToStr(-0.99*StrToFloat(Form1.StringGrid1.Cells[2,1])).StringGrid1.Cells[3,cs]:=FloatToStr(-0.99*StrToFloat(Form1.StringGrid1.Cells[2,cs-2]));

//Расчет 1,98y(l-1).StringGrid1.Cells[4,cs]:=FloatToStr(1.98*StrToFloat(Form1.StringGrid1.Cells[2,cs-1]));

//Расчет 0,00086V(l-5)cs<6 then.StringGrid1.Cells[5,cs]:=FloatToStr(0.00086*StrToFloat(Form1.StringGrid1.Cells[6,1])).StringGrid1.Cells[5,cs]:=FloatToStr(0.00086*StrToFloat(Form1.StringGrid1.Cells[6,cs-5]));

//Расчет V(l).StringGrid1.Cells[6,cs]:=Form1.Edit3.Text;

//Расчет y(l).StringGrid1.Cells[2,cs]:=FloatToStr(StrToFloat(Form1.StringGrid1.Cells[3,cs])+StrToFloat(Form1.StringGrid1.Cells[4,cs])+(Form1.StringGrid1.Cells[5,cs]));

//Расчет y(l)результирующее.StringGrid1.Cells[7,cs]:=FloatToStr(StrToFloat(Form1.StringGrid1.Cells[2,cs])+ynom);

//Внесение данных на график.Series1.AddXY(StrToFloat(Form1.StringGrid1.Cells[1,cs]),StrToFloat(Form1.StringGrid1.Cells[7,cs]));

//Следующий шаг

cs:=cs+1;

end;

end;TForm1.Button3Click(Sender: TObject);

//Импульсная хар-ка:=StrToFloat(Form1.Edit5.Text);.Series1.Clear;.StringGrid1.RowCount:=3;:=1;:=StrToInt(Form1.Edit4.Text);.StringGrid1.Cells[0,cs]:=0;.StringGrid1.Cells[1,cs]:=FloatToStr(dT*StrToFloat(Form1.StringGrid1.Cells[0,cs]));.StringGrid1.Cells[2,cs]:=Form1.Edit1.Text;.StringGrid1.Cells[3,cs]:=0;.StringGrid1.Cells[4,cs]:=0;.StringGrid1.Cells[5,cs]:=0;.StringGrid1.Cells[6,cs]:=0;.StringGrid1.Cells[7,cs]:=Form1.Edit2.Text;:=StrToFloat(Form1.Edit2.Text);.Series1.AddXY(0,ynom);:=cs+1; (cs<=steps) do

begin

//Увеличение кол-ва строк

Form1.StringGrid1.RowCount:=cs+1;

//Увеличение l.StringGrid1.Cells[0,cs]:=IntToStr(StrToInt(Form1.StringGrid1.Cells[0,cs-1])+1);

//Расчет t.StringGrid1.Cells[1,cs]:=FloatToStr(dT*StrToFloat(Form1.StringGrid1.Cells[0,cs]));

//Расчет -0,99y(l-2)cs<3 then.StringGrid1.Cells[3,cs]:=FloatToStr(-0.99*StrToFloat(Form1.StringGrid1.Cells[2,1])).StringGrid1.Cells[3,cs]:=FloatToStr(-0.99*StrToFloat(Form1.StringGrid1.Cells[2,cs-2]));

//Расчет 1,98y(l-1).StringGrid1.Cells[4,cs]:=FloatToStr(1.98*StrToFloat(Form1.StringGrid1.Cells[2,cs-1]));

//Расчет 0,00086V(l-5)cs<6 then.StringGrid1.Cells[5,cs]:=FloatToStr(0.00086*StrToFloat(Form1.StringGrid1.Cells[6,1])).StringGrid1.Cells[5,cs]:=FloatToStr(0.00086*StrToFloat(Form1.StringGrid1.Cells[6,cs-5]));

//Расчет V(l)StrToFloat(Form1.StringGrid1.Cells[1,cs])<=time then.StringGrid1.Cells[6,cs]:=Form1.Edit3.Text else.StringGrid1.Cells[6,cs]:=FloatToStr(0);

//Расчет y(l).StringGrid1.Cells[2,cs]:=FloatToStr(StrToFloat(Form1.StringGrid1.Cells[3,cs])+StrToFloat(Form1.StringGrid1.Cells[4,cs])+(Form1.StringGrid1.Cells[5,cs]));

//Расчет y(l)результирующее.StringGrid1.Cells[7,cs]:=FloatToStr(StrToFloat(Form1.StringGrid1.Cells[2,cs])+ynom);

//Внесение данных на график.Series1.AddXY(StrToFloat(Form1.StringGrid1.Cells[1,cs]),StrToFloat(Form1.StringGrid1.Cells[7,cs]));

//Следующий шаг

cs:=cs+1;

end;

end;.