TIA Bereichslängenehler 1215C TIA V13

Dan!€L

Level-1
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

ich bin neu hier im Forum und generell auch neu bei der Projektierung von SPS Programmen. Also steinigt mich bitte nicht wenn das Thema schon irgendwo abgearbeitet wurde oder ich was falsches sage :ROFLMAO:

So nun zu meinem Problem und zwar habe ich ein SCL Programm in einer 1215C geschrieben welches über DP Daten (I Soll,I Ist, U eff.) von einem externen Gerät einliest und diese dann in den Static Bereich vom FB ablegt.

Die Daten werden richtig gelesen und auch richtig abgelegt aber die SPS gibt mir trotzdem immer einen Bereichslängenfehler raus. Die Daten die ich einlese sind 2 einzelne Byte die zusammen auf einen INT gelegt werden.


Der Fehler der kommt ist folgender:

Temporärer CPU-Fehler: Bereichslängenfehler in FB 1
betrifft OB 30 Ausführung
Schreibzugriff Flüchtiger DB-Bereich
fehlerhafte Adresse, Operand ignoriert
Bearbeitung wird fortgesetzt (keine OB-Bearbeitung)
PLC_1
interne Adressierungsdetails: Caddr=16#000001B1, Bereich: DB 2 , Adr: 48



verstehe nicht warum. Da ich ja 2 Byte einlese ( natürliche das High Byte 8 nach links verschiebe und dann mit dem Low Byte oder ) und dann auf ein INT gebe.

Im Anhang ist auch mal ein Bild vom DB
 

Anhänge

  • SCL_2_.jpg
    SCL_2_.jpg
    124,2 KB · Aufrufe: 106
Bereichslängenfehler deutet darauf hin, dass du versucht hast dein Array ausserhalb seines definierten Bereiches anzusprechen. (War die Zählvariable evtl 0 oder > 300?)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein hab ich nicht, kann den wert vorgeben in wie weit mein Array beschrieben werden soll. Hatte mein Array auch mal auf 10 reduziert, bringt aber leider nichts. Wenn ich mein Programm aus klammer mit den Daten die eingelesen werden kommt auch kein Fehler.

Ich pack im Anhang noch mal ein Foto mit einem Teilausschnitt vom Programm, vielleicht hilft es ja irgendwie SCL_2_.jpg
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Fehlerursache ist bereits geklärt, doch für mich bleibt noch eine andere Frage: Was ist ein "Flüchtiger DB-Bereich"? :confused:

Der Fehler der kommt ist folgender:

Temporärer CPU-Fehler: Bereichslängenfehler in FB 1
betrifft OB 30 Ausführung
Schreibzugriff Flüchtiger DB-Bereich
fehlerhafte Adresse, Operand ignoriert
Bearbeitung wird fortgesetzt (keine OB-Bearbeitung)
PLC_1
interne Adressierungsdetails: Caddr=16#000001B1, Bereich: DB 2 , Adr: 48

Harald
 
Siemens Hilfe: Speicherbereiche der CPU schrieb:
Ladespeicher

Der Ladespeicher ist ein nicht flüchtiger Speicher für Programmcode, Datenbausteine und Hardware-Konfiguration. Beim Laden dieser Objekte in die CPU werden sie zunächst im Ladespeicher abgelegt. Dieser Speicher befindet sich auf der SIMATIC Memory Card. Für den Betrieb der CPU ist eine gesteckte SIMATIC Memory Card zwingend erforderlich.

Arbeitsspeicher

Der Arbeitsspeicher ist ein flüchtiger Speicher, der die Code- und Datenbausteine enthält. Der Arbeitsspeicher ist in der CPU integriert und nicht erweiterbar.

Der Arbeitsspeicher ist bei der S7-1500 in zwei Bereiche aufgeteilt:


  • Code-Arbeitsspeicher für ablaufrelevante Teile des Programmcodes.

  • Daten-Arbeitsspeicher für ablaufrelevante Teile von Datenbausteinen und Technologieobjekten. Bei den Betriebszustandsübergängen NETZ-EIN → Anlauf und bei STOP → Anlauf werden Variablen von Global-Datenbausteinen, Instanz-Datenbausteinen und Technologie-Objekten mit ihren Startwerten initialisiert. Remanente Variablen erhalten ihre im Remanenzspeicher gesicherten Aktualwerte.
Remanenzspeicher

Der Remanenzspeicher ist ein nicht flüchtiger Speicher zur Sicherung einer begrenzten Menge an Daten bei Spannungsausfall. Im Remanenzspeicher werden die als remanent definierten Variablen und Operandenbereiche gesichert.

Diese Daten bleiben über eine Abschaltung oder einen Spannungsausfall hinweg erhalten. Alle anderen Variablen gehen verloren und werden bei den Betriebszustandsübergängen Anlauf nach NETZ-EIN und bei Anlauf nach STOP auf ihre Startwerte gesetzt.

Der Inhalt des Remanenzspeichers wird durch folgende Aktionen gelöscht:


  • Urlöschen

  • Rücksetzen auf Werkseinstellungen
Im Remanenzspeicher werden auch bestimmte Variablen von Technologieobjekten gespeichert. Diese werden beim Urlöschen nicht gelöscht.

Alles, was nicht remanent ist, ist flüchtig.
 
Was ist ein "Flüchtiger DB-Bereich"? :confused:
Damit könnte eigentlich auch eine DB-Variable gemeint sein bei der die Remanenz nicht aktiviert ist.
Der TE zeigt in #1 ja einen optimierten DB bei dem nur bei der Variablen "Amount" die Remanenz aktiviert ist.

Das Array RQ_DAQSET ist nicht remanent. Die Meldung "Bereichslängenfehler" auf einen "flüchtigen DB-Bereich" würde dann schon Sinn machen wenn beim Zugriff auf RQ_DAQSET was mit dem Array-Index in die Binsen geht.
 
Zurück
Oben