Exemple #1
0
        private void CheckBoxMosfet_CheckedChanged(object sender, EventArgs e)
        {
            CheckBox isONorOFF = (CheckBox)sender;

            if (isONorOFF.Checked)
            {
                Arduino.Send_Komando(PassivBMS.Mosfet(comboBoxAuswahl.Text, true));
            }
            else
            {
                Arduino.Send_Komando(PassivBMS.Mosfet(comboBoxAuswahl.Text, false));
            }
        }
Exemple #2
0
 public void EventHandlerAutoModeWorkerFetig(object sender, RunWorkerCompletedEventArgs e)
 {
     if (e.Error != null)
     {
         // Fehler
     }
     for (int i = 0; i < Arduino.Datensatz168p.Count(); i++)
     {
         if (Arduino.Datensatz168p[i].mFet)// Deaktiviert alle Mosfets damit diese nicht an bleiben
         {
             Arduino.Datensatz168p[i].mFet = false;
             Arduino.Send_Komando(PassivBMS.Mosfet(i + 1, false));
             System.Threading.Thread.Sleep(50);
         }
     }
 }
Exemple #3
0
        public void EventHandlerAutoModeWorker(object sender, DoWorkEventArgs e)
        {
            BackgroundWorker worker = sender as BackgroundWorker;
            int    k          = 0;
            double summe      = 0;
            double ergebnis   = 0;
            double abweichung = 0.01;

            while (!worker.CancellationPending)
            {
                summe    = 0;
                k        = 0;
                ergebnis = 0;
                System.Threading.Thread.Sleep(1000);
                for (int i = 0; i < Arduino.Datensatz168p.Count(); i++)
                {
                    summe += Arduino.Datensatz168p[i].vin;
                    k++;
                }
                ergebnis = summe / k;

                for (int i = 0; i < Arduino.Datensatz168p.Count(); i++)
                {
                    if (Arduino.Datensatz168p[i].vin - ergebnis > abweichung)
                    {
                        if (!Arduino.Datensatz168p[i].mFet)
                        {
                            Arduino.Datensatz168p[i].mFet = true;
                            Arduino.Send_Komando(PassivBMS.Mosfet(i + 1, true));
                            System.Threading.Thread.Sleep(100);
                        }
                    }
                    else
                    {
                        if (Arduino.Datensatz168p[i].mFet)
                        {
                            Arduino.Datensatz168p[i].mFet = false;
                            Arduino.Send_Komando(PassivBMS.Mosfet(i + 1, false));
                            System.Threading.Thread.Sleep(100);
                        }
                    }
                }
            }
        }
Exemple #4
0
 public void EventHandlerWHMessungWorker(object sender, DoWorkEventArgs e)
 {
     for (int i = 0; i < Arduino.Datensatz168p.Count(); i++)
     {
         if (Arduino.Datensatz168p[i].WhMessungAn)//Messung für den Datensatz ist nicht an
         {
             Arduino.Send_Komando(PassivBMS.WhMessung(i + 1));
             System.Threading.Thread.Sleep(1000);
             if (Arduino.Datensatz168p[i].WHMessungAnzahl > 2)// Erst ab den dritten Dattensatz beginng die Messung
             {
                 if (Arduino.Datensatz168p[i].Whtime != Arduino.Datensatz168p[i].time)
                 {
                     deltT = Convert.ToDouble(Arduino.Datensatz168p[i].Whtime - Arduino.Datensatz168p[i].time);
                     Arduino.Datensatz168p[i].WhMessungErgebnis += deltT * Arduino.Datensatz168p[i].vin * Arduino.Datensatz168p[i].alast / 1000 / 60 / 60;//Umrechung in Wh
                     Arduino.Datensatz168p[i].Whtime             = Arduino.Datensatz168p[i].time;
                     Arduino.Datensatz168p[i].WhMessung.Add(Convert.ToString(deltT) + "," + Convert.ToString(Arduino.Datensatz168p[i].vin) + "," + Convert.ToString(Arduino.Datensatz168p[i].alast));
                     Arduino.Datensatz168p[i].Whtime = Arduino.Datensatz168p[i].time;
                 }
             }
             else
             {
                 Arduino.Datensatz168p[i].WhMessungMessungVinStart = Arduino.Datensatz168p[i].vin;
                 Arduino.Datensatz168p[i].Whtime = Arduino.Datensatz168p[i].time;
             }
             Arduino.Datensatz168p[i].WHMessungAnzahl++;
         }
         else
         {
             if (Arduino.Datensatz168p[i].mFet)
             {
                 Arduino.Send_Komando(PassivBMS.Mosfet(i + 1, false));
                 Arduino.Datensatz168p[i].mFet = false;
             }
         }
         if (Arduino.Datensatz168p[i].fehler)//Bricht die Messung ab da ein Fehler aufgetreten ist
         {
             Thread.Sleep(1000);
             Arduino.Send_Komando(PassivBMS.Mosfet(i + 1, false));
             Arduino.Datensatz168p[i].mFet = false;
             break;
         }
     }
 }
