Seite 1 von 2
Explizites Senden eines True bei positiver Flanke (V2.0 Rising Power))
Verfasst: Mo Nov 01, 2021 9:02 pm
von Robosoc
Ich verzweifel gerade...ich will doch nur eine Logik schaffen, die bei einer positiven Flanke auf einem Eingang, ein True auf dem Ausgang sendet, und sonst nichts anderes macht.
Für eine Standardlogik hatte ich keine Idee (highly welcome, wenn ich was übersehe).
Aber ich dachte mit SendExplicit in einer Custom Logic müsste es einfach sein. Aber ich pack es nicht. Hat jemand einen Vorschlag was ich falsch mache. Die Logik tut nicht, was sie soll...zumindest sieht das im Doktormodus so aus.
Jemand einen Tipp?
Code: Alles auswählen
/**
* Explizites Senden eines True bei positiver Flanke
*
* Nutzungsrechte:
* Der Schöpfer dieser Custom Logik überträgt die Nutzungsrechte gemäß der TOLL ("Timberwolf Open Logikblock License") die unter https://wrgt.news/TOLL zum Download zur Verfügung steht.
*/
{
"Level": [
["$In","bool",false],
["$Out","bool",true],
["$VAR<Inhibit?>","bool",false]
],
"Module": [
["Break", ["$VAR<Inhibit?>"]],
["SendExplicit","$In","$Out",1]
],
"Input": [
["In","Binärkontakt, positive Flanke schaltet die Logik","$In","c"]
],
"Output": [
["Out","","$Out","x"]
]
}
Re: Explizites Senden eines True bei positiver Flanke (V2.0 Rising Power))
Verfasst: Mo Nov 01, 2021 9:43 pm
von Eraser
So etwas gibt es schon und wurde hier im Forum schon gepostet. Das funktioniert mit einem AND mit einem Eingang der auf True liegt. Das Eingangssignal geht auf den Freigabeeingang.
Re: Explizites Senden eines True bei positiver Flanke (V2.0 Rising Power))
Verfasst: Mo Nov 01, 2021 10:02 pm
von Robosoc
Lieben Dank und sorry, die Lösung kenne ich, aber ich habe eine feine Kleinigkeit vergessen zu beschreiben.
Ich möchte am Engang einen Zahlenwert (Helligkeit) über einen Schwellwert auswerten. Das heißt ich muss den Eingang auf C einstellen und in der Lösung mit dem AND und Inhibit, muss der Ausgang ja auf A stehen, denn der Ausgang bleibt ja immr True. Somit würde diese Logik bei jeder Änderung der Helligkeit triggern und ein TRUE auf den Ausgang senden, also nicht nur bei einer positiven Flanke.
Ich habe inzwischen noch weiter mit dem Send Explizit gespielt (hatte ich noch nie eingesetzt). Und bei mir funktioniert nicht einmal die Beispiellogik von S.Kolbinger aus diesem Post korrekt:
viewtopic.php?f=24&t=2258
Wenn ich den Ausgang beispielsweise auf eine TimeSeries lege, dann kommt da nie ein Wert an!
Im Doktormodus wird der Ausgang aber immer rot hinterlegt, auch wenn ich da nicht im SendeBereich liege...
Kann den Code mal jemand bei sich ausprobieren? Bin mir immer unsicherer, ob es an mir liegt.
Code: Alles auswählen
{
"Level": [
["$In_val", "float", 0],
["$Out_val","float",0],
["$Send","bool" ,false],
["$Min", "float", 4],
["$Max","float",17]
],
"Module": [
["Limiter","$In_val","$Out_val","$Send",["$Min","$Max"]],
["SendExplicit","$Send","$Out_val",0]
],
"Input": [
["Eingang","Eingangswert","$In_val","a"]
],
"Output": [
["Ausgang","Ausgangswert","$Out_val","x"]
]
}
Re: Explizites Senden eines True bei positiver Flanke (V2.0 Rising Power))
Verfasst: Mo Nov 01, 2021 10:07 pm
von gbglace
Was hindert einem daran in einer Logik den Schwellwert, kann man ja als Ergebnis ggf noch woanders verwenden, zu ermitteln und auszugeben und nachfolgend ein entsprechend konfiguriertes UND damit zu befüllen?
Re: Explizites Senden eines True bei positiver Flanke (V2.0 Rising Power))
Verfasst: Mo Nov 01, 2021 10:08 pm
von Robosoc
Bin auf noch eine Auffälligkeit gestoßen, die mich sehr irritiert hat:
Ich dachte bisher, dass das Zeichen für Eingangs- und Ausgangsverhalten (A, C, T etc.) nicht Case-Sensitive ist und ich habe auch munter mal ein c und mal ein C verwendet. Bei SendExplicit scheint es Case-Sensitive zu sein...im Beschreibungstext steht zwar ein großes X, aber im Beispielscode von S.Kolbinger ist ein kleines x verwendet. Nutze ich ein großes X, dann wird es in der Oberfläche nicht angezeigt:

