NEU! UPGRADE IP 10 verfügbar!
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
Ab sofort kann jeder die neue VISU & IFTTT testen. Info: viewtopic.php?f=8&t=5074

Release V 4 am 15. Juni 2024
Es gibt nun einen fixen Termin. Info: viewtopic.php?f=8&t=5117

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

[TIPP] MONOFLOP - Auflistung aller Varianten und Verhaltensweisen

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
Benutzeravatar

Ersteller
Eraser
Reactions:
Beiträge: 650
Registriert: So Aug 12, 2018 1:51 pm
Wohnort: Amstetten, Österreich
Hat sich bedankt: 209 Mal
Danksagung erhalten: 275 Mal

MONOFLOP - Auflistung aller Varianten und Verhaltensweisen

#1

Beitrag von Eraser »

Hallo,

ich hab mir mal die Arbeit gemacht und eine Auflistung aller Monoflop-Varianten erstellt, sodass diese übersichtlich dargestellt werden.

Timberwolf - Monoflop.pdf

In der angehängten PDF sieht man oben die Eingangsimpulse von Set und Reset und unten dann alle Timer-Varianten mit dem Output.

Die Graphen sind angelehnt an dieselben, welche auch auf elektrischen Zeit-Bausteinen aufgedruckt sind, da hier die komplette Funktionsweise der Signale sofort sichtbar wird.

Die Monoflop-Varianten gehen von 0 bis 7 bei einer Custom-Logik und 1 bis 8 bei Einzel-Timerbausteinen, wobei die Monoflop-Variante 0 bei einer Custom-Logik gleich mit der Einzel-Timerbaustein-Variante 1 ist.

Vielleicht wäre es einfacher, die Einzel-Timerbausteine auch von 0 bis 7 zu nummerieren, damit hier das Schema gleich bleibt.

Zusätzlich sind unten dann noch 3 Varianten hinzugefügt, welche ich zusätzlich schon mal gebraucht habe und im Endeffekt nur eine Kombination eines Monoflops mit einer AND- oder OR-Logik sind.

Falls jemand Fehler findet, die ich übersehen habe, bitte mir mitteilen, sodass die Tabelle aktualisiert werden kann.
Ebenso bei Anregungen und Verbesserungen.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
mfg
Wolfgang

Timberwolf 2500 #151 / VPN offen / Reboot nach Rücksprache
+ PBM #938

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

#2

Beitrag von Robert_Mini »

Sehr gute Zusammenfassung. So tief musste ich bisher nicht einsteigen, aber DANKE dafür!!

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

eib-eg
Reactions:
Beiträge: 442
Registriert: Fr Sep 14, 2018 5:03 pm
Hat sich bedankt: 1457 Mal
Danksagung erhalten: 235 Mal

#3

Beitrag von eib-eg »

Das wäre doch was für die KB
TW 2600_99 seit 1.1.2018 / VPN zu

adimaster
Reactions:
Beiträge: 375
Registriert: So Apr 14, 2019 11:12 am
Hat sich bedankt: 203 Mal
Danksagung erhalten: 198 Mal

#4

Beitrag von adimaster »

Hi,
Eraser hat geschrieben: So Jan 19, 2020 9:26 pm In der angehängten PDF sieht man oben die Eingangsimpulse von Set und Reset und unten dann alle Timer-Varianten mit dem Output.
OT-Frage:
Das ist mit Excel erstellt oder? Und die Flanken über schräge Rahmenlinien oder?

