TIA CPU 1515SP PC - Bereichslängenfehler bei indirekter Adressierung in FC

RosiBro

Level-1
Beiträge
54
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey,

ich bekomme einen Bereichslängenfehler, wenn ich versuche mein Programm in die SPS zu laden. direkt im Anschluss geht die SPS in den STOP.

Code:
1 von 329; Ereignis-ID: 16# 02:4010
CPU-Info: Durch System angestoßene Anforderung: STOP
Anlaufsperre(n) anstehend:
 - keine Anlaufsperre gesetzt
 
 CPU wechselt von Zustand RUN nach STOP

 Software PLC_1 / Software PLC_1
 

Kommendes Ereignis
Ereignistyp:  OK
19.04.2022 14:44:22.813
(Kodierung:  16#  20 01 00 0F 16 E7 4C D4  38 25 66 2E 40 10 0C 01  00 64 40 00 10 00 00 34  00 02 00 00 08 04 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00)


2 von 329; Ereignis-ID: 16# 02:4210
Temporärer CPU-Fehler: Programmierfehler (OB-Startereignis)
 CPU wechselt in STOP-Zustand (keine OB-Bearbeitung)

 Software PLC_1 / Software PLC_1
 

Kommendes Ereignis
Ereignistyp:  Fehler
19.04.2022 14:44:22.811
(Kodierung:  16#  20 01 00 13 16 E7 4C D4  38 08 05 CD 42 10 0C 05  00 00 00 00 10 05 00 34  00 02 00 00 00 07 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00)


3 von 329; Ereignis-ID: 16# 02:2522
Temporärer CPU-Fehler: Bereichslängenfehler in FC 7
betrifft OB 1-Ausführung
Lesezugriff Flüchtiger DB-Bereich
fehlerhafte Adresse, Operand ersetzt
 
 Software PLC_1 / Software PLC_1
 

interne Adressierungsdetails: Caddr=16#0000028A, Bereich: Flüchtiger DB-Bereich, Adr: 268435460

Kommendes Ereignis
Ereignistyp:  Fehler
19.04.2022 14:44:22.811
(Kodierung:  16#  34 01 00 13 16 E7 4C D4  38 07 94 EB 25 22 0C 41  A1 8C 00 07 00 00 00 34  00 02 00 00 AE 8B 00 01  01 07 00 03 00 00 02 8A  00 00 00 01 AE 8B 00 08  10 00 00 04)


4 von 329; Ereignis-ID: 16# 02:400E
CPU-Info: Über Kommunikation angestoßene Anforderung: WARMSTART
Anlaufsperre(n) anstehend:
 - keine Anlaufsperre gesetzt

 CPU wechselt von Zustand ANLAUF nach RUN

 Software PLC_1 / Software PLC_1

verursacht wird dieser wohl durch eine indirekte Adressierung in diesem FC.FC_new_pos.PNG

Wenn ich mir den Fehler anzeigen lasse, wird mir bereits das erste #actual[#Motor_ID] angezeigt.

Das Array #Arduino1 ist in einem nicht-optimierten DB und ist ein Array mit Modbusregistern, aus denen gelesen und in die geschrieben wird. Der Wert aus dem ersten Register soll als Arrayindex verwendet werden. Dazu wird er im ersten Netzwerk in eine Temp vom Typ UInt gespeichert.

Die anderen Werte sind alle in optimierten Bausteinen abgelegt.

Aufgerufen wird der FC über den ENO eines anderen FB (aber das scheint keine Rolle zu spielen - der Fehler kommt prinzipiell). Projektiert wurde das Ganze in V15.1.

Ich verstehe den Fehler (vielleicht kann jemand das grundlegende Problem erklären?) an dieser Stelle nicht und würde mich sehr über Hilfe freuen.

Besten Dank im Voraus,

RosiBro.
 

Anhänge

  • FC_new_pos.PNG
    FC_new_pos.PNG
    55,1 KB · Aufrufe: 22
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie groß ist das Array #actual?

Das Array hat 4 Einträge: Index 1 bis 4.

Welcher Wert ist in #Motor_ID bzw. #Arduino1[1]?

Dort sollten die Werte 1 bis 4 drinstehen.
Misti. Wahrscheinlich ist das schon das Problem? Der Startwert ist standardmäßig 16#0 und nicht extra anders festgelegt worden. Dann liegt das natürlich außerhalb der Arraygrenzen, solange das nicht abgesichert wurde (wurde es nicht).

Ich werde das mal ausprobieren. Aber es sieht ja ganz danach aus, als wäre das das Problem. Ich melde mich da noch einmal :)

Wer weiß, was bei S7-1500 ein "Flüchtiger DB-Bereich" ist??

Harald

Die Frage kann ich dir leider nicht beantworten.

Danke dir für die Nachfragen!

Liebe Grüße,
RosiBro.
 
Zurück
Oben