Moin! Ich habe ein kleines Problem mit einem Gray-Code, der sich nicht in den "normalen" Dualcode umwandeln lassen will. Hintergrund ist, daß ich die Positionssensoren eines alten Kuka-Industrieroboters auslesen möchte. Der Roboter ist von 1987, es gibt keine Datenblätter mehr zu den Sensoren, und zudem ist auch noch die alte Steuerung (Siemens RCM-30) defekt. Das Auslesen mit einem ATMega klappt einwandfrei, der µC gibt hierbei nur die ausgelesenen Bits an den PC weiter, der diese (vorerst) auswerten soll. Das Ganze ist auf jeden Fall mit einem Gray-Code codiert, nur ist es offensichtlich nicht der "übliche" Gray-Code, wandelt man das Ergebnis um, kommt nix sinnvolles raus... Im Anhang hab ich mal ein Diagramm hinterlegt, bei dem ich eine Achse von Endanschlag zu Endanschlag verfahren habe. Die Daten von den Sensoren sind 24-Bit "breit", angezeigt werden die Rohdaten. Wäre schön, wenn jemand mir helfen könnte, ich sitze nun schon ein paar Tage an dem Problem und komme nicht weiter. Die Anfrage bei kuka blieb leider erfolglos. Vielen Dank schonmal fürs Durchlesen... :-) Gruß, Richard
Das ist ähnlich wie beim Bourns Graycode-Drehgeber, der hat nur die Hälfte der möglichen Codes ausgenutzt(127 Positionen aber 8 Bit), das ergibt auch einen Code mit der Bedingung "nur ein Bit ändern pro Schritt": http://www.bourns.com/pdfs/ace.pdf Ich bin nicht sicher, ob es in vollständiger Codierung nur DEN Graycode gibt, oder auch viele möglich sind. Seltsam ist der eine Ausreißer in der Kurve, der Rest sieht zwar etwas "fraktal" aus, hat aber doch auch noch regelmäßige Züge.
Schreib die Codes doch mal Binär untereinander und suche die Symetrien die typisch für den Graycode sind, vielleicht stimmen die Bitpositionen nicht.
Hi, danke schonmal für die Tipps, ich schau mir das gleich mal an. Der eine Ausreißer oben links ist eine "normale" Störung, ich hatte anfangs recht starke Störungen durch die Antriebsmotoren und andere Roboter, konnte die aber durch Optokoppler und spezielle Leitungsverlegung auf recht humane Werte bringen. Die Restlichen werde ich später sicherlich rausrechnen können... Gruß, Richard
Hi, hier die Rohdaten von dem Verfahren der Achse von Endanschlag zu Endanschlag.
...und hier die Daten binär dargestellt in einer Excel-Tabelle Dabei ist das höchstwertigste Bit oben. Man erkennt deutlich, daß einige der "Bitspuren" nicht richtig ankommen, ich bin schon am grübeln, woran das liegen könnte. Auch sieht man deutlich, daß die Abstände zwischen den Messungen zu groß waren für die Bits niedriger als Bit 11. Das liegt aber an der Messung, nicht am µC. Theoretisch könnte man diese niedrigen Bits erstmal auch rauswerfen, später wird die Positionsmessung intern verarbeitet und nicht erst dem PC via serieller Schnittstelle zugesendet, damit sollte das deutlich schneller gehen... Gruß, Richard
Es muss ungefähr aussiehen wie ... http://www.mipraso.de/enzyklopaedie/g/gray-code-tabelle.html ... oder Du hast einen "Graycode", der nicht normgerecht ist, z.B. Bitspuren verdreht. Es sind aber auch Codierungen denkbar, die nach "unregelmäßigem" Schema trotzdem die Bedingungen "nur 1 Bit ändert sich" sowie "zyklisch" erfüllen. Siehe den genannten ACE Drehgeber.
Des Rätsels Lösung: Umwandeln in Dualcode, danach jedes 2. Bit invertieren... Danke nochmals für die Hilfe, allein wär ich wohl nicht so ohne weiteres drauf gekommen. :-) Gruß, Richard
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.