Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 5 von 5

Thema: B&R Laufzeitfehler

  1. #1
    Registriert seit
    10.01.2014
    Beiträge
    163
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, ich habe folgendes Programm in einem 1000ms Task laufen http://pastebin.com/X4WRHudi

    Das Programm liest unter anderem eine Textdatei aus, die Zeichen werden als ASCII Code eingelesen.
    Eine Schleife soll den eingelesenen Array in ein 2-Dimensionales Array schreiben. Sobald im Ausgangsarray eine 10 (Zeilenumbruch) ist, wird die nächste Zeile des 2-dimensionelen Arrays beschrieben. Siehe Zeile 36-50.

    In meiner Ar Simulation kommt es zu einem Laufzeitfehler "$arlogsys:ERROR 25300, lpBin=0x04644fd8, ARLOG_LEVEL_FATAL, "DebugDprTask", "".

    Sobald ich die Zeilen s=0; und s++; in der Schleife entferne bleibt der Laufzeitfehler aus...

    Hat jemand eine Idee?
    Zitieren Zitieren B&R Laufzeitfehler  

  2. #2
    Registriert seit
    29.03.2004
    Beiträge
    5.739
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard

    Bei Standard C ist der Wert von s bei den ersten Durchläufen undefiniert, d.h. muss nicht unbedingt 0 sein.
    Dann überprüfst du nicht, ob j und s innerhalb der gültigen Grenzen der Arraygröße sind. Wenn nach 30 Werten in byReadData[i] noch keine 10 gekommen ist, schreibst du über die Arraygrenzen hinaus. Entweder an eine falsche Stelle im Speicher des Arrays, oder in einen komplett anderen Speicherbereich.

  3. Folgender Benutzer sagt Danke zu Thomas_v2.1 für den nützlichen Beitrag:

    knuppel (01.05.2015)

  4. #3
    knuppel ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    10.01.2014
    Beiträge
    163
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ich hab doch vor der Schleife s,i,j=0 gestetzt.

    Das andere leuchtet mit ein, wenn keine 10 mehr kommt hab ich einen Überlauf, dafür hab ich ein break; eingefügt:
    Code:
    	int i,j,s=0;	for(i=0;i<=100;i++)
    	{
    		if(byReadData[i]==0)break;
    		if(byReadData[i]==10){
    			j=j+1;
    			s=0;
    		
    		}
    		else
    		{
    			device[j][s]=(STRING)byReadData[i];
    			s=s+1;
    			
    		}
    	}
    Trotzdem kommt ein Laufzeitfehler.

  5. #4
    knuppel ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    10.01.2014
    Beiträge
    163
    Danke
    5
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Gelöst! Danke für die Hinweise!

  6. #5
    Registriert seit
    29.03.2004
    Beiträge
    5.739
    Danke
    143
    Erhielt 1.686 Danke für 1.225 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von knuppel Beitrag anzeigen
    Ich hab doch vor der Schleife s,i,j=0 gestetzt.
    Mit

    int i,j,s=0;

    bekommt aber nur s einen Initialwert. i initialisierst du in der for-Schleife, j hat hingegen keinen definierten Anfangswert.

Ähnliche Themen

  1. Phoenix Contact RFC 486 Laufzeitfehler FC2230
    Von DrDenz im Forum PHOENIX CONTACT
    Antworten: 2
    Letzter Beitrag: 13.03.2015, 16:16
  2. Sporadischer Laufzeitfehler wenn Interfaces und Pointer gemischt werden
    Von wonderfulworld im Forum CODESYS und IEC61131
    Antworten: 10
    Letzter Beitrag: 22.07.2013, 13:21
  3. USV & WinCCflexible RT 2008 SP2 HF2 & Simatic Net
    Von Onkel Dagobert im Forum HMI
    Antworten: 8
    Letzter Beitrag: 07.12.2012, 20:56
  4. Antworten: 0
    Letzter Beitrag: 04.04.2012, 15:12
  5. Antworten: 4
    Letzter Beitrag: 18.08.2004, 11:01

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •