Seite 1 von 3

[V4.0 IP7] Lösungsansatz für sehr individuelle Zuweisungstabelle gesucht

Verfasst: Di Feb 13, 2024 5:55 pm
von Sunshinemaker
Moin zusammen,

Ich hab 3 Datenpunkte: 2x Integer 1x Bool
A= -2 - +2 also 5 zustände und
B= 1 -4 also 4 zustände
C= true/false also 2 zustände
Und auch der Ergebnis kann 4 Zustände annehmen. Sehr gut in der Tabelle abzulesen.

Bild der Tabelle

Jetzt zur Frage: Wie bekomme ich das irgendwie Elegant in einer Logik Umgesetzt?? Die Tabelle hat leider keine Mathematische Logik. Alternativ hätte ich auch NodeRed im Angebot da alle Daten per MQTT in den TWS kommen.
Ich habe die Vermutung das evtl. "Statemachine" für das Problem in frage kommen könnte aber ih das ganze auch noch nicht so ganz verstanden wie das Funktioniert. Evtl. irgendwie in Kombination mit dem Multiplexer?
Ich hab nicht so die Erfahrungen mit den Costum-Logiken.

Re: [V4 IP7] Eigene Wahrheitstabelle umsetzten

Verfasst: Di Feb 13, 2024 7:49 pm
von terseek
Man kann es mit einem integer-Multiplexer mit 40 Eingängen realisieren.
Der Selektor des Multiplexers muß mit einer weiteren Logik so berechnet werden:
- zunächst addiert Du 2 auf A, das Ergebnis ist nun eine Zahl zwischen 0 und 4, sagen wir daß das Ergenis als A* bezeichnet wird
- von B ziehst Du 1 ab und das wird B*, damit ist B* zwischen 0 und 3
- der Selektor wird nun berechnet:
Selektor = a* + 5 * b* + 20 * c

Re: [V4 IP7] Eigene Wahrheitstabelle umsetzten

Verfasst: Mi Feb 14, 2024 6:26 pm
von gbglace
Naja die Tabelle ist nicht ganz vollständig in der Kombinatorik.
Aber es gibt da schon ein paar Verdichtungen die mit einfachen UND/ODER Logiken oder mit einer freien Formel ableitbar sind.

Wenn C = true und A >=0 und A <> B >> B
Wenn C = true und A < 0 >> 3
Wenn C = false und (A = 0 oder A = 1) >> B
Wenn C = false und A = -2 >> 4
Wenn C = false und A = -1 >> 3
Wenn C = false und A = 2 >> 2

Re: [V4 IP7] Eigene Wahrheitstabelle umsetzten

Verfasst: Mi Feb 14, 2024 6:46 pm
von Sunshinemaker
terseek hat geschrieben: Di Feb 13, 2024 7:49 pm Man kann es mit einem integer-Multiplexer mit 40 Eingängen realisieren.
Der Selektor des Multiplexers muß mit einer weiteren Logik so berechnet werden:
Danke für die Antwort und Idee aber ich versteh es nicht. Ich bin damit etwas überfordert.
gbglace hat geschrieben: Mi Feb 14, 2024 6:26 pm Naja die Tabelle ist nicht ganz vollständig in der Kombinatorik.
Hi Göran,
ja da hast du Recht, das liegt daran das die anderen Kombinationen keine Berücksichtigung finden. Wenn du mir noch verrätst wofür >=, <> und >> stehen dann verstehe ich vielleicht was du meinst. Ich bin mit solchen Abkürzungen und Programmiersprachen nicht wirklich vertraut.
Was ich gefunden hab ist das hier oder das hier aber die sind zum teil anders als das was du verwendest.

Ich hab gestern einfach in NodeRed angefangen aber naja, mein können in NR ist auch nicht besonders. Zumindest für gestern hab ich aufgegeben.

Re: [V4 IP7] Eigene Wahrheitstabelle umsetzten

Verfasst: Mi Feb 14, 2024 7:20 pm
von gbglace
>= größer gleich
<> ungleich
>> ergibt (goto)

Re: [V4 IP7] Eigene Wahrheitstabelle umsetzten

Verfasst: Mi Feb 14, 2024 7:48 pm
von terseek
Sunshinemaker hat geschrieben: Mi Feb 14, 2024 6:46 pm Danke für die Antwort und Idee aber ich versteh es nicht.
OK, ich versuche es etwas besser zu erklären.

Muß aber erst noch eine Frage stellen: in der von Dir geposteten Tabelle kommt der Wert B=1 nicht vor. Ist die Tabelle nicht vollständig oder ist es ein Fehler in der Beschreibung:
Sunshinemaker hat geschrieben: Di Feb 13, 2024 5:55 pm
A= -2 - +2 also 5 zustände und
B= 1 -4 also 4 zustände
C= true/false also 2 zustände

Re: [V4 IP7] Eigene Wahrheitstabelle umsetzten

