Компьютеризация процесса производства хлеба

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

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

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