Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Speicherung und Auslesen von größeren Datenmengen Kategorie: Programmierung CC-Plus (von joergm6 - 16.05.2008 15:42)
 Als Antwort auf Re: Speicherung und Auslesen von größeren Datenmengen von Dieter - 16.05.2008 12:58
joergm6 nutzt:  CC1-Station V2.0
Hallo Dieter,

hier mal ein kompletter Bausatz mit Echtzeituhr und EEPROM-Sockel, falls du noch keine Uhrzeiteinstellung bei Stromausfall mit PCF o.ä. hast.
http://cctools.hs-control.de/artikel/index.php?artikel=1084

Man kann natürlich auch den EEPROM allein verlöten, ist fast 0 Aufwand.

Chip: AT24C512 (64kByte)
http://cctools.hs-control.de/artikel/index.php?artikel=111x
oder
http://www.reichelt.de/?;ACTION=3;LA=4;GROUP=A32;GROUPID=2953;ARTICLE=45597;START=32;SORT=order_col_artnr_besch;OFFSET=16

Das sind sehr viele Werte die du speichern möchtest. Hier ist es also nicht möglich, zusätzlich zum Wert z.B. Tages/Uhrzeit-Infos mit abzuspeichern. Rechnen wir mal:
alle 10min bedeutet 6 mal pro Stunde und 24 Stunden pro Tag: 6*24=144 Werte je Tag
Ein Jahr würden 144*365Tage=52560 Werte ergeben, was theoretisch in das 64k EEPROM passt. Allerdings rechnet die C-Control ab 32768 negativ, was wohl trotzdem gehen soll, habe ich aber keine Erfahrung. Also gehen wir mal von 1/2 Jahr aus. Wir müssen uns also die Speicherstelle errechnen, z.B. vom Tag des Jahres + Wert des Tages. Du musst dann aber wissen für welches halbe Jahr die Werte gelten.
Hast du die aktuelle C-Control-Firmware, dann kann man sehr gut die ChipRAM-Funktion zum EEPROM-Zugriff benutzen, der EEPROM muß dann auf Adresse 160 eingestellt sein.
Wie sieht es mit den Programmierkenntissen auf der PC-Seite aus? Ich habe mein kleines Program in VisualBasic.NET geschrieben. Das Programm auf der PC-Seite muss natürlich die speziell gesendeten Daten verarbeiten können.
Hier ein paar Codeschnipsel zur Ansicht, hier ist nix getestet, nur mal so aufgeschrieben ohne Garantien:


sub TagdesJahres
' Code von malo-web
 define TagNr as word
 TagNr = (month - 1) * 31 + day
 ' je nach Monat wird korrigiert
 if month  >  2 then TagNr = TagNr - 3
 if month  >  2 AND year MOD 4 = 0 then inc(TagNr) ' Schaltjahr 29.2.
 if month  >  4 then dec(TagNr)
 if month  >  6 then dec(TagNr)
 if month  >  9 then dec(TagNr)
 if month  > 11 then dec(TagNr)
 return TagNr
end sub

' Speicherstelle errechnen
sub Speicherstelle
 define w as word
' 1.Halbjahr
 w=TagdesJahres
' 2.Halbjahr wieder bei Speicherstelle 0 anfangen
 if w>183 then w=w-183
 dec(w)
 w=w*144+WertdesTages
 return w
end sub

' eines der 144 Stellen je Tag berechnen z.B. 12Uhr  (12*60+0)/10=72 (die hälfte von 144 ;-)
sub WertdesTages
 return (hour*60+minute)/10
end sub

'Wert ins EEPROM speichern
ChipRam(Speicherstelle)=WindWert

' alle Werte auf COM ausgeben
sub AusgabeWerte
 define i as integer
 define j as integer
  lcd.off
  baud R38400
  for i=0 to 182   ' 183 Tage
   for j=0 to 144     ' 144 WerteJeTag in einer Zeile
    print chipram(i*144+j) & " ";
   next
   print "" ' neue Zeile
  next
  Baud R9600
end sub

Naja, ich hoffe es hilft dir schon mal

Gruß Jörg

> Hallo Jörg,
>
> es soll die Windgeschwindigkeit, alle 10 Minuten gespeichert werden.
> Von 0,00 m/s, bis 25,5m/s, das bedeutet, dass Byte von 0 bis max. 255 (=25,5m/s) gespeichert werden sollen. Die Aufzeichnungszeit soll möglichst Lange sein z. B. 2 bis 6 Monate.
>
> Mit I2C-Bus habe ich Erfahrung bei anderen Projekten.
>
> Fragen:
> Welches I2C-EEPROM kannst du empfehlen (Typ-Nr.)?
> Keines Beispielprogramm zum Schreiben in den Speicher ist nicht schlecht.
> Keines Beispiel zum Lesen der Daten könnte ich auch brauchen.
>
> Gruß Dieter
>
> PS
> Das Anschließen des PCs an das c-control ist OK.
>  
>
>

 Antwort schreiben

Bisherige Antworten:

Re: Speicherung und Auslesen von größeren Datenmengen (von Dieter - 16.05.2008 21:51)