Exemple #5
0
 private void ButtonWHMessungStart_Click(object sender, EventArgs e)
 {
     utcDate = DateTime.UtcNow;
     utcDate = utcDate.AddHours(2.0);
     Arduino.Datensatz168p[Convert.ToInt32(AuswahlBMS) - 1].mFet = true;
     Arduino.Send_Komando(PassivBMS.Mosfet(AuswahlBMS, true));
     Arduino.Datensatz168p[Convert.ToInt32(AuswahlBMS) - 1].WhMessungAn = true;
     Arduino.Send_Komando(PassivBMS.WhMessung(AuswahlBMS));
     Thread.Sleep(300);
     Arduino.Datensatz168p[Convert.ToInt32(AuswahlBMS) - 1].WhMessungStartzeit = utcDate;
     TextBoxWhMessungZeitStart.Text = Arduino.Datensatz168p[Convert.ToInt32(AuswahlBMS) - 1].WhMessungStartzeit.ToString(System.Globalization.CultureInfo.CreateSpecificCulture("de-DE"));
     Thread.Sleep(100);
     TextBoxWhMessungVinStart.Text = "";
     TextBoxWhMessungZeitEnde.Text = "";
     TextBoxWhMessungVinEnde.Text  = "";
     TextBoxWhMessungAnzahl.Text   = "";
     TextBoxWhMessung.Text         = "";
     Arduino.Datensatz168p[Convert.ToInt32(AuswahlBMS) - 1].WHMessungAnzahl = 0;
     if (!WHMessungWorker.IsBusy)// WH messung läuft bereits und kann nicht zweimal gestartet werden Alle Messungen müssen vorher beenden werden
     {
         WHMessungWorker.RunWorkerAsync();
     }
 }
Exemple #6
0
        public void EventHandlerWHMessungWorkerFetig(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Error != null)
            {
                // Fehler
            }
            int abbrechen = 0;

            TextBoxWhMessungAnzahl.Text = Convert.ToString(Arduino.Datensatz168p[Convert.ToInt32(AuswahlBMS) - 1].WhMessung.Count());
            TextBoxWhMessung.Text       = Convert.ToString(Arduino.Datensatz168p[Convert.ToInt32(AuswahlBMS) - 1].WhMessungErgebnis);
            Arduino.Datensatz168p[Convert.ToInt32(AuswahlBMS) - 1].WhMessungEndezeit = DateTime.UtcNow;
            Arduino.Datensatz168p[Convert.ToInt32(AuswahlBMS) - 1].WhMessungEndezeit.AddHours(2.0);
            TextBoxWhMessungZeitEnde.Text = Convert.ToString(Arduino.Datensatz168p[Convert.ToInt32(AuswahlBMS) - 1].WhMessungEndezeit);
            Arduino.Datensatz168p[Convert.ToInt32(AuswahlBMS) - 1].WhMessungMessungVinEnde = Arduino.Datensatz168p[Convert.ToInt32(AuswahlBMS) - 1].vin;
            TextBoxWhMessungVinEnde.Text = Convert.ToString(Arduino.Datensatz168p[Convert.ToInt32(AuswahlBMS) - 1].vin);

            TextBoxWhMessungVinStart.Text = Convert.ToString(Arduino.Datensatz168p[Convert.ToInt32(AuswahlBMS) - 1].WhMessungMessungVinStart);
            for (int i = 0; i < Arduino.Datensatz168p.Count(); i++)
            {
                if (Arduino.Datensatz168p[Convert.ToInt32(i)].WhMessungAn)
                {
                    abbrechen++;
                }
                else
                {
                    if (Arduino.Datensatz168p[Convert.ToInt32(i)].mFet)
                    {
                        Arduino.Send_Komando(PassivBMS.Mosfet(i + 1, false));
                        Arduino.Datensatz168p[i].mFet = false;
                    }
                }
            }
            if (abbrechen != 0)//Bricht den Background Worker ab wenn keine Messungen meher an sind
            {
                WHMessungWorker.RunWorkerAsync();
            }
        }