Wago Zählerbaustein 750-638 kann nur bis 65536 zählen. Wie bekomme ich mehr hin?

Marc-2112

Level-1
Beiträge
10
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich benutze eine Wago 750-881 mit dem Zählerbaustein 750-638. Mit dem Zählerbaustein möchte ich Hall-Gebersignale von einem Motor zählen um eine Positionierung zu erreichen.
Der Zählerbaustein funktioniert ja mit einen LOW Byte und mit einem High Byte. Also zählt der Zähler immer erst den Low-Byte von 0-255 und setzt dann den High Byte um ein höher. Um einen echten Wert zu bekommen rechne ich also High Byte * 256 + Low Byte. Das ganze funtioniert soweit auch ganz gut. Drehrichtung hab ich schon mit drin, also zähle ich in die eine Richtung hoch und in die andere runter. Jetzt habe ich nur das Problem, dass ich zu viele Signale bekomme und mein Weg den der Motor zurücklegt ungefähr 3x so groß ist wie es der Zählerbaustein mitbekommt.
Ich hoffe ich hab mich einigermaßen verständlich ausgedrückt ;)

Habt ihr eine Idee wie ich den Zählerbaustein überlisten kann?

Viele Grüße und schonmal danke.

Marc
 
Ja, du hast die Lösung selbst geschrieben ;)

Du machst dir noch einen INT(oder anderes Zahlenformat)-Wert, und in- bzw. dekrementierst bei positivem oder nevativen Überlauf diesen Wert.
Somit hast du deine Zahl genau so wie von dir wieder erweitert.

Grüße

Marcel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Matze,

erstmal danke für die Antwort. Ich bin jetzt schon seit Stunden am versuchen das hinzubekommen... so langsam am verzweifeln!
Irgendwie bekomm ich es nicht hin. Meine Programmierkentnisse sind allerdings auch nicht die allerbesten, wie du dir vielleicht vorstellen kannst :)
In welcher Sprache würdest du das den machen? Hast du vielleicht einen Tip wie ich es mache?
Ich habs in CFC und AS probiert, aber irgendwie klappts alles nicht so richtig. Wahrscheinlich ist es in AWL am einfachsten zu lösen, aber da kenn ich micht nicht mit aus.
Wäre über Hilfe sehr dankbar.

Gruß Marc
 
Hallo CAS,

danke esrtmal für die schnelle Antwort. Hab zwar mit ST noch nicht viel gemacht, aber hab mal was probiert. Es funktioniert soweit auch ganz gut nur manchmal zählt er nicht mit, und manchmal zählt er sogar doppelt...
Mein Text in ST sieht so aus:

IF Zaehlerwert=65536 AND Drehrichtung_Rechts=True THEN
Zaehlerzwischenwert:=Zaehlerzwischenwert+1;
END_IF;
IF Zaehlerwert=0 AND Drehrichtung_Links=True THEN
Zaehlerzwischenwert:=Zaehlerzwischenwert-1;
END_IF;


Zaehlerwert ist die verbindung aus Low-Byte und High-byte also mein Zaelerstand.
Drehrichtung ist die vom Motor...
Zaehlerzwischenwert ist die Variable, die ich benutze um sie danach so zu verwenden: Zaehlerwert + Zaehlerzwischenwert * 65536. Das wäre dann mein Endergebniss...

Ich vermute mal mein Problem liegt an der Geschwindigkeit des Hall-Geber-Signals. Es kommt mit etwa 100Hz. Kann es sein, dass er daher manchmal meinen Wert nicht mitbekommt?
Wenn ja irgendwelche Lösungsansätze?

Vielen Dank schonmal im Vorraus!

Gruß Marc
 
Zuviel Werbung?
-> Hier kostenlos registrieren
du bekommst nicht jeden zählimpuls gleich mit. deshalb die differenz zwischen aktuellem zählwert (hier: NEU)
und dem letzten zählwert bilden (ALT). diese differenz auf einem neuen zählerwert (doppel-integer:pOSITION)
etc. verrechnen. zudem die übergänge sauber abfangen (<-32768/>+32768 ) und schon sollte es gehen

Code:
diff := neu - alt
if diff > 32768 then diff := diff - 65536
if diff < -32768 then diff := diff + 65536
position = position + diff
alt := neu
 
Zurück
Oben