[vz-dev] Messungenauigkeit

Jens Wilmer volkszaehler at jenswilmer.de
Fri Dec 3 13:37:35 CET 2010


Hallo zusammen,

Am 03.12.2010 11:12, schrieb Jakob Hirsch:
>>> Fragt sich nur, was "50 ticks entprechen ca ner sekunde" bedeutet. Nicht
>>> daß wir da eine Auflösung vorgaukeln, die garnicht gegeben ist.
>>> Hab mir den Controller-Code bisher nicht angeschaut, aber was didi
>>> beschrieben hat, hört sich ja nicht so wild an. Oder spricht was dagegen?
>> klingt für mich auch lösbar - muss halt Jemand machen...
> Gemach. Der NET-IO ist bestellt, wenn der programmiert ist geht's los. :)
> Naja, mal schauen, wie ich damit zurecht komme.
Die Ethersex Periodic Aufrufe sind halt stark last abhängig, Man kann 
sie sich in Millisekunden Auflösung bestellen und die entsprechende 
Routine wird dann ca. 1000 mal pro Sekunde aufgerufen (Zum, Beispiel um 
die Pins zu pollen); wenn sie kurz genug ist. Wenn noch etwas anderes 
passiert, z.B. ein Impuls versandt wird, sind es eben nur noch 200 mal 
pro Sekunde oder vielleicht noch weniger. Dazu kommt, dass sie nicht mit 
der Zeit synchronisiert ist, man muss also immer noch die Sekunde, auf 
die sich der Wert bezieht mit speichern. Wenn man dann in der 
Impulserkennung den Millisekundenwert 995 findet und die Sekunden nicht 
zusammenpassen, muss man entsprechend von 0 ausgehen.
Es gab allerdings auch schon einen anderen Ansatz, der den Timer 
verwendet hat, um ungefähr 50tel Sekunden zu messen und noch jede 
Sekunde einen Interrupt auszulösen. Diese Zeitbasis läuft zumindest 
regelmäßig, wenn auch immer noch nicht synchron zur Zeit. Im Interrupt 
könnte man dann schauen, ob die Timer-Uhr noch zur Zeit Uhr passt und 
eventuell ein wenig korrigieren. In der Impuls Erkennung kann man dann 
direkt die ungefähr 50tel Sekunden aus dem Zählerstand auslesen.
Der Timer Interrupt hat allerdings eine höhere Priorität als der 
Impulserkennungsinterrupt (Pin-Change) und so könnte dort wieder etwas 
verloren gehen; wenn man sich da etwas beschränkt, sollte es aber gehen.
Das man eine Genauigkeit vorgaukelt, die eigentlich nicht da ist, ist 
richtig, das liegt aber einfach daran, dass hier der Tacho durch einen 
Durchflusssensor am Tank gesteuert wird.

[...NTP...]
> Dito. Läuft der bei ethersex denn im Hintergrund?
Bei Ethersex gibt es keinen wirklichen Hintergrund. Die Interrupt 
Routinen könnte man vielleicht noch so nennen. Aber er wird auch hin und 
wieder in der Hauptschleife aufgerufen, wie alles andere auch.

Dazu kann man jetzt sagen, dass er im Hintergrund läuft, aber wenn er 
sich entschließt mal wieder seinen Server nach der Zeit zu fragen, kommt 
das gerade zu verschickende Impuls-Paket wieder eine halbe Sekunde 
später an...

  Bis bald,
   Jens Wilmer



More information about the volkszaehler-dev mailing list