Esempio n. 1
0
        public void WertebereicheUmrechnen()
        {
            // Sollwerte --> SPS
            Netz_U      = S7Analog.S7_Analog_2_Short(Spannung, 1000);
            Netz_f      = S7Analog.S7_Analog_2_Short(Frequenz, 100);
            Netz_P      = S7Analog.S7_Analog_2_Short(Leistung, 1000);
            Netz_cosPhi = S7Analog.S7_Analog_2_Short(Leistungsfaktor, 1);

            // Modell --> SPS
            Gen_n = S7Analog.S7_Analog_2_Short(Generator_n, 5000);
            Gen_U = S7Analog.S7_Analog_2_Short(Generator_U, 1000);
            Gen_f = S7Analog.S7_Analog_2_Short(Generator_f, 100);
            Gen_P = S7Analog.S7_Analog_2_Short(Generator_P, 1000);
            UDiff = S7Analog.S7_Analog_2_Short(SpannungsUnterschiedSynchronisieren, 1000);
            ph    = S7Analog.S7_Analog_2_Short(Phasenlage, 1);
        }
Esempio n. 2
0
        public void KraftwerkTask()
        {
            generator.MaschineAntreiben(Y);
            Generator_n = generator.Drehzahl();
            Generator_U = generator.Spannung(S7Analog.S7_Analog_2_Double(Gen_Ie, 10));
            Generator_f = generator.Frequenz();

            Netz_Winkel      = DrehstromZeiger.WinkelBerechnen(Zeitdauer, Frequenz, Netz_Winkel);
            Generator_Winkel = DrehstromZeiger.WinkelBerechnen(Zeitdauer, Generator_f, Generator_Winkel);

            Netz_Momentanspannung      = DrehstromZeiger.GetSpannung(Netz_Winkel, Spannung);
            Generator_Momentanspannung = DrehstromZeiger.GetSpannung(Generator_Winkel, Generator_U);

            FrequenzDifferenz = Frequenz - Generator_f;
            Zeiger SpannungsDiff = new Zeiger(Generator_Momentanspannung, Netz_Momentanspannung);

            SpannungsUnterschiedSynchronisieren = SpannungsDiff.Laenge();
        }
Esempio n. 3
0
        public void Logikfunktionen_Task()
        {
            while (mainWindow.FensterAktiv)
            {
                switch (mainWindow.WagenRichtung)
                {
                case MainWindow.Richtung.nachLinks:
                    if (mainWindow.WagenPosition_X > WagenPositionLinks)
                    {
                        mainWindow.WagenPosition_X -= WagenGeschwindigkeit;
                    }
                    if (mainWindow.WagenPosition_X <= WagenPositionLinks)
                    {
                        mainWindow.WagenPosition_X = WagenPositionLinks;
                        mainWindow.WagenRichtung   = MainWindow.Richtung.stehen;
                    }
                    break;

                case MainWindow.Richtung.nachRechts:
                    if (mainWindow.WagenPosition_X < WagenPositionRechts)
                    {
                        mainWindow.WagenPosition_X += WagenGeschwindigkeit;
                    }
                    if (mainWindow.WagenPosition_X >= WagenPositionRechts)
                    {
                        mainWindow.WagenPosition_X = WagenPositionRechts;
                        mainWindow.WagenRichtung   = MainWindow.Richtung.stehen;
                    }
                    break;

                case MainWindow.Richtung.stehen:
                default:
                    break;
                }

                // Wagen bewegen
                if (mainWindow.WagenPosition_X == WagenPositionRechts)
                {
                    mainWindow.S7 = true;
                }
                else
                {
                    mainWindow.S7 = false;
                }
                if (mainWindow.WagenFuellstand == WagenFuellstandVoll)
                {
                    mainWindow.S8 = true;
                }
                else
                {
                    mainWindow.S8 = false;
                }

                if (mainWindow.WagenPosition_X == WagenPositionLinks)
                {
                    if (mainWindow.WagenFuellstand > 0)
                    {
                        mainWindow.WagenFuellstand -= WagenFuellstandLeeren;
                    }
                }

                // Materialsilo fuellen/leeren
                if (mainWindow.XFU)
                {
                    mainWindow.MaterialSiloFuellstand += MaterialSiloFuellen;
                }

                if (mainWindow.MaterialSiloFuellstand > 0 & mainWindow.Q4_LL & mainWindow.Y1)
                {
                    mainWindow.WagenFuellstand        += WagenFuellstandFuellen;
                    mainWindow.MaterialSiloFuellstand -= MaterialSiloLeeren;
                }
                if (mainWindow.WagenFuellstand > WagenFuellstandVoll)
                {
                    mainWindow.WagenFuellstand = WagenFuellstandVoll;
                }
                if (mainWindow.WagenFuellstand < 0)
                {
                    mainWindow.WagenFuellstand = 0;
                }

                if (mainWindow.MaterialSiloFuellstand > 1)
                {
                    mainWindow.MaterialSiloFuellstand = 1;
                }
                if (mainWindow.MaterialSiloFuellstand < 0)
                {
                    mainWindow.MaterialSiloFuellstand = 0;
                }


                mainWindow.MaterialsiloPegel = S7Analog.S7_Analog_2_Short(mainWindow.MaterialSiloFuellstand, 1);

                Thread.Sleep(100);
            }
        }