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

Re: SO-Schnittstelle Stromzähler Kategorie: Sonstige Hardware (von André H. - 15.10.2006 17:24)
Als Antwort auf Re: SO-Schnittstelle Stromzähler von Sascha - 13.10.2006 17:03
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.0, OSOPT V3.1
Hallo Sascha,

> Entwarnung !
> Nach durchforsten meines Handbuchs fand ich heraus, daÃ? die Ports P00-P04 wohl nicht
> geeignet sind für eine Zählung....
>
> Stimmt das, das die Ports nur als Ausgang funktionieren ???

Diese Ports heiÃ?en PO.0 bis PO.4, nicht P0.0 bis P0.4.
Nach dem P folgt der Buchstabe O, nicht die Ziffer Null.
Das O steht für Out.
Es sind Ausgänge der Schieberegister in der Station. Es sind keine Ports der CC2 selbst.
Daher sind diese Port nur Ausgänge und könne nicht als Eingänge benutzt werden..
Das Zurücklesen der Portzustände über stports.get() dient nur
dazu die aktuellen (Soll-)Schaltzustände zurückzulesen, welche in
zwei Bytes gespeichert werden.

Zum Erfassen von Impulsen brauchst Du die Counter-Ports welche an P1H liegen.
Die 8 Ports von P1H sind bei der Station mit P0 bis P8 beschriftet.
Angesteuert werden diese über ports.c2 als Port 8 bis 15.
P1H.0 bis P1H.3 sind die Counterports.
Die Auswertung erfolgt mit ports.getcount() mit Parameter 0 bis 3.

Den S0-Ausgang des Zählers mu�t Du zwischen Port(+) und GND(-) anschlie�en.
Bei der CC2-Station mu� Du zusätzlich Pull-Up-Widerstände(10k) an
die 4 Counter-Ports anschlieÃ?en, welche der Ersteller der Station vergessen hatte.
Diese Pull-Up-Widerstände müssen immer an diese 4 Ports gesetzt werden,
da ansonsten unkontrolliert Interrupts ausgelöst werden können, wenn diese Ports
kein festes Potential besitzen. Das kann im Extremfall dazu führen, da� Programme
deutlich langsamer ausgeführt werden.

Zur Auswertung des Zählers kann ich Dir folgenden Thread geben:
thread getL1
{
 long Impcnt;
 long Imp_old,Imp,Imp_prev,timer,timer2;
 Imp_old=0;
 var.W[0]=0;
 var.P[0]=0;
 Impcnt=0;
 Imp_old=0;
 loop
 {
  timer=system.timer();
  do
  {
   Impcnt= Impcnt+ ports.getcount(0);
   if timer <= system.timer()-90000 var.P[0]=0;
   if (system.timer()-timer) > timer2 shl 1
    {
     timer2=timer2+(system.timer()-timer);
     var.P[0]=Imp_prev * (3600000/timer2)/2;
    }
  } while Impcnt==Imp_old;
  var.W[0]=Impcnt*5;
  timer2=system.timer()-timer;
  Imp_prev=Impcnt-Imp_old;
  var.P[0]=(Imp_prev)* (3600000/timer2)/2;
  Imp_old=Impcnt;
 }
}


Es ist einer der Threads für die Zähler meines P�L-BHKWs. (Einzelerfassung der Phasen)
var.W und var.P sind Longarrays für die Arbeit in 0,1Wh und für die Leistung in Watt.
Meine Zähler geben 2000 Impulse pro kWh aus, also 0,5Wh pro Impuls.
Die Routine berechnet nach jedem Impuls die aktuelle Leistung und die Arbeit.
Die Routine beinhaltet auch eine Berechnung der vermutlich aktuellen Leistung,
wenn nach mind. der zweifachen Zeit zweischen den beiden letzten Impulsen
kein weiterer folgt.
In der Routine wird nicht beachtet, daÃ? der interne System-Timer einen Tick schneller
läuft, als die Uhr, und somit u.U. eine zu geringe Leistung berechnet wird.
Allerdings liegt dies im Promille-Bereich und kann vernachlässigt werden.

MfG André H.



Antworten bitte nur ins Forum!
Fragen per EMail auf Forum-Postings werden nicht beantwortet!

Das macht meine Heizung gerade


    Antwort schreiben


Antworten:

Re: SO-Schnittstelle Stromzähler (von Ralf Schroeder - 25.03.2009 22:40)