Программное средство мониторинга и регистрации состояния силовых установок

Описание:
Доступные действия
Введите защитный код для скачивания файла и нажмите "Скачать файл"
Защитный код
Введите защитный код

Нажмите на изображение для генерации защитного кода

Текст:

Министерство образования Республики Беларусь

Учреждение образования «Белорусский государственный университет информатики и радиоэлектроники»

Институт повышения квалификации и переподготовки

руководящих работников и специалистов

по информационным технологиям и радиоэлектронике

Кафедра «Микропроцессорные системы и сети»

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

К КУРСОВОМУ ПРОЕКТУ:

«Программное средство мониторинга и регистрации состояния силовых установок»

Выполнил                                         Петрашевич Н.С.

                                                            (дата, подпись)

Руководитель                                    Гламаздин И.И.

                                                            (дата, подпись)

МИНСК 2016

Оглавление

1.  Введение. 4

2.  Описание функциональных требований. 5

3.  Моделирование структуры приложения. 7

4.  Описание реализации приложения. 9

Приложение. 12


1.     Введение

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


2.     Описание функциональных требований

Описание предметной области:

Основным объектом мониторинга являются силовые трансформаторы распределительных электрических сетей. Трансформаторы имеют следующие паспортные показатели, устанавливающиеся по данным завода-изготовителя:

- тип;

- номинальная мощность, кВА;

- номинальное напряжение высокой стороны, кВ;

- номинальное напряжение низкой стороны, кВ;

- потери холостого хода, Вт;

- потери короткого замыкания, Вт;

- ток холостого хода, %;

- напряжение короткого замыкания, %.

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

- загрузка, % от номинальной;

- напряжение низкой стороны, кВ;

- температура трансформатора (для масляных – температура масла), °С;

- температура окружающей среды, °С.

Разрабатываемое программное средство должно предоставлять пользователю выполнять следующие действия:

-        Вводить, корректировать и удалять режимные параметры трансформаторов.

-        Вводить, корректировать и удалять паспортные данные трансформаторов.

-        Вводить, корректировать и удалять списки ремонтов трансформатора.

-        Вводить, корректировать и удалять подстанции.

-        Экспортировать в XML-файл и импортировать из XML-файла трансформатор с паспортными и режимными параметрами.

-        Предоставлять доступ к данным трансформатора в удобном виде.

-        Определять нагрузочные потери мощности в трансформаторе по результатам измерений.

Приложение должно выводить в виде столбчатой диаграммы нагрузочные потери выбранного трансформатора.

В качестве пользователя приложения выступает оперативный персонал предприятия – оператор.


Рис.1- Диаграмма вариантов использования приложения


3.     Моделирование структуры приложения

Для реализации приложения потребовалось создать базу данных (БД). В качестве платформы для БД использовалась MS SQL Server 2008. БД представлена совокупностью 4 таблиц: Substations, TransPassport, Mesurements, Repairs, хранящей информацию о подстанциях, паспортные данные трансформатора, данные измерений и ремонтов соответственно. Диаграмма БД представлена на рис. 2.


Рис. 2 – Диаграмма базы данных

На основе представленной БД, в MS Visual Studio были созданы классы по технологии LINQ to SQL. Диаграмма классов представлена на рис. 3.


Рис. 3 – Диаграмма классов


4.     Описание реализации приложения

Рис. 5 – Алгоритм добавления трансформатора в БД

Рис. 5 – Алгоритм отображения трансформаторов из БД


 

Рис. 6 – Алгоритм удаления замера из БД


Рис. 7 – Расчёта нагрузочных потерь электроэнергии

Приложение

