Hiperface auslesen

Hallo,
Ich möchte ganz gerne einen Sick Encoder mit RS485 mit dem Arduino auslesen.
Nun habe ich ihn mit einem Max485 mit dem Arduino verbunden und es mal (wie von chat gpt empfohlen) mit modbus versucht anzufragen.
So wie es scheint, verwendet Sick hier aber ein eigenes Protokoll. Kann mich dabei jemand unterstützen?

Mfg,
Robin

Dazu müsstest du

  1. das Datenblatt verlinken aus dem die Register rausgelesen werden können
  2. Exakt definieren welche Register du lesen möchtest
  3. schreiben welchen Arduino du verwendest
  4. Berichten wie du den MAX485 an den Arduino angeschlossen hast - und mit Fotos dokumentieren damit wir sehen was du gemacht hast

Hallo,
ich denke da musst Du in die Doku zu dem Sick Teil einsteigen, eventuell als Einstieg
https://www.sick.com/media/docs/0/10/410/Special_information_Encoder_programming_solutions_de_IM0053410.PDF
---------- Auszug aus der pdf -------------------------
DER DIREKTZUGRIFF ÜBER RS-485
Über die RS-485-Schnittstelle können SICK Inkremental- und SSI-Absolut-Encoder über einen
PC, Industrie-PC oder die kundenseitige Steuerung programmiert werden. Zur Kommunikation mit
dem Encoder wird eine RS-485-Schnittstelle benötigt. Die Änderung der Encoderwerte ist ohne
Trennen der elektrischen Verbindung und während des Prozesses möglich. Damit kann innerhalb
weniger Sekunden eine neue Encodereinstellung programmiert werden und eine schnelle Umstel-
lung von Maschineneigenschaften gewährleistet werde

oder jedes andere pdf, was sich so anbietet.
https://html.duckduckgo.com/html?q=sick%20rs485%20protokoll

Moin,
Ersteinmal danke für die Rückmeldungen. Dann versuche ich einmal etwas konkreter zu werden.
Grundsätzlich geht es um folgenden Gebertyp:

https://www.sick.com/at/de/catalog/produkte/motion-control-sensoren/motor-feedback-systeme/srssrm50/srs50-hza0-s21/p/p642894

dataSheet_SRS50-HZA0-S21_1037395_de.pdf (402,6 KB)

Meinen Arduino habe ich nun wie folgt angeschlossen:

Mein Arduino ist ersteinmal ein normaler Uno.

Die Geber sind Hiperface Sin / Cos Geber, welche im ersten Step eine Absolutlage an den Regler geben und dann zählt dieser über die Sin Cos Signale weiter.

Zugegeben komme ich eher aus der Leistungstechnik und versuche mich nun in dieses Thema einzuarbeiten. Wenn ich es richtig verstanden habe, komme ich hier mit Modbus nicht weiter sondern muss im Hiperfaceprotokoll eine Anfrage an den Geber stellen und dann die Antwort von ihm erhalten.

Bitte weiterhin um Unterstützung.

Gruß,
Robin

Dann wirst du auch noch die Protokollbeschreibung von Hiperface für RS485 zusammensuchen müssen, denn die Angaben im Produktdatenblatt zeigen nur ein paar Parameter, zeigt aber nicht, was "Hiperface" auf RS485 sonst noch alles schickt.

Moin, danke für die Info. Ich frage morgen mal bei Sick an.
Schönen Sonntag :wink:

Das hier habe ich auch noch gefunden.
Leider weiß ich nicht einmal genau, nach was ich suche, da ich bisher vorgefertigte Bibliotheken verwendet habe.
HIPERFACE (4).pdf (2,8 MB)

Mfg,
Robin

schaut eigentlich gut aus.
Nimm mal ein Terminalprogramm das mit HEX gut umgehen kann und schick mal direkt über den PC einfach Befehle um zu sehen ob der Sensor darauf reagiert.

Es ist immer gut nicht nur die aktuelle Dateilfrage zu klären, sondern auch den Gesamtüberblick zu geben.

Wenn du die Daten ausgelesen hast schreibst du die auf eine Geburtstagsgrußkarte ?
Nee natürlich nicht! Aber was machst du dann mit den ausgelesenen Daten?

Es gibt irgendeinen - ich nenne das End-Zweck.
Was ist der Endzweck des Encoder auslesens?

Sobald du den Endzweck beschrieben hast kann man viel bessere Vorschläge machen.
Und man kann abklären ob der Encoder für diesen Zweck geeignet ist.

Sick macht doch alles mögliche, also zeigen was für eine

