Компьютеризация процесса производства хлеба
Задание на курсовой проект
Разработать визуализацию процесса производства
хлеба. Отразить текущее численное значение технологических параметров.
Разработать базу данных хранения значений
технологических параметров с системой управления базой данных с отображением
графического изменение значений технологических параметров.
Рассчитать комбинированную систему регулирования
расхода воды(в качестве управляющего воздействия давление воды в трубопроводе):
Произвести идентификацию каналов по управлению и
возмущению по имеющимся экспериментальным кривым разгона методом наименьших
квадратов:
Произвести оптимизацию настроек регулятора по
каналу управления в составе одноконтурной схемы (выбрать из ПИ, ПД
регуляторов);
Расчет цифрового компенсатора в комбинированной
системе из условия инвариантности;
Провести анализ полученной системы
регулирования.
Содержание
Введение
.
Технология производства хлеба
.
Описание визуализации
.
Описание базы данных технологических параметров
.
Синтез цифровой комбинированной системы регулирования
.1
Описание объекта управления
.2
Идентификация объекта управления
.3
Расчет оптимальных настроек регулятора
.4
Расчет цифрового компенсатора
.
Анализ АСР
Приложение
база данное цифровое регулирование
Введение
В России хлеба потребляют традиционно много - в
среднем до 330 г в сутки. В периоды экономической нестабильности потребление
хлеба неизбежно возрастает, так как хлеб относится к наиболее дешевым продуктам
питания. В хлебе содержатся многие важнейшие пищевые вещества, необходимые
человеку; среди них белки, углеводы, витамины, минеральные вещества, пищевые
волокна. За счет потребления хлеба человек почти наполовину удовлетворяет свою
потребность в углеводах, на треть - в белках, более чем наполовину - в
витаминах группы В, солях фосфора и железа. Хлеб из пшеничной обойной или
ржаной муки почти полностью удовлетворяет потребность в пищевых волокнах.
Усвояемость хлеба в значительной мере связана с его органолептическими
показателями, в первую очередь такими, как вкус, аромат, разрыхленность мякиша,
которые формируют понятие качества хлеба. Качество хлеба обусловлено составом и
свойствами компонентов, входящих в его состав, а также процессами, протекающими
в тесте при его созревании и выпечке тестовых заготовок.
Современное хлебопекарное производство характеризуется высоким уровнем
механизации и автоматизации технологических процессов производства хлеба,
внедрением новых технологий и постоянным расширением ассортимента хлебобулочных
изделий, а также широким внедрением предприятий малой мощности различных форм
собственности. Все это требует от работников отрасли высокой профессиональной
подготовки, знания технологии и умения выполнять технологические операции по
приготовлению пшеничного и ржаного теста, по разделке и выпечке различных видов
изделий.
1. Технология производства хлеба
В необходимых пропорциях добавляются вода,
дрожжи и мука в тестомесильную машину. После перемешивания, закваска
отправляется в первый тестоприготовительный аппарат. Необходимое количество
времени закваска выдерживается в тестоприготовительном агрегате. Две части
закваски проходят дальше по линии, одна часть закваски возвращается на
начальную стадию и используется вместо дрожжей. После приготовления закваски к
ней добавляются солевой раствор, пищевые добавки мука и другие необходимые
компоненты. Полученное тесто выдерживается во втором тестоприготовительном
агрегате. Далее тесто делится и направляется в печь.
2. Описание визуализации
Для наглядного отображения технологического процесса
средствами среды Borland Delphi 7.0 была разработана следующая технологическая
схема:
На ней изображены основные технологические
аппараты и материальные, энергетические потоки. На схеме представлены:
Терморегулятор дилатометрического типа;
Дозатор весового типа для жидких компонентов;
Тестомесильная машина А2-ХТМ с планетарным
движением рабочего органа;
Зеленое мигание обозначает поступление
компонента из одного аппарата в другой.
Рядом с соответствующими аппаратами расположены
поля ввода, где отображается текущее значение технологического параметра.
3. Описание базы данных технологических
параметров
Для хранения и просмотра значений
технологических параметров была разработана база данных, состоящая из таблицы
баз данных Paradox7. Она хранится на жестком диске в файле mybd.db в той же
папке, где хранится программа.
Структура таблицы имеет вид:
Таблица разработана средствами Database Desktop,
где ее структура имеет вид:
Базу данных текущих значений и графики по
расходу воды и давлению воды можно просмотреть на вкладке «Показания датчиков»:
4. Синтез цифровой комбинированной системы
регулирования
.1 Описание объекта управления
В качестве объекта управления выберем давление
воды в трубопроводе. Для того, чтобы обеспечить оптимальное давление при выводе
системы на новое заданное значение или функционировании системы в стабильном
режиме, необходимо скомпенсировать колебания расхода воды, изменяя давление
воды.
Для синтеза системы управления разработана
комбинированная система регулирования вида:
где yz - заданное значение параметра;- выход
системы регулирования, полученное значение параметра;, Wop - передаточные
функции объекта по каналу возмущения и по каналу управления, соответственно;,
Up - выход компенсатора и регулятора, соответственно;- суммарное управляющее
воздействие регулятора и компенсатора;- измеряемое возмущение, действующее на
систему.
.2 Идентификация объекта управления
Синтез объекта управления по каналу возмущения и
по каналу управления произведем по имеющимся экспериментальным кривым разгона с
помощью метода наименьших квадратов. Каждую кривую идентифицируем конечно
разностным уравнением первого и второго порядка и выберем лучшее уравнение по
критерию Фишера.
Произведем идентификацию
технологического объекта с помощью конечно-разностного уравнения первого
порядка: при
следующих начальных условиях: , , .
Произведем расчет коэффициентов этой
модели исходя из условия:
,
Исходя из условия существования
экстремума функции двух переменных, необходимым условием минимума является
выполнение условий:
.
Таким образом, требуется решить
систему уравнений:
Обозначим суммы соответствующими
переменными:
, , ,
, , ,
и запишем систему уравнений в другом
виде:
Для проверки адекватности модели при
отсутствии параллельных опытов рассчитаем критерий Фишера сравнением остаточной
дисперсии и дисперсии
относительно среднего :
, где , ,
- среднее значение выхода объекта,
- значения отклика, рассчитанные по
модели,= 300 - объем выборки,= 2 - число связей, наложенных на выборку, равное
числу определенных коэффициентов в уравнении.
Если F больше некоторого
критического (табличного) значения Fp, то модель близка к описанию объекта,
т.е. она адекватна объекту:
, где - число степеней свободы для
дисперсий и соответственно,
p - уровень значимости.
Произведем идентификацию
технологического объекта с помощью конечно-разностного уравнения второго
порядка: при
следующих начальных условиях: , , , .
Произведем расчет коэффициентов этой
модели исходя из условия:
,
Исходя из условия существования
экстремума функции трех переменных, необходимым условием минимума является
выполнение условий:
.
Таким образом, требуется решить
систему уравнений:
Обозначим суммы соответствующими
переменными:
, , , ,
, , , ,
, , , ,
и запишем систему уравнений в другом
виде:
Для проверки адекватности модели при
отсутствии параллельных опытов рассчитаем критерий Фишера сравнением остаточной
дисперсии и дисперсии
относительно среднего :
, где , ,
- среднее значение выхода объекта,
= 300 - объем выборки,= 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 Расчет цифрового компенсатора
Расчет цифрового компенсатора в
комбинированной системе из условия инвариантности позволяет практически
полностью компенсировать влияние возмущающего воздействия на управляемый
параметр при точном описании динамики объекта.
Для этого нужно получить дискретные
передаточные функции каналов объекта, а затем, используя условие
инвариантности, вывести передаточную функцию компенсатора:
, (*)
где - дискретная передаточная функция
возмущающего канала; - дискретная
передаточная функция основного канала
Для нашей системы:
5. Анализ АСР
После рассмотрения различных
примеров функционирования системы регулирования можно сделать следующие выводы
о ее функционировании:
Наличие компенсатора в системе
делает кривую переходного процесса при расчете по заданию более гладкой и
уменьшает интегральную квадратичную ошибку;
Наличие компенсатора в системе
уменьшает амплитуду колебаний переходного процесса при расчете по возмущению в
пять раз;
Время регулирования переходного
процесса при расчете по заданию с компенсатором совпадает с временем
регулирования при проведении оптимизации настроек данного регулятора.
Приложение
Листинг программы
Unit1;
interface,
Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, ExtCtrls,
Menus, OleCtrls, DB,, Grids, DBGrids, StdCtrls, Mask, DBCtrls,Math, ComCtrls,,
TeEngine, Chart, Series; :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);: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);=
300; du=5; dv=8;= class(TForm): TPageControl;: TTabSheet;: TTabSheet;:
TTabSheet;: TPageControl;: TTabSheet;: TTabSheet;: TTabSheet;: TLabel;:
TLabel;: TRadioButton;: TRadioButton;: TRadioButton;: TRadioButton;: TLabel;:
TLabel;: TLabel;: TLabel;: TLabel;: TChart;: TLineSeries;: TLineSeries;:
TRadioButton;: TRadioButton;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;:
TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;: TChart;:
TLineSeries;: TLabel;: TButton;: TLabel;: TLabel;: TLabel;: TLabel;: TLabel;:
TLabel;: TTimer;: TChart;: TChart;: TLineSeries;: TLineSeries;: TDBGrid;:
TImage;: TImage;: TImage;: TImage;: TLabel;: TLabel;: TLabel;: TLabel;:
TShape;: TShape;: TShape;: TShape;: TShape;: TShape;: TLabel;: TLabel;: TLabel;:
TLabel;: TLabel;: TLabel;: TButton;: TTimer;: TTimer;: TTimer;: TDBEdit;:
TDBEdit;: TDBEdit;: TDBEdit;: TLabel;: TTable;: TDataSource;Time:
TTimeField;Fdrogy: TFloatField;Tvody: TFloatField;Pvody: TFloatField;Fvody:
TFloatField;: TLabel;: TLabel;: TLabel;: TTimer;RadioButton1Click(Sender:
TObject);RadioButton2Click(Sender: TObject);RadioButton3Click(Sender:
TObject);RadioButton4Click(Sender: TObject);RadioButton6Click(Sender:
TObject);RadioButton5Click(Sender: TObject);Button1Click(Sender:
TObject);FormCreate(Sender: TObject);Timer1Timer(Sender:
TObject);Timer2Timer(Sender: TObject);Button4Click(Sender:
TObject);Timer4Timer(Sender: TObject);Timer5Timer(Sender:
TObject);Timer6Timer(Sender: TObject);
{ Private
declarations }
{ Public
declarations };mas=array[1..NN] of real;:
TForm1;,Fu2,Fv1,Fv2,Spi,Spd:real;,bu1,au12,au22,bu2,av11,bv1,av12,av22,bv2,au1,au2,au3,bu,av1,av2,bv:real;pi,q1pi,q2pi,q0pd,q1pd,q2pd,q0,q1,q2:real;,k2,k3,k4,k5:real;,nv,k,mc,m,dk:integer;
{$R *.dfm}TForm1.RadioButton1Click(Sender:
TObject);n, i: integer;,Res,u:mas;, k12, p1, k21, k22,p2,, Sy, Sost:
real;.Series1.Clear;.Series2.Clear;:= 1;i:=1 to n+du do y[i]:= 0;i:=n+du+1 to
57 do y[i]:=exp1[i-1];i:=58 to NN do y[i]:=5.23;i:=1 to n-1 do u[i]:=0;i:=n to
NN do u[i]:=2.85;:= 0; k12:= 0; p1:= 0;:= 0; k22:= 0; p2:= 0;i:=(n+du+1) to NN
do:= k11+y[i-1]*y[i-1];:= k12+u[i-1-du]*y[i-1];:= p1+y[i]*y[i-1];:=
k22+sqr(u[i-1-du]);:= k21+y[i-1]*u[i-1-du];:=
p2+y[i]*u[i-1-du];;:=(p1*k22-p2*k12)/(k11*k22-k21*k12);:= (k11*p2-p1*k21)/(k11*k22-k21*k12);i:=
1 to n+du do begin[i]:=
0;.Series1.AddXY(i,y[i],'',clred);.Series2.AddXY(i,Res[i],'',clgreen);;i:=
n+du+1 to NN do begin[i]:=
au11*Res[i-1]+bu1*u[i-1-du];.Series1.AddXY(i,y[i],'',clred);.Series2.AddXY(i,Res[i],'',clgreen);;:=
0;i:=n+du to NN do ySr:=ySr+Res[i];:= ySr/(NN-1);:= 0; Sost:= 0;i:=n+du to NN
do:=Sy+sqr(Res[i]-ySr);:=Sost+sqr(y[i]-Res[i]);;:= Sy/(NN-1); Sost:=
Sost/(NN-3);:=
Sy/Sost;.Label4.Caption:='a1='+FloatToStrf(au11,ffgeneral,9,2);.Label5.Caption:='a2=0';.Label6.Caption:='b='+FloatToStrf(bu1,ffgeneral,9,2);.Label7.Caption:='F='+FloatToStrf(Fu1,ffgeneral,9,2);;TForm1.RadioButton2Click(Sender:
TObject);n, i: integer;,Res,u:mas;, k12,k13,p1,k21,k22,k23,p2,k31,k32,k33,p3,,
Sy, Sost: real;.Series1.Clear;.Series2.Clear;:=2;i:=1 to n+du do y[i]:=
0;i:=n+du+1 to 57 do y[i]:=exp1[i-2];i:=58 to NN do y[i]:=5.23;i:=1 to n-1 do
u[i]:=0;i:=n to NN do u[i]:=2.85;:= 0; k12:= 0; k13:= 0; p1:= 0;:= 0; k22:= 0;
k23:= 0; p2:= 0;:= 0; k32:= 0; k33:= 0; p3:= 0;i:=(n+du+1) to NN do:=
k11+y[i-1]*y[i-1];:= k12+y[i-1]*y[i-2];:= k13+u[i-1-du]*y[i-1];:=
p1+y[i]*y[i-1];:= k22+sqr(y[i-2]);:= k23+y[i-2]*u[i-1-du];:=
k33+sqr(u[i-1-du]);:= p2+y[i]*y[i-2];:= p3+y[i]*u[i-1-du];;:= k12; k31:= k13;
k32:= k23;:=(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);:=(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);:=(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);i:=
1 to n+du do begin[i]:=
0;.Series1.AddXY(i,y[i],'',clred);.Series2.AddXY(i,Res[i],'',clgreen);;i:=
n+du+1 to NN do begin[i]:=
au12*Res[i-1]+au22*Res[i-2]+bu2*u[i-1-du];.Series1.AddXY(i,y[i],'',clred);.Series2.AddXY(i,Res[i],'',clgreen);;:=0;i:=n+du
to NN do ySr:=ySr+Res[i];:= ySr/(NN-1);:= 0; Sost:= 0;i:=n+du to NN
do:=Sy+sqr(Res[i]-ySr);:=Sost+sqr(y[i]-Res[i]);;:= Sy/(NN-1); Sost:=
Sost/(NN-4);:= Sy/Sost;Fu1<Fu2 then begin
au1:=au12;au2:=au22;bu:=bu2;nu:=2;endbegin
au1:=au11;au2:=0;bu:=bu1;nu:=1;end;.Label4.Caption:='a1='+FloatToStrf(au12,ffgeneral,9,2);.Label5.Caption:='a2='+FloatToStrf(au22,ffgeneral,9,2);.Label6.Caption:='b='+FloatToStrf(bu2,ffgeneral,9,2);.Label7.Caption:='F='+FloatToStrf(Fu2,ffgeneral,9,2);;TForm1.RadioButton3Click(Sender:
TObject);n, i: integer;,Res,u:mas;, k12, p1, k21, k22,p2,, Sy, Sost:
real;.Series1.Clear;.Series2.Clear;:=1;i:=1 to n+dv do y[i]:= 0;i:=n+dv+1 to 45
do y[i]:=exp2[i-1];i:=46 to NN do y[i]:=1.025;i:=1 to n-1 do u[i]:=0;i:=n to NN
do u[i]:=-2;:= 0; k12:= 0; p1:= 0;:= 0; k22:= 0; p2:= 0;i:=(n+dv+1) to NN do:=
k11+y[i-1]*y[i-1];:= k12+u[i-1-dv]*y[i-1];:= p1+y[i]*y[i-1];:= k22+sqr(u[i-1-dv]);:=
k21+y[i-1]*u[i-1-dv];:=
p2+y[i]*u[i-1-dv];;:=(p1*k22-p2*k12)/(k11*k22-k21*k12);:=
(k11*p2-p1*k21)/(k11*k22-k21*k12);i:= 1 to n+dv do begin[i]:=
0;.Series1.AddXY(i,y[i],'',clred);.Series2.AddXY(i,Res[i],'',clgreen);;i:=
n+dv+1 to NN do begin[i]:=
av11*Res[i-1]+bv1*u[i-1-dv];.Series1.AddXY(i,y[i],'',clred);.Series2.AddXY(i,Res[i],'',clgreen);;:=
0;i:=n+dv to NN do ySr:=ySr+Res[i];:= ySr/(NN-1);:= 0; Sost:= 0;i:=n+dv to NN
do:=Sy+sqr(Res[i]-ySr);:=Sost+sqr(y[i]-Res[i]);;:= Sy/(NN-1); Sost:= Sost/(NN-3);:=
Sy/Sost;.Label4.Caption:='a1='+FloatToStrf(av11,ffgeneral,9,2);.Label5.Caption:='a2=0';.Label6.Caption:='b='+FloatToStrf(bv1,ffgeneral,9,2);.Label7.Caption:='F='+FloatToStrf(Fv1,ffgeneral,9,2);;TForm1.RadioButton4Click(Sender:
TObject);n, i: integer;,Res,u:mas;, k12,k13,p1,k21,k22,k23,p2,k31,k32,k33,p3,,
Sy, Sost: real;.Series1.Clear;.Series2.Clear;:=2;i:=1 to n+dv do y[i]:=
0;i:=n+dv+1 to 45 do y[i]:=exp2[i-2];i:=46 to NN do y[i]:=1.025;i:=1 to n-1 do
u[i]:=0;i:=n to NN do u[i]:=-2;:= 0; k12:= 0; k13:= 0; p1:= 0;:= 0; k22:= 0;
k23:= 0; p2:= 0;:= 0; k32:= 0; k33:= 0; p3:= 0;i:=(n+dv+1) to NN do:=
k11+y[i-1]*y[i-1];:= k12+y[i-1]*y[i-2];:= k13+u[i-1-dv]*y[i-1];:=
p1+y[i]*y[i-1];:= k22+sqr(y[i-2]);:= k23+y[i-2]*u[i-1-dv];:=
k33+sqr(u[i-1-dv]);:= p2+y[i]*y[i-2];:= p3+y[i]*u[i-1-dv];;:= k12; k31:= k13;
k32:=
k23;:=(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);:=(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);:=(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);i:=
1 to n+dv do begin[i]:=
0;.Series1.AddXY(i,y[i],'',clred);.Series2.AddXY(i,Res[i],'',clgreen);;i:=
n+dv+1 to NN do begin[i]:=
av12*Res[i-1]+av22*Res[i-2]+bv2*u[i-1-dv];.Series1.AddXY(i,y[i],'',clred);.Series2.AddXY(i,Res[i],'',clgreen);;:=0;i:=n+dv
to NN do ySr:=ySr+Res[i];:= ySr/(NN-1);:= 0; Sost:= 0;i:=n+dv to NN
do:=Sy+sqr(Res[i]-ySr);:=Sost+sqr(y[i]-Res[i]);;:= Sy/(NN-1); Sost:=
Sost/(NN-4);:= Sy/Sost;Fv1<Fv2 then begin
av1:=av12;av2:=av22;bv:=bv2;nv:=2;endbegin
av1:=av11;av2:=0;bv:=bv1;nv:=1;end;.Label4.Caption:='a1='+FloatToStrf(av12,ffgeneral,9,2);.Label5.Caption:='a2='+FloatToStrf(av22,ffgeneral,9,2);.Label6.Caption:='b='+FloatToStrf(bv2,ffgeneral,9,2);.Label7.Caption:='F='+FloatToStrf(Fv2,ffgeneral,9,2);;TForm1.RadioButton6Click(Sender:
TObject);eps = 0.001;i,Npp,m,i0,j: integer;,u,yz,dUq0,dUq1,dyq0,dyq1:
Array[1..1000] of Extended;,q:array[0..1] of real;,dSq0,dSq1,dSq0S,dSq1S:
Extended;,pm,fi,dl:real;.Series3.Clear;:= 0.01;:=2;[0]:=0.2; q[1]:=-0.3;i:= 1
to nu+du do y[i]:= 0;i:= 1 to nu-1 do u[i]:= 0;i:= nu to 1000 do u[i]:=
1;[nu+du+1]:= au1*y[nu+du]+au2*y[nu+du-1]+
bu*u[nu];:=nu+du+1;abs(y[Npp]-y[Npp-1])>0.001
do:=Npp+1;[Npp]:=au1*y[Npp-1]+au2*y[Npp-2]+bu*u[Npp-1-du];;:=Npp+100;nu>m+1
then i0:=nu else i0:=m+1;i:= 1 to i0-1 do[i]:=0; u[i]:= 0;[i]:=0; dUq1[i]:=0;;i:=
1 to i0+du do[i]:=0;[i]:=0; dyq1[i]:=0;;i:=i0 to Npp do yz[i]:=1;:= 1;[0]:= 0;
H[1]:= 0;true doi:= i0+du+1 to Npp do[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]);[i]:=
au1*y[i-1]+au2*y[i-2]+bu*u[i-1-du];;i:=i0 to i0+du do begin[i]:=yz[i]-y[i]-q[0]*dyq0[i]-q[1]*dyq0[i-1];[i]:=-q[0]*dyq1[i]+yz[i-1]-y[i-1]-q[1]*dyq1[i-1];;i:=i0+du+1
to Npp do
begin[i]:=au1*dyq0[i-1]+au2*dyq0[i-2]+bu*dUq0[i-1-du];[i]:=au1*dyq1[i-1]+au2*dyq1[i-2]+bu*dUq1[i-1-du];[i]:=yz[i]-y[i]-q[0]*dyq0[i]-q[1]*dyq0[i-1];[i]:=-q[0]*dyq1[i]+yz[i-1]-y[i-1]-q[1]*dyq1[i-1];;:=0;dSq1:=0;i:=i0
to Npp do
begin:=dSq0+(yz[i]-y[i])*(-dyq0[i]);:=dSq1+(yz[i]-y[i])*(-dyq1[i]);;:=dSq0*2;dSq1:=dSq1*2;:=sqrt(sqr(dSq0)+sqr(dSq1));norma<eps
then break;j=1 then begin[0]:= 1/(m+1);[1]:= 1/(m+1); endbegindSq0*dSq0S>0
then H[0]:=2*H[0] else H[0]:= H[0]/3;dSq1*dSq1S>0 then H[1]:=2*H[1] else
H[1]:= H[1]/3; end;:=j+1;S:=dSq0; dSq1S:=dSq1;[0]:= q[0]-H[0]*dSq0/norma;[1]:=
q[1]-H[1]*dSq1/norma;;pd:=q[0];pd:=q[1];:=0;i:=i0 to Npp do:=Spi+sqr(yz[i]-y[i]);:=Npp;abs((yz[i]-y[i])/yz[i])<0.05
do i:=i-1;:=i+1;:=i0;y[i]>=y[i-1] do i:=i+1;:=y[i-1]-yz[i-1];y[i]<=y[i-1]
do i:=i+1;y[i]>=y[i-1] do
i:=i+1;:=(pm+1-y[i-1])/(pm+1)*100;:=yz[Npp]-y[Npp];.Label16.Caption:=FloatToStrf(tr,ffgeneral,9,2);.Label17.Caption:=FloatToStrf(pm,ffgeneral,9,2);.Label18.Caption:=FloatToStrf(fi,ffgeneral,9,2);.Label19.Caption:=FloatToStrf(dl,ffgeneral,9,2);i:=1
to Npp
do.Series3.AddXY(i,y[i],'',clred);;.Label8.Caption:='q0='+FloatToStrf(q0pd,ffgeneral,9,2);.Label9.Caption:='q1='+FloatToStrf(q1pd,ffgeneral,9,2);.Label15.Caption:=FloatToStrf(Spd,ffgeneral,9,2);;TForm1.RadioButton5Click(Sender:
TObject);eps = 0.001;i,Npp,m,i0,j: integer;,u,yz,dUq0,dUq1,dyq0,dyq1:
Array[1..1000] of Extended;,q:array[0..1] of real;,dSq0,dSq1,dSq0S,dSq1S:
Extended;,pm,fi,dl:real;.Series3.Clear;:= 0.01;:=2;[0]:=0.2; q[1]:=-0.3;i:= 1
to nu+du do y[i]:= 0;i:= 1 to nu-1 do u[i]:= 0;i:= nu to 1000 do u[i]:=
1;[nu+du+1]:= au1*y[nu+du]+au2*y[nu+du-1]+
bu*u[nu];:=nu+du+1;abs(y[Npp]-y[Npp-1])>0.001 do:=Npp+1;[Npp]:=au1*y[Npp-1]+au2*y[Npp-2]+bu*u[Npp-1-du];;:=Npp*2;nu>m+1
then i0:=nu else i0:=m+1;i:= 1 to i0-1 do[i]:=0; u[i]:= 0;[i]:=0;
dUq1[i]:=0;;i:= 1 to i0+du do[i]:=0;[i]:=0; dyq1[i]:=0;;i:=i0 to Npp do
yz[i]:=1;:= 1;[0]:= 0; H[1]:= 0;true doi:= i0+du+1 to Npp do[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]);[i]:=
au1*y[i-1]+au2*y[i-2]+bu*u[i-1-du];;i:=i0 to i0+du do
begin[i]:=dUq0[i-1]+yz[i]-y[i]-q[0]*dyq0[i]-q[1]*dyq0[i-1];[i]:=dUq1[i-1]-q[0]*dyq1[i]+yz[i-1]-y[i-1]-q[1]*dyq1[i-1];;i:=i0+du+1
to Npp do
begin[i]:=au1*dyq0[i-1]+au2*dyq0[i-2]+bu*dUq0[i-1-du];[i]:=au1*dyq1[i-1]+au2*dyq1[i-2]+bu*dUq1[i-1-du];[i]:=dUq0[i-1]+yz[i]-y[i]-q[0]*dyq0[i]-q[1]*dyq0[i-1];[i]:=dUq1[i-1]-q[0]*dyq1[i]+yz[i-1]-y[i-1]-q[1]*dyq1[i-1];;:=0;dSq1:=0;i:=i0
to Npp do
begin:=dSq0+(yz[i]-y[i])*(-dyq0[i]);:=dSq1+(yz[i]-y[i])*(-dyq1[i]);;:=dSq0*2;dSq1:=dSq1*2;:=sqrt(sqr(dSq0)+sqr(dSq1));norma<eps
then break;j=1 then begin[0]:= 1/(m+1);[1]:= 1/(m+1); endbegindSq0*dSq0S>0
then H[0]:=2*H[0] else H[0]:= H[0]/3;dSq1*dSq1S>0 then H[1]:=2*H[1] else
H[1]:= H[1]/3; end;:=j+1;S:=dSq0; dSq1S:=dSq1;[0]:= q[0]-H[0]*dSq0/norma;[1]:=
q[1]-H[1]*dSq1/norma;;pi:=q[0];pi:=q[1];:=0;i:=i0 to Npp
do:=Spi+sqr(yz[i]-y[i]);:=Npp;abs((yz[i]-y[i])/yz[i])<0.05 do i:=i-1;:=i+1;:=i0;y[i]>=y[i-1]
do i:=i+1;:=y[i-1]-yz[i-1];y[i]<=y[i-1] do i:=i+1;y[i]>=y[i-1] do
i:=i+1;:=(pm+1-y[i-1])/(pm+1)*100;:=yz[Npp]-y[Npp];.Label16.Caption:=FloatToStrf(tr,ffgeneral,9,2);.Label17.Caption:=FloatToStrf(pm,ffgeneral,9,2);.Label18.Caption:=FloatToStrf(fi,ffgeneral,9,2);.Label19.Caption:=FloatToStrf(dl,ffgeneral,9,2);i:=1
to Npp
do.Series3.AddXY(i,y[i],'',clred);;.Label8.Caption:='q0='+FloatToStrf(q0pi,ffgeneral,9,2);.Label9.Caption:='q1='+FloatToStrf(q1pi,ffgeneral,9,2);.Label15.Caption:=FloatToStrf(Spi,ffgeneral,9,2);;TForm1.Button1Click(Sender:
TObject);.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)';.Label21.Caption:='k1 =
'+FloatToStrf(k1,ffgeneral,7,2);.Label22.Caption:='k2 =
'+FloatToStrf(k2,ffgeneral,7,2);.Label23.Caption:='k3 =
'+FloatToStrf(k3,ffgeneral,7,2);.Label24.Caption:='k4 =
'+FloatToStrf(k4,ffgeneral,7,2);.Label25.Caption:='k5 =
'+FloatToStrf(k5,ffgeneral,7,2);;TForm1.FormCreate(Sender:
TObject);;:=0;bu1:=0;:=0;au22:=0;bu2:=0;:=0;bv1:=0;:=0;av22:=0;bv2:=0;:=0;Fu2:=0;:=1.849951;:=-0.8542294;:=0.007966254;:=1.747375;:=-0.7589386;:=-0.005997361;:=av1;:=av2;:=-bv/bu;:=au1*bv/bu;:=au2*bv/bu;:=1.66118007;:=-1.63456743;:=2;nv:=2;:=dv-du;:=2;.DatabaseName:=ExpandFileName('');.Active:=true;:=1;.DataSet.Edit;.DataSet.ClearFields;;TForm1.Timer2Timer(Sender:
TObject);.Caption:= TimeToStr(Time);;TForm1.Button4Click(Sender: TObject);
begin.Caption:='Начался процесс
подачи воды';.Caption:='Начался процесс подачи дрожжей';
timer4.Enabled:=true;.Enabled:=true;:=0;;TForm1.Timer1Timer(Sender:
TObject);Fdrogy,Tvody,Pvody,Fvody:real;.Last;:=1+random(100)/50;:=25+random(100)/50;:=65+random(100)/50;:=32+random(100)/50;.Insert;Time.AsDateTime:=Time;Fdrogy.AsFloat:=Fdrogy;Tvody.AsFloat:=Tvody;Pvody.AsFloat:=Pvody;Fvody.AsFloat:=Fvody;.Post;.BottomAxis.Maximum:=Table1.RecordCount-1;.BottomAxis.Minimum:=Table1.RecordCount-1-200;.BottomAxis.Maximum:=Table1.RecordCount-1;.BottomAxis.Minimum:=Table1.RecordCount-1-200;.AddXY(Table1.RecordCount-1,
Table1.Fields[3].AsFloat, '', clDefault);.AddXY(Table1.RecordCount-1,
Table1.Fields[4].AsFloat, '', clDefault);;TForm1.Timer4Timer(Sender:
TObject);i:integer;(mc);shape2.Brush.Color=clgreen then
shape2.Brush.Color:=clwhiteshape2.Brush.Color:=clgreen;shape1.Brush.Color=clgreen
then shape1.Brush.Color:=clwhiteshape1.Brush.Color:=clgreen
;shape3.Brush.Color=clgreen then
shape3.Brush.Color:=clwhiteshape3.Brush.Color:=clgreen;mc>=40 then
begin.Caption:='Процесс подачи воды завершен';.Caption:='Процесс подачи дрожжей завершен';.Enabled:=false;.Enabled:=false;
timer5.Enabled:=true;.Caption:='Начался
процесс подачи закваски в тестомесильную машину';
end;;TForm1.Timer5Timer(Sender:
TObject);(mc);shape4.Brush.Color=clgreen then
shape4.Brush.Color:=clwhiteshape4.Brush.Color:=clgreen;shape5.Brush.Color=clgreen
then shape5.Brush.Color:=clwhiteshape5.Brush.Color:=clgreen ;mc>=20 then
begin.Caption:='Процесс подачи закваски завершен';.Enabled:=false;.Enabled:=true;:=0;;;TForm1.Timer6Timer(Sender:
TObject);(mc);shape6.Brush.Color=clgreen then
shape6.Brush.Color:=clwhiteshape6.Brush.Color:=clgreen;
if mc>=20 then
begin.Caption:='Начался процесс подачи закваски далее на линию';
timer6.Enabled:=false;:=0;
end;
en.