Probleme mit For-Schleife

lexxoe

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
guten tag,
ich habe folgendes Problem:

Bei Befehl #fahre_los wird erst eine Flanke mit #onimo_input_start definiert. die dafür sorgt dass die For-Schleife nur einmal aufgerufen wird.
bei der If Anweisung in der For Schleife steht ein exit dass die forschleife zusätzlich unterbrechen soll fals """Hochregallager".Zustand[#Sollwert_Spalte,#Sollwert_Zeile] = False"" ist

Ich finde das problem nicht bekomme den Fehler :

STOP durch Programmierfehler (OB nicht geladen oder nicht möglich, bzw. kein FRB vorhanden )
Unterbrechungstelle im Anwenderprogramm: Zyklisches Programm (OB 1)
Prioritätsklasse: 1
FB-Nummer: 1
Bausteinadresse: 384
Bisheriger Betriebszustand: RUN

Hier mein Code:

#onimp_input_start := #fahre_los AND NOT #mem_input_start ;
#mem_input_start := #fahre_los ;


IF #onimp_input_start THEN
FOR #i := 1 TO 26 BY 1 DO
#Sollwert_Zeile := #Liste[#i].Zeile ;
#Sollwert_Spalte := #Liste[#i].Spalte;

IF "Hochregallager".Zustand[#Sollwert_Spalte,#Sollwert_Zeile] = False THEN
#fahre_Zeile := #Sollwert_Zeile;
#fahre_Spalte := #Sollwert_Spalte;
EXIT;
END_IF;
END_FOR;
END_IF;


bitte um hilfe
 
Ist das Array "Hochregallager".Zustand[#Sollwert_Spalte,#Sollwert_Zeile] groß genug definiert und in die SPS übertragen worden?

Gleiche Frage zu #Liste[].

Neuer IDB initialisiert und in SPS übertragen?

PS: Ach ja, bei TIA heißt das Programm übersetzen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ist das Array "Hochregallager".Zustand[#Sollwert_Spalte,#Sollwert_Zeile] groß genug definiert ...
bzw. gibt es SICHER zu jedem der beiden Indexe ein definiertes ArrayElement ?
Du solltest auf jeden Fall mal die beiden Einzelwerte (#Sollwert_Spalte und #Sollwert_Zeile) auf ihren Betrag prüfen und nur dann weiterarbeiten, wenn der Wert davon legal ist. Im anderen Fall ggf. eine Meldung erzeugen ...

Gruß
Larry

Nachsatz :
welche der Programmzeilen entspricht die Adresse 384 ?
 
hallo,
danke schonmal für die antworten.

Es gibt auf jedenfall zu beiden indexe ein arrayelement.
ich arbeite mit Tia Portal und da wird sofort ein syntax fehler angezeigt. Das Array ist auch groß genug.
der fehler heisst ja "Unterbrechungstelle im Anwenderprogramm: Zyklisches Programm (OB 1) " kann man daraus schließen dass der zulange in der for schleife steckt und dann unterbricht !?

was genau meinst du unter "welche der Programmzeilen entspricht die Adresse 384 ? "
ich mache das für meine bachelorarbeit und bin nicht der absolute pro :)
 
Hallo,
Unterbrechungstelle im Anwenderprogramm: Zyklisches Programm (OB 1) " kann man daraus schließen dass der zulange in der for schleife steckt und dann unterbricht !?
Das kann ich mir im Falle deines Programms nicht so recht vorstellen. Du hättest dann auch eine Zykluszeit-Überschreitung ... und bekämst das m.E. auch so gemeldet ...

Es gibt auf jedenfall zu beiden indexe ein arrayelement.
ich arbeite mit Tia Portal und da wird sofort ein syntax fehler angezeigt. Das Array ist auch groß genug.
Das habe ich auch nicht bezweifelt.
Ich meinte eher das :
#Sollwert_Zeile := #Liste[#i].Zeile ;
#Sollwert_Spalte := #Liste[#i].Spalte;
Wer sagt dir denn das du in Sollwert_Zeile und/oder Sollwerte_Spalte aus dem Array Liste sinnvolle Werte eingetragen bekommst ? Mein Vorschlag bezog sich darauf, das zu checken ...

was genau meinst du unter "welche der Programmzeilen entspricht die Adresse 384 ? "
Ich beuzog mich dabei auf das :
STOP durch Programmierfehler (OB nicht geladen oder nicht möglich, bzw. kein FRB vorhanden )
Unterbrechungstelle im Anwenderprogramm: Zyklisches Programm (OB 1)
Prioritätsklasse: 1
FB-Nummer: 1
Bausteinadresse: 384
Bisheriger Betriebszustand: RUN
Auch bei einem SCL-Script kannst du dich von Step7 an die entsprechende Programmstelle (bei SCL zumindestens so ungefähr) bringen lassen.
Ich arbeite nun selbst nicht mit TIA und kann dir jetzt deswegen nicht mit den korekten Benennungen der Funktionen kommen - ich bin mir aber relativ sicher, dass die seit Step7 V5.5 nicht wegrationalisiert worden sind ...
Die Programmzeile des Scriptes zu haben hilft shon manchmal ...

Insgesamt bin ich aber weiterhin relativ sicher, dir den wahrscheinlichen Fehler schon genannt zu haben ...

Gruß
Larry
 
Zurück
Oben