-> Hier kostenlos registrieren
Ich würde gerne für eine Realitätsgetreue Visualisierung die Positionswerte zweier Schalter verriegeln.
Hierbei habe ich ein Globales Skript erstellt, welches die Werte der Variablen überprüft und ggf. anpasst.
Zusätzlich sollen die 2 Ein/Ausgabefelder auf den aktuellen Wert gesetzt werden, damit keine Verwirrung aufkommt.
Allerdings ist das Skript derzeit nicht funktional. Habe ich etwas bei der Erstellung eines globalen Skriptes übersehen, oder ist mein Code Murks?
Hierbei habe ich ein Globales Skript erstellt, welches die Werte der Variablen überprüft und ggf. anpasst.
Zusätzlich sollen die 2 Ein/Ausgabefelder auf den aktuellen Wert gesetzt werden, damit keine Verwirrung aufkommt.
Allerdings ist das Skript derzeit nicht funktional. Habe ich etwas bei der Erstellung eines globalen Skriptes übersehen, oder ist mein Code Murks?
export function SSB_SSC() {
// Die Positionen der Schalter SSB und SSC werden verriegelt
// SSB darf nicht höher als SSC sein, SSC darf nicht niedriger als SSB sein.
// Zudem dürfen beide Schalter nicht auf derselben Schalterposition sein
// Sollte dies vorkommen, werden beide Schalterpositionen zurückgesetzt.
let ssb_pos = Tags("ANALOG ALLG VOM MP_Anlage_DBW20");
let ssc_pos = Tags("ANALOG ALLG VOM MP_Anlage_DBW18");
let ssb_r = Tags("ANALOG ALLG VOM MP_Anlage_DBW20").Read();
let ssc_r = Tags("ANALOG ALLG VOM MP_Anlage_DBW18").Read();
let max_aggr = Tags("ANALOG ALLG VOM MP_Anlage_DBW2").Read();
// Eingabefelder der 2 Positionen
var ssb_inout = UI.FindItem("A_B_KS");
var ssc_inout = UI.FindItem("B_C_KS");
if (ssb_r >= 1 && ssb_r < max_aggr && ssc_r >= 1 && ssc_r < max_aggr) // Wenn Schalter zwischen 1 und (max. - 1) ist
{
if (ssb_r > ssc_r || ssc_r > ssb_r || ssb_r == ssc_r )
{
ssb_pos.Write(0);
ssc_pos.Write(0);
ssb_inout.ProcessValue = 0;
ssc_inout.ProcessValue = 0;
}
}
}