Автор: Пользователь скрыл имя, 13 Февраля 2013 в 19:57, курсовая работа
Основной, определяющей целью управления оборудованием, технологическими и производственными процессами с помощью ЭВМ является повышение производительности труда, улучшение качества продукции и использования материально-сырьевых и топливно-энергетических ресурсов.
В данном курсовом проекте поставлена задача разработка фрагмента информационной системы управления технологическим процессом абсорбции ацетилена.
Введение 5
1 Аналитический раздел 6
1.1 Общая характеристика предметной области 6
1.2 Технологический процесс как информационный объект 10
1.3 Анализ уровня автоматизации информационных процессов 11
1.4 Технико-экономическое обоснование проекта 15
1.5 Техническое задание на проектирование 17
2. Проектный раздел 19
2.1 Проектирование архитектуры системы 19
2.2 Технологическое обеспечение проекта 20
2.3 Информационное обеспечение проекта 22
2.4 Математическое обеспечение проекта 23
2.4.1 Расчет параметров регулятора 24
2.5 Программное обеспечение проекта 25
2.6 Техническое обеспечение проекта 25
2.7 Тестирование проекта 27
2.8 Оценка надежности прокета 28
Заключение 29
Список использованной литературы 30
Приложение А 31
Приложение Б 35
Приложение В 37
ПРИЛОЖЕНИЕ Б
Главное окно программы
Окно вывода графиков
Окно вывода базы данных
ПРИЛОЖЕНИЕ В
Листинг приложения.
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;
using ZedGraph;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public static string Prevyshenie;
public static string Time;
public static string Data;
public static string Ustroistvo;
public static double L;
public static double L_Nom = 100.0;
public static double L_Min = 90.0;
public static double L_Max = 110.0;
public static double P_1;
public static double P_1_Nom = 80.0;
public static double P_1_Min = 70.0;
public static double P_1_Max = 90.0;
public static double P_2;
public static double P_2_Nom = 85.0;
public static double P_2_Min = 75.0;
public static double P_2_Max = 90.0;
public static double T;
public static double T_Nom = 35.0;
public static double T_Min = 30.0;
public static double T_Max = 40.0;
double y, z = 100, x = 80, errorlast = 0, errornow = 0, kp = .9, ki = .57, kd = 0, sobw = 0, xl = 0;
public static double current_time = 0.0;
//ZedGraphControl zedGraphControl;
Random rand_obj;
PointPairList list_1;
PointPairList list_2;
PointPairList list_3;
PointPairList list_4;
GraphPane pane_1;
GraphPane pane_2;
GraphPane pane_3;
GraphPane pane_4;
public Form1()
{
InitializeComponent();
L_Box.BackColor = Color.LightGreen;
P_1_Box.BackColor = Color.LightGreen;
P_2_Box.BackColor = Color.LightGreen;
T_Box.BackColor = Color.LightGreen;
L_Box.Text = String.Format("{0, 4:F2}", L);
L_Nom_Box.Text = String.Format("{0, 4:F2}", L_Nom);
P_1_Box.Text = String.Format("{0, 4:F2}", P_1);
P_1_Nom_Box.Text = String.Format("{0, 4:F2}", P_1_Nom);
P_2_Box.Text = String.Format("{0, 4:F2}", P_2);
P_2_Nom_Box.Text = String.Format("{0, 4:F2}", P_2_Nom);
T_Box.Text = String.Format("{0, 4:F2}", T);
T_Nom_Box.Text = String.Format("{0, 4:F2}", T_Nom);
rand_obj = new Random();
InitGraph();
}
private void InitGraph()
{
MasterPane masterPane = zedGraphControl1.MasterPane;
masterPane.PaneList.Clear();
pane_1 = new GraphPane();
pane_1.CurveList.Clear ();
pane_1.Title.Text = "Уровень пара";
pane_1.XAxis.Title.Text = "Время, с";
pane_1.YAxis.Title.Text = "Уровень, м";
pane_1.XAxis.Scale.Min = 0.0;
pane_1.XAxis.Scale.Max = 20.0;
pane_1.YAxis.Scale.Min = 85.0;
pane_1.YAxis.Scale.Max = 120.0;
list_1 = new PointPairList();
LineItem myCurve_1 = pane_1.AddCurve("Title 1", list_1, Color.Green, SymbolType.None);
pane_1.Legend.IsVisible = true;
masterPane.Add(pane_1);
list_1.Add(current_time, L);
pane_2 = new GraphPane();
pane_2.CurveList.Clear();
pane_2.Title.Text = "Давление";
pane_2.XAxis.Title.Text = "Время, с";
pane_2.YAxis.Title.Text = "Давление, Па";
pane_2.XAxis.Scale.Min = 0.0;
pane_2.XAxis.Scale.Max = 20.0;
pane_2.YAxis.Scale.Min = 75.0;
pane_2.YAxis.Scale.Max = 100.0;
list_2 = new PointPairList();
LineItem myCurve_2 = pane_2.AddCurve("Title 2", list_2, Color.Green, SymbolType.None);
masterPane.Add(pane_2);
list_2.Add(current_time, P_1);
pane_3 = new GraphPane();
pane_3.CurveList.Clear();
pane_3.Title.Text = "Давление";
pane_3.XAxis.Title.Text = "Время, с";
pane_3.YAxis.Title.Text = "Давление, Па";
pane_3.XAxis.Scale.Min = 0.0;
pane_3.XAxis.Scale.Max = 20.0;
pane_3.YAxis.Scale.Min = 70.0;
pane_3.YAxis.Scale.Max = 100.0;
list_3 = new PointPairList();
LineItem myCurve_3 = pane_3.AddCurve("Title 3", list_3, Color.Green, SymbolType.None);
masterPane.Add(pane_3);
list_3.Add(current_time, P_2);
pane_4 = new GraphPane();
pane_4.CurveList.Clear();
pane_4.Title.Text = "Температура";
pane_4.XAxis.Title.Text = "Время, с";
pane_4.YAxis.Title.Text = "Темпкратура, град C";
pane_4.XAxis.Scale.Min = 0.0;
pane_4.XAxis.Scale.Max = 20.0;
pane_4.YAxis.Scale.Min = 25.0;
pane_4.YAxis.Scale.Max = 45.0;
list_4 = new PointPairList();
LineItem myCurve_4 = pane_4.AddCurve("Title 4", list_4, Color.Green, SymbolType.None);
masterPane.Add(pane_4);
list_4.Add(current_time, T);
using (Graphics g = CreateGraphics())
{
masterPane.SetLayout(g, PaneLayout.ForceSquare);
}
zedGraphControl1.AxisChange();
zedGraphControl1.Invalidate();
}
private void button1_Click(object sender, EventArgs e)
{
Close();
}
void model()
{
xl = x;
errornow = z - xl;
double yp = kp * errornow;
double yd = kd * (errorlast - errornow);
sobw = (errornow + errorlast) / 2;
y = ki * sobw + yp + yd;
x = xl + y + (rand_obj.NextDouble() * 0.02 - 0.01);
}
private void timer1_Tick(object sender, EventArgs e)
{
current_time += (double)timer1.Interval / 1000.0;
model();
L = x;
if (L < L_Min || L > L_Max)
L_Box.BackColor = Color.Red;
else
L_Box.BackColor = Color.LightGreen;
progressBar1.Value = (int)L;
list_1.Add(current_time, L);
if (current_time > 20)
{
pane_1.XAxis.Scale.Min += (double)timer1.Interval / 1000.0;
pane_1.XAxis.Scale.Max += (double)timer1.Interval / 1000.0;
list_1.RemoveAt(0);
}
P_1 = P_1_Nom * (1.0 + (rand_obj.NextDouble() - 0.5) * 0.3);
if (P_1 < P_1_Min || P_1 > P_1_Max)
P_1_Box.BackColor = Color.Red;
else
P_1_Box.BackColor = Color.LightGreen;
progressBar2.Value = (int)P_1;
list_2.Add(current_time, P_1);
if (current_time > 20)
{
pane_2.XAxis.Scale.Min += (double)timer1.Interval / 1000.0;
pane_2.XAxis.Scale.Max += (double)timer1.Interval / 1000.0;
list_2.RemoveAt(0);
}
P_2 = P_2_Nom * (1.0 + (rand_obj.NextDouble() - 0.5) * 0.3);
if (P_2 < P_2_Min || P_2 > P_2_Max)
T_Box.BackColor = Color.Red;
else
T_Box.BackColor = Color.LightGreen;
progressBar3.Value = (int)P_2;
list_3.Add(current_time, P_2);
if (current_time > 20)
{
pane_3.XAxis.Scale.Min += (double)timer1.Interval / 1000.0;
pane_3.XAxis.Scale.Max += (double)timer1.Interval / 1000.0;
list_3.RemoveAt(0);
}
T = T_Nom * (1.0 + (rand_obj.NextDouble() - 0.5) * 0.3);
if (T < T_Min || T > T_Max)
T_Box.BackColor = Color.Red;
else
T_Box.BackColor = Color.LightGreen;
progressBar4.Value = (int)T;
list_4.Add(current_time, T);
if (current_time > 20)
{
pane_4.XAxis.Scale.Min += (double)timer1.Interval / 1000.0;
pane_4.XAxis.Scale.Max += (double)timer1.Interval / 1000.0;
list_4.RemoveAt(0);
}
L_Box.Text = String.Format("{0, 4:F1}", L);
P_1_Box.Text = String.Format("{0, 4:F3}", P_1);
P_2_Box.Text = String.Format("{0, 4:F2}", P_2);
T_Box.Text = String.Format("{0, 4:F4}", T);
if (L > L_Max)
{
progressBar1.Value = 140;
pr ("L",L);
}
else if (L < L_Min)
{
progressBar1.Value = 0;
pr ("L",L);
}
else
progressBar1.Value = (int)(100.0 * (L - L_Min) / (L_Max - L_Min));
if (P_1 > P_1_Max)
{
progressBar2.Value = 130;
pr("P_1", P_1);
}
else if (P_1 < P_1_Min)
{
progressBar2.Value = 0;
pr("P_1", P_1);
}
else
progressBar2.Value = (int)(100.0 * (P_1 - P_1_Min) / (P_1_Max - P_1_Min));
if (P_2 > P_2_Max)
{
progressBar3.Value = 120;
pr("P_2", P_2);
}
else if (P_2 < P_2_Min)
{
progressBar3.Value = 0;
pr("P_2", P_2);
}
else
progressBar3.Value = (int)(100.0 * (P_2 - P_2_Min) / (P_2_Max - P_2_Min));
if (T > T_Max)
{
progressBar4.Value = 100;
pr("T", T);
}
else if (T < T_Min)
{
progressBar4.Value = 0;
pr("T", T);
}
else
progressBar4.Value = (int)(100.0 * (T - T_Min) / (T_Max - T_Min));
zedGraphControl1.AxisChange();
zedGraphControl1.Invalidate();
}
private void Form1_Load(object sender, EventArgs e)
{
// TODO: данная строка кода позволяет загрузить данные в таблицу "base_errorDataSet.errors". При необходимости она может быть перемещена или удалена.
this.errorsTableAdapter.Fill(t
// CreateGraph(zedGraphControl);
}
public void pr(string pickup,double val)
{
Data = Convert.ToString(System.DateTi
Time = System.DateTime.Now.
errorsTableAdapter.Insert(val.
errorsTableAdapter.Update(
this.errorsTableAdapter.Fill(t
}
private void errorsBindingNavigatorSaveItem
{
this.Validate();
this.errorsBindingSource.
this.tableAdapterManager.
}
private void button2_Click(object sender, EventArgs e)
{
double.TryParse(
double.TryParse(
double.TryParse(
double.TryParse(
}
}
}
Информация о работе Разработка фрагмента информационной системы управления