NEU! UPGRADE IP 10 verfügbar!
Timberwolf VISU jetzt mit Graphic V Upgrade
Optimierte Darstellung von VISU Editor und VISU Client - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/8HzePCm3

Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074

NEU! Ausführliches Video Tutorial zur IP 10
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs

[TIPP] Binärausgänge abhängig vom Zahlenwert

Informationen und Diskussionen über Logik-Engine und Logik-Editor
Forumsregeln
  • Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS oder CometVisu beteiligt sind, dann auch deren Version
  • Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
  • Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
  • Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln

Matze76
Reactions:
Beiträge: 314
Registriert: Mo Sep 24, 2018 9:59 am
Hat sich bedankt: 281 Mal
Danksagung erhalten: 195 Mal

#21

Beitrag von Matze76 »

Matthias (Matze67), bitte entschuldige dass ich Dich mit einem Fehler korrigiert habe.
Überhaupt kein Problem! So etwas hilft ja auch um Missverständnisse aufzuklären. Hätte ja auch sein können, dass ich etwas falsch gesehen habe.

Und ich entschuldige mich, dass ich Dein "else gibt es nicht" zitiert habe. Du hast ja damit recht. Ich wollte nur eine Alternative zum Multiplexer (den ich auch gerne nutze) aufzeigen, die von der Struktur her für den einen oder anderen vielleicht etwas näher am gewohnten "IF / ELSE" ist.
Gruß
Matthias

TWS 2500 ID:110 + PBM, VPN offen, Reboot nach Rücksprache

Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 637 Mal
Danksagung erhalten: 775 Mal

#22

Beitrag von Robosoc »

S. Kolbinger hat geschrieben: Di Nov 05, 2019 10:11 pm
Grundsätzlicher Ablauf der Berechnung einer Logik-Zelle:
  1. Ein Trigger (entsprechend der Trigger-Optionen an den Eingängen) löst die Ausführung/Abarbeitung der Logik-Zelle aus.
  2. Alle Module werden der Reihenfolge nach ausgeführt.
  3. Alle Ausgänge werden entsprechend der Sende-Option an den Dispatcher(DOS) gesendet
Aber das heißt doch auch, dass ein Monoflop hier eine Ausnahme ist, oder habe ich da auch noch ein Missverständnis? Ein Monoflop, in dem man direkt den Ausgang einer Logik beschaltet kann doch diesen Ausgang einmal true und einmal false schalten, obwohl die Logik nur 1x getriggert wurde und somit die Ausgänge eigentlich nur einmal mit dem Endergebnis beschrieben werden... ich hoffe ich bin jetzt nicht voll verwirrt.

Kann man die Ausführung einer Logik verzögern (quasi Delay)?
Zuletzt geändert von Robosoc am Di Nov 05, 2019 10:35 pm, insgesamt 3-mal geändert.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Matze76
Reactions:
Beiträge: 314
Registriert: Mo Sep 24, 2018 9:59 am
Hat sich bedankt: 281 Mal
Danksagung erhalten: 195 Mal

#23

Beitrag von Matze76 »

... bleibt für mich noch die Frage an Meister Kolbinger, ob meine "ELSE"-ähnliche Alternative (also eigentlich, am Anfang dem Ausgang per Latch einen festen Wert zuzuweisen, der später ggf. übersteuert wird) im Sinne des Logik-Codes ein "sauberer" Ansatz ist, oder einfach schlechter Stil mit gewissen Risiken?

Code: Alles auswählen

// Zuerst kommt das ELSE:

[  "Latch", "$Wert3", "$Ausgang", "$KonstanteTrue", 0  ]   =>  Schiebt grundsätzlich $Wert3 auf den Ausgang

// Dann folgen die IF / ELSE IF Bedingungen. => "And" prüft die Bedingung und setzt bei Erfüllung die jeweilige Hilfs-Variable ($Bedingung..) auf true. Der zugehörige "Latch" schiebt dann den gewünschten  Wert auf den Ausgang und übersteuert damit den grundsätzlichen Wert.

[  "And",  [ "$Eingang1", "$Eingang2" ], "$Bedingung1" ],
[  "Latch", "$Wert1", "$Ausgang", "$Bedingung1", 0 ],

