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 ?
Ich würde die Werte explizit abfragen. Elegantere Möglichkeiten sind mir nicht bekannt.
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.
> 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
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".
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.