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

Re: Messbereich Frquenzmessung Kategorie: Programmierung (von AndrĂ© H. - 18.05.2013 13:47)
Als Antwort auf Messbereich Frquenzmessung von UweD - 17.05.2013 14:23
Ich nutze:
C-Control II Unit, C164CI-ControllerBoard, C-Control II Station, CC2-Application-Board, CC2-StarterBoard, CC2-ReglerBoard, OSOPT V3.1
Hallo Uwe,

> ich möchte die S0 Frequenz meines Stromzählers messen. Diese kann unter 0,1 Hz sein.
> Ist dies mit dem Frequenzmesseingang möglich oder können nur höhere Frequenzen gemessen werden?
> Wie ist der Messbereich?

Die Auflösung bei Frequenzmessung beträgt 1Hz.
Zur Auswertung von Zählern ist die Frequenzmessung der falsche Ansatz.
Je nach Zähler bewegst Du Dich im Bereich von 100 bis 2000 Imp. pro kWh.

Die Auswertung erfolgt am besten mit den Counter-Ports (P1H.0 bis .3).
am einfachsten lä�t Du pro Zähler einen eigenen Thread laufen.
In diesem wartest Du einfach ab bis über ports.getcount() ein Impuls gezählt wurde.
Dann sicherst Du den Zählerstand des Timers.
Beim nächsten Impuls nimmst Du die Zeitdifferenz beider Impulse (in ms) und ermittelst daraus
die Leistung. Angenehmer Nebeneffekt ist, daĂ? du auch die Energiemenge erfassen kannst,
indem einfach die Anzahl der Impulse gezählt wird.
Als kleines Bsp.: (Zähler mit einem Impuls pro 0,5Wh = 2000 Imp./kWh)

int P;
long W;
...
...
thread Zaehler
{
 long Imp_old,Imp,Imp_prev,timer,timer2;
 P=0;
 Imp=0;//alternativ mit gespeichertem Zählerstand initialisieren
 Imp_old=Imp;
 loop
 {
  timer=system.timer();
  do
  {
   yield;
   Imp= Imp + (ports.getcount(1)!=0 and 1);
   if system.timer()-timer >= 90000 P=0; //kein Impuls nach 90sek.: 0W
   if (system.timer()-timer) > timer2 shl 1
    { // Interpolieren der Leistung, wenn doppelte Zeit zwischen den beiden letzten Impulsen vergangen ist.
     timer2=timer2+(system.timer()-timer);
     P=Imp_prev * (3600000/timer2)/2;
    }
  } while Imp==Imp_old;
  W=Imp*5; // Arbeit in 0,1Wh
  timer2=system.timer()-timer;
  Imp_prev=var.ImpL2-Imp_old;
  P=(Imp_prev)* (3600000/timer2)/2;
  Imp_old=Imp;
 }
}



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: Messbereich Frquenzmessung (von UweD - 30.05.2013 11:26)