Nordischerjung
Level-2
- Beiträge
 - 977
 
- Reaktionspunkte
 - 175
 
-> Hier kostenlos registrieren
Moin,
mein Kunde hat ne ältere Anlage, mit der er ab und an Probleme hat bzw. die SPS geht in den Stopp.
Es komt dann der folgender Fehler im Diagnosepuffer.
	
	
	
		
Bei Gehe zu.. komme ich an die rot makierte Stelle
NW1
	
	
	
		
NW2
	
	
	
		
NW3
	
	
	
		
NW4
	
	
	
		
Kann man das iwie abfangen?
Kann es sein das die Var "#Formnester_ohne_erstes" negativ ist und es dashalb zu diesem Überlauf kommt?
Diese Var wird hier berechnet
	
	
	
		
und wenn da nun mal eine 0 drin steht würde sie ja negativ werden.
Oder wovon kann das sonst kommen? Es ist nicht oft, vielleicht 1-2 x im Jahr oder so
	
		
			
		
		
	
				
			mein Kunde hat ne ältere Anlage, mit der er ab und an Probleme hat bzw. die SPS geht in den Stopp.
Es komt dann der folgender Fehler im Diagnosepuffer.
		Code:
	
	Ereignis 1 von 100:  Ereignis-ID 16# 4562
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:    11
Bausteinadresse:    186 
Bisheriger Betriebszustand: RUN
Angeforderter Betriebszustand: STOP (intern)
interner Fehler, kommendes Ereignis
16:24:03.890  16.02.2021
(Kodierung: 16# 4562  FF84  8E70  0101  000B  00BA)
Ereignis 2 von 100:  Ereignis-ID 16# 2523
Bereichslängenfehler beim Schreiben 
###0   Zugriffsadresse:      0
Angeforderter OB: Programmierfehler-OB (OB 121)
Prioritätsklasse:  1
interner Fehler, kommendes Ereignis
16:24:03.880  16.02.2021
(Kodierung: 16# 2523  0179  0000  0000  0000  0000)
	Bei Gehe zu.. komme ich an die rot makierte Stelle
NW1
		Code:
	
	      AUF   #DB_zum_Speichern           //Positionsspeicher DB öffnen
      LAR1  P#0.0                       //Pointer auf Anfangsadresse im DB
      L     20                          //Anzahl Schleifen übergeben max 20 Werte im DB
M000: T     #Loop_Zaehler
      L     L#0                         //zu schreibender Wert
      T     DBD [AR1,P#0.0]             //in das entsprechende DBD schreiben
      +AR1  P#4.0                       //+ 4.0, da DINT
      L     #Loop_Zaehler               //Zähler wieder Laden und incrementieren
      LOOP  M000
	NW2
		Code:
	
	      L     #Abstand
      T     #Temp_Abstand
      AUF   #DB_zum_Speichern           //Positionsspeicher DB öffnen
      LAR1  P#4.0                       //Pointer auf Anfangsadresse im DB hier erst das 2.DBD,da das 1.DBD 0 ist
      L     #Formnester_ohne_erstes     //Anzahl Schleifen übergeben
M001: T     #Loop_Zaehler
      L     #Temp_Abstand               //zu schreibender Wert
      T     DBD [AR1,P#0.0]             //in das entsprechende DBD schreiben
 [COLOR=#ff0000]     +AR1  P#4.0                       //+ 4.0, da DINT[/COLOR]
      L     #Abstand
      L     #Temp_Abstand               //Temp_Abstand um eine Position erhöhen
      +D    
      T     #Temp_Abstand
      L     #Loop_Zaehler               //Zähler wieder Laden und incrementieren
      LOOP  M001
	NW3
		Code:
	
	      AUF   #DB_zum_Speichern           //Positionsspeicher DB öffnen
      LAR1  P#80.0                      //Pointer auf Anfangsadresse Offset im DB 
      L     20                          //Anzahl Schleifen übergeben max 20 Werte im DB
M002: T     #Loop_Zaehler
      L     L#0                         //zu schreibender Wert
      T     DBD [AR1,P#0.0]             //in das entsprechende DBD schreiben
      +AR1  P#4.0                       //+ 4.0, da DINT
      L     #Loop_Zaehler               //Zähler wieder Laden und incrementieren
      LOOP  M002
	NW4
		Code:
	
	      AUF   #DB_zum_Speichern           //Positionsspeicher DB öffnen
      LAR1  P#160.0                     //Pointer auf Anfangsadresse Offset im DB 
      L     20                          //Anzahl Schleifen übergeben max 20 Werte im DB
M005: T     #Loop_Zaehler
      L     L#0                         //zu schreibender Wert
      T     DBD [AR1,P#0.0]             //in das entsprechende DBD schreiben
      +AR1  P#4.0                       //+ 4.0, da DINT
      L     #Loop_Zaehler               //Zähler wieder Laden und incrementieren
      LOOP  M005
	Kann man das iwie abfangen?
Kann es sein das die Var "#Formnester_ohne_erstes" negativ ist und es dashalb zu diesem Überlauf kommt?
Diese Var wird hier berechnet
		Code:
	
	      L     #Anzahl_Formnester (DINT)
      L     L#1
      -D    
      T     #Formnester_ohne_erstes (DINT)
	und wenn da nun mal eine 0 drin steht würde sie ja negativ werden.
Oder wovon kann das sonst kommen? Es ist nicht oft, vielleicht 1-2 x im Jahr oder so