[  "And",  [ "-$Eingang1", "$Eingang2","$Eingang3" ], "$Bedingung2" ],
[  "Latch", "$Wert2", "$Ausgang", "$Bedingung2", 0 ],
Gruß
Matthias

TWS 2500 ID:110 + PBM, VPN offen, Reboot nach Rücksprache

Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 637 Mal
Danksagung erhalten: 775 Mal

#24

Beitrag von Robosoc »

Ich finde inzwischen, dass ist ein Assreines Else, aber für beide And+Latch (global Else :D ), bin jetzt auch mal gespannt auf die Antwort.
Zuletzt geändert von Robosoc am Di Nov 05, 2019 10:38 pm, insgesamt 1-mal geändert.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 637 Mal
Danksagung erhalten: 775 Mal

#25

Beitrag von Robosoc »

Robosoc hat geschrieben: Di Nov 05, 2019 10:21 pm Danke, dass Du mich hier gleich korrigierst. Da habe ich ganz offensichtlich ein ziemliches Missverständnis im Kopf gehabt, was aus folgendem Threat kam: viewtopic.php?f=24&t=1232&p=12455&hilit=SPS#p12455

Matthias (Matze67), bitte entschuldige dass ich Dich mit einem Fehler korrigiert habe.

Ich werde für heute Schluss machen und mir in Ruhe morgen anschauen, was ich damals falsch verstanden habe bzw. was an dem Beispiel damals anders war so dass meine Behauptung da gestimmt hat.
Habe jetzt auch den Unterschied zu der damaligen Problematik erkannt. Damals wurde eine Logik zweimal getriggert, in unserem Beispiel hier geht es um das Verhalten während der Abarbeitung innerhalb einer Logik nach einem einzigen Triggerevent. Aber meine Erklärung damals war nicht ganz korrekt. Sollte ich die dort noch einmal korrigieren?
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

S. Kolbinger
Elaborated Networks
Reactions:
Beiträge: 588
Registriert: Mi Aug 15, 2018 11:34 am
Hat sich bedankt: 82 Mal
Danksagung erhalten: 559 Mal

#26

Beitrag von S. Kolbinger »

Robosoc hat geschrieben: Di Nov 05, 2019 10:31 pm Aber das heißt doch auch, dass ein Monoflop hier eine Ausnahme ist, oder habe ich da auch noch ein Missverständnis? Ein Monoflop, in dem man direkt den Ausgang einer Logik beschaltet kann doch diesen Ausgang einmal true und einmal false schalten, obwohl die Logik nur 1x getriggert wurde und somit die Ausgänge eigentlich nur einmal mit dem Endergebnis beschrieben werden... ich hoffe ich bin jetzt nicht voll verwirrt.

Kann man die Ausführung einer Logik verzögern (quasi Delay)?
ein Monoflop ist keine Ausnahme von dieser Regel.
Entscheidend ist hier vielmehr, was der auslösende Trigger für die Logik-Zelle war.
Nur wenn der Trigger der Ablauf des Timers (des Monoflops) war, wird auch der Ausgang des Monoflops auf true gehen.
Bei einer anschließenden Neuberechnung der LogIk-Zelle durch einen anderen Trigger geht der Ausgang wieder auf false
Gruß,
Stefan K.

S. Kolbinger
Elaborated Networks
Reactions:
Beiträge: 588
Registriert: Mi Aug 15, 2018 11:34 am
Hat sich bedankt: 82 Mal
Danksagung erhalten: 559 Mal

#27

Beitrag von S. Kolbinger »

Hallo Matthias,
Matze76 hat geschrieben: Di Nov 05, 2019 10:36 pm ... bleibt für mich noch die Frage an Meister Kolbinger, ob meine "ELSE"-ähnliche Alternative (also eigentlich, am Anfang dem Ausgang per Latch einen festen Wert zuzuweisen, der später ggf. übersteuert wird) im Sinne des Logik-Codes ein "sauberer" Ansatz ist, oder einfach schlechter Stil mit gewissen Risiken?
... erst mal, habe ich vor langer Zeit gelernt: "Guter/Schlechter Stil" ist Geschmackssache, ähnlich der Rocklänge in den Modemagazinen.
Am Schluss bleibt eigentlich nur richtig oder falsch, bzw. funktioniert der Algorithmus oder nicht. Danach kann man sich fragen: "Geht das noch besser?"