Und noch eine Frage an alle zu den Triggeroptionen/Monoflop-Varianten:
Kann es sein, dass man die Triggeroption 0...7 nicht über eine Integer-Variable setzen kann? :(
Zumindest kam bei mir was anderes raus (im Bsp. Option 3 --> Reaktion auf fallende, statt steigende Flanke).

Grüße
Adi
Zuletzt geändert von adimaster am Fr Aug 21, 2020 1:09 am, insgesamt 1-mal geändert.
Grüße, Adi
TWS 2600 ID: 331, VPN geschlossen, Reboot nach Rücksprache
Benutzeravatar

Ersteller
Eraser
Reactions:
Beiträge: 650
Registriert: So Aug 12, 2018 1:51 pm
Wohnort: Amstetten, Österreich
Hat sich bedankt: 209 Mal
Danksagung erhalten: 275 Mal

#5

Beitrag von Eraser »

adimaster hat geschrieben: Do Aug 20, 2020 8:52 pm Das ist mit Excel erstellt oder? Und die Flanken über schräge Rahmenlinien oder?
Ja korrekt.
adimaster hat geschrieben: Do Aug 20, 2020 8:52 pm Kann es sein, dass man die Triggeroption 0...7 nicht über eine Integer-Variable setzen kann? :(
Das habe ich selber noch nie probiert, wüsste auch nicht warum, da der Timer-Typ ja nur einmal eingestellt wird und nicht im laufenden Prozess geändert werden muss. Jedenfalls wüsste ich auf die Schnelle keinen Anwendungsfall.
Vielleicht kann S. Kolbinger dazu etwas sagen, ob dies mit einer Variable auch funktioniert.
adimaster hat geschrieben: Do Aug 20, 2020 8:52 pm Zumindest kam bei mir was anderes raus (im Bsp. Option 3 --> Reaktion auf fallende, statt steigende Flanke).
Du meinst wenn du die Variable dafür verwendest?
Mit direkt einer Zahl anstatt der Variable funktioniert es richtig?
mfg
Wolfgang

Timberwolf 2500 #151 / VPN offen / Reboot nach Rücksprache
+ PBM #938

adimaster
Reactions:
Beiträge: 375
Registriert: So Apr 14, 2019 11:12 am
Hat sich bedankt: 203 Mal
Danksagung erhalten: 198 Mal

#6

Beitrag von adimaster »

Hallo Wolfgang,

Danke für die Rückmeldung!
Eraser hat geschrieben: Fr Aug 21, 2020 6:13 am Das habe ich selber noch nie probiert, wüsste auch nicht warum, da der Timer-Typ ja nur einmal eingestellt wird und nicht im laufenden Prozess geändert werden muss.
Richtig, ich wüsste auf Anhieb auch nicht, ob ich jemals den Timer-Typ zur Laufzeit ändern würde. Das ist aber auch nicht der Grund, warum ich eine Variable/Konstante verwenden möchte.
Damit die Custom-Logiken für mich lesbarer sind und ich auch noch in Jahren schnell den Code lesen können möchte, würde ich den Code gerne folgendermaßen schreiben:

Code: Alles auswählen

["Monoflop", "$bLeTriggerNightLight", "$bReset", "$bOutSetNightLight", "$iInFollowUpTime", "$icLeTriggerOption"]
Der Vorteil ist auch, dass ich alle Konstanten/Variablen an einem Ort im Bereich "Level" sehe und ändern kann. Das ist für mich wesentlich effizienter, übersichtlicher und komfortabler.
Eraser hat geschrieben: Fr Aug 21, 2020 6:13 am Du meinst wenn du die Variable dafür verwendest?
Mit direkt einer Zahl anstatt der Variable funktioniert es richtig?
Korrekt.

Grüße
Adi
Grüße, Adi
TWS 2600 ID: 331, VPN geschlossen, Reboot nach Rücksprache
Benutzeravatar

Ersteller
Eraser
Reactions:
Beiträge: 650
Registriert: So Aug 12, 2018 1:51 pm
Wohnort: Amstetten, Österreich
Hat sich bedankt: 209 Mal
Danksagung erhalten: 275 Mal

#7

Beitrag von Eraser »

Verstehe, wie die #DEFINE bei C.
Da muss S. Kolbinger was dazu sagen.
mfg
Wolfgang

Timberwolf 2500 #151 / VPN offen / Reboot nach Rücksprache
+ PBM #938

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

#8

Beitrag von S. Kolbinger »

Hallo Wolfgang, hallo Adi,

erst mal herzlichen Dank für die tolle Zusammenfassung:
Eraser hat geschrieben: So Jan 19, 2020 9:26 pm Timberwolf - Monoflop.pdf
Die Unterschiede der einzelnen Varianten sind hier super herausgearbeitet. Top :bow-yellow:

So bleibt mir nur noch diese Frage zu beantworten:
adimaster hat geschrieben: Do Aug 20, 2020 8:52 pm Kann es sein, dass man die Triggeroption 0...7 nicht über eine Integer-Variable setzen kann? :(
Die Kurzantwort ist NEIN, die Triggeroption muss eine Ganzzahl sein.

Etwas ausführlichere Erklärung:
Ich hatte mir damals überlegt, wie ich die unterschiedlichen Triggeroptionen beim Sigle-Shot-Timer (Monoflop) realisiere.
  1. Für jede Option ein eigenes Modul
  2. Ein binäre Matrix (Bit kodiert)
    1. Kodierung fix, nicht dynamisch änderbar
    2. Kodierung dynamisch änderbar über einen Level
Variante 1. hatte nach meinem Geschmack zuviel Overhead da der Großteil der Funktionalität identisch ist. Zudem ist das auch schlechter zu warten.
Ich hatte mich für die Bit kodierte Variante entschieden.
Bei der dynamischen Variante hatte ich höchste Bedenken, dass es hier zu schwer nachvollziehbaren Effekten kommen kann, mit enormen Support-Aufwand. Außerdem konnte ich mir kein realistisches Szenario denken, wo man das sinnvoll einsetzen kann.
Damit machte die Variante mit fixer Kodierung das Rennen.

Übrigens: Die Optionen 0-7 setzen sich zusammen aus drei Bits:
  • Bit0: retriggerbar
  • Bit1: triggert bei steigender Flanke
  • Bit2: triggert bei fallender Flanke
Falls keine Triggerung durch Flanke (Bit1=0 und Bit2=0) -> dann Level-Triggerung

ACHTUNG:
Hier gibt es noch eine versteckte Falle:
adimaster hat geschrieben: Fr Aug 21, 2020 7:28 am ["Monoflop", "$bLeTriggerNightLight", "$bReset", "$bOutSetNightLight", "$iInFollowUpTime", "$icLeTriggerOption"]
Falls man als Option eine Level-Referenz anstatt einer Zahl angibt, dann lässt sich die Logik erst mal ohne Fehlermeldung speichern.

Aber was ist hier eigentlich passiert:
Die Übersetzung der (Custom-)Logiken geschieht in zwei Stufen.
Die erste Stufe übernimmt der Logik-Editor und wandelt den Code in die einfachere Syntax der Logik-Engine um. Die Logik-Engine setzt dann diese vereinfachte Syntax in die tatsächlichen Ablaufstrukturen um.
Die vereinfachte Syntax kennt keine Level-Namen ($xyz), sondern benötigt die Position des Levels in der Liste.
Letztendlich wird im obigen Fall die Position (des Levels innerhalb der Level-List) zur Trigger-Option.
Das ist relativ zufällig, zumal ja der Logik-Editor die Level-Liste noch manipuliert, abhängig von eventuellen Ein-/Ausgangs-Modifizierern und zusätzlich angeklickten Triggern.

Lange Rede, kurzer Sinn: "Don't do it"
Gruß,
Stefan K.

adimaster
Reactions:
Beiträge: 375
Registriert: So Apr 14, 2019 11:12 am
Hat sich bedankt: 203 Mal
Danksagung erhalten: 198 Mal

#9

Beitrag von adimaster »

Danke für die ausführliche Erklärung, Stefan! :D
S. Kolbinger hat geschrieben: So Aug 23, 2020 2:15 pm Übrigens: Die Optionen 0-7 setzen sich zusammen aus drei Bits:
  • Bit0: retriggerbar
  • Bit1: triggert bei steigender Flanke
  • Bit2: triggert bei fallender Flanke
Falls keine Triggerung durch Flanke (Bit1=0 und Bit2=0) -> dann Level-Triggerung
...musste ich gleich mal prüfen und komme auf das gleiche Ergebnis :whistle: . Leichter zu merken, wenn etwas logisch gegliedert ist!
S. Kolbinger hat geschrieben: So Aug 23, 2020 2:15 pm Letztendlich wird im obigen Fall die Position (des Levels innerhalb der Level-List) zur Trigger-Option.
Ok, das erklärt dann, wieso es so aussah, als würde prinzipiell alles funktionieren.
Danke für den Hinweis, verstanden!

Grüße
Adi
Grüße, Adi
TWS 2600 ID: 331, VPN geschlossen, Reboot nach Rücksprache

adimaster
Reactions:
Beiträge: 375
Registriert: So Apr 14, 2019 11:12 am
Hat sich bedankt: 203 Mal
Danksagung erhalten: 198 Mal

#10

Beitrag von adimaster »

Die Info ist aus meiner Sicht noch wichtig für die Knowledge Base.
Kann das jmd. ergänzen?
Grüße, Adi
TWS 2600 ID: 331, VPN geschlossen, Reboot nach Rücksprache
Antworten

Zurück zu „Logikengine & Logik-Editor“