Seite 1 von 1

[V2.0 IP 3.1] Falls Eingang ist FALSE, dann zeitverzögert am Ausgang FALSE senden (nie ein TRUE senden)

Verfasst: Sa Mär 13, 2021 10:48 am
von Eraser
Hallo,

entweder denke ich wieder mal zu kompliziert oder die Anzeigen von Grafana der Logik sind verwirrend.
Ich hoffe irgendwer kann mich in die richtige Richtung schubsen...

Aufgabenstellung:
Ich will bei einem FALSE auf einem Eingang nur ein FALSE auf dem Ausgang senden.
Bei TRUE soll nichts geschehen.
Dies wurde hier ja schon im Prinzip beschrieben: app.php/kb/viewarticle?a=97

Eine Aufzeichnung der Logik ergibt am Ausgang aber bei jedem Signalwechsel ein FALSE.
Stimmt hier die Anzeige nicht mit dem Ausgang überein, sodass eh bei einem Eingangswechsel auf TRUE gar kein FALSE auf den Ausgang gesendet wird?
1.PNG
2.PNG

Der 2. Schritt wäre dann eine Verzögerung des Ausgangssignals gegenüber des Eingangssignals.

=> Eingang ist FALSE => Verzögerung von 300s => Ausgang auf FALSE
=> Eingang auf TRUE => Nichts machen

Wiederholte FALSE auf dem Eingang hintereinander sollen funktionieren, auch wenn kein TRUE dazwischen am Eingang angekommen ist.


Wenn möglich möchte ich die ganze Logik in einem Logikbaustein haben.
Hätte deswegen probiert, es in eine Custom-Logik zu schreiben.
Leider habe ich da das Problem, dass durch den Multiplexer immer irgendein Wert geschrieben wird und es hier kein Nicht-Schreiben gibt.
Oder geht das schon?

Code: Alles auswählen

{
"Input":[
	["Input","Input","$Input","c"],
	["Time","Time","$Time","c"]
],
"Output":[
	["Output","Output","$Output","c"]
],
"Level":[
	["$Input","bool",false],
	["$Time","float",0.0],
	["$Output","bool",false],
	["$Temp_Out","bool",false],
	["$Monoflop_Out","bool",false],
	["$TRUE","bool",true],
	["$FALSE","bool",false]
],
"Module":[
	["Monoflop","$Input","-$Input","$Monoflop_Out","$Time",2],
	["And",["$Input","-$Monoflop_Out"],"$Temp_Out"],
	["Multiplexer",[0,"$FALSE"],"$Output","$Temp_Out"]
]
}

Re: [V2.0 IP 3.1] Falls Eingang ist FALSE, dann zeitverzögert am Ausgang FALSE senden (nie ein TRUE senden)

Verfasst: Sa Mär 13, 2021 10:54 am
von Robert_Mini
Hallo Wolfgang!

Grafana zeichnet für jeden Punkt den Wert zu jedem Aufruf auf, unabhängig davon, ober er tatsächlich gesendet wird.
Du würdest das im Dokmode an der Farbe des Ausganges oder noch besser an einem KNX-Testobjekt im Busmonitor sehen.

Ansonsten sollte das so passen, wie du dir das vorstellst.

Zur Custom Logik:
Es gibt seit längerem das "sendexplicit", damit kannst du dezidiert steuern, wann gesendet wird.
Mit Option 2 wird nur bei fallender Flanke gesendet, in deinem Fall wäre das:

Code: Alles auswählen

["SendExplicit","$Temp_Out","$Output",2]
Beim Ausgang selbst das "x" nicht vergessen!

lg
Robert

Re: [V2.0 IP 3.1] Falls Eingang ist FALSE, dann zeitverzögert am Ausgang FALSE senden (nie ein TRUE senden)

Verfasst: So Mär 14, 2021 11:29 am
von Eraser
Hallo Robert,

danke für deine Info.

Hab das mit dem SendExplicit gestern eingebaut und werde es weiter beobachten.
Gestern hat es mir ein FALSE auf den Ausgang gesendet, obwohl die 5 min. noch nicht abgelaufen waren, mal schauen...

Re: [V2.0 IP 3.1] Falls Eingang ist FALSE, dann zeitverzögert am Ausgang FALSE senden (nie ein TRUE senden)

Verfasst: So Mär 14, 2021 11:42 am
von Robert_Mini
Poste deinen Code mal.

Ich sehe da 2 Fehlerquellen:
- deine Monoflop sollte auf -$Input starten
- dein sendexplicit sollte mit Option 0 laufen

Lg
Robert

Re: [V2.0 IP 3.1] Falls Eingang ist FALSE, dann zeitverzögert am Ausgang FALSE senden (nie ein TRUE senden)

Verfasst: So Mär 14, 2021 1:32 pm
von Eraser
Hier der Code:

1.PNG

Code: Alles auswählen

// Einschaltverzögerung und nur 0 senden
// =====================================
{
"Input":[
	["Input","Input","$Input","a"],
	["Time","Time","$Time","c"]
],
"Output":[
	["Output","Output","$Output","x"]
],
"Level":[
	["$Input","bool",false],
	["$Time","float",0.0],
	["$Output","bool",false],
	["$Temp_Out","bool",false],
	["$Monoflop_Out","bool",false],
	["$TRUE","bool",true],
	["$FALSE","bool",false]
],
"Module":[
	["Monoflop","$Input","-$Input","$Monoflop_Out","$Time",2],
	["And",["$Input","-$Monoflop_Out"],"-$Temp_Out"],
	["SendExplicit","$Temp_Out","$Output",2]
]
}
Sollte jetzt funktionieren, nachdem was ich bisher beobachtet habe.