Guten Abend ich will demnächst anfangen mich etwas mit CAN auf einem Arduino zu beschäftigen. Dazu hab ich mir das CAN Shield https://www.sparkfun.com/products/10039 angeschafft für einen normalen Arduino. Als "Gegenstück" ist mir eine Art Bedientastatur in die Finger gefallen. Leider findet man dazu keine Infos vom Hersteller was ich aber weiß dank aufdrucke: - Wo CAN H, CAN L, und GND am Anschluss ist - Welche Baudrate das Ding mit mir spricht (einstellbar von 20kbit/sec bis 500kbit/sec also sehr angenehm :)) - leider keine Infos welche Identifier verwendet werden. Die Tastatur hat 16 Tasten und jede Taste eine LED. Mein Gedanke war nun, ich häng sie ans Shield, schieb auf den Arduino ein Programm wo ich einfach mal "auf dem Bus horche" und hoffe das die Tastatur was sendet wenn ich eine Taste drücke. (ich stell es mir dann so vor, das ich mir den Identifier + die Daten anzeigen lassen kann um später dann darauf zurückgreifen) Sollte dem nicht so sein, was könnte ich dann noch probieren? Und wie könnte man ansetzen die LEDs einzuschalten? Was mich auch verwundet, ich kann auf der Tastatur auch eine "Knotenummer" einstellen? was bedeutet das? Dachte bisher CAN funktioniert rein über den Identifier? Einstellbar von 0-31.
Isch schrieb: > Was mich auch verwundet, ich kann auf der Tastatur auch eine > "Knotenummer" einstellen? was bedeutet das? Dachte bisher CAN > funktioniert rein über den Identifier? Ja, CAN funktioniert rein über Identifier. Wenn du mehrere dieser Tastaturen an einem Bus betreiben wolltest, so würden alle mit den gleichen Identifiern arbeiten. Nun ist es aber weder vorgesehen noch wünschenswert, dass mehrere Geräte Frames mit der gleichen ID versenden. Über die Knotennummer wird daher mit ziemlicher Sicherheit der ID-Satz verändert, sodass du bis zu 32 Tastaturen gleichzeitig nutzen und auch identifizieren kannst.
hi danke, genau sowas dachte ich mir schon fast, wollte nur nochmal sicher sein und nachfragen. Es gilt also daher weiterhin, rauszufinden welche Identifier ich brauch (sowohl für die Tasten als auch für die LEDs).
Schau dir mal das an: http://www.fischl.de/usbtin/ Damit kannst du die Nachrichten auf dem CAN-Bus anschauen. HW ist ziemlich günstig im vergleich zu Profi-HW. Habe das selbst zu Hause und bin der Meinung das ist zum "basteln" vollkommend ausreichend. Die erwähnte SW auf der Seite ist kostenlos. Sollte dir zum Einstig eine gute Hilfe sein.
"Knotennummer" könnte bedeuten, dass auf der Tastatur ein zursätzliches Protokoll (wie z.b. CANopen) läuft. Hierfür wäre es dann tatsächlich wichtig zu wissen, welche Tastatur das denn ist. Ansonsten einfach mal versuchen den Bus zu belauschen und den Mitschnitt hier posten.
Hallo wie bereits gesagt, findet man im Netz nichts über die Tastatur. Es handelt sich um eine B&R Tastatur mit 20 Tasten die jeweils 1 LED haben (hab das oben verbummelt mit den 16....) Als Typ steht da nur drauf: 5E9000.04 REV 01.12 ID.Nr. C0028300 Werde auf jeden Fall mal lauschen und gucken was sie von sich gibt, alles weitere wird sich dann wohl zeigen (müssen)
Ohne Infos hilft nur ausprobieren. Lauschen musst du aber auf jeden Fall als aktiver Teilnehmer! Ich erlebe es gerade am eigenen Leib: Wenn ein CAN-Teilnehmer alleine auf seinem Bus aktiv ist erhält er keine Bestätigung für seine Nachricht , wirft einen "Acknowledgement Error" und hängt sich in einer Schleife auf. Es sollte aber kein Problem sein aus der Nachricht die Bits herauszufinden die dir anzeigen welcher Taster gerade gedrückt ist. Interessanter wird es dann die LEDs anzusteuern...
Also ich hab mir mal ein CAN-LAN-Adapter auf meinem Breadboard zusammengesteckt. Das ganze läuft ganz gut. Ich kann von jedem Teilnehmer Nachrichten empfangen als auch zu jeden senden.
Hallo ich danke euch, ich hab schon riesen Erfolge und empfange schon "etwas" wenn ich eine Taste drücke. Die Tastaur spricht aktuell auf den Identifier 0x44f mit mir :) Nur werde ich aus den Daten nicht ganz schlau. Das ganze sieht aktuell etwa so aus: hier hab ich die Taste 9 gedrückt Get Data From id: 1103 0x9 0x0 0x0 0x0 0x8 0x0 ------------------------------------------------------------------ Get Data From id: 1103 0x0 0x0 0x0 0x0 0x8 0x0 ------------------------------------------------------------------ Get Data From id: 1103 0x89 0x0 0x0 0x0 0x0 0x0 und hier hab ich sie dann losgelassen (für das "drücken" hab ich das System bereits erkannt, der erste Byte geht von 0x1 über 0x9 auf 0xA bis 0xf und dann mit 0x10 bis 0x14 weiter, für das loslassen im Prinzip nicht anders, erster Byte von 0x81 bis 0x94) jetzt die Frage wo find ich die LEDs ;) Ein 0x sind doch ein Byte oder? Ich dachte eine CAN-Message besteht aus 8 Byte? Warum empfang ich dann nur 6 Bytes? Ich hab mir dies hier genommen: https://github.com/Seeed-Studio/CAN_BUS_Shield Im Anhang mein Quelltext den ich aktuell verwende, da die Tastatur auch bei nicht gedrückter Taste 6 0bytes sendet und mir jedes mal die Anzeige zugespamt hat, hab ich dies unterdrückt und lass mir nur anzeigen wenn wirklich Daten kommen.
Dafür ist doch der DLC da (Anzahl der Datenbytes). D.h. die Anzahl ist variabel, max. jedoch 8Bytes.
Vielleicht noch als Hilfestellung wenn Du Einsteiger bist (und nicht nur dann): Es gibt von Vector ein schönes englischsprachiges CAN-Poster, das man sich kostenlos dort bestellen kann. Auf dem Poster findet man alles Wichtige zum Protokoll sehr übersichtlich gruppiert und grafisch aufbereitet auf einen Blick. Das hängt hier an der Labortür - man schaut da gerne mal drauf :-) Kann ich nur empfehlen. Also, wenn Du etwas Platz an der Wand hast ...
:
Bearbeitet durch Moderator
Chris D. schrieb: > Es gibt von Vector ein schönes englischsprachiges CAN-Poster Schöner Hinweis. Aber aufpassen, dass man das Poster für klassisches CAN erwischt. Die Poster, welche auch die zukünftige Erweiterung für CAN FD enthalten würden für den Anfang eher verwirren.
hi danke euch, habs mittlerweile auch gefunden, dass eine CAN Nachricht aus 0-8 Bytes bestehen kann. Wie könnte man es nun angehen an die LEDs ranzukommen? mfg Chris
Isch schrieb: > Wie könnte man es nun angehen an die LEDs ranzukommen? Den Hersteller anschreiben und freundlich um eine Kopie des Handbuchs als .pdf bitten? Sonst aufmachen und nachsehen was da drin ist und ob man das hacken kann. Alle Kombinationen auf dem CAN auszuprobieren wird wohl eher nicht gehen, zumal da auch ein Protokoll drauf sein könnte oder auch nur eine CRC. Bestenfalls könnte man noch versuchen, den Bereich einzuschränken. Die "Knotennummer" verstellen und schauen auf welcher ID jeweils die Tasten-Botschaft kommt.
Hallo Leute ich klinke mich hier auch kurz ein, habe eine Frage zum CAN, die hier grade rein passt. Weiter oben wurde folgendes gesagt: > Ja, CAN funktioniert rein über Identifier. Wenn du mehrere dieser > Tastaturen an einem Bus betreiben wolltest, so würden alle mit den > gleichen Identifiern arbeiten. Nun ist es aber weder vorgesehen noch > wünschenswert, dass mehrere Geräte Frames mit der gleichen ID versenden. > Über die Knotennummer wird daher mit ziemlicher Sicherheit der ID-Satz > verändert, sodass du bis zu 32 Tastaturen gleichzeitig nutzen und auch > identifizieren kannst. jetzt mal eine Frage dazu; angenommen, ich habe mehrere gleichartige Sensoren (sagen wir mal, 6 Sensoren) die die gleiche Grösse (sagen wir mal die Temperatur) an unterschiedlichen Orten messen. Die Sensoren sollen am CAN-Bus hängen. Da jeder Sensor im Prinzip die selbe Grösse misst, wäre es doch sinnvoll, wenn die Nachrichten der Sensoren die selbe ID benutzen, aber im Telegramm selbst jeweils eine andere Nummer vergeben wird? Oder soll man die Sensoren dann von der ID her einfach stur durchnummerieren, und in der Software (die dann die CAN-Telegramme aller Sensoren entgegennimmt) muss man dann wissen: die CAN-IDs 1-6 sind die Temperaturen, 7-12 sind irgendwelche anderen Grössen.... oder wie macht man es 'richtig'. CANopen löst das Problem bestimmt, ist aber vmtl. ein wenig aufwendig.
Also keine Geräte dürfen die selbe ID haben. Sonst macht das ganze ja keinen Sinn. Die meisten Geräte haben DIP-Schalter, womit du dann die Adresse + Geschwindigkeit einstellst, genau wie bei CANopen. Wie du das ganze gruppierst, bleibt dir überlassen. Entweder nach Funktion oder Standort oder sonst wie. Aber einige Geräte haben auch einen begrenzten Adressbereich, da musst du dann ein wenig gucken, wie du es am sinnvollsten/besten machst.
Guten Tag Hab jetzt doch eine E-Mail vom Hersteller bekommen, er kann leider keine Dokumentationen mehr dazu finden :( Als Tipp wurde mir gegeben es mit den Spezifikationen DS302 bzw. DS401 zu probieren. Hat dazu jemand mehr Infos?
Beim CAN in Automation gibts einige Standards auch ohne Mitgliedschaft. z.B. den 401 http://www.can-cia.org/index.php?id=specifications&no_cache=1 Der 302 beschreibt hauptsächlich zusätzliche Dienste. Wüßte im Moment nicht, warum darauf verwiesen wird.
Guten Abend ich versuche mich da eben ein wenig hineinzudenken. Dort wird aber immer von Adressen wie 6020h (usw.) gesprochen. Ich empfang aber immer nur solche Daten Get Data From id: 1551 0xA 0x0 0x0 0x0 0x0 0x8 wobei 1551 jetzt Dezimal ist (die 2. Zeile sind die Daten, 6 Byte), wäre in hexadezimal ja 60f mir fehlt da ne ganze Stelle. Werde daraus einfach nicht schlau und ich hab erst recht keine Ahnung was ich senden soll damit die LED angehen...
So gleich noch ein Post hinterher ich glaub so langsam steig ich hinter das Protokoll. Wenn ich die Knotenummer 1 einstelle, erhalte ich Daten auf 0x42f das heißt ich bin auf PDO3 Demnach gehe ich davon aus, das die Tastatur auch auf PDO3 Daten erwartet, wenn ich mich nicht verrechnet habe müsste ich also auf 0x3AF senden. Jetzt nur die Frage: Was für Daten?
ich hab hier mal noch abgespeichert wie die Datensequenzen bei den Tasten aussehen (sind jetzt nur die ersten 8): https://docs.google.com/spreadsheets/d/1b5BOt5yDeQlvNDIXJTIgthiJTeg2g1sNTSQHv6-iAbM/edit?usp=sharing Flanke ist so zu verstehend: steigend: in dem moment wo die Taste gedrückt wird high: Taste wird gedrückt gehalten (wiederholt sich paar mal pro Sekunde so lang man die Taste gedrückt hält) fallend: der moment wo die Taste los gelassen wird.
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.