Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > 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 <code>stports.get()</code> 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 <u>immer</u> 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: > <code>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; > } > }</code> > > 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.