Исходный код программы. Приведены наиболее значимые участки.

  //для записи в log-файл

  public static void LogInFile(string text)

  {

 LogStream.WriteLine(DateTime.Now.ToString());

 LogStream.WriteLine(text);

 LogStream.Flush();

  }

  //Подключаемся к БД

  private void подключитьсяКБДToolStripMenuItem_Click(object sender, EventArgs e)

  {

 try

 {

  db = new DataClasses1DataContext("Data Source=.SQLEXPRESS;AttachDbFilename=E:SVPPTransformerDataBaseTransformerDataBase
Transformers.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");

  db.Log = LogStream;

  toolStripStatusLabel1.Text = "Состояние: подключено к БД";

  LogInFile("Подключение к БД");

  toolStripMenuItem1.Enabled = true;

 }

 catch (Exception Ex)

 {

  MessageBox.Show(Ex.Message);

  LogInFile(Ex.Message);

 }

  }

//добавляем трансформатор

  private void ввестиДанныеToolStripMenuItem1_Click(object sender, EventArgs e)

  {

 LogInFile("Меню ввести данные");

 TransForm NewTransForm = new TransForm();

 NewTransForm.ShowDialog();

 if (NewTransForm.DialogResult == DialogResult.OK)

 {

  try

  {

 TransPassport NewTransPassport = new TransPassport();

 NewTransPassport.ReadFromForm(NewTransForm);

 db.TransPassports.Insertonsubmit(NewTransPassport);

 db.SubmitChanges();

 dataGridView1.DataSource = db.TransPassports.Where(p=>true);

 button_add_sub.Enabled = button_dell_sub.Enabled = button_edit_sub.Enabled = true;

 button_add_repair.Enabled = button_dell_repair.Enabled = button_edit_repair.Enabled = true;

 button_add_mesure.Enabled = button_dell_mesure.Enabled = button_edit_mesure.Enabled = true;

 toolStripButton1.Enabled = toolStripButton2.Enabled = true;

  }

  catch (Exception Ex)

  {

 MessageBox.Show(Ex.Message);

 LogInFile(Ex.Message);

  }

 }

  }

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)

  {

 try

 {

  int CurrentIndex = int.Parse(dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());

  dataGridView2.DataSource = db.Mesurements.Where(p => p.TransformerID == CurrentIndex);

  dataGridView3.DataSource = db.Repairs.Where(p => p.TransformerID == CurrentIndex);

  TransPassport NewTransPassport=db.TransPassports.Where(p => p.TransformerID == CurrentIndex).FirstOrDefault();

  textBox1.Text = "";

  textBox2.Text = "";

  textBox3.Text = "";

  textBox4.Text = "";

  textBox5.Text = "";

  textBox6.Text = "";

  //проверка данных

  #region

  if (NewTransPassport.dPxx.HasValue)

  {

 textBox1.Text = NewTransPassport.dPxx.Value.ToString();

  }

  if (NewTransPassport.dPkz.HasValue)

  {

 textBox2.Text = NewTransPassport.dPkz.Value.ToString();

  }

  if(NewTransPassport.Ixx_.HasValue)

  {

  textBox3.Text = NewTransPassport.Ixx_.Value.ToString();

  }

  if(NewTransPassport.Ukz_.HasValue)

  {

  textBox4.Text = NewTransPassport.Ukz_.Value.ToString();

  }

  #endregion

  textBox5.Text = NewTransPassport.Produser.ToString();

  if (NewTransPassport.SubstationID.HasValue)

  {

 textBox6.Text = String.Format("{0}{1}",NewTransPassport.Substation.Name+Environment.NewLine, NewTransPassport.Substation.Adress);

  }  

  //Выбор данных для диаграммы

  diagram1.chart1.Series[0].Name = "Потери";

  diagram1.DiagramBuild(NewTransPassport, db);

 }

 catch (Exception Ex)

 {

  MessageBox.Show(Ex.Message, "Error");

  MessageBox.Show(Ex.Message, "Error!!!!");

  LogInFile(Ex.Message);

 }

  }

  //Удалить трансформатор

  private void удалитьToolStripMenuItem_Click(object sender, EventArgs e)

  {

 LogInFile("Меню удалить");

 try

 {

  var SelectedCells = dataGridView1.SelectedCells;

  int iSelectedRow = SelectedCells[0].RowIndex;

  int i = int.Parse(dataGridView1.Rows[iSelectedRow].Cells[0].Value.ToString());

  TransPassport TransSelected = db.TransPassports.Where(p => p.TransformerID == i).FirstOrDefault();

  foreach (Mesurement a in TransSelected.Mesurements)

  {

  db.Mesurements.Deleteonsubmit(a);

  }

  foreach (Repair a in TransSelected.Repairs)

  {

 db.Repairs.Deleteonsubmit(a);

  }

  db.TransPassports.Deleteonsubmit(TransSelected);

  db.SubmitChanges();

  dataGridView1.DataSource = db.TransPassports.Where(p => true);

 }

 catch (Exception Ex)

 {

  LogInFile(Ex.Message);

 }

  }

