easy-forum
Deutsch - Software => easySoft => Thema gestartet von: weiss_nix am Januar 27, 2021, 16:59:47 Nachmittag
-
Hallo allerseits,
solltet ihr Fragen zur ST-Programmierung haben dann schreibt sie hier.
Ich denke es gibt einige User hier im Forum die helfend dazu beitragen können.
Eventuell spendieren die Administratoren ein untergeordnetes Board zum Thema ST-Programmierung!
Gruß
-
Hallo weiss_nix,
du hast mir ja schon öfter sehr kompetent geholfen - vielen Dank, dass Du Dich hier auch anbietest.
Ich werde mich jetzt mal in die ST-Welt begeben, da ich doch feststellen muss, dass bei der EasyE4 vieles mit FUP oder KOP schwer bis gar nicht realisierbar ist.
Am schwierigsten finde ich immer Informationen über die geltende Syntax zu bekommen - und am frustrierensten, wenn das ganze Programm wegen eines Komma/Semikolon o.ä. nicht mehr funktioniert...
Hast Du da zufällig eine Quelle, die man studieren kann?
Eine konkrete Frage gleich jetzt:
Eine simple Zuweisung Q01 := I01 ist für mich logisch nachvollziehbar.
Warum muss beim Set-/Reset Befehl Q01 := Q01 OR ( I01) bzw. Q01 := AND ( NOT I01 ) der Teil mit I01 in Klammern stehen?
Klar, ich kann diese Funktionalität so ins Editorfenster ziehen und einfach das ausfüllen, was ich brauche - aber ich würde es auch gerne verstehen...
Ich freu mich, wenn ich Dich damit nicht langweile.
Viele Grüße,
Wolfgang
BTW: Symbolische Programmierung bzw. Symbolzuweisungen sind auch in ST nicht möglich, oder? "Störung" wäre halt doch unendlich einfacher (lesbarer) als M101...
-
Hallo Wolfgang,
eine dezidierte Lektüre kann ich da leider nicht benennen da es für mich schwer zu verifizieren ist was für Anfänger geeignet ist. Zumal die verfügbare Auswahl recht groß ist und die Implementierung von ST in der easyE4 nur wenig unterstützt was möglich wäre.
Bei der easyE4 beschränkt sich ST im wesentlichen auf die Teile die du in den Editor hineinziehen kannst. Der Rest ist logik ;)
//Zur Klammer:
Q01 := Q01 OR ( I01);
Q01 := Q01 AND ( NOT I01 );
//hier dienen die Klammern maximal zur besseren Lesbarkeit,
//und machen aus meiner Sicht technisch keinen sinn.
//Versuch
Q01 := I01 AND I02 OR I03;
Q01 := I01 OR I02 AND I03;
//Wenn du dir die beiden Codezeilen ansiehst ist es im ersten Moment nicht
//eindeutig wie der Kompiler damit umgeht und wie das Ergebnis aussieht.
//Es gibt zwar Prioritäten welche Reihenfolge der Kompiler anwendet aber ich
//bin meistens zu bequem darüber nachzudenken, also setze ich Klammern um
//es für mich besser lesbar zu machen und dem Kompiler vorzuschreiben was ich will.
Q01 := (I01 AND I02) OR I03;
Q01 := I01 AND (I02 OR I03);
//Durch die gesetzten Klammern wird das Ergebnis eindeutig und besser lesbar ähnlich der Mathematik.
Symblische Programmierung ist derzeit nicht möglich, allerdings kannst du die Merker benennen, dann ist der Name (Kommentar) ersichtlich wenn du mit der Maus darüber bist.
Gruß
-
Hallo,
setze auch oft Klammern, nur um die Lesbarkeit zu verbessern.
Wenn ich Zeit habe, kann ich gerne bei Fragen rund um ST helfen.
Gruß Thomas
-
Vielen Dank für die schnelle und ausführliche Antwort.
Also kann ich Klammern setzen (wie es mir sinnvoll erscheint) ohne, dass es den Code kaputt macht (eher, wenn ich sie weglasse?!?)
Dann schaue ich mal, wie ich klar komme...
Vielen Dank nochmals...
-
Auszug aus der Codesyshilfe:
Auswertung von Ausdrücken
Die Auswertung eines Ausdrucks erfolgt durch Abarbeitung der Operatoren nach bestimmten Bindungsregeln. CODESYS arbeitet den Operator mit der stärksten Bindung zuerst ab. Operatoren mit gleicher Bindungsstärke werden von links nach rechts abgearbeitet.
Bindungsstärke nach unten abnehmend
Operation Symbol
Einklammern (Ausdruck) Stärkste Bindung
Funktionsaufruf Funktionsname (Parameterliste)
Potenzieren EXPT
Negieren -
Komplementbildung NOT
Multiplizieren *
Dividieren /
Modulo MOD
Addieren +
Subtrahieren -
Vergleichen <,>,<=,>=
Gleichheit =
Ungleichheit <>
Bool AND AND, AND_THEN
Bool XOR XOR
Bool OR OR, OR_ELSE Schwächste Bindung
Nicht alle Operationen werden von der E4 unterstützt. Es soll nur eine Hilfe sein, um die Logik dahinter zu verstehen.
Gruß Thomas
-
Hallo Wofgang,
Also kann ich Klammern setzen (wie es mir sinnvoll erscheint) ohne, dass es den Code kaputt macht (eher, wenn ich sie weglasse?!?)
So kann man das nicht sagen. Es macht schon einen erheblichen Unterschied wo und ob man Klammern setzt. Als Beispiel mal eine einfache Selbsthaltung.
Fall 1 ohne Klammern: Q1 := I1 or Q1 and I2; Wenn I1 nicht ausgeschaltet wird, kannst Du mit I2 machen was Du willst, Q1 wird nicht ausschalten. Q1 und I2 liegen parallel zu I1.
Fall 2 mit Klammern: Q1 := (I1 or Q1) and I2; So wäre es richtig. Nur Q1 liegt parallel zu I1 und I2 ist die Stop Taste.
Gruß Ralf
-
Vielen Dank euch Beiden - wieder richtig was gelernt...
Ich hab bisher nur meine winzigen UFs in ST programmiert - so langsam bekomme ich Mut das auch mal im Hauptprogramm zu versuchen...
Noch habe ich Sorge die Übersicht zu verlieren und beim debuggen zu verzweifeln...
Also - nochmals vielen Dank bis hierhin....