Autor Thema: "ST" für Anfänger - Programmierhilfe  (Gelesen 3109 mal)

Offline weiss_nix

  • Sr. Member
  • ****
  • Beiträge: 594
  • it has to be easy, it's a easy!
"ST" für Anfänger - Programmierhilfe
« 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ß
« Letzte Änderung: Januar 28, 2021, 07:21:28 Vormittag von weiss_nix »
Sollte ich (gefährliches) Halbwissen verbreiten, beuge ich demütig mein Haupt mit der Gewissheit versagt zu haben!
WICHTIG: Sämtliche Programme dienen lediglich der Veranschaulichung von Funktionen und sind nicht für den Produktiveinsatz geeignet!

Offline Eulhofer

  • Full Member
  • ***
  • Beiträge: 106
  • Man ist nie zu alt neue Dummheiten zu begehen...
Antw:"ST" für Anfänger - Programmierhilfe
« Antwort #1 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...
Erste Gehversuche mit der EasyE4 - nachdem ich jahrelang auf der Schneider/Telemecanique TSX-Micro programmiert habe....

Offline weiss_nix

  • Sr. Member
  • ****
  • Beiträge: 594
  • it has to be easy, it's a easy!
Antw:"ST" für Anfänger - Programmierhilfe
« Antwort #2 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ß
Sollte ich (gefährliches) Halbwissen verbreiten, beuge ich demütig mein Haupt mit der Gewissheit versagt zu haben!
WICHTIG: Sämtliche Programme dienen lediglich der Veranschaulichung von Funktionen und sind nicht für den Produktiveinsatz geeignet!

Offline radar17892

  • Sr. Member
  • ****
  • Beiträge: 709
  • Think easy!
    • mollgruppe
Antw:"ST" für Anfänger - Programmierhilfe
« Antwort #3 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
Weil Einfach einfach Einfach ist!

Offline Eulhofer

  • Full Member
  • ***
  • Beiträge: 106
  • Man ist nie zu alt neue Dummheiten zu begehen...
Antw:"ST" für Anfänger - Programmierhilfe
« Antwort #4 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...
Erste Gehversuche mit der EasyE4 - nachdem ich jahrelang auf der Schneider/Telemecanique TSX-Micro programmiert habe....

Offline radar17892

  • Sr. Member
  • ****
  • Beiträge: 709
  • Think easy!
    • mollgruppe
Antw:"ST" für Anfänger - Programmierhilfe
« Antwort #5 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
   
« Letzte Änderung: August 15, 2021, 10:28:09 Vormittag von radar17892 »
Weil Einfach einfach Einfach ist!

Offline CiesleRa

  • Global Moderator
  • Full Member
  • *****
  • Beiträge: 315
  • easyE4 for President
Antw:"ST" für Anfänger - Programmierhilfe
« Antwort #6 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

Alle von mir bereitgestellten Programme sind reine Beispielprojekte. Die Verwendung erfolgt auf eigene Gefahr. Jegliche Haftung ist ausgeschlossen.

Offline Eulhofer

  • Full Member
  • ***
  • Beiträge: 106
  • Man ist nie zu alt neue Dummheiten zu begehen...
Antw:"ST" für Anfänger - Programmierhilfe
« Antwort #7 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....
Erste Gehversuche mit der EasyE4 - nachdem ich jahrelang auf der Schneider/Telemecanique TSX-Micro programmiert habe....