Problem mit Count_BR

Begonnen von DeejayT, 10. April 2009, 12:32:31

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

DeejayT

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???



hugo

kannst mal dein projekt posten oder besser ein teilprojekt das den fehler reproduziert

DeejayT

Hallo Hugo,

klar hab mein Projekt angehängt!



[gelöscht durch Administrator]

hugo

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

DeejayT

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!

hugo

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

DeejayT

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?!!  ???


hugo

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.

DeejayT

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!

hugo

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