Компьютеризация процесса производства хлеба
Разработка базы данных хранения значений технологических параметров с системой управления, графическое отображение значений технологических параметров. Синтез цифровой комбинированной системы регулирования. Расчет оптимальных настроек регулятора.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 13.10.2012 |
Размер файла | 1,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Задание на курсовой проект
Разработать визуализацию процесса производства хлеба. Отразить текущее численное значение технологических параметров.
Разработать базу данных хранения значений технологических параметров с системой управления базой данных с отображением графического изменение значений технологических параметров.
Рассчитать комбинированную систему регулирования расхода воды(в качестве управляющего воздействия давление воды в трубопроводе):
Произвести идентификацию каналов по управлению и возмущению по имеющимся экспериментальным кривым разгона методом наименьших квадратов:
Произвести оптимизацию настроек регулятора по каналу управления в составе одноконтурной схемы (выбрать из ПИ, ПД регуляторов);
Расчет цифрового компенсатора в комбинированной системе из условия инвариантности;
Провести анализ полученной системы регулирования.
Содержание
Введение
1. Технология производства хлеба
2. Описание визуализации
3. Описание базы данных технологических параметров
4. Синтез цифровой комбинированной системы регулирования
4.1 Описание объекта управления
4.2 Идентификация объекта управления
4.3 Расчет оптимальных настроек регулятора
4.4 Расчет цифрового компенсатора
5. Анализ АСР
Приложение
база данное цифровое регулирование
Введение
В России хлеба потребляют традиционно много - в среднем до 330 г в сутки. В периоды экономической нестабильности потребление хлеба неизбежно возрастает, так как хлеб относится к наиболее дешевым продуктам питания. В хлебе содержатся многие важнейшие пищевые вещества, необходимые человеку; среди них белки, углеводы, витамины, минеральные вещества, пищевые волокна. За счет потребления хлеба человек почти наполовину удовлетворяет свою потребность в углеводах, на треть - в белках, более чем наполовину - в витаминах группы В, солях фосфора и железа. Хлеб из пшеничной обойной или ржаной муки почти полностью удовлетворяет потребность в пищевых волокнах. Усвояемость хлеба в значительной мере связана с его органолептическими показателями, в первую очередь такими, как вкус, аромат, разрыхленность мякиша, которые формируют понятие качества хлеба. Качество хлеба обусловлено составом и свойствами компонентов, входящих в его состав, а также процессами, протекающими в тесте при его созревании и выпечке тестовых заготовок.
Современное хлебопекарное производство характеризуется высоким уровнем механизации и автоматизации технологических процессов производства хлеба, внедрением новых технологий и постоянным расширением ассортимента хлебобулочных изделий, а также широким внедрением предприятий малой мощности различных форм собственности. Все это требует от работников отрасли высокой профессиональной подготовки, знания технологии и умения выполнять технологические операции по приготовлению пшеничного и ржаного теста, по разделке и выпечке различных видов изделий.
1. Технология производства хлеба
В необходимых пропорциях добавляются вода, дрожжи и мука в тестомесильную машину. После перемешивания, закваска отправляется в первый тестоприготовительный аппарат. Необходимое количество времени закваска выдерживается в тестоприготовительном агрегате. Две части закваски проходят дальше по линии, одна часть закваски возвращается на начальную стадию и используется вместо дрожжей. После приготовления закваски к ней добавляются солевой раствор, пищевые добавки мука и другие необходимые компоненты. Полученное тесто выдерживается во втором тестоприготовительном агрегате. Далее тесто делится и направляется в печь.
2. Описание визуализации
Для наглядного отображения технологического процесса средствами среды Borland Delphi 7.0 была разработана следующая технологическая схема:
На ней изображены основные технологические аппараты и материальные, энергетические потоки. На схеме представлены:
Терморегулятор дилатометрического типа;
Дозатор весового типа для жидких компонентов;
Тестомесильная машина А2-ХТМ с планетарным движением рабочего органа;
Зеленое мигание обозначает поступление компонента из одного аппарата в другой.
Рядом с соответствующими аппаратами расположены поля ввода, где отображается текущее значение технологического параметра.
3. Описание базы данных технологических параметров
Для хранения и просмотра значений технологических параметров была разработана база данных, состоящая из таблицы баз данных Paradox7. Она хранится на жестком диске в файле mybd.db в той же папке, где хранится программа.
Структура таблицы имеет вид:
Таблица разработана средствами Database Desktop, где ее структура имеет вид:
Базу данных текущих значений и графики по расходу воды и давлению воды можно просмотреть на вкладке «Показания датчиков»:
4. Синтез цифровой комбинированной системы регулирования
4.1 Описание объекта управления
В качестве объекта управления выберем давление воды в трубопроводе. Для того, чтобы обеспечить оптимальное давление при выводе системы на новое заданное значение или функционировании системы в стабильном режиме, необходимо скомпенсировать колебания расхода воды, изменяя давление воды.
Для синтеза системы управления разработана комбинированная система регулирования вида:
где yz - заданное значение параметра;
ys - выход системы регулирования, полученное значение параметра;
Wof, Wop - передаточные функции объекта по каналу возмущения и по каналу управления, соответственно;
Uk, Up - выход компенсатора и регулятора, соответственно;
Us - суммарное управляющее воздействие регулятора и компенсатора;
f - измеряемое возмущение, действующее на систему.
4.2 Идентификация объекта управления
Синтез объекта управления по каналу возмущения и по каналу управления произведем по имеющимся экспериментальным кривым разгона с помощью метода наименьших квадратов. Каждую кривую идентифицируем конечно разностным уравнением первого и второго порядка и выберем лучшее уравнение по критерию Фишера.
Произведем идентификацию технологического объекта с помощью конечно-разностного уравнения первого порядка: при следующих начальных условиях: , , .
Произведем расчет коэффициентов этой модели исходя из условия:
,
Исходя из условия существования экстремума функции двух переменных, необходимым условием минимума является выполнение условий:
.
Таким образом, требуется решить систему уравнений:
Обозначим суммы соответствующими переменными:
, , ,
, , ,
и запишем систему уравнений в другом виде:
Для проверки адекватности модели при отсутствии параллельных опытов рассчитаем критерий Фишера сравнением остаточной дисперсии и дисперсии относительно среднего :
, где , ,
- среднее значение выхода объекта,
- значения отклика, рассчитанные по модели,
N = 300 - объем выборки,
l = 2 - число связей, наложенных на выборку, равное числу определенных коэффициентов в уравнении.
Если F больше некоторого критического (табличного) значения Fp, то модель близка к описанию объекта, т.е. она адекватна объекту:
, где - число степеней свободы для дисперсий и соответственно, p - уровень значимости.
р = 1%, => .
Произведем идентификацию технологического объекта с помощью конечно-разностного уравнения второго порядка: при следующих начальных условиях: , , , .
Произведем расчет коэффициентов этой модели исходя из условия:
,
Исходя из условия существования экстремума функции трех переменных, необходимым условием минимума является выполнение условий:
.
Таким образом, требуется решить систему уравнений:
Обозначим суммы соответствующими переменными:
, , , ,
, , , ,
, , , ,
и запишем систему уравнений в другом виде:
Для проверки адекватности модели при отсутствии параллельных опытов рассчитаем критерий Фишера сравнением остаточной дисперсии и дисперсии относительно среднего :
, где , ,
- среднее значение выхода объекта,
N = 300 - объем выборки,
l = 3 - число связей, наложенных на выборку, равное числу определенных коэффициентов в уравнении.
Если F больше некоторого критического (табличного) значения Fp, то модель близка к описанию объекта, т.е. она адекватна объекту:
, где р=1%, =>.
В результате идентификации получены следующие параметры модели:
По результатам идентификации оба канала лучше и описываются уравнениями второго порядка.
4.3 Расчет оптимальных настроек регулятора
Для синтеза цифровой системы регулирования необходимо выбрать регулятор и вычислить его оптимальные настройки для данных значений параметров объекта. Сделаем выбор между ПИ и ПД регулятором по критерию интегральной квадратичной ошибки.
Качество регулирования оценивают по реакции замкнутой системы на ступенчатое изменение задающего воздействия. Наиболее общим критерием качества регулирования является интегральная квадратичная ошибка:
. (1)
Рассмотрим алгоритм оптимизации настроек цифрового ПИ - регулятора для объекта второго порядка. Модель замкнутой цифровой АСР можно представить в виде системы уравнений:
(2)
Необходимым условием минимума критерия (1) является равенство нулю частных производных критерия по всем настройкам :
, (3)
где m = 2 - порядок цифрового регулятора.
Для оптимизации настроек q1,q2 цифрового ПИ - регулятора воспользуемся численным методом - градиентным методом с пошаговым поиском оптимума. Поиск оптимума производится в два этапа. На первом - находятся численные значения частных производных (3) по каждой настройке, которые определяют направление градиента в исходной точке (на j-том шаге приближения).
На втором этапе осуществляется шаг по каждой настройке в направлении, обратном направлению градиента:
, (4)
где j - номер текущей итерации приближения оптимуму;
- коэффициенты шага на j-той итерации приближения по каждой настройке;
- норма градиента: . (5)
При выполнении шага одновременно изменяются значения всех настроек, причем каждая из них получает приращение пропорционально соответствующей составляющей градиента.
Стратегия изменения коэффициента шага определяется в соответствии с правилом:
(6)
Момент окончания поиска оптимума определяется при выполнении условий: или , (7)
где - заданная точность вычисления точки экстремума.
Чтобы получить численные значения частных производных критерия, необходимо рассчитать переходной процесс (ПП) замкнутой ЦСР по уравнениям (2) при подаче единичного воздействия на вход системы. С помощью квазианалитических рекуррентных выражений находим частные производные:
(8)
Для расчета численных значений производных по системе (8) надо принять начальные условия:
(9)
Для ПД - регулятора справедливы все вышеприведенные формулы, кроме системы (2) и системы (8), которые примут вид:
(10) (11)
Выбор начальных значений настроек регуляторов осуществим в соответствии с системами (А) и (Б):
для ПИ- и ПД - регуляторов они будут одинаковы:
, например, .
Для оценки качества переходных процессов при использовании различных регуляторов рассчитаем следующие критерии:
Время регулирования: , где - номер такта, для которого выполняется проверяемое условие при изменении i от N до mc с шагом -1: .
Перерегулирование: , где А1 - максимальное отклонение выхода объекта от задания .
Коэффициент затухания: , где - второй максимум выхода объекта.
Статическая ошибка: , где - значение выхода объекта на N-м такте (установившееся значение).
4.4 Расчет цифрового компенсатора
Расчет цифрового компенсатора в комбинированной системе из условия инвариантности позволяет практически полностью компенсировать влияние возмущающего воздействия на управляемый параметр при точном описании динамики объекта.
Для этого нужно получить дискретные передаточные функции каналов объекта, а затем, используя условие инвариантности, вывести передаточную функцию компенсатора:
, (*)
где - дискретная передаточная функция возмущающего канала; - дискретная передаточная функция основного канала
Подставляя передаточные функции в формулу (*) получим уравнение цифрового компенсатора в операционном исчислении:
Для нашей системы:
5. Анализ АСР
После рассмотрения различных примеров функционирования системы регулирования можно сделать следующие выводы о ее функционировании:
Наличие компенсатора в системе делает кривую переходного процесса при расчете по заданию более гладкой и уменьшает интегральную квадратичную ошибку;
Наличие компенсатора в системе уменьшает амплитуду колебаний переходного процесса при расчете по возмущению в пять раз;
Время регулирования переходного процесса при расчете по заданию с компенсатором совпадает с временем регулирования при проведении оптимизации настроек данного регулятора.
Приложение
Листинг программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, Menus, OleCtrls, DB,
DBTables, Grids, DBGrids, StdCtrls, Mask, DBCtrls,Math, ComCtrls,
TeeProcs, TeEngine, Chart, Series;
const
exp1:array[1..57] of real=(0,0,0,0,0,0.05,0.08,0.1,0.12,0.15,0.2,0.25,0.27,0.3,0.35,0.4,0.45,0.5,0.6,0.65,0.75,0.8,0.89,0.95,1.05,1.15,1.23,1.32,1.4,1.51,1.62,1.75,1.9,2.05,2.2,2.37,2.55,2.8,3.1,3.37,3.68,3.95,4.25,4.45,4.77,4.81,4.93,4.98,5.05,5.08,5.13,5.15,5.19,5.2,5.22,5.23,5.23);
exp2:array[1..45] of real=(0,0,0,0,0,0,0,0,0.01,0.02,0.025,0.035,0.05,0.085,0.1,0.125,0.15,0.175,0.22,0.26,0.315,0.35,0.42,0.45,0.51,0.565,0.61,0.655,0.725,0.77,0.81,0.85,0.88,0.915,0.94,0.975,0.985,1.01,1.015,1.02,1.022,1.025,1.025,1.025,1.025);
NN = 300; du=5; dv=8;
type
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
TabSheet3: TTabSheet;
PageControl2: TPageControl;
TabSheet4: TTabSheet;
TabSheet5: TTabSheet;
TabSheet6: TTabSheet;
Label1: TLabel;
Label2: TLabel;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Chart1: TChart;
Series1: TLineSeries;
Series2: TLineSeries;
RadioButton5: TRadioButton;
RadioButton6: TRadioButton;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Label19: TLabel;
Chart2: TChart;
Series3: TLineSeries;
Label20: TLabel;
Button1: TButton;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
Label24: TLabel;
Label25: TLabel;
Label26: TLabel;
Timer1: TTimer;
Chart3: TChart;
Chart4: TChart;
Series4: TLineSeries;
Series5: TLineSeries;
DBGrid1: TDBGrid;
Image1: TImage;
Image2: TImage;
Image3: TImage;
Image4: TImage;
Label32: TLabel;
Label33: TLabel;
Label34: TLabel;
Label35: TLabel;
Shape1: TShape;
Shape2: TShape;
Shape3: TShape;
Shape4: TShape;
Shape5: TShape;
Shape6: TShape;
Label36: TLabel;
Label37: TLabel;
Label38: TLabel;
Label39: TLabel;
Label40: TLabel;
Label41: TLabel;
Button4: TButton;
Timer2: TTimer;
Timer4: TTimer;
Timer5: TTimer;
DBEdit1: TDBEdit;
DBEdit2: TDBEdit;
DBEdit3: TDBEdit;
DBEdit4: TDBEdit;
Label42: TLabel;
Table1: TTable;
DataSource1: TDataSource;
Table1Time: TTimeField;
Table1Fdrogy: TFloatField;
Table1Tvody: TFloatField;
Table1Pvody: TFloatField;
Table1Fvody: TFloatField;
Label27: TLabel;
Label43: TLabel;
Label44: TLabel;
Timer6: TTimer;
procedure RadioButton1Click(Sender: TObject);
procedure RadioButton2Click(Sender: TObject);
procedure RadioButton3Click(Sender: TObject);
procedure RadioButton4Click(Sender: TObject);
procedure RadioButton6Click(Sender: TObject);
procedure RadioButton5Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Timer4Timer(Sender: TObject);
procedure Timer5Timer(Sender: TObject);
procedure Timer6Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type mas=array[1..NN] of real;
var
Form1: TForm1;
Fu1,Fu2,Fv1,Fv2,Spi,Spd:real;
au11,bu1,au12,au22,bu2,av11,bv1,av12,av22,bv2,au1,au2,au3,bu,av1,av2,bv:real;
q0pi,q1pi,q2pi,q0pd,q1pd,q2pd,q0,q1,q2:real;
k1,k2,k3,k4,k5:real;
nu,nv,k,mc,m,dk:integer;
implementation
{$R *.dfm}
procedure TForm1.RadioButton1Click(Sender: TObject);
var n, i: integer;
y,Res,u:mas;
k11, k12, p1, k21, k22,p2,
ySr, Sy, Sost: real;
begin
Form1.Series1.Clear;
Form1.Series2.Clear;
n:= 1;
for i:=1 to n+du do y[i]:= 0;
for i:=n+du+1 to 57 do y[i]:=exp1[i-1];
for i:=58 to NN do y[i]:=5.23;
for i:=1 to n-1 do u[i]:=0;
for i:=n to NN do u[i]:=2.85;
k11:= 0; k12:= 0; p1:= 0;
k21:= 0; k22:= 0; p2:= 0;
for i:=(n+du+1) to NN do
begin
k11:= k11+y[i-1]*y[i-1];
k12:= k12+u[i-1-du]*y[i-1];
p1:= p1+y[i]*y[i-1];
k22:= k22+sqr(u[i-1-du]);
k21:= k21+y[i-1]*u[i-1-du];
p2:= p2+y[i]*u[i-1-du];
end;
au11:=(p1*k22-p2*k12)/(k11*k22-k21*k12);
bu1:= (k11*p2-p1*k21)/(k11*k22-k21*k12);
for i:= 1 to n+du do begin
Res[i]:= 0;
Form1.Series1.AddXY(i,y[i],'',clred);
Form1.Series2.AddXY(i,Res[i],'',clgreen);
end;
for i:= n+du+1 to NN do begin
Res[i]:= au11*Res[i-1]+bu1*u[i-1-du];
Form1.Series1.AddXY(i,y[i],'',clred);
Form1.Series2.AddXY(i,Res[i],'',clgreen);
end;
ySr:= 0;
for i:=n+du to NN do ySr:=ySr+Res[i];
ySr:= ySr/(NN-1);
Sy:= 0; Sost:= 0;
for i:=n+du to NN do
begin
Sy:=Sy+sqr(Res[i]-ySr);
Sost:=Sost+sqr(y[i]-Res[i]);
end;
Sy:= Sy/(NN-1); Sost:= Sost/(NN-3);
Fu1:= Sy/Sost;
Form1.Label4.Caption:='a1='+FloatToStrf(au11,ffgeneral,9,2);
Form1.Label5.Caption:='a2=0';
Form1.Label6.Caption:='b='+FloatToStrf(bu1,ffgeneral,9,2);
Form1.Label7.Caption:='F='+FloatToStrf(Fu1,ffgeneral,9,2);
end;
procedure TForm1.RadioButton2Click(Sender: TObject);
var n, i: integer;
y,Res,u:mas;
k11, k12,k13,p1,k21,k22,k23,p2,k31,k32,k33,p3,
ySr, Sy, Sost: real;
begin
Form1.Series1.Clear;
Form1.Series2.Clear;
n:=2;
for i:=1 to n+du do y[i]:= 0;
for i:=n+du+1 to 57 do y[i]:=exp1[i-2];
for i:=58 to NN do y[i]:=5.23;
for i:=1 to n-1 do u[i]:=0;
for i:=n to NN do u[i]:=2.85;
k11:= 0; k12:= 0; k13:= 0; p1:= 0;
k21:= 0; k22:= 0; k23:= 0; p2:= 0;
k31:= 0; k32:= 0; k33:= 0; p3:= 0;
for i:=(n+du+1) to NN do
begin
k11:= k11+y[i-1]*y[i-1];
k12:= k12+y[i-1]*y[i-2];
k13:= k13+u[i-1-du]*y[i-1];
p1:= p1+y[i]*y[i-1];
k22:= k22+sqr(y[i-2]);
k23:= k23+y[i-2]*u[i-1-du];
k33:= k33+sqr(u[i-1-du]);
p2:= p2+y[i]*y[i-2];
p3:= p3+y[i]*u[i-1-du];
end;
k21:= k12; k31:= k13; k32:= k23;
au12:=(p1*k22*k33-p1*k23*k32-p2*k12*k33+p2*k13*k32+p3*k12*k23-p3*k13*k22)/
(k11*k22*k33-k11*k23*k32-k21*k12*k33+k21*k13*k32+k31*k12*k23-k31*k13*k22);
au22:=(k11*p2*k33-k11*k23*p3-k21*p1*k33+k21*k13*p3+k31*p1*k23-k31*k13*p2)/
(k11*k22*k33-k11*k23*k32-k21*k12*k33+k21*k13*k32+k31*k12*k23-k31*k13*k22);
bu2:=(k11*k22*p3-k11*p2*k32-k21*k12*p3+k21*p1*k32+k31*k12*p2-k31*p1*k22)/
(k11*k22*k33-k11*k23*k32-k21*k12*k33+k21*k13*k32+k31*k12*k23-k31*k13*k22);
for i:= 1 to n+du do begin
Res[i]:= 0;
Form1.Series1.AddXY(i,y[i],'',clred);
Form1.Series2.AddXY(i,Res[i],'',clgreen);
end;
for i:= n+du+1 to NN do begin
Res[i]:= au12*Res[i-1]+au22*Res[i-2]+bu2*u[i-1-du];
Form1.Series1.AddXY(i,y[i],'',clred);
Form1.Series2.AddXY(i,Res[i],'',clgreen);
end;
ySr:=0;
for i:=n+du to NN do ySr:=ySr+Res[i];
ySr:= ySr/(NN-1);
Sy:= 0; Sost:= 0;
for i:=n+du to NN do
begin
Sy:=Sy+sqr(Res[i]-ySr);
Sost:=Sost+sqr(y[i]-Res[i]);
end;
Sy:= Sy/(NN-1); Sost:= Sost/(NN-4);
Fu2:= Sy/Sost;
if Fu1<Fu2 then begin au1:=au12;au2:=au22;bu:=bu2;nu:=2;end
else begin au1:=au11;au2:=0;bu:=bu1;nu:=1;end;
Form1.Label4.Caption:='a1='+FloatToStrf(au12,ffgeneral,9,2);
Form1.Label5.Caption:='a2='+FloatToStrf(au22,ffgeneral,9,2);
Form1.Label6.Caption:='b='+FloatToStrf(bu2,ffgeneral,9,2);
Form1.Label7.Caption:='F='+FloatToStrf(Fu2,ffgeneral,9,2);
end;
procedure TForm1.RadioButton3Click(Sender: TObject);
var n, i: integer;
y,Res,u:mas;
k11, k12, p1, k21, k22,p2,
ySr, Sy, Sost: real;
begin
Form1.Series1.Clear;
Form1.Series2.Clear;
n:=1;
for i:=1 to n+dv do y[i]:= 0;
for i:=n+dv+1 to 45 do y[i]:=exp2[i-1];
for i:=46 to NN do y[i]:=1.025;
for i:=1 to n-1 do u[i]:=0;
for i:=n to NN do u[i]:=-2;
k11:= 0; k12:= 0; p1:= 0;
k21:= 0; k22:= 0; p2:= 0;
for i:=(n+dv+1) to NN do
begin
k11:= k11+y[i-1]*y[i-1];
k12:= k12+u[i-1-dv]*y[i-1];
p1:= p1+y[i]*y[i-1];
k22:= k22+sqr(u[i-1-dv]);
k21:= k21+y[i-1]*u[i-1-dv];
p2:= p2+y[i]*u[i-1-dv];
end;
av11:=(p1*k22-p2*k12)/(k11*k22-k21*k12);
bv1:= (k11*p2-p1*k21)/(k11*k22-k21*k12);
for i:= 1 to n+dv do begin
Res[i]:= 0;
Form1.Series1.AddXY(i,y[i],'',clred);
Form1.Series2.AddXY(i,Res[i],'',clgreen);
end;
for i:= n+dv+1 to NN do begin
Res[i]:= av11*Res[i-1]+bv1*u[i-1-dv];
Form1.Series1.AddXY(i,y[i],'',clred);
Form1.Series2.AddXY(i,Res[i],'',clgreen);
end;
ySr:= 0;
for i:=n+dv to NN do ySr:=ySr+Res[i];
ySr:= ySr/(NN-1);
Sy:= 0; Sost:= 0;
for i:=n+dv to NN do
begin
Sy:=Sy+sqr(Res[i]-ySr);
Sost:=Sost+sqr(y[i]-Res[i]);
end;
Sy:= Sy/(NN-1); Sost:= Sost/(NN-3);
Fv1:= Sy/Sost;
Form1.Label4.Caption:='a1='+FloatToStrf(av11,ffgeneral,9,2);
Form1.Label5.Caption:='a2=0';
Form1.Label6.Caption:='b='+FloatToStrf(bv1,ffgeneral,9,2);
Form1.Label7.Caption:='F='+FloatToStrf(Fv1,ffgeneral,9,2);
end;
procedure TForm1.RadioButton4Click(Sender: TObject);
var n, i: integer;
y,Res,u:mas;
k11, k12,k13,p1,k21,k22,k23,p2,k31,k32,k33,p3,
ySr, Sy, Sost: real;
begin
Form1.Series1.Clear;
Form1.Series2.Clear;
n:=2;
for i:=1 to n+dv do y[i]:= 0;
for i:=n+dv+1 to 45 do y[i]:=exp2[i-2];
for i:=46 to NN do y[i]:=1.025;
for i:=1 to n-1 do u[i]:=0;
for i:=n to NN do u[i]:=-2;
k11:= 0; k12:= 0; k13:= 0; p1:= 0;
k21:= 0; k22:= 0; k23:= 0; p2:= 0;
k31:= 0; k32:= 0; k33:= 0; p3:= 0;
for i:=(n+dv+1) to NN do
begin
k11:= k11+y[i-1]*y[i-1];
k12:= k12+y[i-1]*y[i-2];
k13:= k13+u[i-1-dv]*y[i-1];
p1:= p1+y[i]*y[i-1];
k22:= k22+sqr(y[i-2]);
k23:= k23+y[i-2]*u[i-1-dv];
k33:= k33+sqr(u[i-1-dv]);
p2:= p2+y[i]*y[i-2];
p3:= p3+y[i]*u[i-1-dv];
end;
k21:= k12; k31:= k13; k32:= k23;
av12:=(p1*k22*k33-p1*k23*k32-p2*k12*k33+p2*k13*k32+p3*k12*k23-p3*k13*k22)/
(k11*k22*k33-k11*k23*k32-k21*k12*k33+k21*k13*k32+k31*k12*k23-k31*k13*k22);
av22:=(k11*p2*k33-k11*k23*p3-k21*p1*k33+k21*k13*p3+k31*p1*k23-k31*k13*p2)/
(k11*k22*k33-k11*k23*k32-k21*k12*k33+k21*k13*k32+k31*k12*k23-k31*k13*k22);
bv2:=(k11*k22*p3-k11*p2*k32-k21*k12*p3+k21*p1*k32+k31*k12*p2-k31*p1*k22)/
(k11*k22*k33-k11*k23*k32-k21*k12*k33+k21*k13*k32+k31*k12*k23-k31*k13*k22);
for i:= 1 to n+dv do begin
Res[i]:= 0;
Form1.Series1.AddXY(i,y[i],'',clred);
Form1.Series2.AddXY(i,Res[i],'',clgreen);
end;
for i:= n+dv+1 to NN do begin
Res[i]:= av12*Res[i-1]+av22*Res[i-2]+bv2*u[i-1-dv];
Form1.Series1.AddXY(i,y[i],'',clred);
Form1.Series2.AddXY(i,Res[i],'',clgreen);
end;
ySr:=0;
for i:=n+dv to NN do ySr:=ySr+Res[i];
ySr:= ySr/(NN-1);
Sy:= 0; Sost:= 0;
for i:=n+dv to NN do
begin
Sy:=Sy+sqr(Res[i]-ySr);
Sost:=Sost+sqr(y[i]-Res[i]);
end;
Sy:= Sy/(NN-1); Sost:= Sost/(NN-4);
Fv2:= Sy/Sost;
if Fv1<Fv2 then begin av1:=av12;av2:=av22;bv:=bv2;nv:=2;end
else begin av1:=av11;av2:=0;bv:=bv1;nv:=1;end;
Form1.Label4.Caption:='a1='+FloatToStrf(av12,ffgeneral,9,2);
Form1.Label5.Caption:='a2='+FloatToStrf(av22,ffgeneral,9,2);
Form1.Label6.Caption:='b='+FloatToStrf(bv2,ffgeneral,9,2);
Form1.Label7.Caption:='F='+FloatToStrf(Fv2,ffgeneral,9,2);
end;
procedure TForm1.RadioButton6Click(Sender: TObject);
const eps = 0.001;
var i,Npp,m,i0,j: integer;
y,u,yz,dUq0,dUq1,dyq0,dyq1: Array[1..1000] of Extended;
H,q:array[0..1] of real;
norma,dSq0,dSq1,dSq0S,dSq1S: Extended;
tr,pm,fi,dl:real;
begin
Form1.Series3.Clear;
norma:= 0.01;
m:=2;
q[0]:=0.2; q[1]:=-0.3;
for i:= 1 to nu+du do y[i]:= 0;
for i:= 1 to nu-1 do u[i]:= 0;
for i:= nu to 1000 do u[i]:= 1;
y[nu+du+1]:= au1*y[nu+du]+au2*y[nu+du-1]+ bu*u[nu];
Npp:=nu+du+1;
while abs(y[Npp]-y[Npp-1])>0.001 do
begin
Npp:=Npp+1;
y[Npp]:=au1*y[Npp-1]+au2*y[Npp-2]+bu*u[Npp-1-du];
end;
Npp:=Npp+100;
if nu>m+1 then i0:=nu else i0:=m+1;
for i:= 1 to i0-1 do
begin
yz[i]:=0; u[i]:= 0;
dUq0[i]:=0; dUq1[i]:=0;
end;
for i:= 1 to i0+du do
begin
y[i]:=0;
dyq0[i]:=0; dyq1[i]:=0;
end;
for i:=i0 to Npp do yz[i]:=1;
j:= 1;
H[0]:= 0; H[1]:= 0;
while true do
begin
for i:= i0+du+1 to Npp do
begin
u[i-du-1]:= q[0]*(yz[i-du-1]-y[i-du-1])+q[1]*(yz[i-1-du-1]-y[i-1-du-1]);
y[i]:= au1*y[i-1]+au2*y[i-2]+bu*u[i-1-du];
end;
for i:=i0 to i0+du do begin
dUq0[i]:=yz[i]-y[i]-q[0]*dyq0[i]-q[1]*dyq0[i-1];
dUq1[i]:=-q[0]*dyq1[i]+yz[i-1]-y[i-1]-q[1]*dyq1[i-1];
end;
for i:=i0+du+1 to Npp do begin
dyq0[i]:=au1*dyq0[i-1]+au2*dyq0[i-2]+bu*dUq0[i-1-du];
dyq1[i]:=au1*dyq1[i-1]+au2*dyq1[i-2]+bu*dUq1[i-1-du];
dUq0[i]:=yz[i]-y[i]-q[0]*dyq0[i]-q[1]*dyq0[i-1];
dUq1[i]:=-q[0]*dyq1[i]+yz[i-1]-y[i-1]-q[1]*dyq1[i-1];
end;
dSq0:=0;dSq1:=0;
for i:=i0 to Npp do begin
dSq0:=dSq0+(yz[i]-y[i])*(-dyq0[i]);
dSq1:=dSq1+(yz[i]-y[i])*(-dyq1[i]);
end;
dSq0:=dSq0*2;dSq1:=dSq1*2;
norma:=sqrt(sqr(dSq0)+sqr(dSq1));
if norma<eps then break;
if j=1 then begin
H[0]:= 1/(m+1);
H[1]:= 1/(m+1); end
else begin
if dSq0*dSq0S>0 then H[0]:=2*H[0] else H[0]:= H[0]/3;
if dSq1*dSq1S>0 then H[1]:=2*H[1] else H[1]:= H[1]/3; end;
j:=j+1;
dSq0S:=dSq0; dSq1S:=dSq1;
q[0]:= q[0]-H[0]*dSq0/norma;
q[1]:= q[1]-H[1]*dSq1/norma;
end;
q0pd:=q[0];
q1pd:=q[1];
Spi:=0;
for i:=i0 to Npp do
Spd:=Spi+sqr(yz[i]-y[i]);
i:=Npp;
while abs((yz[i]-y[i])/yz[i])<0.05 do i:=i-1;
tr:=i+1;
i:=i0;
while y[i]>=y[i-1] do i:=i+1;
pm:=y[i-1]-yz[i-1];
while y[i]<=y[i-1] do i:=i+1;
while y[i]>=y[i-1] do i:=i+1;
fi:=(pm+1-y[i-1])/(pm+1)*100;
dl:=yz[Npp]-y[Npp];
Form1.Label16.Caption:=FloatToStrf(tr,ffgeneral,9,2);
Form1.Label17.Caption:=FloatToStrf(pm,ffgeneral,9,2);
Form1.Label18.Caption:=FloatToStrf(fi,ffgeneral,9,2);
Form1.Label19.Caption:=FloatToStrf(dl,ffgeneral,9,2);
for i:=1 to Npp do
begin
form1.Series3.AddXY(i,y[i],'',clred);
end;
Form1.Label8.Caption:='q0='+FloatToStrf(q0pd,ffgeneral,9,2);
Form1.Label9.Caption:='q1='+FloatToStrf(q1pd,ffgeneral,9,2);
Form1.Label15.Caption:=FloatToStrf(Spd,ffgeneral,9,2);
end;
procedure TForm1.RadioButton5Click(Sender: TObject);
const eps = 0.001;
var i,Npp,m,i0,j: integer;
y,u,yz,dUq0,dUq1,dyq0,dyq1: Array[1..1000] of Extended;
H,q:array[0..1] of real;
norma,dSq0,dSq1,dSq0S,dSq1S: Extended;
tr,pm,fi,dl:real;
begin
Form1.Series3.Clear;
norma:= 0.01;
m:=2;
q[0]:=0.2; q[1]:=-0.3;
for i:= 1 to nu+du do y[i]:= 0;
for i:= 1 to nu-1 do u[i]:= 0;
for i:= nu to 1000 do u[i]:= 1;
y[nu+du+1]:= au1*y[nu+du]+au2*y[nu+du-1]+ bu*u[nu];
Npp:=nu+du+1;
while abs(y[Npp]-y[Npp-1])>0.001 do
begin
Npp:=Npp+1;
y[Npp]:=au1*y[Npp-1]+au2*y[Npp-2]+bu*u[Npp-1-du];
end;
Npp:=Npp*2;
if nu>m+1 then i0:=nu else i0:=m+1;
for i:= 1 to i0-1 do
begin
yz[i]:=0; u[i]:= 0;
dUq0[i]:=0; dUq1[i]:=0;
end;
for i:= 1 to i0+du do
begin
y[i]:=0;
dyq0[i]:=0; dyq1[i]:=0;
end;
for i:=i0 to Npp do yz[i]:=1;
j:= 1;
H[0]:= 0; H[1]:= 0;
while true do
begin
for i:= i0+du+1 to Npp do
begin
u[i-du-1]:= u[i-1-du-1]+q[0]*(yz[i-du-1]-y[i-du-1])+q[1]*(yz[i-1-du-1]-y[i-1-du-1]);
y[i]:= au1*y[i-1]+au2*y[i-2]+bu*u[i-1-du];
end;
for i:=i0 to i0+du do begin
dUq0[i]:=dUq0[i-1]+yz[i]-y[i]-q[0]*dyq0[i]-q[1]*dyq0[i-1];
dUq1[i]:=dUq1[i-1]-q[0]*dyq1[i]+yz[i-1]-y[i-1]-q[1]*dyq1[i-1];
end;
for i:=i0+du+1 to Npp do begin
dyq0[i]:=au1*dyq0[i-1]+au2*dyq0[i-2]+bu*dUq0[i-1-du];
dyq1[i]:=au1*dyq1[i-1]+au2*dyq1[i-2]+bu*dUq1[i-1-du];
dUq0[i]:=dUq0[i-1]+yz[i]-y[i]-q[0]*dyq0[i]-q[1]*dyq0[i-1];
dUq1[i]:=dUq1[i-1]-q[0]*dyq1[i]+yz[i-1]-y[i-1]-q[1]*dyq1[i-1];
end;
dSq0:=0;dSq1:=0;
for i:=i0 to Npp do begin
dSq0:=dSq0+(yz[i]-y[i])*(-dyq0[i]);
dSq1:=dSq1+(yz[i]-y[i])*(-dyq1[i]);
end;
dSq0:=dSq0*2;dSq1:=dSq1*2;
norma:=sqrt(sqr(dSq0)+sqr(dSq1));
if norma<eps then break;
if j=1 then begin
H[0]:= 1/(m+1);
H[1]:= 1/(m+1); end
else begin
if dSq0*dSq0S>0 then H[0]:=2*H[0] else H[0]:= H[0]/3;
if dSq1*dSq1S>0 then H[1]:=2*H[1] else H[1]:= H[1]/3; end;
j:=j+1;
dSq0S:=dSq0; dSq1S:=dSq1;
q[0]:= q[0]-H[0]*dSq0/norma;
q[1]:= q[1]-H[1]*dSq1/norma;
end;
q0pi:=q[0];
q1pi:=q[1];
Spi:=0;
for i:=i0 to Npp do
Spi:=Spi+sqr(yz[i]-y[i]);
i:=Npp;
while abs((yz[i]-y[i])/yz[i])<0.05 do i:=i-1;
tr:=i+1;
i:=i0;
while y[i]>=y[i-1] do i:=i+1;
pm:=y[i-1]-yz[i-1];
while y[i]<=y[i-1] do i:=i+1;
while y[i]>=y[i-1] do i:=i+1;
fi:=(pm+1-y[i-1])/(pm+1)*100;
dl:=yz[Npp]-y[Npp];
Form1.Label16.Caption:=FloatToStrf(tr,ffgeneral,9,2);
Form1.Label17.Caption:=FloatToStrf(pm,ffgeneral,9,2);
Form1.Label18.Caption:=FloatToStrf(fi,ffgeneral,9,2);
Form1.Label19.Caption:=FloatToStrf(dl,ffgeneral,9,2);
for i:=1 to Npp do
begin
form1.Series3.AddXY(i,y[i],'',clred);
end;
Form1.Label8.Caption:='q0='+FloatToStrf(q0pi,ffgeneral,9,2);
Form1.Label9.Caption:='q1='+FloatToStrf(q1pi,ffgeneral,9,2);
Form1.Label15.Caption:=FloatToStrf(Spi,ffgeneral,9,2);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.Label26.Caption:='Ui = k1*U(i-1) + k2*U(i-2) + k3*f(i-dx+d) + k4*f(i-1-dx+d) + k5*f(i-2-dx+d)';
Form1.Label21.Caption:='k1 = '+FloatToStrf(k1,ffgeneral,7,2);
Form1.Label22.Caption:='k2 = '+FloatToStrf(k2,ffgeneral,7,2);
Form1.Label23.Caption:='k3 = '+FloatToStrf(k3,ffgeneral,7,2);
Form1.Label24.Caption:='k4 = '+FloatToStrf(k4,ffgeneral,7,2);
Form1.Label25.Caption:='k5 = '+FloatToStrf(k5,ffgeneral,7,2);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
au11:=0;bu1:=0;
au12:=0;au22:=0;bu2:=0;
av11:=0;bv1:=0;
av12:=0;av22:=0;bv2:=0;
Fu1:=0;Fu2:=0;
au1:=1.849951;
au2:=-0.8542294;
bu:=0.007966254;
av1:=1.747375;
av2:=-0.7589386;
bv:=-0.005997361;
k1:=av1;
k2:=av2;
k3:=-bv/bu;
k4:=au1*bv/bu;
k5:=au2*bv/bu;
q0:=1.66118007;
q1:=-1.63456743;
nu:=2;nv:=2;
dk:=dv-du;
m:=2;
Table1.DatabaseName:=ExpandFileName('');
Table1.Active:=true;
k:=1;
DataSource1.DataSet.Edit;
DataSource1.DataSet.ClearFields;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
Label42.Caption:= TimeToStr(Time);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
label27.Caption:='Начался процесс подачи воды';
label43.Caption:='Начался процесс подачи дрожжей';
timer4.Enabled:=true;
timer1.Enabled:=true;
mc:=0;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var Fdrogy,Tvody,Pvody,Fvody:real;
begin
Table1.Last;
Fdrogy:=1+random(100)/50;
Tvody:=25+random(100)/50;
Pvody:=65+random(100)/50;
Fvody:=32+random(100)/50;
Table1.Insert;
Table1Time.AsDateTime:=Time;
Table1Fdrogy.AsFloat:=Fdrogy;
Table1Tvody.AsFloat:=Tvody;
Table1Pvody.AsFloat:=Pvody;
Table1Fvody.AsFloat:=Fvody;
Table1.Post;
Chart3.BottomAxis.Maximum:=Table1.RecordCount-1;
Chart3.BottomAxis.Minimum:=Table1.RecordCount-1-200;
Chart4.BottomAxis.Maximum:=Table1.RecordCount-1;
Chart4.BottomAxis.Minimum:=Table1.RecordCount-1-200;
Series4.AddXY(Table1.RecordCount-1, Table1.Fields[3].AsFloat, '', clDefault);
Series5.AddXY(Table1.RecordCount-1, Table1.Fields[4].AsFloat, '', clDefault);
end;
procedure TForm1.Timer4Timer(Sender: TObject);
var i:integer;
begin
inc(mc);
if shape2.Brush.Color=clgreen then shape2.Brush.Color:=clwhite
else shape2.Brush.Color:=clgreen;
if shape1.Brush.Color=clgreen then shape1.Brush.Color:=clwhite
else shape1.Brush.Color:=clgreen ;
if shape3.Brush.Color=clgreen then shape3.Brush.Color:=clwhite
else shape3.Brush.Color:=clgreen;
if mc>=40 then begin
label27.Caption:='Процесс подачи воды завершен';
label43.Caption:='Процесс подачи дрожжей завершен';
timer4.Enabled:=false;
timer1.Enabled:=false;
timer5.Enabled:=true;
label44.Caption:='Начался процесс подачи закваски в тестомесильную машину';
end;
end;
procedure TForm1.Timer5Timer(Sender: TObject);
begin
inc(mc);
if shape4.Brush.Color=clgreen then shape4.Brush.Color:=clwhite
else shape4.Brush.Color:=clgreen;
if shape5.Brush.Color=clgreen then shape5.Brush.Color:=clwhite
else shape5.Brush.Color:=clgreen ;
if mc>=20 then begin
label44.Caption:='Процесс подачи закваски завершен';
timer5.Enabled:=false;
timer6.Enabled:=true;
mc:=0;
end;
end;
procedure TForm1.Timer6Timer(Sender: TObject);
begin
inc(mc);
if shape6.Brush.Color=clgreen then shape6.Brush.Color:=clwhite
else shape6.Brush.Color:=clgreen;
if mc>=20 then begin
label43.Caption:='Начался процесс подачи закваски далее на линию';
timer6.Enabled:=false;
mc:=0
end;
end;
en.
Размещено на www.allbest.ru
Подобные документы
Описание процесса нахождения оптимальных параметров ПИД регулятора. Овладение методами математического описания систем. Рассмотрение и применение методов синтеза непрерывных и дискретных систем автоматического управления с помощью MATLAB Simulink.
курсовая работа [1,7 M], добавлен 23.12.2015Определение кривой переходного процесса модели, идентификация объекта регулирования и определения его динамических параметров. Частотные характеристики объекта. Расчет настроек регулятора графоаналитическим методом, критерии оптимальности процесса.
курсовая работа [1,3 M], добавлен 09.08.2015Разработка структуры базы данных. Этапы разработки информационной системы. Моделирование сигналов в MatLab. Обмен данными в SQL-сервером. Генерация схемы базы данных для целевой СУБД. Редактирование параметров таблицы. Установка параметров генерации.
курсовая работа [5,3 M], добавлен 01.02.2013Анализ основных этапов решения задачи синтеза регуляторов в классе линейных стационарных систем. Нахождение оптимальных настроек регулятора и передаточной функции замкнутой системы. Изучение состава и структуры системы автоматизированного управления.
контрольная работа [3,0 M], добавлен 11.05.2012Структурная схема автоматической системы регулирования. Построение амплитудно-фазовой характеристики объекта по каналам регулирующего и возмущающего воздействия. Определение эффективной полосы пропускания частот и оптимальных настроек ПИД–регулятора.
курсовая работа [1,2 M], добавлен 20.08.2013Разработка алгоритма оптимизации коэффициентов дискретного регулятора с законом ПИД по минимуму интегрального квадратичного критерия. Расчёт оптимальных параметров регулятора на основе описанных алгоритмов. Анализ переходных процессов в замкнутой системе.
практическая работа [1,4 M], добавлен 25.12.2011Выбор параметров и структурой схемы. Программирование скрипта (m-файла) для задания исходных параметров. Расчет параметров регулятора, проектирование его S-функции. Программирование GUI-интерфейса: разработка внешнего вида и проектирование обработчиков.
курсовая работа [721,5 K], добавлен 18.05.2013Синтез цифровой системы управления с передаточной функцией. Структурная схема объекта регулирования с экстраполятором нулевого порядка. Преобразование дискретной передаточной функции относительно псевдочастоты. Оценка устойчивости синтезированной системы.
курсовая работа [499,9 K], добавлен 06.08.2013Получение дискретной передаточной функции и создание модели импульсной системы автоматического управления. Билинейное преобразование и определение граничного коэффициента. Влияние периода квантования. Синтез и анализ главных параметров регулятора.
курсовая работа [951,2 K], добавлен 11.06.2015Анализ ряда подходов к определению требований к обучающим системам, формулирование системы критериев их оценки. База данных для хранения и обработки параметров и подпараметров электронных учебников и результатов оценки тестируемых электронных учебников.
курсовая работа [1,5 M], добавлен 23.03.2012