Hallo, ich möchte mehrere Schrittmotoren in Betrieb nehmen. Diese verfügen über das CANopen-Protokoll. Ich habe ein Interface der Firma Kvaser und mit deren gratis API kann ich beliebige CAN-Frames schicken. Nun bin ich am überlegen selbst etwas zu entwickeln, da ich bisher keinen kostenlosen / günstigen CANopen-Stack finden konnte, der mit einem Kvaser-Inferface kompatibel ist. Meine Idee ist eine fertige Gratissoftware wie "Kickdrive Zero" zur Konfiguration (SDO) zu nutzen und die Schrittmotoren (kompatibel mit CiA 402) hinterher direkt mit selbst erzeugten Frames (PDO) zu betreiben. Ich bin kein professioneller Programmierer und dies ist mein Erstkontakt mit der CAN-Welt. Ist mein Vorhaben realistisch oder habt ihr bessere Ideen? Ich habe bisher schon eine ganze Weile im Internet gesucht, aber bisher leider nirgendwo ein vollständiges Beispiel für einen ganzes CANopen Telegramm gefunden. Kennst jemand eine Seite / Quelle, bei der man wirklich nachvollziehen kann, wie sich ein komplettes Diagramm zusammensetzt, so dass man danach selbst ein gültiges Diagramm inklusive Kontrollfeld usw. schreiben kann? Vielen Dank für die Hilfe :-)
Schau dir mal die LPC11Cxx an, mit denen hatte ich auch meinen ersten richtigen CANopen Kontakt. Das CiA 401 ist in den Beispielen enthalten und sollte sich eigentlich leicht auf das 402er erweitern lassen. Christian_RX7
Roland B. schrieb: > Ist mein Vorhaben realistisch oder habt ihr bessere Ideen? Kommt drauf an wieviel Geld und/oder Zeit Du hast. Du müßtest Dich zumindest durch die CIA Specs wühlen. Insbesondere die 300er Serie (speziell 301,302) und ntürlich die 402. Interessant dürfte auch die EN_50325_4 sein. Wenn Du da durch bist, dann kanst Du auch die Can-Frames auseinandernehmen und wieder zusammenbasteln. Hier mal ein paar Auszüge aus meiner Linksammlung: http://www.canopen.us/ http://www.canopenbook.com/ http://www.canopenbook.com/microcanopen.htm http://www.canopenmagic.de/ http://www.esacademy.com/
...und noch ein paar: http://canopen-solutions.com/canopen_index_en.html http://www.can-cia.org/ http://rbei-etas.github.com/busmaster/ https://github.com/rbei-etas/busmaster http://www.etas.com/en/products/applications_open_source.php ...
...und der Rest: http://qcanobserver.sourceforge.net/ http://www.rteamsoft.de/ https://github.com/fulcrum7/scanfish http://www.canfestival.org/
Vielen Dank für die vielen Informationen :-) Ich hab mich durch die Links gekämpft und warte gerade auf das Buch "Embedded Networking With CANopen". Das dauert aber noch ne Weile, bis die Bibliothek das hat ;-) Weiterhin habe ich noch einen Link gefunden, den ich für eine sehr hilfreiche Erklärung halte, auch wenn nicht alles perfekt ist: http://mobilecontrols.ifmefector.com/attachment.php?s=eaab30e433650341a7604198c383f928&attachmentid=261&d=1371649692 Von hier stammt der Link: http://mobilecontrols.ifmefector.com/showthread.php?p=681 Allerdings habe ich noch immer ein riesiges Fragezeichen :-( Wenn ich mir eine SDO Nachricht ansehe, dann ist diese wie folgt aufgebaut: COB ID (XXX), DLC(8), Command(byte), Index(byte0, byte1), Sub-index(byte), Date(byte0 bis byte4) Normalerweise kenne ich es so, dass man Binärzahlen so schreibt, dass das niederwertigste Bit rechts steht. Jetzt steht hier aber z.B., dass beim Index byte0 links von byte1 steht. Bedeutet das jetzt, dass ich die ganze Bitfolge einfach "spiegeln" muss, oder muss das so gesplittet werden, dass ich die Bitfolge nach 4 byte trenne und einfach überkreuze? Generell ist mir nicht klar, wie herum die Bitfolgen angegeben werden. Selbst bei dem "Commandbyte" weiß ich nicht, ob das niederwertigste Bit links oder rechts steht. Das ist jetzt vielleicht eine dumme Frage, aber die Nullen, um bei einer kleinen Zahl auf ein ganzes Byte zu kommen werden immer auf der höherwertigeren Seite aufgefüllt, oder? Vielen Dank :-)
Vielleicht hilft dir der folgende Link weiter: https://wiki.wireshark.org/CANopen Vielleicht auch, wenn du den Beispiel-Trace, der dort zu finden ist, mal mit Wireshark öffnest? Wobei ich meinen alten Wireshark auf die Schnelle nicht dazu gebracht habe, auch ein CANopen Decoding durchzuführen...
Letzte Version von Wireshark installieren (meiner war scheinbar zu alt) und dann via https://ask.wireshark.org/questions/41447/enable-canopen-protocol zeigt bei mir jetzt CANopen Decoding an.
Hey, ganz so schwierig ist es nicht. Meist hören diese Teilnehmer auf eines der angesprochenen Profile. Zumeist sind diese dann aber nur rudimänter implementiert, so das man mit ein paar CAN-Open Kommandos und ein paar Zusätzlichen Befehlen sich durch die Statemachine hangeln kann. Letzlich wird dann nur Steuerword uns Sollwert bedient und evtl. muß ein Heartbeat erzeugt/bearbeitet werden. Am besten siehst Du Dir einen Trace eines Anlaufs an, darin ist dann alles enthalten. Grüße Jürgen
Hi, im "CiA Draft Standard 301" ist das CANopen-Protokoll genau erklärt. CANopen ist schon mehr "industrial" und man sollte nicht erwarten, dass man einen Stack für lau bekommt. Microchips hatte mal in einer PIC-App-Note einen Quellcode für CANopen drin. das wäre noch eine Quelle: http://www.inteliss.com/index.php/en/product-canopen-stack NMT, PDO, SDO können alle Die guten können auch sdo-bloc-upload/download Der PCAN-Diag (kostenlos) oder PCAN-Explorer sind zur Diagnose ganz brauchbar. grüße runout
Thomas T. schrieb: > CANopen ist schon mehr "industrial" und man sollte nicht erwarten, > dass man einen Stack für lau bekommt. Als OSS gibts das schon: http://sourceforge.net/projects/canopennode/ Gabe damit sehr gute Erfahrungen gemacht. Cheers
Roland B. schrieb: > Jetzt steht hier aber z.B., dass beim Index byte0 links von byte1 steht. Bei der CANopen Standardisierung mußte man sich entscheiden, ob man Werte, für die man mehr als ein Byte benötigt im Little oder Big Endian Format überträgt. Man hat sich für das Little Endian Format entschieden. https://de.wikipedia.org/wiki/Byte-Reihenfolge
fbi schrieb: > Du müßtest Dich zumindest durch die CIA Specs wühlen. Insbesondere die > 300er Serie (speziell 301,302) und ntürlich die 402. Interessant dürfte > auch die EN_50325_4 sein. Genau! CiA301 kann jeder downloaden. Es ist nur eine Registrierung notwendig. Bei CiA402 wird es schwierig, wenn man nur wenig Geld ausgeben will. Jedoch habe ich bisher nur Produkthandbücher gesehen, die die relevanten Teile beinhalten. So dass man notfalls darauf verzichten könnte. Natürlich werden dann ein paar Fragezeichen bleiben. Aber man bekommt die Antriebe zumindest in Betrieb. http://www.can-cia.org/can-knowledge/canopen/cia402/ Ist es ein Bastlerprojekt oder kommerziell? Bevor man einen eigenen Stack in Angriff nimmt, wäre eine CANopen Schulung ratsam.
He, he "canopennode" unterstützt ja ne ganze Menge Microcontroller sowie Linux nativ, Wäre gut zu wissen, ob es dort auch eine Raspi-Lösung gibt. I.d.R. verwenden die immer einen SPI/CAN-Controller (z.B. MCP2515) Den Treiber müsste man vielleicht aus Linux "klauen" oder Linux unterstützt "canopennode" sogar "out of the box". Grüße Runout
canopenNode ist die Applikationsseite. Es baut auf den Devicetreiber auf, welcher ggf. Teil des Kernels ist.
Vielen Dank euch allen :-) Das Wireshark Logfile war ganz hilfreich und mit der Byte-Reihenfolge habe ich auch wieder etwas neues gelernt. Die Cia 301 werde ich mir als nächstes ansehen. Auf die 402 muss ich wohl verzichten, aber das Datenblatt der Motoren sagt eigentlich alles Notwendige. Es handelt sich um ein Bastelprojekt ohne kommerziellen Hintergrund. Die genannte "canopennode" unterstützt leider mein Interface nicht, aber die Herstellereigene API ist nicht schlecht und ein CANopen Frame zu generieren scheint machbar. ;-) Ich werde probieren eigene SDO-Nachrichten zu schreiben. Für meine Zwecke würde es reichen, wenn ich bestimmte Nachrichten fest implementiere.
Roland B. schrieb: > Die genannte "canopennode" unterstützt leider mein Interface nicht, aber > die Herstellereigene API ist nicht schlecht und ein CANopen Frame zu > generieren scheint machbar. ;-) Dann erweitere canopennode doch einfach. Ist bestimmt einfacher als alles selbst zu schreiben.
Steffen R. schrieb: > Roland B. schrieb: >> Die genannte "canopennode" unterstützt leider mein Interface nicht, aber >> die Herstellereigene API ist nicht schlecht und ein CANopen Frame zu >> generieren scheint machbar. ;-) > > Dann erweitere canopennode doch einfach. Ist bestimmt einfacher als > alles selbst zu schreiben. Gute Idee, ich werde es mir mal ansehen :-)
Ich habe schon einige Erfahrungen mit canfestival gemacht (canopen lib). Die lib ist recht umfangreich und Objekte lassen sich sehr bequem mit einen Python GUI erstellen. Läuft bei mir stabil auf einen stm32, einen tms570 und einen embedded Linux in Slave und master betrieb.
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.