Hallo, arbeite gerade an einer Positionierung mittels Absolutwertgeber (13Bit SingleTurn, 12 Bit Multiturn). Hierbei muß abgefangen werden, wenn die Multiturninfo während der Bewegung überläuft. Hat jemand Erfahrungen mit so etwas ?
Gast
#2291982
Ich würde die Werte explizit abfragen. Elegantere Möglichkeiten sind mir nicht bekannt.
Gast
#2292013
Was für ein DG? SSI? Solange beim SSI der Takt läuft, werden die Daten normalenweiser intern festgeklemmt (Laden des Parallelregisters von den Geberscheiben mit der ersten Taktflanke nach Ablauf der Monoflopzeit). Für jede Positionsabfrage musst du die 25 Takte erneut reinschicken. Kannst du deine Frage konkreter fassen?
Die Frage hat nichts mit dem Datenstrom zu tun. Es geht um die Behandlung der ausgelesenen Informationen: Beispiel Einlesewerte während der Positionierung: Zeitpunkt t-2: Eingelesener MT-Wert: 0x3F9A (entspricht Absolutpos 50 cm) Zeitpunkt t-1: Eingelesener MT-Wert: 0x3FFE (entspricht Absolutpos 60 cm) --- MT-Bereich läuft über ----- Zeitpunkt t: Eingelesener MT-Wert: 0x0064 (entspricht Absolutpos 70cm!) Den Überlauf kann ich nur erkennen und berücksichtigen, in dem ich die Zahlenwerte explizit abfrage - an der Unstetigkeit erkenne ich den Überlauf. Hier hatte ich überlegt, ob es auch andere Lösungen gibt.
Gast
#2292255
> Den Überlauf kann ich nur erkennen und berücksichtigen, in dem ich die > Zahlenwerte explizit abfrage - an der Unstetigkeit erkenne ich den > Überlauf. Jetzt habe ich deine Frage verstanden. Ja, das ist die einzige Möglichkeit, die du hast, es sei denn, du kannst einen DG-Hersteller dazu bringen, dir einen Überlaufimpuls auf einen Statusausgang zu legen. Vllt. gibt es so etwas auch bereits, was durchaus möglich ist.
Der Trick bei einem Überlauf ist: Die Differenz ist immer gültig, solange es nur einen Überlauf zwischen 2 Abfragen gibt. Also den alten Wert merken, diesen vom neuen Wert abziehen, das Ergebnis vorzeichenrichtig erweitern und dann zu Deinem großen Wert addieren. Peter
Gast
#2292592
Peter Dannegger schrieb: > Der Trick bei einem Überlauf ist: > > Die Differenz ist immer gültig, solange es nur einen Überlauf zwischen 2 > > Abfragen gibt. Das stimmt in diesem Fall nicht, wenn er (13Bit SingleTurn, 12 Bit Multiturn = 25Bit) in einer 32 Bit Variable gespeichert hat, dann läuft eben nur der "Geber" über, nicht aber die "Variable".
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.