Seite 2 von 4
Re: wie Zustandsänderung erkennen
Verfasst: Mo Nov 15, 2021 1:31 pm
von terseek
Hallo @Matze76 ,
mir scheint Du vermutest da ein viel größeres Problem, also versuche ich mein Problem nochmal mit anderen Worten zu beschreiben:
- auf einer GA werden fortlaufend Zahlen gesendet. Aufgabe ist nun zu erkennen, wenn auf Zahl A die Zahl B folgt.
Re: wie Zustandsänderung erkennen
Verfasst: Mo Nov 15, 2021 1:46 pm
von Robosoc
Sorry terseek, dass ist leider noch immer zu unprezise...
Das sich eine Wert an dem Eingang geändert hat, erkennst Du ja mit der C = change Funktion an jedem Eingang einer jeden Logik. Das ist Dir aber wahrscheinlich selber bewusst, deshalb vermute ich noch weiter.
Willst Du explizit Abragen: Wenn der Wert der Eingangs-GA vorher "15" war und nun "27" ist, dann sende TRUE; wenn aber Wechsel z.B. von "16" auf "8" dann FALSE und sonst bei jeder anderen Änderung nix...?
Sowas wäre schon anspruchsvoll und Du kämest meiner Meinung nach um eine Custom-Logik nicht herum.
Aber auch dabei wollen wir Dir gerne helfen...es wäre aber wirklich gut, wenn Du dann ein wenig genauer schreibst, was Du denn realisieren willst (Anwendungsfall beschreiben). Die Erfahrung hat einfach gezeigt, dass dann viel mehr Ideen zusammen kommen.
Re: wie Zustandsänderung erkennen
Verfasst: Mo Nov 15, 2021 2:18 pm
von terseek
Robosoc hat geschrieben: ↑Mo Nov 15, 2021 1:46 pm
Wenn der Wert der Eingangs-GA vorher "15" war und nun "27" ist, dann sende TRUE
Ja, bei dem speziellen Zahlenpaar (z.B. von "15" auf "27") erwarte ich am Ausgang TRUE, in allen anderen Fällen "FALSE".
Re: wie Zustandsänderung erkennen
Verfasst: Mo Nov 15, 2021 2:55 pm
von terseek
Um das Verhalten der Logik ganz präzise zu definieren, habe ich mal ein Zustandsdiagramm gezeichnet, daß sollte letzte Unklarheiten beheben:
A steht dabei für die erste Zahl, B für die zweite Zahl.
Re: wie Zustandsänderung erkennen
Verfasst: Mo Nov 15, 2021 3:00 pm
von Matze76
terseek hat geschrieben: ↑Mo Nov 15, 2021 1:31 pm
mir scheint Du vermutest da ein viel größeres Problem
Nein, überhaupt nicht. Ich war nur irritiert und wollte die "Wahrheit" herausfinden. Es ist dann praktisch so wie ich vermutet habe, nur dass mir nicht ganz klar war, was du am Ausgang genau erwartest (die Frage hattest du nicht beantwortet).
Aus Görans Annahme, die du bestätigt hattest, habe ich wie Sven einen Sendefilter herausgelesen, der den Eingangswert (die Zahl) unter bestimmten Bedingungen an den Ausgang durchroutet.
Dann fällt mir grob nur eine Custom-Logik ein. In etwa so, wie ich im ersten Ansatz schon beschrieben hatte:
- Den aktuellen Wert am Ende der Logik per Latch auf eine Variable schreiben, damit sie jeweils beim nächsten Durchlauf als alter Wert wieder zur Verfügung steht.
- Vorher im Ablauf ein Comparator, der den neuen Wert prüft (bist du = 27 ? -> dann "Vergleichsvariable1" auf true)
- Ein weiterer Comparator, der den alten Wert prüft (bist du = 15 ? -> dann "Vergleichsvariable2" auf true)
- AND-Baustein mit Vergleichsvariable1 und Vergleichsvariable2. Das Ergebnis dann einfach auf den Ausgang.
Ich weiß nicht, wie vertraut du mit Custom-Logik bist, aber ich kann das sonst auch konkreter mit Code beschreiben.
Re: wie Zustandsänderung erkennen
Verfasst: Mo Nov 15, 2021 3:07 pm
von terseek
Matze76 hat geschrieben: ↑Mo Nov 15, 2021 3:00 pm
Ich weiß nicht, wie vertraut du mit Custom-Logik bist, aber ich kann das sonst auch konkreter mit Code beschreiben.
Ich habe zwar schon einige Standardlogiken benutzt, Customlogiken sind für mir aber noch ein Buch mit 7 Siegeln. Wenn Du mir den Code senden könntest, wäre das für mich eine große Hilfe.
Re: wie Zustandsänderung erkennen
Verfasst: Mo Nov 15, 2021 3:08 pm
von Robosoc
Alles klar, definitiv Custom-Logik.
Kennst Du Dich damit schon ein wenig aus und brauchst Du nur Lösungsansätze oder würdest du Dir was Fertiges wünschen...
Mein Ansatz:
Ein Eingang mit dem Szenenwert, Triggern mit Verhalten C
Werte 15 und 27 als Konstante Level im Logikcode anlegen, oder (flexibler für spätere Duplizierung bei ähnlichen Anwendungen) auf weiter Eingänge legen und dort als Paramenter setzen
["Limiter","$AktuellerWert",0,"$Lim_Gate1",["$Wert_27", "$Wert_27"];
["Limiter","$LetzterWert",0,"$Lim_Gate2",["$Wert_15", "$Wert_15"];
[AND] aus beiden $Lim_GateX, wird auf Ausgang geschrieben]
[Latch] um den um Eingangswert "AktuellerWert" in die Variable "LetzterWert" zu schreiben
Re: wie Zustandsänderung erkennen
Verfasst: Mo Nov 15, 2021 3:08 pm
von Robosoc
Habe an dem Text lange geschrieben, weil ich zwischendurch noch ein paar Telefonate hatte...
Vielleicht schafft es ja jemand die Custom-Logik kurz fertig zu machen
Re: wie Zustandsänderung erkennen
Verfasst: Mo Nov 15, 2021 3:30 pm
von Matze76
terseek hat geschrieben: ↑Mo Nov 15, 2021 3:07 pm
Wenn Du mir den Code senden könntest, wäre das für mich eine große Hilfe.
Kann ich nachher gerne machen und hier rein stellen. Robosoc und ich haben ja auch beide praktisch den gleichen Aufbau der Logik gewählt.
Re: wie Zustandsänderung erkennen
Verfasst: Mo Nov 15, 2021 3:57 pm
von terseek
ist mir jetzt ganz peinlich, aber mein Zustandsdiagramm hatte einen Fehler, eine Folge "A", "A", "B" würde nicht erkannt werden. Habe das jetzt korrigiert, die roten Teile sind neu bzw. geändert:
sorry, sorry