Verfasst: Mi Feb 14, 2024 8:11 pm
von Sunshinemaker
@gbglace Danke :)

@terseek Theoretisch gibt es den Wert und könnte ausgegeben werden, Praktisch habe die Vorraussetzungen so gestaltet das der Zustand nicht vorkommen kann (hoffe ich). Deswegen kommt der wert auch nicht in der Tabelle vor.

Re: [V4 IP7] Eigene Wahrheitstabelle umsetzten

Verfasst: Mi Feb 14, 2024 8:39 pm
von StefanW
Hallo zusammen,

könnten wir hier bitte einen besseren Titel finden? Weil irgendwie trifft das Vorhaben es mit Wahrheitstabelle nicht, weil die kann man bei jeder binären Logik erstellen.

lg

Stefan

Re: [V4 IP7] Eigene Wahrheitstabelle umsetzten

Verfasst: Do Feb 15, 2024 6:46 am
von Robosoc

Code: Alles auswählen

/**
* Eigene Zuweisungstabelle
*
* 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. 
*/

{
  "Input":[
    ["A","-2 bis +2","$A","c"],
    ["B","(1) 2 bis 4","$B","c"],
	["C","false / true","$C","c"]
  ],
  "Output":[
    ["Wert","Ergebnis","$Out","a"]
  ],
  "Level":[
    ["$A","integer",0],
	["$B","integer",0],
	["$Aa","integer",0],
	["$Bb","integer",0],
    ["$C","bool",false],
    ["$Out","integer",0],
	["$nEins","integer",1],//-1 aber negative Integerwerte sind erst ab V4.0 IP5 möglich, daher habe ich hier mit einem Workaround gearbeitet, siehe Kommentar weiter unten
	["$Eins","integer",1],
	["$Zwei","integer",2],
	["$Drei","integer",3],
	["$Vier","integer",4],
	["$Selektor","integer",0],
    ["$a0", "bool",false],
    ["$a1", "bool",false],
	["$a2", "bool",false],
    ["$b0", "bool",false],
    ["$b1", "bool",false]
	],
  "Module":[ 
    // dezimal-Wert von Eingang A und B so verschieben, dass es mit minimaler Anzahl von binärwerten darstellbar ist
	["Polynomial", "$Eins", "$Aa",["$A", "$Zwei"]], 
	["Polynomial", "$Eins", "$Bb",["$B", "-$nEins"]], // hier wird die Variable $nEins negiert, siehe Kommentar bei der Level-Deklaration
	
	// Bildung von Binärwerten für die Eingänge A und B
	["BinaryDemultiplexer","$Aa",["$a0","$a1","$a2"]],
	["BinaryDemultiplexer","$Bb",["$b0","$b1"]],

	// Umwandlung Binärmuster zu dezimalzahl (bin5=a2 bin4=a1 bin3=a0 bin2=b1 bin1=b0 bin0=C)
	["BinaryMultiplexer",["$C","$b0","$b1","$a0","$a1","$a2"],"$Selektor"],
	
	// Zuweisung der Ergebniswerte zu Selektorfelder
    ["Multiplexer",[0,0,"$Vier","$Drei","$Vier","$Drei","$Vier","$Drei",0,0,"$Drei","$Drei","$Drei","$Drei","$Drei","$Drei",0,0,"$Zwei","$Zwei","$Drei","$Drei","$Vier","$Vier",0,0,"$Zwei","$Zwei","$Drei","$Drei","$Vier","$Vier",0,0,"$Zwei","$Vier","$Zwei","$Drei","$Zwei","$Vier",0],"$Out","$Selektor"]
  ]
}
Teste mal diesen Customcode, erstellt und getestet in V4.0 IP4, sollte also in IP7 auf jeden Fall gehen. Es sind aber keine Funktionen enthalten, die es erst ab den IPs der V4.0 gibt, somit ist es zumindest aus meiner persönlichen Sicht in Ordnung, wenn dieses Topic weiterhin in diesem Forums-Bereich bleibt und nicht in den IP-Bereich gezogen wird. Es ist ja kein Problem, sondern ein Lösungsansatz.

Vorschlag für den Titel:
Lösungsansatz für sehr individuelle Zuweisungstabelle gesucht

Alle von Dir "ausgeblendeten" Fälle liefern ein Ergebnis von 0. So zumindest habe ich es mir gedacht. Hoffe, dass ich alle Zurodnungen richtig abgetippt habe, daher einfach mal alles wild durchtesten :-)

Re: [V4 IP7] Lösungsansatz für sehr individuelle Zuweisungstabelle gesucht

Verfasst: Do Feb 15, 2024 9:24 am
von Sunshinemaker
Moin Sven,

Der WAHNSINN :scared-shocked: :text-thankyouyellow: Danke :)

Werde ich wohl leider erst am Ẃochenende testen können. Ich bin gerade mit der Hardware-Seite von dem Projekt beschäftigt ;)

Aber 1000x DANKE :<)