UPGRADE IP 9 verfügbar!
Timberwolf VISU jetzt mit NEUEM Layout Editor
Freie Anordnung, Reihenfolge und Größe der Widgets - viele weitere Verbesserungen
Infos im Wiki: https://elabnet.atlassian.net/l/cp/06SeuHRJ

NEU! Insider & Leistungsmerkmale FÜR ALLE freigeschaltet
Damit kann nun jeder das Upgrade vornehmen und VISU & IFTTT testen. Alle Info hier: viewtopic.php?f=8&t=5074

[DISKUSSION] [4.0IP3] Wie entwickelt ihr eure Logiken?

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
Antworten

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

[4.0IP3] Wie entwickelt ihr eure Logiken?

#1

Beitrag von Sunshinemaker »

Hallo zusammen?

Ich hab mal eine simple Frage :mrgreen: , naja einfach ist immer Relativ? Wie Entwickelt ihr eure Logiken? Ich meine nicht den teil wo ihr euch überlegt was ihr umsetzen wollt sondern wirklich den Teil in der Logik-Engine.

Es gibt sicherlich euch genügend unter euch die das einfach alles im Kopf machen, das dann schnell in die Custom-Logik schreiben und fertig. Aber da gehöre ich zb. nicht zu. Mir fällt es wesentlich Leichter wenn ich das ganze Optisch sehen kann, besonders dann wenn mehrere Module verschachtelt in einander greifen. Auf der suche nach etwas was mit das leben leichter macht zumindest bei den Logiken bin ich auf CircuitVerse gestoßen. Sicher damit lässt sich nicht alles nachbauen bzw. realisieren aber besser als nichts.

Benutzt ihr irgendwas ähnliches oder evtl. noch besseres?
Zuletzt geändert von Robert_Mini am So Mär 19, 2023 6:53 pm, insgesamt 1-mal geändert.
LG Sören

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

gbglace
Reactions:
Beiträge: 3585
Registriert: So Aug 12, 2018 10:20 am
Hat sich bedankt: 1253 Mal
Danksagung erhalten: 1649 Mal

#2

Beitrag von gbglace »

Abhängigkeiten aus UND/ODER und Prozessabläufe erarbeite ich im Kopf komplett fertig. Im TWS-LE bin ich dann im Doc-mode der Logikzelle und probiere da dann verschiedenste Konstellationen und Reihenfolgen an Eingangswerte und schau was der Doc-mode da als Output generiert.
Das ist ja das schöne am TWS-Logikeditor, dass man währen der Entwicklung direkt mit Live und/oder Livedaten testen kann ohne Auswirkungen auf das produktive System zu haben.
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

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

#3

Beitrag von Robosoc »

Im Grunde arbeite ich ähnlich wie Göran, meist entwickel ich die Logik aus dem Kopf und ich schlage ab und an mal in der Wiki nach, welche Parameter ein Modul hat. Bei sehr komplexen Logiken male ich mir jedoch ein Wenn-Dann-Ablaufdiagramm ohne große Regeln auf. Bei zwei ganz komplexen Abläufen, wo ich mehrere Costum-Logiken miteinander verknüft habe, habe ich das Wenn-Dann-Ablauf Diagramm sogar in Lucidchart nachgezeichnet und bei späteren Änderungen dann erst da "nachgedacht".

Den Code schreibe ich dann eigentlich immer im Notepad++ Editor. Da hat hier mal jemand eine Vorlage für die "TWS-Sprache" geschrieben und gepostet...das hilft mir sehr und dadurch erst habe ich Notepad++ kennengelernt.
Zuletzt geändert von Robosoc am Di Mär 21, 2023 5:51 am, insgesamt 1-mal geändert.
VG, Sven - TWS 950Q ID:335 & 291, VPN offen, Reboot OK
Benutzeravatar

Parsley
Reactions:
Beiträge: 525
Registriert: Di Okt 09, 2018 7:27 am
Wohnort: 490..
Hat sich bedankt: 587 Mal
Danksagung erhalten: 351 Mal

#4

Beitrag von Parsley »

Hi Sven,

danke für diesen Tipp!
Ich habe gerade danach gesucht und das hier gefunden:
viewtopic.php?f=77&t=1290&hilit=Notepad ... =20#p24583
Gruß Parsley


