Разработка системы управления предприятием
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
,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;.