TIA - Frage zu For Schleife

Alles rund um die STEP7-Software von SIEMENS

Moderatoren: Matthias, Weiss_MHJ

Antworten
Lowe21X
SPSTreff-User
Beiträge: 4
Registriert: 17 Feb 2023, 09:58

TIA - Frage zu For Schleife

Beitrag von Lowe21X »

Hallo,
ich arbeite mit dem TIA Portal V17, einer S7-1500er CPU und WinCC. Aktuell bastel ich an einer For Schleife, welcher mir ein bestimmtes Array durchläuft und die darin gespeicherten Werte auswertet. Es sieht etwa so aus:

Code: Alles auswählen

If CountA <= CountB Then
For i := CountA to CountB do
IF Computer Then
Number := False;
End_IF;
End_FOR;
END_IF;
Das ergibt einen Bereichslängenfehler. Die erste If Bedingung habe ich für den Fall eingebaut, dass CountB größer ist als CountA. Die Anweisung habe ich kopiert und das <= gedreht also >=
Frage: Warum erhalte ich einen Bereichslängenfehler? Und wäre es schlimm, wenn CountA größer als CountB ist? Wie würde TIA damit umgehen?
Ich würde mich über eine Antwort sehr freuen.
Gruß

Benutzeravatar
mhj
Site Admin
Beiträge: 350
Registriert: 09 Jan 2010, 11:35
Kontaktdaten:

Re: TIA - Frage zu For Schleife

Beitrag von mhj »

Der Bereichslängen Fehler tritt auf, wenn außerhalb des gültigen Bereichs gelesen/geschrieben wird.

Wenn Count die Anzahl der Felder im Array ist und das Array bei "0" beginnt, dann ist das maximale Feld "Count-1". Evtl. ist das die Ursache.

Lowe21X
SPSTreff-User
Beiträge: 4
Registriert: 17 Feb 2023, 09:58

Re: TIA - Frage zu For Schleife

Beitrag von Lowe21X »

Verstehe!

Und wäre es schlimm, wenn CountA größer als CountB ist? Wie würde TIA damit umgehen?

Benutzeravatar
mhj
Site Admin
Beiträge: 350
Registriert: 09 Jan 2010, 11:35
Kontaktdaten:

Re: TIA - Frage zu For Schleife

Beitrag von mhj »

Wenn CountA>CountB: dann wäre die 1. If-Entscheindung nicht erfüllt und die Auswertung würde nicht stattfinden.

Lowe21X
SPSTreff-User
Beiträge: 4
Registriert: 17 Feb 2023, 09:58

Re: TIA - Frage zu For Schleife

Beitrag von Lowe21X »

Wie würdest du das lösen? Meine Frage bezieht sich auf den Fall, dass die If Bedingung nicht da wäre. Das es dann nicht erfüllt wäre leuchtet mir ein. Du hast meinen ersten Beitrag nicht vollständig gelesen. Denn, ich wollte diesen Fall umgehen, indem ich es kopiere und das Vorzeichen drehe. Es scheint aber nicht die beste Lösung zu sein. Deswegen stellte ich die Frage wie TIA damit umgeht, wenn CountA größer ist. Also : in diesem Fall CountA größer CountB

Ich hoffe, dass ich es gut erklärt habe.

Benutzeravatar
mhj
Site Admin
Beiträge: 350
Registriert: 09 Jan 2010, 11:35
Kontaktdaten:

Re: TIA - Frage zu For Schleife

Beitrag von mhj »

Bei einer Schleife muss normalerweise der Endwert größer als der Startwert sein.

Ist er dies nicht, dann schreibt man:

Code: Alles auswählen

FOR #i := 10 TO 5 BY -1  DO

    ;
END_FOR;
Wie sich nun die SPS verhält, wenn dieser Problemfall zur Laufzeit auftritt, kann ich aus dem Stegreif nicht sagen.
Einfach mal mit PLCSIM simulieren.

Lowe21X
SPSTreff-User
Beiträge: 4
Registriert: 17 Feb 2023, 09:58

Re: TIA - Frage zu For Schleife

Beitrag von Lowe21X »

Diesen Befehl kenne ich. Ich weiß, dass man mit - 1 rückwärts zählt. Aber damit sind nicht beide Fälle abgedeckt. Hättest du eine Idee wie ich das lösen könnte?

Antworten