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

[Hinweis] KB 4.6.6. Break-Definition nicht ganz richtig, oder?

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
Antworten

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

KB 4.6.6. Break-Definition nicht ganz richtig, oder?

#1

Beitrag von Robosoc »

@Robert_Mini

Ich glaube die Break-Definition in 4.6.6 ist nicht ganz richtig:

Ich meine verstanden zu haben, dass Break die weitere Ausführung nur abbricht, solange ein "True"-Wert auf einem der gewählten Eingänge anliegt. Es spielt dabei keine Rolle, ob der Wert die Logik getriggert hat (so kann der aktuelle Text interpretiert werden) oder ob der Wert schon länger anliegt oder nur mit u=update aufgenommen wurde.

Aktuelle Definition:
BREAK:
Dies ist ein spezielles Modul, das die weitere Ausführung einer (Custom-) Logikzelle abbricht, sobald ein Wert auf einem der Eingänge eintrifft. Beim Abbruch wird kein Ausgang mehr beschrieben, der nach der Break Definition gesetzt wird! Ausgänge deren Variable vor dem Erreichen des Breaks gesetzt wird, werden jedoch weiterhin gesendet.
Zuletzt geändert von Robosoc am Di Nov 05, 2019 12:02 pm, insgesamt 2-mal geändert.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

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 »

Danke für den Hinweis!

Hab's grad leicht angepasst - bitte nochmal lesen.

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

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

#3

Beitrag von S. Kolbinger »

Hallo zusammen,

Das ist so nicht ganz korrekt.
BREAK:
Dies ist ein spezielles Modul, das die weitere Ausführung einer (Custom-) Logikzelle abbricht, sobald ein "True" auf einem der Break-Eingänge eintrifft (von einem Eingang der Logikzelle oder einer Variablen, die innerhalb der Logik berechnet wird). Beim Abbruch wird kein Ausgang mehr beschrieben, der nach der Break Definition gesetzt wird! Ausgänge deren Variable vor dem Erreichen des Breaks gesetzt wird, werden jedoch weiterhin gesendet.
Richtig ist:

BREAK:
Dies ist ein spezielles Modul, das die weitere Ausführung einer (Custom-) Logikzelle abbricht, sobald ein "True" auf einem der Break-Eingänge anliegt (von einem Eingang der Logikzelle oder einer Variablen, die innerhalb der Logik berechnet wird). Beim Abbruch werden keine nachfolgenden Module mehr berechnet/ausgeführt. Kein Ausgang wird gesendet, auch nicht die Ausgänge, deren Variable vor dem Erreichen des Breaks gesetzt wurden.
Gruß,
Stefan K.

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

#4

Beitrag von Robosoc »

Code: Alles auswählen

Kein Ausgang wird gesendet, auch nicht die Ausgänge, deren Variable vor dem Erreichen des Breaks gesetzt wurden.
Oh, das war mir dann auch nicht klar. Und ist es auch immer noch nicht.
Heißt das, dass die Ausgänge doch erst einmal nur vorgelegt werden und am Ende der Logikbearbeitung geprüft wird, welcher Ausgang tatsächlich wie gesendet wird (in Abhängigkeit von a c t ct )?

Wenn ein Ausgang also mehrfach innerhalb einer Logik geändert wird (z.b. weil schlecht programmiert wurde), dann wird immer nur der letzte Zustand tatsächlich gesendet?
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

#5

Beitrag von S. Kolbinger »

Robosoc hat geschrieben: Di Nov 05, 2019 10:15 pm Oh, das war mir dann auch nicht klar. Und ist es auch immer noch nicht.
Heißt das, dass die Ausgänge doch erst einmal nur vorgelegt werden und am Ende der Logikbearbeitung geprüft wird, welcher Ausgang tatsächlich wie gesendet wird (in Abhängigkeit von a c t ct )?
... genauso war es ursprünglich gedacht.

Robosoc hat geschrieben: Di Nov 05, 2019 10:15 pm Wenn ein Ausgang also mehrfach innerhalb einer Logik geändert wird (z.b. weil schlecht programmiert wurde), dann wird immer nur der letzte Zustand tatsächlich gesendet?
... ob "schlecht programmiert" oder "genauso beabsichtigt" möchte ich nicht entscheiden.
Aber so gibt es einem mehr Freiheiten bei der Erstellung der Logiken.
Frei nach dem Motto: "Abgerechnet wird zum Schluss" (zumindest bei den Ausgängen ;) )
Gruß,
Stefan K.

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

#6

Beitrag von Robosoc »

Ja, verstanden. Das macht mir das Leben bei einigen Logiken an denen ich gerade arbeite sogar echt einfacher. Danke und sorry.
Zuletzt geändert von Robosoc am Di Nov 05, 2019 10:27 pm, insgesamt 1-mal geändert.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK

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

#7

Beitrag von Robert_Mini »

Jetzt sollte es klar sein!

Das heißt, die Auswertung am Ende von C, CT etc. wird übersprungen und nichts gesendet.
Wenn in einer Logik vor Break Variablen geändert wurden und bei der nächsten Ausführung zurück geändert werden, wird dann die Variable wieder als unchanged behandelt (heißt wo wird der Vergleichswert für changed gespeichert: auf level-Ebene oder "außen" auf Ebene der Logikzelle)?

Danke
Robert
Zuletzt geändert von Robert_Mini am Mi Nov 06, 2019 7:29 am, insgesamt 1-mal geändert.
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297

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

#8

Beitrag von Robosoc »

Robert_Mini hat geschrieben: Mi Nov 06, 2019 7:26 am Wenn in einer Logik vor Break Variablen geändert wurden und bei der nächsten Ausführung zurück geändert werden, wird dann die Variable wieder als unchanged behandelt
Gute Frage, das ist schon recht komplex.

Hätte ich jetzt z.B. nicht so verstanden. Ich würde erwarten, dass die Logik das nächst mal eben doch genau den Change erkennt, obwohl das nach den am Ausgang tatsächlichen gesendeten Telegrammen nicht nachvollziehbar wäre. Aber ich bin mir hier jetzt total unsicher. Gut dass Du nachfragst.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK
Antworten

Zurück zu „Logikengine & Logik-Editor“