Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 6 von 6

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

  1. #1
    Registriert seit
    17.08.2010
    Beiträge
    10
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard


    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
    Zitieren Zitieren Wago Zählerbaustein 750-638 kann nur bis 65536 zählen. Wie bekomme ich mehr hin?  

  2. #2
    Registriert seit
    11.12.2009
    Beiträge
    2.113
    Danke
    388
    Erhielt 390 Danke für 271 Beiträge

    Standard

    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

  3. #3
    Marc-2112 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.08.2010
    Beiträge
    10
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    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

  4. #4
    Registriert seit
    01.03.2008
    Beiträge
    487
    Danke
    3
    Erhielt 43 Danke für 39 Beiträge

    Standard

    Hallo,
    am einfachsten ist es wahrsheinlich in ST

    a:=a+1;

    MfG CAS
    www.cas-solution.de

    Alles geregelt...


    Weltraumflug in den USA zu gewinnen!
    Kratze hier ▒▒▒▒▒▒▒▒▒▒▒▒ mit einer Münze,
    und finde heraus, ob Du der Gewinner bist!

  5. #5
    Marc-2112 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.08.2010
    Beiträge
    10
    Danke
    3
    Erhielt 0 Danke für 0 Beiträge

    Standard

    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

  6. #6
    Registriert seit
    17.06.2010
    Ort
    nähe Memmingen
    Beiträge
    610
    Danke
    93
    Erhielt 116 Danke für 100 Beiträge

    Standard


    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

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 27.10.2010, 22:27
  2. Zähler soll nur bis 11 zählen
    Von Benno1989 im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 12.11.2009, 08:34
  3. Wenn ich alt bin und nicht mehr kann, werde ich:
    Von Lebenslang im Forum Stammtisch
    Antworten: 16
    Letzter Beitrag: 02.09.2008, 16:12
  4. Antworten: 2
    Letzter Beitrag: 18.01.2006, 16:32
  5. Antworten: 3
    Letzter Beitrag: 12.09.2004, 14:40

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •