Hi, Ich möchte in ein Project CANopen integrieren, jedoch scheint das sehr aufwendig zu werden, da ich nichts mit den HAL Treibern gefunden habe. Es gibt ja CANopenNode (https://github.com/CANopenNode/CANopenNode), welches einen Stack für die STM32 beinhaltet, jedoch mit den STDPeripheral Treibern. Diese umzuschreiben scheint mir jedoch schon sehr mühsam und fehleranfällig zu sein. Hat jemand vielleicht schon CANopen in sein STM32 Project mit HAL integriert oder weiß jemand, ob/wo es evtl. einen Stack, kompatible mit HAL, gibt? Grüsse Bert
Die eigentliche Frage ist, brauchst du richtige komplette CANopen Unterstützung mit Konfiguration und allem, oder reicht es ein paar Nachrichten mit anderen, bekannten & fixen CANopen-Geräten auszutauschen? Bei letzteren musst du dann die PDO's entsprechend konfigurieren, und kannst auf deinem Gerät einfach direkt die gewünschten Nachrichten auf "normale" Art verarbeiten. Ist natürlich dann nicht sehr flexibel und du kannst dein Gerät nicht als "CANopen-kompatibel" verkaufen, falls es darum geht - aber ich habe das Gefühl, dass du dann nicht so fragen würdest. Bert S. schrieb: > Diese umzuschreiben scheint mir jedoch schon > sehr mühsam und fehleranfällig zu sein. Dürfte unsignifikant sein im Vergleich zum Gesamt-Aufwand, "richtiges" CANopen umzusetzen.
Dr. Sommer schrieb: > ie eigentliche Frage ist, brauchst du richtige komplette CANopen > Unterstützung mit Konfiguration und allem Meine Nodes sind eigentlich nur Slaves, wobei hier nur die Adresse gesetzt werden können muss (über ein USB Interface). Die Geräte sollen dann RPDOs für Regler Soll Werte registrieren und selber TPDO Registrierungen für Sensorwerte vornehmen. Daher sollte eigentlich eine abgespeckte Version reichen. Der Master Knoten muss dann aber den ganzen CANopen Stack unterstützen. Ich habe bisher noch nie mit CAN gearbeitet, mich aber schon eine Weile damit beschäftigt. Das es extrem Aufwändig sein ist, einen CAN Stack zu schreiben weiß ich und das habe ich sicher nicht vor. Wenn Niemand etwas in HAL kennt, werde ich einfach CANopenNode anpassen.
:
Bearbeitet durch User
Bert S. schrieb: > Meine Nodes sind eigentlich nur Slaves, wobei hier nur die Adresse > gesetzt werden können muss (über ein USB Interface) Die 7-Bit-Node-Adresse oder die CAN-ID's? Letztere werden ja über SDO's konfiguriert, nicht irgendwie extern (USB). Bert S. schrieb: > und selber TPDO > Registrierungen für Sensorwerte vornehmen. Was soll das heißen? Sie sollen die Master-Rolle übernehmen um andere Geräte zu konfigurieren? Während es parallel noch einen anderen Master gibt? Das gibt ein Chaos. Bert S. schrieb: > Das es extrem Aufwändig sein ist, einen CAN Stack zu > schreiben weiß ich und das habe ich sicher nicht vor. CAN an sich ist sehr einfach, m.M.n. sogar einfacher als I²C. CANopen hingegen ist sehr komplex. Es gibt auch kommerzielle CANopen-Stacks, vielleicht gibt es da was passendes...
Dr. Sommer schrieb: > Die 7-Bit-Node-Adresse oder die CAN-ID's? Letztere werden ja über SDO's > konfiguriert, nicht irgendwie extern (USB). Die 7-bit Node Adresse, da sonst so viel ich weiss ja keine Einstellungen über SDO vorgenommen werden können. Dr. Sommer schrieb: > Was soll das heißen? Sie sollen die Master-Rolle übernehmen um andere > Geräte zu konfigurieren? Während es parallel noch einen anderen Master > gibt? Das gibt ein Chaos. Ich habe mich da falsch ausgedrückt: Was ich eigentlich machen möchte ist, dass der Master die Sollwerte vorgibt, aber eben auch einen Stream der Sensorwerte zurückerhält. Der Master muss doch dazu zuerst einmal eine TPDO an einen Slave schicken, damit dieser die Sollwerte verarbeitet. Dann muss der Master eine RPDO schicken, damit der Slave ihm die Sensorwerte schickt. Daher braucht es nur einen Master. Dr. Sommer schrieb: > CAN an sich ist sehr einfach, m.M.n. sogar einfacher als I²C. CANopen > hingegen ist sehr komplex. Es gibt auch kommerzielle CANopen-Stacks, > vielleicht gibt es da was passendes... Ich möchte mich in nächster Zeit noch intensiver mit CANopen beschäftigen und daher keinen kommerziellen Stack benützen. Grundlegend möchte ich aber einmal in der Lage sein, das Grundgerüst in mein Projekt zu integrieren. PDO Registrierung, OD etc. werde ich dann im Nachhinein integrieren.
Bert S. schrieb: > Die 7-bit Node Adresse, da sonst so viel ich weiss ja keine > Einstellungen über SDO vorgenommen werden können. Ok, korrekt. Bert S. schrieb: > Was ich eigentlich machen möchte > ist, dass der Master die Sollwerte vorgibt, Der Master verarbeitet (empfängt/sendet) überhaupt keine Prozessdaten. Der Master startet/stoppt das Netz, prüft Heartbeat-Nachrichten und konfiguriert ggf. die Slaves. Bert S. schrieb: > Dann muss der Master eine RPDO schicken, damit der Slave > ihm die Sensorwerte schickt Mach "schickt" keine RPDO. Ein und dasselbe PDO wird auf Senderseite als TPDO und auf Empfängerseite als RPDO bezeichnet. Und wie gesagt, der Master macht nichts mit PDO's, er konfiguriert sie höchstens. Bert S. schrieb: > damit der Slave > ihm die Sensorwerte schickt. Normalerweise schicken die Slaves ihre Sensorwerte automatisch, wenn man sie nicht gerade auf RTR stellt. Bert S. schrieb: > Daher braucht es nur einen Master. Es braucht immer exakt einen Master!
Bert S. schrieb: > Ich möchte mich in nächster Zeit noch intensiver mit CANopen > beschäftigen Dann kann ich dieses Buch empfehlen: https://www.amazon.de/dp/0863802478 Und natürlich die Norm lesen.
Danke dir, werde mich mal noch weiter einlesen. CANOpenNode scheint aber sicher eine gute Sache zu sein und ich werde wohl darauf aufbauen.
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.