//экспорт в файл

  private void ToXml_Click(object sender, EventArgs e)

  {

 try

 {

  LogInFile("Меню экспорт");

  saveFileDialog1.ShowDialog();

  var SelectedCells = dataGridView1.SelectedCells;

  int iSelectedRow = SelectedCells[0].RowIndex;

  int i = int.Parse(dataGridView1.Rows[iSelectedRow].Cells[0].Value.ToString());

  TransPassport TransSelected = db.TransPassports.Where(p => p.TransformerID == i).FirstOrDefault();

  XDocument xDoc = new XDocument(TransSelected.ToXElement());

  xDoc.Save(saveFileDialog1.FileName);

 }

  catch(Exception Ex)

 {

  MessageBox.Show(Ex.Message);

  LogInFile(Ex.Message);

 }

  }

  //импорт из файла

  private void импортИзXMLToolStripMenuItem_Click(object sender, EventArgs e)

  {

 try

 {

  LogInFile("Меню импорт");

  openFileDialog1.ShowDialog();

  if (openFileDialog1.OpenFile() != null)

  {

 XElement XTransPassport = XElement.Load(openFileDialog1.OpenFile());

 MessageBox.Show(XTransPassport.Attribute("TransformerID").Value.ToString());

 if (XTransPassport.HasElements)

 {

  TransPassport NewTransPassport = new TransPassport();

  int NewID=0;

 NewID=db.TransPassports.Max(p=>p.TransformerID)+1;

  NewTransPassport.TransformerID=NewID;

  NewTransPassport.Type = XTransPassport.Element("Type").Value.ToString();

  NewTransPassport.Produser = XTransPassport.Element("Produser").Value.ToString();

#region

  try

  {

 NewTransPassport.Power = float.Parse(XTransPassport.Element("Power").Value.ToString());

  }

  catch

  { LogInFile("Не критичная ошибка чтения"); }

  try{

  NewTransPassport.PrimVoltage = float.Parse(XTransPassport.Element("PrimVoltage").Value.ToString());

  }

  catch

  { LogInFile("Не критичная ошибка чтения"); }

  try{

  NewTransPassport.SecVoltage = float.Parse(XTransPassport.Element("SecVoltage").Value.ToString());

 }

  catch

  { LogInFile("Не критичная ошибка чтения"); }

  try{

  NewTransPassport.dPxx = float.Parse(XTransPassport.Element("dPxx").Value.ToString());

 }

  catch

  { LogInFile("Не критичная ошибка чтения"); }

  try{

  NewTransPassport.dPkz = float.Parse(XTransPassport.Element("dPkz").Value.ToString());

 }

  catch

  { LogInFile("Не критичная ошибка чтения"); }

  try{

  NewTransPassport.Ixx_ = float.Parse(XTransPassport.Element("Ixx").Value.ToString());

 }

  catch

  { LogInFile("Не критичная ошибка чтения"); }

  try{

  NewTransPassport.Ukz_ = float.Parse(XTransPassport.Element("Ukz").Value.ToString());

  }

  catch

  { LogInFile("Не критичная ошибка чтения"); }

  try

  {

  int Sub = int.Parse(XTransPassport.Element("Substation").Value.ToString());

  if (db.Substations.Where(p => p.SubstationID == Sub).FirstOrDefault() != null)

  {

 NewTransPassport.SubstationID = Sub;

 NewTransPassport.Substation = db.Substations.Where(p => p.SubstationID == Sub).FirstOrDefault();

  }

  else

  {

 MessageBox.Show("Указанной подстанции не обнаружено");

  }

  }

  catch

  { LogInFile("Не критичная ошибка чтения"); }

#endregion

  db.TransPassports.Insertonsubmit(NewTransPassport);

  if (XTransPassport.Element("Mesurements").HasElements)

  {

 int i = 1;

 foreach (XElement a in XTransPassport.Element("Mesurements").Elements("Mesurement"))

 {

  Mesurement NewMesure = new Mesurement();

  NewMesure.MesurmentID = db.Mesurements.Max(p => p.MesurmentID) + i;

  i++;

  #region

  try

  {

 NewMesure.Load_ = float.Parse(a.Attribute("Load").Value.ToString());

  }

  catch{}

  try

  {

 NewMesure.Voltage = float.Parse(a.Attribute("Voltage").Value.ToString());

  }

  catch { }

  try

  {

 NewMesure.TransTemperature = float.Parse(a.Attribute("TransTemperature").Value.ToString());

  }

  catch { }

  try

  {

 NewMesure.OutTemperature = float.Parse(a.Attribute("OutTemperature").Value.ToString());

  }

  catch { }

  #endregion

  NewMesure.DateTime = DateTime.Parse(a.Attribute("Date").Value.ToString());

  NewMesure.TransformerID = NewID;

  NewMesure.TransPassport = NewTransPassport;

  db.Mesurements.Insertonsubmit(NewMesure);

 }

  }

  db.SubmitChanges();

  dataGridView1.DataSource = db.TransPassports.Where(p => true);

  button_add_sub.Enabled = button_dell_sub.Enabled = button_edit_sub.Enabled = true;

  button_add_repair.Enabled = button_dell_repair.Enabled = button_edit_repair.Enabled = true;

  button_add_mesure.Enabled = button_dell_mesure.Enabled = button_edit_mesure.Enabled = true;

  toolStripButton1.Enabled = toolStripButton2.Enabled = true;

 }

  }

 }

 catch (Exception Ex)

 {

  MessageBox.Show(Ex.Message);

  LogInFile(Ex.Message);

 }

  }

