Wo ist der Fehler?

erzteufele

Level-2
Beiträge
738
Reaktionspunkte
167
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

Also ich hab hier komisches sachen programm ist nicht von mir s7-317 steuerung fast 80% voll mit datenbausteinen sehr unübersichtlich ...
und bekomme diese meldung wo finde ich nun wo was falsch gemacht wurde?
Warum können Leute nicht gleich so Programmieren das es ohne Fehler läuft?


attachment.php
 

Anhänge

  • grrr.jpg
    grrr.jpg
    77,8 KB · Aufrufe: 213
Wenn du die CPU in Stop gehen lassen kannst, dann Lösche Online mal die Programmfehler-OBs.
Bei "Stack" kannst du dann schon sehen welcher Baustein den Fehler erzeugt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Würde jetzt mal spontan sagen, daß ein Bit in einem DB angesprochen werden soll, das nicht vorhanden ist. Genau den gleichen Fehler hatte ich gestern. Kam vom Kopieren.

Hatte einen Baustein, in dem DB 200.DBX3.6 abgefragt wurde, aber der DB ging in meinem Test-Prog nur bis DBX2.0.
Oder der entsprechende DB ist nicht geladen.
 
Wenn du die CPU in Stop gehen lassen kannst, dann Lösche Online mal die Programmfehler-OBs.
Bei "Stack" kannst du dann schon sehen welcher Baustein den Fehler erzeugt.

man könnte auch mal den OB121 ausprogrammieren und die fehlerdaten sichern. spart man sich den lästigen stop und das auslesen des stacks (ich frage mich sowieso, warum das immer wieder vorgeschlagen wird ... das ist so nsoa!)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Würde jetzt mal spontan sagen, daß ein Bit in einem DB angesprochen werden soll, das nicht vorhanden ist. Genau den gleichen Fehler hatte ich gestern. Kam vom Kopieren.

Hatte einen Baustein, in dem DB 200.DBX3.6 abgefragt wurde, aber der DB ging in meinem Test-Prog nur bis DBX2.0.
Oder der entsprechende DB ist nicht geladen.

Das wäre doch eigentlich Berichslängenfehler?!
Mein Tipp wäre, dass bei einer indirekten Adressierung die Bereichskennung ungültig ist.
 
Ich habe es gerade mal getestet:
Die Meldung kommt bei einer ungültigen Bereichskennung bei indirekter Adressierung nach dem Schema L B[AR1,p#5.0].
 
Zuviel Werbung?
-> Hier kostenlos registrieren
d.h. ich hau in den ob einfach die temp auf eine db variable drauf dann weiß ich in welchem fb / fc mist gebaut wurd.

danke VL, habe sowas noch nie gebraucht ;) anscheinend programmier ich einfach zu sauber das ich mir nie selbst über die beine stolpre *ROFL*
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gibt der Button "Hilfe zum Ereignis" nichts her?
Bei Dir ist das eine indirekte Adressierung ohne Bereichskennung.

siehe Step7-Hilfe zu SFBs/SFCs > SFCs für die Hantierung von Synchronfehlerereignissen > Synchronfehlerereignisse maskieren
oder Referenzhandbuch System- und Standardfunktionen für S7-300/400, Kapitel 11
Code:
Ereignis-ID W#16#2524: Bereichsfehler beim Lesen

Fehler tritt auf, ...
... wenn bei indirekter, bereichsübergreifender Adressierung eine 
    falsche Bereichskennung für den Operanden angegeben wird.
Beispiel:
[COLOR="SeaGreen"]Richtig:[/COLOR] LAR1 [COLOR="SeaGreen"]P#E 12.0[/COLOR]
         L    W[AR1, P#0.0]
[COLOR="Red"]Falsch :[/COLOR] LAR1 [COLOR="Red"]P#12.0[/COLOR]
         L    W[AR1, P#0.0] Bei dieser Operation wird der 
                            Bereichsfehler gemeldet.

Harald
 
@ PN/DP
Hilfe sagt nur wasses ist aber auch nicht wo...
das Programm ist recht groß, teile sind in scl geschrieben ...
ich weiß also nicht wo ich ansetzen soll alles durchschauen mach ich erst wenn´s nicht anders geht :)

hab den fehler ob mal gemacht wenn der fehler wieder auftaucht sollte ich die daten haben, gespannt bin :-D

Ich könnte das programm ja auch mal hochladen ;) aber das wollte ich euch nicht antun, ich denk mir nur jedesmal wenn ich es öffnen muss, warum nur warum... zudem ist es größer wie 9mb
 
Zuletzt bearbeitet:
@erzteufele
Du könntest aus allen OB+FC+FB eine gesamt-AWL-Quelle generieren und nach [AR suchen.
Immer wenn der Ladebefehl ohne Bereichsangabe/nur mit Größenangabe ist (z.B. B[ARx, W[ARx, D[ARx, oder nur [ARx bei U/O/X/=/S/R),
dann muß der vorhergehende AR1/AR2-Ladebefehl eine Bereichskennung enthalten (z.B. P#DBX.., P#DIX.., P#E.., P#A.., P#M.., P#P..).
Es könnte auch sein, daß der Pointer erst in den Akku und von da aus in AR1/AR2 geladen wird.
So könntest Du die Fehlerquelle(n) auch ohne U-Stack und OB121 logisch finden.

Harald
 
so habe heute morgen mal ausgewertet ... der ob sagt mir nun das es ein fehler auf einen instanz db mit bitzugriff gibt... mmm
 
Da würde ich jetzt die Bausteinkonsistenzprüfung drüberlaufen lassen.

Vllt. muss ja nur ein I-DB neu generiert und eingespielt werden...

Ist aber nur 'ne Theorie meinerseits...
 
Zurück
Oben