Autor Thema: Summenbildung in ST  (Gelesen 3175 mal)

Offline mdh

  • Jr. Member
  • **
  • Beiträge: 20
Summenbildung in ST
« am: Januar 21, 2021, 19:43:44 Nachmittag »
Hallo,
ich mache meine ersten Erfahrungen mit der EasyE4 und mit ST. Dabei möchte ich aus einer Anzahl von Merkern eine Summe bilden (MW11 - MW20 im Beispiel im Anhang).

Eigentlich hätte ich gedacht, mit einer FOR-Schleife geht das. Wenn ich im Einzelzyklus Ausführen klicke, dann zeigt er beim 1. Schritt das richtige Ergebnis an, aber er zählt dann unendlich weiter.
Ich habe verschiedene Konstruktionen mit IF...THEN ausprobiert, nichts geht.
Auch mit EXIT komme ich aus der Schleife nicht raus.

Wer weiß Rat.

Überhaupt finde ich die Hilfe in EasySoft für ST für relative Anfänger nicht gut verständlich. Gibt es irgendwo eine empfehlenswerte Anleitung, die ein paar grundlegende Tips und verständliche Beispiele beinhaltet? In Bezug auf ST sind ja auch die Tutorien von Eaton eher dünn bestückt.

Gruß
Hermann

Anhang:
- FOR-Schleife 1.Schritt 210121.jpg
- FOR-Schleife x.Schritt 210121.jpg

Offline weiss_nix

  • Sr. Member
  • ****
  • Beiträge: 608
  • it has to be easy, it's a easy!
Antw:Summenbildung in ST
« Antwort #1 am: Januar 21, 2021, 20:23:14 Nachmittag »
Hallo mdh,
das Problem (welches keines ist) liegt auf der Hand!

Im ersten Zyklus wird die Summe in MW30 gebildet, in den weiteren Zyklen wird MW30 weiter aufsummiert da es ja den Wert vom vorigen Zyklus behält!

Schreibe z.B. in der ersten Zeile "MW30 :=0;" dann wird es funktionieren...

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 mdh

  • Jr. Member
  • **
  • Beiträge: 20
Antw:Summenbildung in ST
« Antwort #2 am: Januar 23, 2021, 18:46:47 Nachmittag »
Hallo weiss_nix,

danke für die Antwort. Das hat tatsächlich funktioniert!

Was mir aber nicht klar ist, ist die Frage, was in so einer FOR-Schleife eigenlich alles passiert:
  MW30 := 0;
  FOR MD30 := 11 TO 20 BY +1 DO
         MW30 := MW[MD30] + MW30; END_FOR;

Der Zähler der FOR-Schleife ist MD30 und der dürfte nach meinem Verständnis als einziger hochgezählt werden, nämlich von 11 bis 20 und dann wird die Schleife verlassen.
Die Variable, die aufsummiert wird (MW30) ist doch beim Programmstart schon = 0 und wird bei jedem Hochzählen von MD30 um den Wert von MW[MD30] erhöht.
  1. Schritt:   MW30  =  10  + 0
  2. Schritt:   MW30  =  20  + 10 usw. bis zum 10. Schritt.

Deshalb verstehe ich
  erstens nicht, warum vorher noch MW30 := 0 gesetzt werden muß und
  zweitens was ist dabei ein Zyklus? Ich verstehe unter Zyklus das jeweilige Hochzählen von MD30.

Aber im Einzelschrittmodus wird überhaupt nur ein einziger Schritt ausgeführt und dann sind schon alle Summanden addiert!!??
Aber ohne die 0-Setzung vorher wird offenbar auch MW30 auf misteriöse Weise hochgezählt, und zwar unendlich lange (noch misteriöser!!).

Also, ich sehe, dass es so funktioniert, weiß aber nicht wieso, getreu nach dem Motto: "Die Botschaft hör ich wohl, allein mir fehlt der Glaube."
Kannst Du mir da noch etwas auf die Sprünge helfen?

Und noch mal die Frage: Wo kann man als Programieranfänger gute Hilfen, Anleitungen und Tricks in Sachen ST finden?

GRuß

Offline weiss_nix

  • Sr. Member
  • ****
  • Beiträge: 608
  • it has to be easy, it's a easy!
Antw:Summenbildung in ST
« Antwort #3 am: Januar 24, 2021, 08:56:13 Vormittag »
Hallo mdh,
Ich verstehe unter Zyklus das jeweilige Hochzählen von MD30.
... mal ganz von vorne! Wenn du die Steuerung (in diesem Fall die E4 ) auf "RUN" schaltest passiert in groben Zügen folgendes:
- Startroutine:
Initialisieren der Merkerbereiche, in deinem Fall wird hier auch MW30 auf 0 gesetzt ...