Re: Explizites Senden eines True bei positiver Flanke (V2.0 Rising Power))
Verfasst: Mo Nov 01, 2021 10:11 pm
von Robosoc
gbglace hat geschrieben: ↑Mo Nov 01, 2021 10:07 pm
Was hindert einem daran in einer Logik den Schwellwert, kann man ja als Ergebnis ggf noch woanders verwenden, zu ermitteln und auszugeben und nachfolgend ein entsprechend konfiguriertes UND damit zu befüllen?
Aber nur weil ich SendExplicit noch nie eingesetzt habe...ist mein Weg denn falsch?
Re: Explizites Senden eines True bei positiver Flanke (V2.0 Rising Power))
Verfasst: Mo Nov 01, 2021 10:42 pm
von gbglace
wahrscheinlich nicht, aber das andere wäre erstmal eine funktionierende Lösung.
Der Spieltrieb kann dann ja tiefer gehen und ggf. gibt es ja auch noch was zu reparieren im TWS.
Re: Explizites Senden eines True bei positiver Flanke (V2.0 Rising Power))
Verfasst: Mo Nov 01, 2021 10:47 pm
von Robosoc
Probleme und Fehler identifiziert
Der Doktormodus verhält sich bei Einsatz von SendExplicit falsch und irreführend. Hatten Andere vor mir auch schon festgestellt und ich bin wieder drauf reingefallen, sorry.
Leider habe ich beim Versuch es mit einer extra angelegten TimeSeries als Ziel zu testen in Grafana vergessen das field(Value) auf field(Val) zu stellen, daher habe ich kein Ergebnis gesehen. Aber sowohl mein Code in Beitrag #1, als auch der Beispiel-Code von S. Kolbinger, funktionieren wie beschrieben.
Bleibt am Ende der kleine Anzeigefehler bei dem großen "X" und der irreführende Doktormodus.
Re: Explizites Senden eines True bei positiver Flanke (V2.0 Rising Power))
Verfasst: Mo Nov 01, 2021 10:51 pm
von gbglace
Na gleich mal den Eintrag in der Liste typische Debugging-Hinweise geschrieben.
Re: Explizites Senden eines True bei positiver Flanke (V2.0 Rising Power))
Verfasst: Di Nov 02, 2021 8:52 am
von Robosoc
gbglace hat geschrieben: ↑Mo Nov 01, 2021 10:51 pm
Na gleich mal den Eintrag in der Liste typische Debugging-Hinweise geschrieben.
Damit meinst Du vermutlich die Diskussion hier
viewtopic.php?f=24&t=3028, oder?
Da passt es nicht hin, weil es weder ein Nutzerfehler beim Schreiben vom CustomCode ist, noch dazu führt, dass die Logik in Error geht (gibt ja keinen Fehler und die Logik funktioniert ja auch).
An der Stelle ist es schlicht noch ein Fehlverhalten vom Doktormodus, der bei Zeiten korrigiert werden sollte...aber da es nicht allzuviele Custom-Code-Schreiber gibt und auch von denen noch nicht besonders viele über das SendExplicit-Doktor-Thema gestoßen sind (ich glaube es waren drei oder vier Nutzer bisher), ist es mit Sicherheit nun auch nicht das eiligste Thema.