Seite 1 von 1

AND-Logikbaustein mit einstellbarem Sendeverhalten/Sendefilter V1.0

Verfasst: Mi Jun 29, 2022 11:58 pm
von Dragonos2000
Angeregt von diesem Thread viewtopic.php?p=40554#p40554 habe ich einen AND-Logikbaustein erstellt, dessen Sendeverhalten sich einstellen lässt. Vielleicht kann es wer brauchen, bei Bedarf kann ich das gerne noch auf andere Logikfunktionen anpassen.

Sendeoptionen:
  • Nur False senden
  • Nur True senden
  • False und True senden, aber nur wenn sich der Ausgangswert geändert hat
  • False und True immer senden, wenn die Logik getriggert wird

Code: Alles auswählen

{
	"Level": [
		["$ConstFalse","bool",false],
		["$ConstTrue","bool",true],
		["$bit0","bool",false],
		["$bit1","bool",false],		
		["$LastVal","bool",false],
		["$SameVal","bool",false],
		["$Send","bool",false],
		["$SendAll","bool",false],
		["$SendAllChngd","bool",false],
		["$SendFalse","bool",false],
		["$SendTrue","bool",false],		
		["$O_ResultAnd","bool",false],
		["$P_OpMode","integer",0],
		["$VAR<I_Input!>","bool",false],
		["$VAR<Inhibit?>","bool",false]
	],
	"Input": [
		["Operation mode","Operation mode: 0=Send both results whenever triggered; 1=Send only TRUE results; 2=Send only FALSE results; 3=Send both results, only when output changes", "$P_OpMode","u"],
		["AND input","Inputs of AND logic","$VAR<I_Input!>","a"],
		["Inhibit","INHIBIT","$VAR<Inhibit?>","u"]
	],
	"Output": [
		["Output","Output of the logic","$O_ResultAnd","x"]
	],
	"Module": [
		["Break",["$VAR<Inhibit?>"]],											//completely disable logic
		["And",["$VAR<I_Input!>"], "$O_ResultAnd"],
		["Limiter","$O_ResultAnd",0,"$SameVal",["$LastVal", "$LastVal"]],       //Check, if $O_ResultAnd has new value
		["Latch","$O_ResultAnd","$LastVal","$ConstTrue",0],						//Save $O_ResultAnd for next cycle
		["BinaryDemultiplexer","$P_OpMode",["$bit0","$bit1"]],
		["Latch","$ConstFalse","$Send","$ConstTrue",0],							//Reset
		["And",["$O_ResultAnd","$bit0","-$bit1"], "$SendTrue"],					//Evaluate sending TRUE
		["And",["-$O_ResultAnd","-$bit0","$bit1"], "$SendFalse"],				//Evaluate sending FALSE
		["And",["-$bit1","-$bit0"], "$SendAll"],								//Evaluate sending always
		["And",["$bit1","$bit0","-$SameVal"], "$SendAllChngd"],					//Evaluate sending change
		["Latch","$ConstTrue","$Send","$SendTrue",0],							//Set sending when TRUE
		["Latch","$ConstTrue","$Send","$SendFalse",0],							//Set sending when FALSE
		["Latch","$ConstTrue","$Send","$SendAll",0],							//Set sending always
		["Latch","$ConstTrue","$Send","$SendAllChngd",0],						//Set sending on change
		["SendExplicit","$Send","$O_ResultAnd",0]
	],
	"_Meta": {
		"Icon": "",
		"Version": "1.0",
		"_description": "Logic module with configurable sending behaviour"
	}
}
/** 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. */
Sollte soweit selbsterklärend sein, ansonsten fragen.

Disclaimer:
Die Verwendung erfolgt auf eigene Gefahr. Ich hafte nicht für etwaige entstandene Schäden, die durch die Nutzung entstanden sind, noch garantiere ich eine Fehler freie Funktion.

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.