OSCAT Forum
oscat.lib => Bestehende Module / Existing Modules => Thema gestartet von: DeejayT am 10. April 2009, 12:32:31
-
Hallo,
benutze den Baustein Count_BR. Beschaltet ist er wie folgt:
Er bekommt Impulse beim Eingang "UP". Beim Eingang "Step" ist ein fester Wert "1" eingestellt.
Den Ausgang "CNT" gebe ich per Modbus an meinen Server weiter der die Daten per MySQL Datenbank mitloggt.
Der Baustein funktioniert an sich, nur passiert es in unregelmäßigen Abständen das sich der Stand bei CNT nicht nur positiv ändert, NEIN, es passiert das auf einmal das er von dem Stand z.B. 40 auf 38 springt und dann wieder regulär weiterzählt. D.h. er zählt für einen oder ein paar Impulse Rückwärts und dann wieder vorwärts.
Zusätzlich wandel ich den Ausgang "CNT" von "BYTE_TO_REAL" um und gebe den Wert auf den "METER_STAT" Baustein. Der zeigt mir alles wunderbar an, bis es dann zu diesem Rückwärtszählen vom "CNT" Ausgang kommt, dadurch kriege ich negative Werte bei den METER_STAT Ausgängen.
Woran kann das liegen???
-
kannst mal dein projekt posten oder besser ein teilprojekt das den fehler reproduziert
-
Hallo Hugo,
klar hab mein Projekt angehängt!
[gelöscht durch Administrator]
-
habe mir dein projekt kurz angesehen.
den eingang step kannst du unbeschaltet lassen, der vorgabewert ist bereits 1
ich denke du hast deutlich mehr als 255 pulse am eingang, damit gibts einen überlauf und nach 255 beginnt der counter wieder bei 0
du kannst alternativ den counter_DR verwenden, setzte aber dort den mx auf 65000
aber auch dort wirst du irgendwann einen überlauf haben du solltest den baustein meter ansehen, der ist für die aufgabe geeignet
-
Hallo Hugo,
ich habe Meter schon einmal ausprobiert, allerdings lief der nicht so wirklich. Ich habe versucht meinen Gaszähler mit Meter zu loggen. Aber irgendwie hat er immer mehr gezählt als er sollte. Ein Impuls vom Gaszähler entspricht 0,01m³ ! Nur irgendwie ist das bei Meter der Eingang mit einer Zeit versehen, d.h. wenn an Meter "Eingang" der Impuls etwas länger wie die Zeit die hinterlegt ist, anliegt, dann zählt Meter mehr wie 0,01m³ obwohl nur ein Impuls vom Zähler weitergegeben wird. Also hab ich mir Count_BR geschnappt. Da wird auch nur der Impuls gezählt und nicht nach Zeit. Kann man den Meter irgendwie so ändern, das ich ihn einsetzen kann??? Ich möchte eigentlich nur die Impulse zählen mehr nicht!
-
einen konstanten puls könntest du dir ganz einfach mit tp erzeugen.
allerdings wäre der count_DR FÜR DEINE AUFGABE BESSER GEEIGNET
der nachteil ist nur das bei stromausfall alles weg ist
-
Hallo Hugo,
probiere es jetzt mal mit Count_DR. Wenn der funktionieren sollte, bekomme ich dort aber jedes Jahr das Problem mit dem Zählerüberlauf. Hast du hierfür noch eine Lösung oder kann man den Meter Baustein nicht so umbauen, das er die Impulse zählt und nicht die Zeit, länge der Impulse?!! ???
-
das problem des zählerüberlaufs hast du speziell beim count_br der kann nur bis 255 zählen.
beim count_dr kannst du bis 2^32-1 zählen, das ist mehr gas als ganz europa in vielen jahren verbraucht.
wichtig ist nur das du die obergrenze des zählers entsprechend setzt.
dein problem ist nicht das der counter nicht funktioniert, sondern das du über die 255 beim count_br zählst.
-
Hallo Hugo,
eine Frage hab ich noch. Es gibt nicht eine Möglichkeit, das ich dem count_br sagen kann, das 1 Impuls 0,01 sind oder? So muß ich das Ergebniss immer noch durch 100 dividieren!
-
nein der count_br hat einen byte ausgang und der kann per typ definition nur 0..255 in schritten von 1 zählen
dasselbe gilt für count_dr nur das der bis 2^32-1 zählen kann