Разработка фрагмента информационной системы управления

Автор: Пользователь скрыл имя, 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

Файлы: 7 файлов

0. Обложка.doc

— 22.00 Кб (Открыть, Скачать)

1. Титульник.docx

— 14.23 Кб (Открыть, Скачать)

2. Содержание.docx

— 15.48 Кб (Открыть, Скачать)

3. Введение.doc

— 36.00 Кб (Открыть, Скачать)

4. Пояснительная.doc

— 178.00 Кб (Открыть, Скачать)

5. Заключение.doc

— 78.00 Кб (Открыть, Скачать)

6. Приложение Б, В.doc

— 206.00 Кб (Скачать)

 

ПРИЛОЖЕНИЕ Б

 

Главное окно программы

Окно вывода графиков

 

 

Окно вывода базы данных

 

ПРИЛОЖЕНИЕ В

Листинг приложения.

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(this.base_errorDataSet.errors);

            // CreateGraph(zedGraphControl);

        }

 

        public void pr(string pickup,double val)

        {

           

                Data = Convert.ToString(System.DateTime.Now);

            Time = System.DateTime.Now.ToShortTimeString();

 

                 errorsTableAdapter.Insert(val.ToString("f2"),Time, Data, pickup);

                errorsTableAdapter.Update(base_errorDataSet);

                this.errorsTableAdapter.Fill(this.base_errorDataSet.errors);

            

            }

       

 

       

        private void errorsBindingNavigatorSaveItem_Click(object sender, EventArgs e)

        {

            this.Validate();

            this.errorsBindingSource.EndEdit();

            this.tableAdapterManager.UpdateAll(this.base_errorDataSet);

 

        }

 

       

        private void button2_Click(object sender, EventArgs e)

        {

            double.TryParse(maskedTextBox1.Text, out z);

            double.TryParse(maskedTextBox2.Text, out kp);

            double.TryParse(maskedTextBox3.Text, out ki);

            double.TryParse(maskedTextBox4.Text, out kd);

        }

 

     }

}


Информация о работе Разработка фрагмента информационной системы управления