Bereichslängenfehler / Diagnoseinfo richtig deuten

kiestumpe

Level-1
Beiträge
726
Reaktionspunkte
84
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich habe hier folgende Diagnosemeldung, wie kann ich diese richtig interpretieren bzw. den Fehler finden? Was sagen die Zugriffsadresse und die Bausteinadress?
Code:
 Ereignis 7 von 120:  Ereignis-ID 16# 2522 Bereichslängenfehler beim Lesen  Global -DB  , Bytezugriff,  Zugriffsadresse:  64976 FC-Nummer:   181 Bausteinadresse:    912 Angeforderter OB: Programmierfehler-OB (OB 121) OB nicht vorhanden oder gesperrt oder nicht startbar im aktuellen Betriebszustand interner Fehler, kommendes Ereignis 05:31:30:433   06.02.9
 
Hallo, ich habe hier folgende Diagnosemeldung, wie kann ich diese richtig interpretieren bzw. den Fehler finden? Was sagen die Zugriffsadresse und die Bausteinadress? Ereignis 7 von 120: Ereignis-ID 16# 2522 Bereichslängenfehler beim Lesen Global -DB , Bytezugriff, Zugriffsadresse: 64976 FC-Nummer: 181 Bausteinadresse: 912 Angeforderter OB: Programmierfehler-OB (OB 121) OB nicht vorhanden oder gesperrt oder nicht startbar im aktuellen Betriebszustand interner Fehler, kommendes Ereignis 05:31:30:433 06.02.94
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Fehler sagt aus, dass von einer einem Datenbyte in einem Global DB gelesen wird, das es nicht gibt.
Beispiel.
Code:
AUF DB 10
L DBB 200
Wenn der DB allerdings nur bis zum DBB 198 geht, dann kommt diese Fehlermeldung.
Das ganze passiert im FC 181 ( FC-Nummer: 181) an der Bausteinadresse 912 (austeinadresse: 912).
Wenn du den Baustein öffnest, kannst du im Editor im Menü "Bearbeiten/Gehe zu/Bausteinadresse..." anwählen. In dem Fenster das dann aufspringt kannst du dann die 912 eingeben. Der Cursor springt dann zur Stelle mit dem Fehler.
Es müsste aber auch die Möglichkeit bestehen im Status auf "Baustein öffnen" zu klicken. Das macht das selbe.
 
Zuletzt bearbeitet:
Der durch die Zugriffsadresse adressierte Wert liegt außerhalb oder nicht vollständig innerhalb des zulässigen Operandenbereiches (CPU-spezifische Größe).

du scheinst da eine adresse zu benutzen/berechnen, die von deiner CPU nicht unterstützt wird
 
desweiteren sagt die Meldung das die Steuerung den OB121 nicht öffnen kann. Dies kann daran liegen das du ihn gar nicht hast. Dieser OB würde dafür sorgen das die CPU nicht in STOP geht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Der Fehler sagt aus, dass von einer einem Datenbyte in einem Global DB gelesen wird, das es nicht gibt.
Beispiel.
Code:
AUF DB 10
L DBB 200

nö, denn dann kommt:

Code:
Ereignis 2 von 100:  Ereignis-ID 16# 2522
Bereichslängenfehler beim Lesen 
Global -DB , Bytezugriff, Zugriffsadresse:      200
Angeforderter OB: Programmierfehler-OB (OB 121)
OB nicht vorhanden oder gesperrt oder nicht startbar im aktuellen Betriebszustand
interner Fehler, kommendes Ereignis
13:57:47.913  13.08.2008
 
Erstmal danke @alle Soweit war ich etwa auch schon, ich habe jedoch das Problem, dass der FC181 vielfach verwendet wird und müßte den Aufruf herausfinden, bei dem es knallt. Also der Aufruf-FC vom FC181. nebenbei: wie bekomme ich den Text hier mit zeilenumbruch reingestellt, war eigentlich nicht so beabsichtig wie oben-sorry.
 
Wie sieht der Code an der Stelle nach gehezu aus?

und welche cpu wird verwendet? :rolleyes:


...bei 300ern ist es schwerer was zu finden, zumindest wenn man es über den OB121 macht ...
ansonsten gilt, von oben nach unten durchhangeln und oh, ein tricky trick: in den baustein ein inkrement einbauen, darfst du ruhig global machen, wird bei jedem aufruf um eins erhöht, die zahl sagt dir dann welcher aufruf es ist und dann suchst du über die aufrufstruktur die stelle
 
Entweder ein Inkrement einbauen wie 4L sagt

oder Schritt für Schritt vor die einzelnen FC Aufrufe ein BEA setzen und sehen wann die Meldung wieder kommt bzw wann sie weg geht

Solong
B
 
Zuviel Werbung?
-> Hier kostenlos registrieren
CPU 414-2 Die Idee mit dem Zähler ist nicht schlecht, ich hatte jedoch gehofft, mit der Diagnosemeldung oder irgendeinem Statusregister dahinter zu kommen, also möglichst ohne Eingriff ins Programm (der FC stammt nicht aus meiner Feder). Da wird mit Auf-Befehlen und infizierten äh indizierten Zugriffen hantiert. Werde mir den OB121 und das drumrum nochmal genau anschauen. Der Fehler ist nun nach Kaltstart übrigens verschwunden Trotzdem Danke @all
 
Zuletzt bearbeitet:
Der OB121 verhindert den stop und du kannst die daten nachher mal
auswerten, aber da bekommst du auch nur die relativeadresse des
auslösenden befehls, aber wenigstens das (geht bei der 300er nämlich nicht)

Der Fehler ist nun nach Kaltstart übrigens verschwunden

das klingt mir verdächtig nach einem reisebit - da scheint jemand
hochzuzählen und hat vergessen, dass irgendwann ende im gelände ist ...
aber, um mal mit rainers worten zu sprechen

Wie sieht der Code an der Stelle nach gehezu aus?
 
Der Diagnosepuffereintrag ist ja schön und gut. Aber was hat LStack, UStack und BStack angezeigt? Darüber müsste doch die verursachende Stelle gefunden werden können.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
yeep, hab den OB121 online gelöscht und die Stacks angeschaut, damit kam ich dahinter. Wenn Bedarf besteht, kann ich noch etwas mehr zu dem buggy-code schreiben, da haben sich ein paar don'ts so verkettet, das sich da jemand einen Strick daraus gedreht hat.
 
Zuletzt bearbeitet:
Zurück
Oben