Was du dir aber unbedingt klar machen solltest: "Jeder Änderung/Überschreiben eines Levels ändert entsprechend den Zustand von Changed". Und der letzte Zustand hat damit Auswirkung auf das Sendeverhalten (zumindest bei "on Change").

Ehrlich gesagt, habe ich mir vor dieser Diskussion gar nicht die Frage gestellt, "wie bilde ich ein IF_THEN_ELSE oder ein SWITCH_CASE_DEFAULT , etc. ab?".
Mein Ansatz war eher angelehnt an meinen ersten Elektronik-Baukasten :roll:
Daher fiel die Logic-Engine auch ein bisschen hardwarelastig aus.

Aber wenn ich einen Tipp geben müsste dann folgenden:
KonstruktRealisierung
IF THEN"Latch"
IF THEN ELSE"Multiplexer" (mit bool Switch)
SWITCH CASE DEFAULTviewtopic.php?f=24&t=1585&p=16639#p16639
Gruß,
Stefan K.

Robert_Mini
Reactions:
Beiträge: 3744
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1167 Mal
Danksagung erhalten: 2076 Mal

#28

Beitrag von Robert_Mini »

Das finde ich eine super Zusammenfassung => für die KB notiert.
Viele wie auch ich denken eher in Hochsprache als in Elektronik-Schaltungen.

DANKE
Robert
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

Robosoc
Reactions:
Beiträge: 1876
Registriert: Di Okt 09, 2018 9:26 am
Hat sich bedankt: 637 Mal
Danksagung erhalten: 775 Mal

#29

Beitrag von Robosoc »

Aber das heißt doch auch, dass ein Monoflop hier eine Ausnahme ist, oder habe ich da auch noch ein Missverständnis? Ein Monoflop, in dem man direkt den Ausgang einer Logik beschaltet kann doch diesen Ausgang einmal true und einmal false schalten, obwohl die Logik nur 1x getriggert wurde und somit die Ausgänge eigentlich nur einmal mit dem Endergebnis beschrieben werden... ich hoffe ich bin jetzt nicht voll verwirrt.[/quote]

Jetzt habe ich gerade bei einer Logik das Gefühl, dass ein Monoflop nach Ablauf der eingestellten Zeit die Logik neu triggert...Ich mache da mal einen eigenen Threat raus, dass passt ja hier nicht wirklich zum Thema.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

Matze76
Reactions:
Beiträge: 314
Registriert: Mo Sep 24, 2018 9:59 am
Hat sich bedankt: 281 Mal
Danksagung erhalten: 195 Mal

#30

Beitrag von Matze76 »

Danke Stefan @S.Kolbinger für deine Hinweise!
Ehrlich gesagt, habe ich mir vor dieser Diskussion gar nicht die Frage gestellt, "wie bilde ich ein IF_THEN_ELSE oder ein SWITCH_CASE_DEFAULT , etc. ab?".
Mein Ansatz war eher angelehnt an meinen ersten Elektronik-Baukasten :roll:
Mir gefällt dieser Schaltungs-basierte Ansatz immer besser und ich halte ihn für den Anwendungszweck und eure Intention mit dem LE auch für "runder" als die an eine Programmier-/Scriptsprache angelehnten Editoren! Meine bis jetzt übertragenen Logiken sind auf jeden Fall insgesamt sauberer geworden als sie das vorher mit dem Wiregate-Logikprozessor waren.

Wenn man tiefer in die Custom-Logiken einsteigen will, Ist es für viele hier (mich eingeschlossen) wahrscheinlich in etwa wie das Erlernen einer Fremdsprache. Wenn man nicht schon in der Fremdsprache bzw. zweisprachig aufgewachsen ist, ist das Gehirn immer erstmal in der Struktur der "Muttersprache" und versucht 1:1 zu übersetzen. Ist natürlich holprig, aber irgendwie muss man ja hineinkommen. Dafür finde ich diese "Übersetzungshilfen" sehr hilfreich.

Mein Ziel ist es aber schon, irgendwann mit viel Übung so weit zu sein, auch ohne im Kopf zu übersetzen sofort in der Struktur der neuen "Fremdsprache" denken zu können.
Gruß
Matthias

TWS 2500 ID:110 + PBM, VPN offen, Reboot nach Rücksprache
Antworten

Zurück zu „Logikengine & Logik-Editor“