# Inkrementalgeber auswerten mit codesys



## schurl2000 (16 Februar 2019)

Guten Tag,
Für meine Diplomarbeit muss ich ein TTL signal mid den Raspberry pi auswerten. Das programm dafür soll in Codesys geschrieben werden. Bei der vorwärtsbewegung ist zuerst die Spur A high, dann folgt Spur B. Wie sieht so ein auswerteprogramm in Codesys aus?
Bitte um Hilfe


----------



## Mavorkit (16 Februar 2019)

Hi,

Kannst du das gewünschte Ergebnis vielleicht etwas genauer beschreiben?

Bisher ist klar du bekommst ein A und ein B Signal. Wenn das A-Signal High ist und das B-Signal kommt heißt das Hochzählen, wenn B High ist und A kommt heißt es Herunterzählen. Du brauchst also eine Flankenauswertung und einen Vor- und Rückwärtszähler.

Mehr kann ich momentan nicht aus deinen Informationen heraus lesen.

Gruß

Mavorkit

Gesendet von meinem SM-G389F mit Tapatalk


----------



## Heinileini (16 Februar 2019)

Mavorkit schrieb:


> Wenn das A-Signal High ist und das B-Signal kommt heißt das Hochzählen, wenn B High ist und A kommt heißt es Herunterzählen.


Nein! So bitte nicht! Bitte gar nicht erst angewöhnen!
Richtig ist z.B. 
A-Signal ist high und positive Flanke von B: vorwärts/hoch zählen,
A-Signal ist high und negative Flanke von B: rückwärts/herunter zählen.
Wenn nicht alle 4 Flanken ausgewertet werden, bitte, bitte für beide Richtungen immer dieselben Flanken auswerten!

Anbei eine Demo für LOGO, mit der man  "erleben" kann, was falsch läuft, wenn's falsch läuft.
"Getarnte" lsc-Datei, keine pdf. Nur ".pdf" per Umbenennen entfernen.
Anhang anzeigen FlankenAuswertungRichtigFalsch.lsc.pdf


Gruss, Heinileini


----------



## schurl2000 (18 Februar 2019)

Erstmal danke für die raschen Antworten. Wie oben das Bild zeigt sieht das Eingangssignal am Raspberry aus. Jedoch benötige ich nur Spur A und B zum zählen. Leider habe ich einen Denkfehler in der Programmierung und stecke nun fest. Es ist egal mit welcher Programmiersprache das Programm geschrieben wird, es muss nur funktionieren. Es muss nur in Codesys geschrieben werden. Leider kann ich die LSC Datei nicht öffnen. 
mfg schurl


----------



## oliver.tonn (18 Februar 2019)

Hm, Heinileini hat es doch eigentlich schon verständlich beschrieben. Du nimmst einen Vorwärts-/Rückwärtszähler an dessen Aufwärts-Eingang muss eine UND-Verknüpfung. Der eine Eingang vom UND ist die Spur A und der Andere die Flankenauswertung (positiv, also steigend) der Spur B. Am Runter-Eingang entsprechend auch ein UND und an dessen einen Eingang wieder Spur A und an dessen anderen Eingang wieder eine Flankenauswertung der Spur B, diesmal aber negativ (fallend).


----------



## schurl2000 (18 Februar 2019)

Vielen Dank, hat mir geholfen. Hab es geschafft.


----------



## PN/DP (18 Februar 2019)

in AWL
A/B Drehgeber Auswerten

Harald


----------



## Heinileini (20 Februar 2019)

Basierend auf den Gedanken,
- nicht mehr Befehle zu durchlaufen, als nötig und
- nicht alle 8 Flanken (4 positive und 4 negative für 2 Spuren und 2 Richtungen) zu dekodieren, sondern nur die 4 Flanken für 1 Richtung (die übrigen 4 Flanken können dann nur für die umgekehrte Richtung zuständig sein),
entstand ein Entwurf, der dann weiter vereinfacht werden konnte.
Die Betrachtung des ZeitDiagramms der EingangsSignale A und B ergab, dass die Information, ob jeweils eine positive oder negative Flanke vorliegt, verzichtbar ist. Aus den Zuständen von A und B nach einer Flanke ist die Zuordnung eindeutig möglich.
Die Betrachtung der AWL-Anweisungen ergab dann noch, dass sich die Verknüpfungen und bedingten Sprünge auf XOR-Verknüpfungen reduzieren lassen.
Das Ergebnis ist :

```
X    #Spur_A     
      X    #f_Spur_A   
      =    #ChgA       Flanke von A
      X    #Spur_B     
      X    #f_Spur_B   
      =    #ChgB       Flanke von B
      UN   #ChgA       
      UN   #ChgB       
      BEB              keine Flanke
      U    #Spur_A     FlankenMerker
      =    #f_Spur_A   
      U    #Spur_B     
      =    #f_Spur_B   
      U    #ChgA       
      U    #ChgB       
      =    #Stoerung   
      BEB              zwei Flanken
      L    #Zaehler    
      L    1           
      X    #ChgB       
      X    #Spur_A     
      X    #Spur_B     
      SPB  FORW        
BACK: NEGD             
FORW: +D               
      T    #Zaehler    
      BE
```
Dies habe ich dann noch sinngemäss in LOGO FBD umgesetzt:
Anhang anzeigen 4-Flanken-XORzist.pdf

Hier kamen noch UND-Verknüpfungen hinzu, um das in AWL durch BEB und SPB praktizierte Ausfiltern nachzubilden.

Gruss, Heinileini


----------