Die Idee (der Zweck) ist folgender.
Diese Encoder sind auf Servomotoren verbaut.
Fehler mit diesen Encodern sind oftmals nicht einzugrenzen.
Fehlerdiagnose lautet dann immer: könnte der Motor (also der Geber), dass Kabel oder der Regler sein.
Um den Encoder zu überprüfen, möchte ich gerne 2 bis 3 Parameter der Hiperface Rs485 auslesen, sowie die sin als auch die cos spur auf Signaltransfer prüfen.
Damit könnte man in vielen Fällen schon bestimmen ob das Problem beim Geber oder am Regler vorliegt.

Mfg,
Robin

Also genau der im ersten Posting genannte Sick Encoder soll ausgelesen werden?

Ist das die Aussage von dem Sick-Profi der für solche Sachen der Experte ist?
Ich vermute mal nein. Ich habe mit Sick nichts näher zu tun aber meine Einschätzung ist Sick ist eine sehr professionelle Industrietechnik-Firma und dann gibt es da bestimmt Auslesemöglichkeiten mit denen man bestimmen kann ob der Fehler nun im Encoder oder Kabel oder Regler liegt.

Oder sind die Regler dann wiederum so popelig dass die Regler diese Fehlerbestimmung nicht hinbekommen?

Sick ist hier lediglich der Geberhersteller.
Das Projekt ist ein Projekt mit praktischem Nutzen als Facharbeit. Es gibt mehr als genug "fertige Arbeit". Das kann ich aber dann dem Prüfungsausschuss nicht verkaufen :).
Grundsätzlich würde ich dann aber schon in der Sache weiter kommen und nicht meine Motiviation und Alternativen dazu ausdeklarieren.

Mfg,
Robin

Ok jetzt sind die Randbedingungen klar.

Zunächst einmal würde ich mit einem Terminalprogramm das die Bytes hexadezimal darstellen kann von der seriellen Schnittstelle einlesen was da so kommt.

Wenn das nicht funktioniert oder wenn es dich sowieso interessiert
würde ich mir so einen 24 MHz 8 Ch Logic-Analyser zulegen

Mit der Freeware Sigrok PulseView kann man die 8 Kanäle einlesen
https://sigrok.org/wiki/Downloads

Es gibt eine Menge Protokoll-Decoder zu PulseView
https://sigrok.org/wiki/Protocol_decoders

Mit googeln habe ich dieses PDF gefunden
Suchstichworte sick hiperface protokoll

Sick-operating_instructions_specification_hiperface®_motor_feedback_protocol_en_im0064865.pdf (1.4 MB)

Das sieht vielversprechend aus.

Hier was von Texas Instruments über das Hardware interface

Zum Auslesen würde ich mir aber auf jeden Fall einen Microcontroller gönnen der einen zweiten hardware-UART hat

Der Arduino Uno hat nur einen Hardware UART und den brauchst du zum Code-Flashen und serielle Ausgabe Richtung Computer.

Ein anderer Microcontroller mit zwei Hardware-UARTs der auch mit Arduino IDE programmierbar ist.
Ganz klassisch ein Arduino Mega 2560

Oder Seeduino XIAO SAMD21 - auch mit Aduino IDE programmierbar

Oder wenn gleich noch ein Webinterface per WLAN ansprechbar sein soll

ESP32 - auch mit Aduino IDE programmierbar

9600 baud wird software-serial auf dem Arduino-Uno wohl hinbekommen.
Wenn da richtig viel Daten reinkommen dann macht es vielleicht doch Probleme.

So Reflektion was habe ich gemacht:
Google-Recherche mit verschiedenen Stichworten
Dabei nicht nur nach dem einen speziellen Encodertyp gesucht sondern auch mit allgemein gehalteneren Begriffen wie "Hiperface Protokoll" "Hiperface Schnittstelle" usw.

Jetzt bist du mal dran. Es ist schließlich eine Facharbeit also sollst du zeigen, dass du dich in etwas fachliches einarbeiten und ein Projekt umsetzen kannst.

Wenn dann Detailfragen auftauchen oder du etwas in der Dokumentation nicht verstehst kannste ja gerne wieder fragen.

Ich würde jetzt als nächstes das PDF
SPECIFICATION HIPERFACE®
Motor feedback protocol

sichten was steht da zur Datenübertragung drin.

Und falls du es noch nicht weißt:

Die Hauptsammelstelle für OpenSource Code ist GitHub

Also google mal "GitHub Hiperface"
Die Chancen stehen gut, das du da was findest.

@elektromotor

Wie ist dieser Versuch ausgegangen?

Scheinbar habe ich derzeit eher ein grundsätzliches Problem mit dem MAX485

Unnütz und zudem mindestens fragwürdig, wenn nicht sogar falsch.

Bisher nur gute Erfahrungen mit GitHub gemacht.
Dann berichte doch mal von deinen "fragwürdigen" Erfahrungen.

Dann berichtige doch mal ! Was sind denn die deiner Meinung nach vertrauenswürdigen Opensource-Quellen ?