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 | ||
| ||
> 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: |