easy-forum

Deutsch - Software => easySoft => Thema gestartet von: weiss_nix am Januar 27, 2021, 16:59:47 Nachmittag

Titel: "ST" für Anfänger - Programmierhilfe
Beitrag 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ß
Titel: Antw:"ST" für Anfänger - Programmierhilfe
Beitrag von: Eulhofer am August 13, 2021, 17:40:43 Nachmittag
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...
Titel: Antw:"ST" für Anfänger - Programmierhilfe
Beitrag von: weiss_nix am August 13, 2021, 19:32:52 Nachmittag
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ß
Titel: Antw:"ST" für Anfänger - Programmierhilfe
Beitrag von: radar17892 am August 13, 2021, 20:43:20 Nachmittag
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
Titel: Antw:"ST" für Anfänger - Programmierhilfe
Beitrag von: Eulhofer am August 14, 2021, 13:48:39 Nachmittag
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...
Titel: Antw:"ST" für Anfänger - Programmierhilfe
Beitrag von: radar17892 am August 15, 2021, 10:23:47 Vormittag
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
   
Titel: Antw:"ST" für Anfänger - Programmierhilfe
Beitrag von: CiesleRa am August 17, 2021, 13:27:37 Nachmittag
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

Titel: Antw:"ST" für Anfänger - Programmierhilfe
Beitrag von: Eulhofer am August 18, 2021, 12:14:44 Nachmittag
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....