Mithilfe von zweispurigen Signalen die Drehrichtung eines Encoders feststellen

ericson
2020-09-24
2020-09-26
  • ericson - 2020-09-24

    Hallo,
    ich möchte einen Counter realisieren, der bei Vorwärtsdrehung meines Encoders hoch zählt und bei Rückwärtsdrehung runter. Dazu habe ich insgesamt 2 Spuren zur Verfügung wie in meiner hochgeladenen Datei zu sehen ist. Ich soll mithilfe der zwei Spuren in CodeSyS ein Programm realisieren, was basierend auf den zwei Signalen die Drehrichtung erkennen soll. Kann mir einer einen Ansatz nennen sowas im strukturierten Text zu realisieren?

    Vielen Dank im Vorraus!

     
  • dkugler - 2020-09-24

    Du erzeugst mit dem Signal von Spur A einen Puls bei steigender Flanke (Standard.R_TRIG). In dem Moment schaust Du ob die B-Spur auf low ist, dann Zähler +1, ist sie auf high Zähler -1; dasselbe für die fallende Flanke (Standard.F_TRIF) der A-Spur, nur invertiert: fallende Flanke auf Spur A und B ist auf high, dann Zähler +1, bei low -1. Das ganze Spiel kannst jetzt noch für die Flanken der B-Spur machen und jeweils auf den Zustand der A-Spur schauen, dann hast sogar eine Vervierfachung der Pulse.

     
  • ericson - 2020-09-25

    Hallo dkugler,
    vielen Dank für deine Hilfe, ich habe mittlerweile rausgefunden, dass der Encoder eine seperate Ausgabe für die Drehrichtung hat, danach war es natürlich leichter meine Anforderungen umzusetzen. Trotzdem hat deine Erklärung sehr zu meinem Verständnis beigetragen.

    Weißt du zufällig vielleicht wie ich es hinkriege die Z-Spur meines Encoders auszuwerten. Diese gibt nämlich bei jeder vollständigen Umdrehung ein kurzes HIGH aus. Der HIGH Pegel ist allerdings so kurz, dass bei schnellerer Umdrehung CoDeSyS das High gar nicht mehr erfasst. Ich habe es schon mit einem R_TRIG probiert, aber auch das hat mir nicht weitergeholfen.

    Grüße
    Ericson

     
  • ericson - 2020-09-25

    Hallo dkugler,
    vielen Dank für deine Hilfe, ich habe mittlerweile rausgefunden, dass der Encoder eine seperate Ausgabe für die Drehrichtung hat, danach war es natürlich leichter meine Anforderungen umzusetzen. Trotzdem hat deine Erklärung sehr zu meinem Verständnis beigetragen.

    Weißt du zufällig vielleicht wie ich es hinkriege die Z-Spur meines Encoders auszuwerten. Diese gibt nämlich bei jeder vollständigen Umdrehung ein kurzes HIGH aus. Der HIGH Pegel ist allerdings so kurz, dass bei schnellerer Umdrehung CoDeSyS das High gar nicht mehr erfasst. Ich habe es schon mit einem R_TRIG probiert, aber auch das hat mir nicht weitergeholfen.

    Grüße
    Ericson

     
  • ericson - 2020-09-25

    Hallo dkugler,
    vielen Dank für deine Hilfe, ich habe mittlerweile rausgefunden, dass der Encoder eine seperate Ausgabe für die Drehrichtung hat, danach war es natürlich leichter meine Anforderungen umzusetzen. Trotzdem hat deine Erklärung sehr zu meinem Verständnis beigetragen.

    Weißt du zufällig vielleicht wie ich es hinkriege die Z-Spur meines Encoders auszuwerten. Diese gibt nämlich bei jeder vollständigen Umdrehung ein kurzes HIGH aus. Der HIGH Pegel ist allerdings so kurz, dass bei schnellerer Umdrehung CoDeSyS das High gar nicht mehr erfasst. Ich habe es schon mit einem R_TRIG probiert, aber auch das hat mir nicht weitergeholfen.

    Grüße
    Ericson

     
  • dkugler - 2020-09-26

    dann solltest du mal mit einem Oszilloskop generell dein Encodersignal anschauen, um "sehr kurz" definieren zu können. Die Pulsdauer darf deine Zykluszeit nicht unterschreiten und der Eingang muss das Signal auch schnell genug erfassen. Was die Steuerungshardware nicht erkennt, kannst über Software nicht reparieren.. Was für eine Steuerung verwendet ihr denn und was sagt das Datenblatt über min. zu erfassende Pulse, bzw. max. Frequenzen? Wenn die Standard Eingänge es nicht hergeben, einen Encodereingang verwenden, oder alternativ mit Hardware den Puls verlängern. Pulsverlägerungen gab es zumindest früher bei Phoenix, Murr & Co.
    https://shop.murrelektronik.de/Elektronik-im-Schaltschrank/Aktive-Interfacetechnik/Wandler/MIRO-6-2-Impulsverlaengerer-52320.html

     

Log in to post a comment.