For Schleif Strukturierter Text

bluebird277

Level-1
Beiträge
100
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
arbeite mich gerade in ST ein und frage mich warum die folgende Schleife bis 101 zählt und dann der Anweisungsteil nie gestoppt wird. Der Zähler läuft dauernd hoch und stoppt nie.

FOR i:= 1 TO 100 BY 2 DO
achsposition:=achsposition+1;

END_FOR

wie kann ich einen anweisungsteil exakt 100 mal durchführen und dann die Schleife stoppen bis manuell der Wert i auf 0 gesetzt wird.

Danke für eure Hilfe
 
und frage mich warum die folgende Schleife bis 101 zählt

danke, you made my day!

also ... erster durchlauf i = 1 ... zweiter durchlauf i = 3 ... dritter durchlauf i = 5 ... neunundvierzigster durchlauf i = 99 ... fuffzigster durchlauf i = ??? richtig, 101


um auf hundert zu kommen empfehle ich die schrittweite 1 und einen geraden startwert, sowas abgefahrenes wie 0 zum beispiel

Code:
*
FOR i := 0 TO 99 BY 1 DO
[...]
END_FOR
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
hallo vierlagig,

danke für deine schnelle antwort habe es jetzt wie von dir empfohlen gemacht


FOR i:= 0 TO 99 BY 1 DO
achsposition:=achsposition+1;
END_FOR

er zählt aber trotzdem immer weiter. Kann ich den nicht sagen dass er innerhalb einer For Schleife ein Ventil ansteuern soll wie z.B

If start then

FOR i:= 0 TO 99 BY 1 DO
If Grundstellung then
Ventil:=True;
elsif Arbeitsstellung then
Ventil:=False;
end_if

END_FOR

end_if
 
ja, natürlich, er zählt jetzt in jedem zyklus 100 weiter, nett, ne? :D

die frage ist, was willst du tun? so richtig verstehe ich deinen ansatz nämlich nicht ...

aber so zu spielen: bau mal ne if achsenposition < 1000 for die schleife...
 
ok was will ich tun gute Frage :) Ich versuche es mal zu erklären
Habe eine Case Schrittkette in der Schrittkette wird eine Feder vereinzelt.

Für einen kompletten werkstückträger brauche ich 6 Federn. Aber jede Feder an einer anderen NC Position. Sprich Schrittkette Start Position anfahren Feder vereinzeln. Beim nächsten Start neue Achsposition anfahren Feder vereinzeln usw.
Die Positionen habe ich in einem Array von 0-14 Abgespeichert. Da der Ablauf in der Schrittkette aber immer gleich ist ändert sich nur die Achsposition.

Somit möchte ich also bei jedem Schrittketten Start die nächste Achsposition im Array anfahren.

Ich möchte also das mit eine For Schleife machen.

Sonst müsste ich so ne Lange Schrittkette schreiben und das bei Insgesamt bis zu 15 verschiedenen werkstücken alle mi tunterschiedlichen Achspositionen.

Hoffe es war verständlich:) für dich
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
arbeite mich gerade in ST ein und frage mich warum die folgende Schleife bis 101 zählt und dann der Anweisungsteil nie gestoppt wird. Der Zähler läuft dauernd hoch und stoppt nie.

FOR i:= 1 TO 100 BY 2 DO
achsposition:=achsposition+1;

END_FOR

wie kann ich einen anweisungsteil exakt 100 mal durchführen und dann die Schleife stoppen bis manuell der Wert i auf 0 gesetzt wird.

Danke für eure Hilfe
Abgesehen vom kleinen Logikfehler, den vierlagig schon korrigiert hat, macht die Anweidung mit FOR hier keinen Sinn. Die FOR-Schleife wird jeden Zyklus ausgeführt und hat zru Folge, dass jeden Zyklus der Wert für "achsposition" um 100 inkrementiert. Du hättest genauso gut schreiben können
Code:
achsposition:=achsposition+100;
Die SPS arbeitet doch schon zyklisch. Innerhalb der FOR-Schleife kannst du eh keinen Zustand einer Boolschen Eingangsvariable abfragen, da dessen Zustand sich während der Schleife nicht ändert.
Eigentlich nutzt man FORs nur um Arrays o.ä. in einem SPS-Zyklus durchzurattern.
 
Die Positionen habe ich in einem Array von 0-14 Abgespeichert. Da der Ablauf in der Schrittkette aber immer gleich ist ändert sich nur die Achsposition.

Somit möchte ich also bei jedem Schrittketten Start die nächste Achsposition im Array anfahren.
Einfach am Ende der Schrittkette:
Code:
achsposition := achsposition+1;
ggf. nach dem letzten Schritt zurücksetzen.

Ich möchte also das mit eine For Schleife machen.
Macht hierfür keinen Sinn
 
Zurück
Oben