- Programmdurchlauf = Zyklus:
Eingangsabbild lesen, dein Programm von Anfang bis Ende abarbeiten, Ausgangsabbild schreiben!
Dieser eine Programmdurchlauf, auch Zyklus genannt, dauert ein paar Millisekunden und wird bis zum Stoppen der E4 immer und immer wieder durchlaufen. Zwischen Ende des einen Zyklus und beginn des nächsten Zyklus bleiben die Merker- und Ausgangszustände unverändert erhalten!

Wenn du eine Programmzeile wie z.B. MW30 := MW30 + 1; ausführst dann wird in MW30 die Anzahl der durchlaufenen Zyklen sichtbar.

Was mir aber nicht klar ist, ist die Frage, was in so einer FOR-Schleife eigenlich alles passiert:
  MW30 := 0;
  FOR MD30 := 11 TO 20 BY +1 DO
         MW30 := MW[MD30] + MW30; END_FOR;

Die FOR-Schleife (und die indexierten Merkerworte) bewirken folgendes:
MW30 := MW30 + MW11;
MW30 := MW30 + MW12;
.
.
MW30 := MW30 + MW20;

... und das jeden Zyklus und wie vorher geschrieben bleibt ja der Wert von MW30 zwischen den Zyklen erhalten.

... Ich möchte dir nicht zu nahe treten aber dein Verständnisproblem hat nichts mit "ST" zu tun sondern liegt IMHO im generellen Verständnis der Programmierlogik und die ist in KOP,FUP,AWL,ST, Basic, Pascal, etc. überall gleich. Es unterscheidet sich lediglich die Syntax, also würde ich da mal mit Lektüre anfangen.

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 mdh

  • Jr. Member
  • **
  • Beiträge: 20
Antw:Summenbildung in ST
« Antwort #4 am: Januar 26, 2021, 19:00:42 Nachmittag »
Danke für die Aufklärung!
Gruß

Offline weiss_nix

  • Sr. Member
  • ****
  • Beiträge: 608
  • it has to be easy, it's a easy!
Antw:Summenbildung in ST
« Antwort #5 am: Januar 27, 2021, 09:01:31 Vormittag »
... jederzeit gerne wieder, Hauptsache es hat geholfen!

Ich hoffe du verstehst die Aussage mit dem Verständnisproblem nicht falsch, denn jeder hat mal angefangen ...
Du kannst natürlich auch jede andere Lektüre über ST (SCL (=Siemenslastig)) zu Rate ziehen,
aber auf Grund der rudimentären Implementation von ST in der E4 wirst du viele Teile bei der E4 nicht finden.

Am ehesten wird dich IMHO weiterbringen wenn du ST-Programme hier aus dem Forum versuchst zu verstehen bzw. nachzuvollziehen
und bei Verständnisproblemen einfach Fragen. Wenn du am Ball bleibst wirst du bald merken dass es kein Hexenwerk ist  ;)
« Letzte Änderung: Januar 27, 2021, 09:20:05 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 Juergen__R

  • Full Member
  • ***
  • Beiträge: 272
  • I love easy-Forum.net
Antw:Summenbildung in ST
« Antwort #6 am: Januar 27, 2021, 14:46:52 Nachmittag »
Auch ich habe Probleme mit ST

und bitte um Benennung einer brauchbaren Lektüre, die auch für Anfänger zu verstehen ist!

Jürgen Rosenhagen

Offline weiss_nix

  • Sr. Member
  • ****
  • Beiträge: 608
  • it has to be easy, it's a easy!
Antw:Summenbildung in ST
« Antwort #7 am: Januar 27, 2021, 16:49:45 Nachmittag »
Hallo Jürgen, eine Lektüre benennen kann ich leider nicht ...
da ich aber auch mal angefangen habe kann ich dir und allen die es betrifft nur meine Erfahrungen schildern.

Ich habe die Erfahrung gemacht dass in keinem Buch zu lesen ist welche(r) Funktionsaufruf, Befehl, Anweisung, Zuweisung, etc. für die jeweilige komplexe Aufgabenstellung anzuwenden ist, geschweige denn was in der Zeile davor und danach steht (stehen muss). Für mich war Programmieren lernen wie Vokabeln Pauken, ich habe mir die Schlüsselworte (bei der E4 sehr überschaubar) eines nach dem anderen vorgenommen und versucht zu verstehen was es damit auf sich hat. Und ob man nun z.B. ARRAY's (ein- oder mehr- dimensional), SCHLEIFEN,  IF oder CASE Konstrukte, etc.  verwendet, hängt im wesentlichen von der Anforderung und der eigenen Kreativität ab!

In der easySoft Hilfe findet man unter "ST Programmierung" vmtl. alle wesentlichen Informationen.

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!