русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Постановка задачи


Дата добавления: 2013-12-23; просмотров: 937; Нарушение авторских прав


Приложение 1

Вывод

В практической работе №1 нами была смоделирована система регулирования по отклонению. Сначала нами была составлена ее математическая модель в общем виде. Затем, приняв в качестве регулятора ПИ регулятор, а в качестве математической модели канала преобразования регулирующих воздействий последовательное соединение инерционного звена первого порядка и звена чистого запаздывания, нами была составлена математическая модель системы в конкретном виде. После этого мы записали эту модель в дискретной форме.

Запрограммировав эту модель, и взяв значения коэффициентов Kи и Кп по методу Ротача, нами был получен график переходного процесса при подачи на систему единичного ступенчатого задающего воздействия и при внешних возмущениях равных нулю. Далее к системе были приложены внешние возмущения и был получен измененный график переходного процесса системы.

В конце работы при помощи поисковой процедуры «покоординатный спуск» путем имитационного моделирования с выходом на критерий СКО, нами были найдены оптимальные значения Ки и Кп


 

Код программы

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

double[] E = new double[150];

double[] Ur = new double[150];

double[] Yu = new double[150];

double[] Y = new double[150];

double[] Yw = new double[150] {0.1,0.2,0.5,0.4,0.2,0.3,0.8,0.5,0.2,0.0,0.4,

0.1,0.2,0.2,0.9,0.0,0.3,0.2,0.6,0.1,0.5,0.0,

0.3,0.6,0.2,0.7,0.3,0.0,0.9,0.6,0.0,0.4,0.7,

0.4,0.2,0.0,0.4,0.7,0.5,0.5,0.6,0.6,0.6,0.5,

0.3,0.2,0.5,0.1,0.3,0.5,0.8,0.3,0.2,0.6,0.5,

0.3,0.6,0.2,0.7,0.3,0.5,0.6,0.6,0.0,0.0,0.9,



0.6,0.0,0.4,0.7,0.2,0.2,0.9,0.0,0.3,0.3,0.6,

0.2,0.7,0.3,0.1,0.2,0.5,0.4,0.5,0.8,0.3,0.2,

0.6,0.5,0.0,0.4,0.7,0.5,0.5,0.2,0.7,0.3,0.0,

0.9,0.6,0.0,0.4,0.7,0.4,0.2,0.0,0.4,0.7,0.5,

0.5,0.1,0.3,0.5,0.8,0.3,0.0,0.4,0.7,0.2,0.2,

0.0,0.4,0.7,0.5,0.5,0.6,0.6,0.6,0.5,0.2,0.5,

0.4,0.5,0.8,0.3,0.2,0.5,0.8,0.3,0.0,0.4,0.3,

0.6,0.2,0.7,0.3,0.5,0.8,0.9};

 

 

double Yzad = 1;

double T = 10.00000;

double k = 1.00000;

double tau = 3.00000;

double a1, a2, Kp, Ku, Kn;

double skos = new double();

double[] skos2 = new double[2];

 

public Form1()

{

InitializeComponent();

}

 

private void chart1_Click(object sender, EventArgs e)

{

f(Ku, Kn, 1);

}

 

public void sko()

{

double tempo = new double();

for (int sk = 0; sk < Y.Length; sk++)

{

tempo += (Yzad - Y[sk]) * (Yzad - Y[sk]);

}

skos = tempo / (Y.Length - 1);

}

 

 

private void default_f()

{

Ku = 1 / tau;

Kn = T / tau;

f(Ku, Kn, 1);

}

 

// НАША ФУНКЦИЯ

private double f(double Ku, double Kn, int z)

{

for (int i = 2; i < Y.Length; i++)

{

Ur[i] = Uri(Ur[i - 1], E[i - 1], Ku, Kn);

Yu[i] = Yui(Ur[i], Yu[i - 1]);

Y[i] = Yi(Yu[i], Yw[i]);

E[i] = Ei(Yzad, Y[i]);

if (z == 1)

{

chart1.Series[0].Points.AddXY(i, Y[i]);

}

if (z == 2)

{

chart1.Series[1].Points.AddXY(i, Y[i]);

}

}

sko();

return skos;

}

 

//НАЧАЛЬНЫЕ ЗНАЧЕНИЯ

private void Form1_Load(object sender, EventArgs e)

{

a1 = k / (T + 1);

a2 = T / (T + 1);

Kp = T / (k + tau);

Ku = 1 / tau;

Kn = T / tau;

f(Ku, Kn, 2);

richTextBox1.AppendText("\n" + "СКО начальное" + "=" + Convert.ToString(skos));

chart2.Series[0].Points.AddXY(Math.Round(Ku, 6), Math.Round(Kn, 6));

chart2.Series[0].Points[0].Label = "0";

}

 

 

public double Uri(double Upred, double Epred, double Ku, double Kn)

{

double Uri = new double();

Uri = Upred + (Ku + Kn) * Epred;

return Uri;

}

 

 

public double Ei(double Yzad, double Yi)

{

double Ei = new double();

Ei = Yzad - Yi;

return Ei;

}

 

public double Yui(double Uri, double YuiPred)

{

double Yui = new double();

Yui = a1 * Uri + a2 * YuiPred;

return Yui;

}

 

public double Yi(double Yui, double Ywn)

{

double Yi = new double();

Yi = Yui + Ywn;

return Yi;

}

 

 