Timberwolf Server 3500L #657 (VPN offen, reboot nach Absprache)

Robert_Mini
Reactions:
Beiträge: 3741
Registriert: So Aug 12, 2018 8:44 am
Hat sich bedankt: 1164 Mal
Danksagung erhalten: 2058 Mal

#5

Beitrag von Robert_Mini »

Hallo zusammen, lieber Sören!

Ich hatte anfangs auch Notepad++ im Einsatz, aber das hin/her kopieren nervt relativ schnell.
Inzwischen ist das mit den eingebauten Fehlermeldungen auch viel leichter geworden, daher arbeite ich ausschließlich im LE.

Kurz wie ich das heute mache:
- Ich überlege mir was ich machen GENAU will (das ist oft die größte Herausforderung)
- Ich schreibe meist in kurzem Klartext auf, was wie passieren soll
zB: wenn Logik durch Eingang xy getriggert, dann speichere den aktuellen Wert und starte Timer
wenn Timer abgelaufen, dann addiere $xy zum letzten Wert
am Ende des Durchlaufes speichere den aktuellen Wert...

- zu den einzelnen Schritten kann man dann die Bausteine dazuschreiben:
Triggered + Latch, Triggered startet Monoflop
Polynom+Multiplexer
Latch mit TriggerOption1

- Das wichtigste: eine gute Vorlage, siehe unten.
- Dann weiter wie in den Tutorials beschrieben: Ein/Ausgänge, Schritt für Schritt die Module mit temporärer Ausgängen zum prüfen (oder Dokmode)

Wichtig zu verstehen: Jede Zeile wird bei jedem Durchlauf ausgeführt. Soll zb eine Polynomergebnis nur unter bestimmten Bedinungen übernommen werden, so muss man das Polynom in ein zb $Result_temp schreiben und dann mittels Multiplexer oder Latch eine Zuweisung $Result = Result_temp, wenn Bedingung = True umsetzen.


lg
Robert

Code: Alles auswählen

/**=====================================================================
Vorlage
======================================================================*/
{
  "Level": [
    ["$I_Eingang","float",0.0]
    ["$Konst0","float",0.0],
    ["$KonstTrue","bool",true],
    ["$StartZeitTag","string","10 0 0 * * *"]
    
  ],
  "Output": [
    ["Ausgang","","$Output","c"],

  ],
  "Input": [
    ["Inout","","$Input","a"],
    
  ],
  "Module": [   
 
 
 	//["Polynomial", "$Konst1", "$Temp_Soll",["$I_Temp_Soll", "$I_Offset"]],	
	//["Ratio","$Konst100","$Steigung","$I_Delta_T_Max"],
	//["Limiter","$Hoehe_Soll","$Hoehe_Soll_Lim","$Val_ok",["$I_Hoehe_Min", "$I_Hoehe_Max"]],
	//["Comparator", "$I_Hoehe_Min", "$SelectHoehe", "$Hoehe_Soll"],
	//["Multiplexer",["$Konst0","$Hoehe_Soll_Lim"],"$Hoehe_Soll_Lim","-$SelectHoehe"],			
	//["Or" , ["$Val_Large1" , "$Val_Large2"], "$Val_Large"],
	//["And" , ["-$Val_Large" , "-$Val_Null"], "$Val_Small"],
	//["Monoflop","$Val_Large",0,"$Timer_Large","$I_Delay",1],
	//["Latch","$Hoehe_Soll_Step","$Hoehe_Soll_StepB","$Val_Large",0],
	//["Clocksignal","$ConstTRUE","$Clk","$Period"],
	//["HobbsMeter","$State","$Time","$Reset"],
	//["Cron","$KonstTrue","$ResetTag",0,"$StartZeitTag"],
	//["BinaryMultiplexer",["$In_D","$In_E","$In_F"],"$Output"]
	//["Triggered", "$Input", "$Touched" ]
	//["SendExplicit","$Send","$Out_val",0]
  ]
}

Zuletzt geändert von Robert_Mini am Mi Mär 22, 2023 2:41 pm, insgesamt 1-mal geändert.
Timberwolf Server 2500 / #117 (VPN offen + reboot nach Rückfrage) / zusätzlich: 3500M/#935, 3500L/#1297
Antworten

Zurück zu „Logikengine & Logik-Editor“