NEU! UPGRADE IP 11 verfügbar!
NEU! LICHTWIDGET - DPT 7.600 - Logik Manager Update - sowie viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/B9MUEJj2

Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Ab sofort kann jeder die neue VISU & IFTTT testen. Info: viewtopic.php?f=8&t=5074

Release V 4 am 15. Juni 2024
Es gibt nun einen fixen Termin. Info: viewtopic.php?f=8&t=5117

NEU! Ausführliches Video Tutorial zur VISU
Jetzt werden alle Fragen beantwortet. Das Video: https://youtu.be/_El-zaC2Rrs

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

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

Ersteller
Sunshinemaker
Reactions:
Beiträge: 217
Registriert: So Mai 22, 2022 11:45 am
Hat sich bedankt: 106 Mal
Danksagung erhalten: 129 Mal

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

#1

Beitrag 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.
Zuletzt geändert von Parsley am Do Feb 15, 2024 8:54 pm, insgesamt 2-mal geändert.
LG Sören

TWS 3500 XL / ID 846 / VPN:offen / Reboot nach Rücksprache

terseek
Reactions:
Beiträge: 267
Registriert: Mi Sep 05, 2018 1:09 pm
Hat sich bedankt: 505 Mal
Danksagung erhalten: 121 Mal

#2

Beitrag 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
Zuletzt geändert von terseek am Di Feb 13, 2024 7:51 pm, insgesamt 2-mal geändert.
TWS 2600 ID:186 + 3 PBM, VPN offen, Reboot nach Vereinbarung
TWS 3500L ID:895 + 1 PBM, VPN offen, Reboot nach Vereinbarung

gbglace
Reactions:
Beiträge: 3615
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1273 Mal
Danksagung erhalten: 1674 Mal

#3

Beitrag 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
Grüße
Göran

#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#3 PBM 3 Kanäle, #4 Modbus-Extension

Ersteller
Sunshinemaker
Reactions:
Beiträge: 217
Registriert: So Mai 22, 2022 11:45 am
Hat sich bedankt: 106 Mal
Danksagung erhalten: 129 Mal

#4

Beitrag 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.
LG Sören

TWS 3500 XL / ID 846 / VPN:offen / Reboot nach Rücksprache

gbglace
Reactions:
Beiträge: 3615
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1273 Mal
Danksagung erhalten: 1674 Mal

#5

Beitrag von gbglace »

>= größer gleich
<> ungleich
>> ergibt (goto)
Grüße
Göran

#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#3 PBM 3 Kanäle, #4 Modbus-Extension

terseek
Reactions:
Beiträge: 267
Registriert: Mi Sep 05, 2018 1:09 pm
Hat sich bedankt: 505 Mal
Danksagung erhalten: 121 Mal

#6

Beitrag 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
Zuletzt geändert von terseek am Mi Feb 14, 2024 7:50 pm, insgesamt 2-mal geändert.
TWS 2600 ID:186 + 3 PBM, VPN offen, Reboot nach Vereinbarung
TWS 3500L ID:895 + 1 PBM, VPN offen, Reboot nach Vereinbarung

Ersteller
Sunshinemaker
Reactions:
Beiträge: 217
Registriert: So Mai 22, 2022 11:45 am
Hat sich bedankt: 106 Mal
Danksagung erhalten: 129 Mal

#7

Beitrag 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.
LG Sören

TWS 3500 XL / ID 846 / VPN:offen / Reboot nach Rücksprache

StefanW
Elaborated Networks
Reactions:
Beiträge: 9775
Registriert: So Aug 12, 2018 9:27 am
Wohnort: Frauenneuharting
Hat sich bedankt: 4879 Mal
Danksagung erhalten: 7820 Mal
Kontaktdaten:

#8

Beitrag 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
Stefan Werner
Product Owner für Timberwolf Server, 1-Wire und BlitzART
Bitte WIKI lesen. Allg. Support nur im Forum. Bitte keine PN
Zu Preisen, Lizenzen, Garantie, HW-Defekt an service at elabnet dot de

Link zu Impressum und Datenschutzerklärung oben.

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

#9

Beitrag 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 :-)
Zuletzt geändert von Robosoc am Do Feb 15, 2024 8:57 am, insgesamt 5-mal geändert.
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK

Ersteller
Sunshinemaker
Reactions:
Beiträge: 217
Registriert: So Mai 22, 2022 11:45 am
Hat sich bedankt: 106 Mal
Danksagung erhalten: 129 Mal

#10

Beitrag 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 :<)
LG Sören

TWS 3500 XL / ID 846 / VPN:offen / Reboot nach Rücksprache
Antworten

Zurück zu „Logikengine & Logik-Editor“