Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: CC2Net-RAM-Device Problem Kategorie: Sonstige Hardware (von Norbert - 24.11.2005 15:24)
Als Antwort auf CC2Net-RAM-Device Problem von Jan - 24.11.2005 13:44
Ich nutze:
C-Control II Unit, CC2-Application-Board, OSOPT V3.0
> Hallo Leute,
>
> im Moment verwende ich die CCII als Datenlogger. Es werden mehrere Temperaturen erfasst und mit
> Zeitstempel im CC2Net-RAM-Device 4MBit abgelegt. Dieses wird ĂĽber CC2Net-RAM-Interface Ports
> angesteuert.
>
> Das läuft soweit ganz gut. Aber jetzt ist mir aufgefallen, dass es Fehler bei den ge-log-ten Daten gibt.
> Um diesen Fehler abzufangen, habe ich den entsprechenden Code folgendermassen geändert:
>
> In logArray stehen die zu speichernden Daten.
>
>
>     do {
>         ram.writebytearray (lastLoggedRecord, logArray, LOGENTRYLENGTH);
>         ram.readbytearray (lastLoggedRecord, testArray, LOGENTRYLENGTH);
>         writtenOK = constant.TRUE;
>         for i = 0...LOGENTRYLENGTH-1 {
>             if (logArray[i] != testArray[i]) {
>                 writtenOK = constant.FALSE;
>                 writeErrorCount = writeErrorCount + 1;
>             }
>         }
>     } while (!writtenOK);
>  

>
> Nachdem jetzt 2 Tage vergangen sind, und ca. 7800 Einträge im RAM abgelegt wurden, hat
> writeErrorCount einen Wert von 9. Sooft wurden also die Daten nicht korrekt abgelegt oder ausgelesen.
>
> Hat jemand von Euch ähnliche Erfahrungen gemacht?
>
> Danke und GruĂ?,
>
> Jan
>

Hallo Jan,

ich habe sporadisch Bitfehler in strings beobachtet, z.B. ! oder " anstatt Ziffern im string. Bisher kommt
dies im Logbuch mit ca. 50 Zeilen pro Tag nur alle paar Tage mal vor. Um die Häufigkeit zu erkennen,
wollte ich immer mal eine Checksumme mit ablegen, bin bisher jedoch nie dazu gekommen.

Auch den Grund habe ich bisher wegen Zeitmangel nicht eingekreist. Evtl. liegt es an meiner Codierung,
die Schreibroutine fĂĽr das sram arbeitet ohne capture.

Beispiel:
stamp ist ein string mit Wochentag,Tag,Monat, Eges einer der Werte aus einem thread.

p_logbuch ist ein pointer auf eine gĂĽltige ram Zeile, wird nach jeder Schreiboperation
um 0x20 erhöht.

Hier ein Schnipsel aus meinem thread sram

      s = stamp;
      str.putstring(s,";Eges:");
      str.putlong(s,global_var.Eges);
      str.putstring(s," Wh; ");

      ram.writestr(global_var.p_logb,s);


Bisher hatte ich den Verdacht, dass nur strings verändert werden. Denn das ram ist bei mir so
organisiert, dass zwiscchen 0x0 und 0x0300 Werte vom Typ bool (byte) , int oder long an festen
Adresen gespeichert werden. Eine Veränderung dieser Werte hätte sicher enorme Auswirkungen
gehabt. Z.B. wird dort der Zeiger p_logbuch gesichert. Das läuft seit ca. 1/12 Jahren ohne
Auffälligkeiten.

GrĂĽĂ?e aus dem Norden, Norbert



    Antwort schreiben


Antworten: