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); }
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(); }
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); } }