private void richTextBox1_TextChanged(object sender, EventArgs e)

{

 

}

 

private void button1_Click(object sender, EventArgs e)

{

Pokoordperebor();

}

 

private void Pokoordperebor()

{

do

{

double stepKn = (T/tau)*0.11;

double stepKu = (1/tau)*0.11;

skos2[1] = skos;

richTextBox1.AppendText("\n" + "\n" + " Ku = " + Convert.ToString(Ku) + " Kn = " + Convert.ToString(Kn));

 

//Ищем Kn

while (stepKn >= 0.07)

{

richTextBox1.AppendText("\n" + "Ищем Kn с шагом = " + Convert.ToString(stepKn));

if (f(Ku, Kn - stepKn, 0) < f(Ku, Kn, 0))

{

 

Kn = Kn - stepKn; //Новое значение Kn

 

}

else

{

if (f(Ku, Kn + stepKn, 0) < f(Ku, Kn, 0))

{

 

Kn = Kn + stepKn;

 

}

else

{

stepKn = stepKn * 0.5;

}

}

f(Ku, Kn, 0); //Узнаем значение СКО

richTextBox1.AppendText("\n" + "Kn = " + Convert.ToString(Kn) + " CKO= " + Convert.ToString(skos));

}

richTextBox1.AppendText("\n" + " Ku = " + Convert.ToString(Ku) + " Kn!!! после нахождения= " + Convert.ToString(Kn));

richTextBox1.AppendText("\n" + "______________________________ " + "\n");

chart2.Series[0].Points.AddXY(Math.Round(Ku, 6), Math.Round(Kn, 6));

 

 

//Ищем Ku

while (stepKu >= 0.01)

{

richTextBox1.AppendText("\n" + "Ищем Ku с шагом = " + Convert.ToString(stepKu) );

if (f(Ku - stepKu, Kn, 0) < f(Ku, Kn, 0))

{

Ku = Ku - stepKu; //Новое значение Ku

}

else

{

if (f(Ku + stepKu, Kn, 0) < f(Ku, Kn, 0))

{

Ku = Ku + stepKu; //Новое значение Ku

}

else

{

stepKu = stepKu * 0.5;

}

}

f(Ku, Kn, 0); //Узнаем значение СКО

richTextBox1.AppendText("\n" + "Ku = " + Convert.ToString(Ku) + " CKO= " + Convert.ToString(skos));

}

 

richTextBox1.AppendText("\n" + " Ku!!! после нахождения = " + Convert.ToString(Ku) + " Kn = " + Convert.ToString(Kn));

richTextBox1.AppendText("\n" + "______________________________ " + "\n");

chart2.Series[0].Points.AddXY(Math.Round(Ku, 6), Math.Round(Kn, 6));

 

f(Ku, Kn, 0);

richTextBox1.AppendText("\n" + " СКО текущее" + "=" + Convert.ToString(skos));

richTextBox1.AppendText("\n" + " СКО предыдущее" + "=" + Convert.ToString(skos2[1]));

 

} while (Math.Abs(skos2[1] - skos) > 0.05 * skos2[1]);

 

//Выводим Ku и Kn на форму

richTextBox1.AppendText("\n" + " HOHO Ku = " + Convert.ToString(Ku) + " Kn = " + Convert.ToString(Kn));

textBox1.Text = Convert.ToString(Ku);

textBox2.Text = Convert.ToString(Kn);

}

 

}

}

 


 

Практическая работа №2

Моделирование доменной плавки по каналу «влажность дутья – содержание кремния»

Дано:

1.Схема натурно-математической САР по отклонению (рисунок 1)

 

 

Рисунок 1 – Схема натурно-математической САР по отклонению

 

На рисунке 1 обозначены:

- натурное значение влажности дутья;

- натурное значение содержания кремния в чугуне;

- имитируемое значение влажности дутья;

- имитируемое значение содержания кремния в чугуне;

– заданное значение содержания кремния в чугуне;

ε(t) – ошибка регулирования.

 

2. Реализация натурной (реализованной на действующем агрегате) влажности дутья (входное воздействие) и соответствующее ей содержание кремния в чугуне (выход), где - номер выпуска чугуна из доменной печи.

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

4. Математическая модель (инерционное звено первого порядка с запаздыванием) канала « » в приращениях к фактическим уровням соответствующих переменных со значениями динамических параметров ; .

Для перехода к разному уравнению рассчитаем коэффициенты при выбранном интервале дискретизации (в соответствии с частотой поступления информации о содержании кремния в чугуне по выпускам). Отсюда:

 

отклонение учитывается за счет сдвига графиков- реализации и друг относительно друга на соответствующую величину.

5. Поисковая процедура - метод покоординатного поиска.

6. Критерий точности – среднеквадратичное отклонение (СКО).

 

Требуется:

1) Создать математическую модель САР в общем виде и в конкретном;

2) Выбрать значения параметров закона регулирования по методике Ротача;

3) Составить алгоритм моделирования САР по отклонению;

4) С использованием выбранной поисковой процедуры путем имитационного моделирования с выходом на критерий СКО найти оптимальные значения kп и kи;

5) Определить содержание кремния в чугуне (имитируемое) при заданных значениях имитируемой влажности на интервале в N выпусков;

6) Результаты предоставить в графической и табличной форме.


 



<== предыдущая лекция | следующая лекция ==>
Постановка задачи | Решение


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.011 сек.