partial class TransPassport

    {

        public void ReadFromForm(TransForm NewTransForm)

        {

            TransformerID = int.Parse(NewTransForm.textBox1.Text);

            Type = NewTransForm.textBox2.Text;

            Power = float.Parse(NewTransForm.textBox4.Text);

            PrimVoltage = float.Parse(NewTransForm.textBox5.Text);

            #region//чтение

            try

            { Produser = NewTransForm.textBox3.Text; }

            catch (Exception Ex)

            { Form1.LogInFile(Ex.Message); }

            try

            { SecVoltage = float.Parse(NewTransForm.textBox6.Text); }

            catch (Exception Ex)

            { Form1.LogInFile(Ex.Message); }

            try

            { dPxx = float.Parse(NewTransForm.textBox7.Text); }

            catch (Exception Ex)

            { Form1.LogInFile(Ex.Message); }

            try

            { dPkz = float.Parse(NewTransForm.textBox8.Text); }

            catch (Exception Ex)

            { Form1.LogInFile(Ex.Message); }

            try

            { Ixx_ = float.Parse(NewTransForm.textBox9.Text); }

            catch (Exception Ex)

            { Form1.LogInFile(Ex.Message); }

            try

            { Ukz_ = float.Parse(NewTransForm.textBox10.Text); }

            catch (Exception Ex)

            { Form1.LogInFile(Ex.Message); }

            try

            { SubstationID = int.Parse(NewTransForm.textBox11.Text); }

            catch (Exception Ex)

            { Form1.LogInFile(Ex.Message); }

            #endregion

        }

        public XElement ToXElement()

        {

            System.Threading.Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("de-DE");

            XElement NewMesureElements=new XElement("Mesurements",

                Mesurements.Select(p=>

                new XElement("Mesurement",

                new XAttribute("MesureID", p.MesurmentID.ToString()),

                new XAttribute("Load",p.Load_.ToString()),

                new XAttribute("Voltage",p.Voltage.ToString()),

                new XAttribute("TransTemperature",p.TransTemperature.ToString()),

                new XAttribute("OutTemperature",p.TransTemperature.ToString()),

                new XAttribute("Date", p.DateTime))));

            XElement NewElement = new XElement("Transformer",

                                                new XAttribute("TransformerID", TransformerID),

                                                new XElement("Type", Type),

                                                new XElement("Produser", Produser),

                                                new XElement("Power", Power.ToString()),

                                                new XElement("PrimVoltage", PrimVoltage.ToString()),

                                                new XElement("SecVoltage", SecVoltage.ToString()),

                                                new XElement("dPxx", dPxx.ToString()),

                                                new XElement("dPkz", dPkz.ToString()),

                                                new XElement("Ixx", Ixx_.ToString()),

                                                new XElement("Ukz", Ukz_.ToString()),

                                                new XElement("Substation", SubstationID),

                                                NewMesureElements);

            return NewElement;

        }

    }

Информация о файле
Название файла Программное средство мониторинга и регистрации состояния силовых установок от пользователя 0legat0r
Дата добавления 10.5.2020, 19:36
Дата обновления 10.5.2020, 19:36
Тип файла Тип файла (zip - application/zip)
Скриншот Не доступно
Статистика
Размер файла 546.14 килобайт (Примерное время скачивания)
Просмотров 427
Скачиваний 115
Оценить файл