EarlBacid hat geschrieben: ↑Sa Dez 04, 2021 4:21 pm
mindestens halbwegs Script- und Hochsprachen programmieren kann, beim Syntax der Custom Logiken bei den ersten Blicken nur Bahnhof verstanden habe.

da stand ich auch mal
Aber du hast einen riesen Vorteil wenn Du schon mit verschiedenen Script- oder Programmierspracheb Berührungspunkte hattest, Du weißt schon, dass es Variablen- und Konstanten-deklarationen braucht! Und Funktionen haben interne Variable und natürlich Solche die nach aussen quasi Schnittstellen sind.
Bei Custom-Logiken im TWS nehmen diese Deklarationen nicht selten mehr Zeilen ein, als der eigentliche Ablaufcode.
Das hat zwei Gründe
1. Im TWS muss für die nach aussen wirkenden Variablen (Ein- und Ausgänge) auch die GUI ( grafische Bedienerschnittstelle) bedacht werden. Das machst Du bei Script oder Programmiersprachen meist nicht im Code.
2. Wer zum Bespiel von Formeln in Excel ( als ganz simples Beispiel, ist ja keine Programmiersprache) daran gewöhnt ist, dass man direkt in die Formel als Parameter einen Werte (konstante Zahl) schreiben kann, musst sich aktuell damit abfinden, dass konstante Zahlenwerte oder auch ein TRUE immer als Variable deklariert werden muss und man verwendetdann die Variable. Aber das ist sehr schnell verkraftet und tut nicht weh.
So ,wenn Du das bis hierin verstanden hast (hab ich keinen Zweifel) dann versuche mal den Code, den ich Dir geschrieben habe zu verstehen.
Das Custom Logik Grundgerüst hat vier Elemente
{
"Level": [
Hierin findet ausschließlich die Variablendeklaration statt
],
"Module": [
Hier steht der eigentliche Code
],
"Input": [
Hier wird eingestellt, welche Variable in der GUI als Eingänge dienen, wie sie dort heißen, wie sie sich als solche verhalten und man kann optional Beschriebungen vergeben.
],
"Output": [
Hier wird eingestellt, welche Variable in der GUI als Ausgänge dienen, wie sie dort heißen, wie sie sich als solche verhalten und man kann optional Beschriebungen vergeben.
]
}
Nun wird Dir wahrscheinlich klar geworden sein, dass das eigentliche Gedankengut meiner Hilfe im Abschnitt "Module" steckt...damit ist die Aufgabe gerade auf 10 Zeilen geschrumpft, die Du versuchen solltest zu verstehen. Alles andere ist Syntax und Variablendeklaration.
Code: Alles auswählen
["Break", ["$VAR<Inhibit?>"]],
["Polynomial", "$In", "$Integral",["$Integral", "$const_1"]],
["Polynomial", "$const_1", "$counter",["$counter","$const_1"]],
["Ratio" , "$Integral" , "$Zwischenwert" , "$counter"],
["Polynomial", "$const_1", "$counter+1",["$counter", "$const_1"]],
["Comparator" , "$counter+1" , "$Reset" , "$n"],
["Latch","$Zwischenwert","$Mittel","$Reset",1], ["Latch",0,"$counter","$Reset",1],
["Latch",0,"$Integral","$Reset",1]
Das break am Anfang hat mit der eigentlichen Logik nichts zu tun und ist nur das Konstrukt für die optionalen Inhibit (Sperr)-eingänge.
Und nun hast Du vielleicht schon erkannt, dass der Code gerade einmal aus 4! unterschiedlichen Funktionen besteht.
Polynomial (Addition und Multiplikation), Ratio (Division), Comperator (Vergleich) und Latch (Zuweisung).
Versuche doch jetzt im nächsten Schritt Zeile für Zeile zu verstehen was im Initialen Durchgang der Zelle passiert...usw.
Die initialen Variablenwerte wirst Du denke ich jetzt schon sehr schnell selber aus dem Abschnitt Level herauslesen.
Alles was ein $-Zeichen am Anfang hat, sind Variable.
Bei Latch steht am Ende eine Zahl (1), das ist keine Variable, sondern eine Einstellung.
Auch "$counter+1" ist eine Variable...das +1 im Variablennamen ist jetzt vielleicht nicht die genialste Idee gewesen.
Am besten lege Dir dafür die KB Kapitel 4.6.6 in ein Browsertab. Das mache ich meist auch noch, wenn ich eine Logik schreibe.
《Edit: nachfolgende Aussage war falsch, sorry. Habe es gelöscht, damit es nicht irritiert...aber falls es schon jemand gelesen hatte und jetzt vermisst... es began mit
Die 4 Zeilen nach dem Break hätte man auch mit....》
Hoffe dies motiviert Dich, es ist wirklich super simpel.
Wenn Du Fragen hast, hau raus
