Hey, Habe ein Verständnis Problem was den CAN open bus angeht. Ich will für ein Batteriemodul den Can open bus programmieren. - Wenn ich jetzt kein variables PDO Mapping mache sondern ein festes mit fixen Werten wo steht das dann. Im Electronic Data Sheet? - Es gibt eine gewisse BOOT UP Sequence in der sich jeder Knoten meldet nach der Initalisierung und in den PRE - Operational Modus geht. Auf welche Meldung bzw. welche Werte (Identifier) vom NMT Master muss ich warten damit die PDOS freigeschaltet werden und der Knoten in den Operational modus geht? -In der Pre- Operational Phase kann der Knoten mit dem NMT Master nur über SDOs kommunzieren. Heißt das ich muss dem NMT Master in der Phase die definierten PDOs die über SDOs gesendet werden zur Verfügung stellen?um dann zu wissen was für PDOs kommen und wie viele usw. ? LG
hi, zum Thema Preoperational Modus: Dieser Modus ist wie Du schon richtig erkannt hast nur zur Konifguration deiner Knoten gedacht. Durch die SDO Telegramme (diese müssen im Datenblatt festgelegt sein) kannst Du verschiedene Einstellungen auf deinem Knoten vornehmen. Dabei sind die Identifier der SDO Telegramme von der CiA festgelegt worden TxSDO = 580Hex + Knotenadresse RxSDO = 600Hex + Knotenadresse Der Knoten wartet dabei solange bis er ein "Run Signal" vom Master erhält und wechselt durch dieses dann in den Operational Modus. Operationalmodus: Die PDOs deines Knotens müssen auch im Datenblatt festgelegt sein (die Datenfelder und welches PDO), Knotenadresse und Bitrate sollten per DIPschalter oder ähnlichem Hardwaremässig zu vergeben sein. Dadurch kannst Du wiederum deine Telegramme bestimmen TxPDO1 = 180Hex + Knotenadresse RxPDO1 = 200Hex + Knotenadresse TxPDO2 = 280Hex + Knotenadresse RxPDO2 = 300Hex + Knotenadresse TxPDO3 = 380Hex + Knotenadresse RxPDO3 = 400Hex + Knotenadresse TxPDO4 = 480Hex + Knotenadresse RxPDO4 = 500Hex + Knotenadresse Hast Du eine Möglichkeit auf dem CAN Bus die Telegramme mit zu verfolgen oder sogar welche von Hand zu senden? Gruss Sandhase Ps: Das Tx oder Rx ist immer aus der sicht vom Master T = Transmit und R = Reciev
*Nachtrag: Das "Starttelegram" vom Master sieht ca so aus: ID: Datenfeld: 0h 01h 01h Erklärung: ID: 0 = Gilt für alle Teilnehmer am Netz da NMT Start / Stop Telegramm 01h = Knotenadresse des Teilnehmers (in Hex) für den dieses Telegramm gilt 01h = Startcode um den angesprochenen Knoten zu starten. mit diesem Telegramm würdest du jetzt den Knoten 1 "starten" Generell zum Thema SDO: Meistens kannst Du dort die Zeiten von Lebenszeichen (Heartbeat), und Widerholungszeiten deiner PDOs einstellen. Und je nach angeschlossenem Modul noch einige weitere Dinge. (Siehe Datenblatt) Bei den PDOs ist ein CANKnoten generell auf 4 Tx und 4 Rx PDOs beschränkt, wenn er mehr benötigt, benötigt er auch mehrere Adressen. Ich kann dazu nur sagen überprüfe die Abschlusswiderstände (120Ohm), die Datenleitungen CAN+, CAN- und GND ob sie richtig angeschlossen sind und die jeweiligen Einstellungen bezüglich Knotenadresse und Bitrate des Masters und des Knotens. Gruss Sandhase
Danke für die Antworten. Ja ich habe einen PC-CAN von Peak systems. Ich kann also ganz einfach Can Nachrichten per Hand schicken. Zu Operational: ID:0 gilt für alle Teilnehmer. Schickt der NMT Master immer gleichzeitig an alle das Startsignal. Er kann doch auch einzelnen Knoten das Startsignal geben. Was aber ist dann ID für das Startsignal. Die ID vom ersten SDO ? Also Transmit SDO: 1409- 1535 (dezimal) + Knotennummer Meinst du mit Datenblatt das Electronic Data Sheet, welches ich dann für den CAN OPEN Bus meines Batteriemoduls anfertigen muss? // Object 1000h: Device type This object describes the battery module’s functionality. Device profile number: 418d Muss ich hier auf die Anfrage vom NMT Master warten mit einem SDO bzw. ist sowas im Preoperational modus? Es geht hier im genauen zu definieren wie viele TPDOs und RPDOs der NMT Master vom Knoten bekommt. \\ Für mich ist nicht klar ersichtlich welche Objekte wann gesendet werden müsse so wie mit dem Object 1000h. Danke für den Support. LG
Alsobevor ich jetzt weiter auf bereichsspeziefische Sachen ein gehe erst ein mal ein paar wichtige Dinge für mich ist der Master komplett Canopenfähig? Um was für ein Bauteil handelt es sich? Ist dein Ladegerät bereits Canopenfähig? wenn ja bitte mal den link zum Datenblatt posten. Ist dieses Ladegerät eine Bastelei für Dich oder soll die nacher irgend welchen industriellen Standarts genügen? Auf Grund von diesen Antworten kann auch ich anfangen zu suchen und das zum Thema id: 0 und das Datenfeld hinten dran ... Dieses Telegramm ist der startbefehl für deinen Knoten weitere Befehle dieser Art währen id: 0 Datenfeld: 01 80 = versetzt den knoten 1 in preoperational modus ... Das sind bereits direkte Befehle ... ich poste Dir nacher noch einen Link, in dem Pdf steht viel zum Canopen bus drin, leider auch speziefische Dinge des Herstellers aber es wird viwles genau erklärt. Gruss Sandhase
Also, wie versprochen, Dein Link zur Einführung in den CANopen Bus: http://www.selectron.ch/downloads/software_kapitel/shb_canopen/01_CANopen-Einfuehrung-d.pdf Lies das mal durch, vorallem Seite 9 enthält die IDs der einzelnen Telegramme. Gruss
Zu deinen Fragen: Ein Kunde wünscht sich eine Lithiumbatterie die als Schnittstelle CAN Open anbietet. Ich habe noch nicht klären können warum er CAN Open will und wer mit der Batterie kommuniziert. Ich denke CAN Open ist gewünscht, da es einfach in ein System eingebunden werden kann (zumindest nimmt man einfach an wenn man den CAN OPEN verstanden hat) und es klar definierte Parameter gibt die Standard bei CAN Open sind. Jetzt wollte ich inzwischenzeit den CAN Open Bus soweit verstehen und vorbereiten und das mit dem CiA 301 und CiA 418 (BAtteriemodule) bzw. soweit programmieren. Danke für den Link. Werde es mir gleich anschauen. LG
Auf Seite 20 des Links ist das Protokoll für SDOs versehen. Genau sowas habe ich gesucht. Wenn sich mein Knoten also die Batterie in der Pre-Operational Phase ist dann kann ja nur über SDOs kommuniziert werden. Damit der NMT Master weiß welche PDOs für ihn bereitstehen usw. schickt er mir eine Upload request (siehe Seite 20) und ich sende ihm als Knoten die Daten (Upload response S.21), die er benötigt zu bis ich das Signal für den Operational Modus bekomme wo ich dann die PDOs schicken kann. Richtig? Wobei natürlich auch in der Operational Phase dann wieder SDOs kommen können. PS: Warumm finde ich sonst nirgendwo ein Protokoll wie auf Seite 20 von dem Link ? Müsste doch eindeutig in den CiA Datenblätter stehen? Danke ! LG
Luke schrieb: > Jetzt wollte ich inzwischenzeit den CAN Open Bus soweit verstehen So eine Aussage vor dem Kunden ist nicht gerade gut. Der CAN Bus ist der physikalische Teil. D.h. es werden über 2 Datenleitungen Daten übertragen. Das Protokoll CAN ist auch spezifiziert. CANopen fügt zum CAN eigentlich nur einen weitern Layer hinzu. CANopen ist also nicht mehr als eine Protokollschicht, die definierte Telegramme über den CAN sendet. Vielleicht ist dir das ja klar und du hast dich nur falsch ausgedrückt. Luke schrieb: > Warumm finde ich sonst nirgendwo ein Protokoll wie auf Seite 20 von > dem Link ? > Müsste doch eindeutig in den CiA Datenblätter stehen? Wir haben unseren eigenen CANopen Stack nach den Informationen der CiA programmiert. Ich weiss nicht mehr was wo genau steht aber unser Stack läuft. Das heisst es ist alles dort irgendwo beschrieben.
Nils schrieb: > Wir haben unseren eigenen CANopen Stack nach den Informationen der CiA > programmiert. Ich weiss nicht mehr was wo genau steht aber unser Stack > läuft. Das heisst es ist alles dort irgendwo beschrieben. Wie Nils es oben bereit richtig (meiner Meinung nach) beschrieben hat: Jeder Hersteller hat innerhalb der SDOs seine eigenen Parameter. Diese müsstet hr festlegen und im Datenblatt festhalten, damit könnt Ihr später verschiedene variablen verstellen, um das Baterieladegerät einzustellen. SDOs sollten im Operationalmodus nicht vorkommen, da dazu der Knoten in den preoperationalmodus versetzt werden muss. Wenn Ihr eh am entwerfen seit, könnt Ihr Euch Gedanken darüber machen, was alles eingestellt werden soll und wie Ihr eine saubere Einstellungsmöglichkeit umsetzt. Sobald alle einstellungen erledigt sind (und vom Knoten quittiert wurden) sollte der Master in den Operationalmodus wechseln, in diesem Moment beginnt eine Kommunikation ausschliesslich über PDOs, alle anderen Telegramme wie SDOS oder NMTs sollten nicht mehr vorkommen, da dies meist einen Fehler zur Ursache hat. Noch ein Tipp, wenn ihr das ganze noch am entwerfen seid: Die Heartbeat producer Zeit (per SDO verstellbar) muss unbedingt eingehalten werden! Bei uns ist es üblich, sobald ein Knoten sein Heartbeat nicht nach der 1,5 fachen Zeit gesendet hat wird er komlett zurückgesetzt und das Ganze beginnt von Vorne. Ich weiss ide ganzen CiA Normen und sowas sind kompliziert und undurchsichtig, aber ich hoffe ich kämpft Euch da gut durch. (kann sein, dass ich in den nächsten paar Tagen nicht mehr gross dazukomme hier zu schreiben... Ihr kennt das ja Arbeit und so...) Gruss Sandhase
Nils schrieb: > So eine Aussage vor dem Kunden ist nicht gerade gut. Der CAN Bus ist der > physikalische Teil. D.h. es werden über 2 Datenleitungen Daten > übertragen. Das Protokoll CAN ist auch spezifiziert. > CANopen fügt zum CAN eigentlich nur einen weitern Layer hinzu. CANopen > ist also nicht mehr als eine Protokollschicht, die definierte Telegramme > über den CAN sendet. Vielleicht ist dir das ja klar und du hast dich nur > falsch ausgedrückt. Ja das ist mir soweit klar Nils. Ok es ist alles dort irgendwo beschrieben. Ist halt sehr zeitaufwendig. Sandhase schrieb: > Ich weiss ide ganzen CiA Normen und sowas sind kompliziert und > undurchsichtig, aber ich hoffe ich kämpft Euch da gut durch. Dann bin ich froh, dass nicht nur ich das so sehe. Ich danke euch für die Antworten. Habe es soweit verstanden mit den SDOs und PDOs und werde mich an die Arbeit machen alle relevanten Sachen zu finden. Eine Frage hätte ich noch: Und zwar das EDS (Electronic Data Sheet). Wie kann ich das erstellen. Gibt es da ein Programm? Oder Muster? Oder ist es nicht zwingendermaßen erforderlich? Datenblatt und EDS sind doch wieder 2 unterschiedliche Dinge. Soweit ich weiß ist das EDS im .ini format. Danke! LG
Hmm da muss ich erlich gesagt zugeben bin ich überfragt... Vileicht weis Nils oder jemand anderes darauf eine Antwort. Ich hoffe es mal ;) Normalerweise stehe ich eher auf der Anwenderseite oder der seite die Probleme beheben muss und damit kenne ich mich leider auf den einzelnen Entwicklungebenen eher schlechter aus. Gruss Sandhase
Sandhase schrieb: > SDOs sollten im Operationalmodus nicht vorkommen, da dazu der Knoten in > den preoperationalmodus versetzt werden muss. doch natürlich knnst du SDOs im Programmablauf senden und empfangen. dafür sind sie ja da. nur ein neues mapping solltest du nicht machen. die sind speziell für azyklische datenübertragung und sollten auch so verwendet werden. Luke schrieb: > Und zwar das EDS (Electronic Data Sheet). Wie kann ich das erstellen. > Gibt es da ein Programm? Oder Muster? lade dir doch einfach einmal eines herunter. egal von was. du willst ja nur einmal dei struktur verstehen. (zb Nanotec schrittmotortreiber) mach das mit dem txt editor auf und schau einfach mal rein. Luke schrieb: > Oder ist es nicht zwingendermaßen erforderlich? der Programmeirer der Gegenstelle wird dich mit nassen Fetzen schlagen, wenn du keines hast. es gibt nichts nervigeres als diese dinge aus dem pdf datenblatt in den programmcode zu klopfen, um dann herauszufinden dass diese nicht die gleiche version beschreiben, da das pdf auf der Homepage veraltet ist. hast du dir die CIA 301 angesehen, da ist das relativ gut beschrieben. (am besten schreichst du alles raus was du nicht brauchst, und liest dann den rest noch einmal genau) wie weit darfst du vereinfachen? fixes PDO mapping? (das spart richtig arbeit) fixe zeiten? (auch hier kannst du wieder sparen) kein node Guarding sondern nur einen HB? (und schon wieder den stack geschrumpft) sg
Was das EDS angeht gibts ja Editoren dafür. Microcontrol hat da einen neuen, der wohl relativ gut sein soll. Naja zumindest nach derren Aussage. Ich weiss aber nicht ober der kostenfrei erhältlich ist. Wir schreiben die ganzen Daten per Hand in den Code, da wir selten neue CANopen Knoten bekommen.Vielleicht alle 2 Jahre mal einen. In Zukunft wird sich das wohl aber ändern und spätestens dann werden wir auch einen Editor einsetzen oder ein eigenes Skript schreiben. Hab gerade in meinen Unterlagen gesehen, dass du dein EDS File über ein Tool von der CiA Homepage testen kannst. Ob man das ED File wirklich braucht ist geschmackssache. An deiner Stelle würde ich die relevanten Daten einfach in deine .h reinschreiben. Ist bestimmt schneller als der Umweg über EDS oder haste viele verschiedene Knoten?
er baut einen knoten, so wie ich das verstanden habe. als Anwender stehe ich auf dem standpunkt dass er dann eines zu liefern hat. wenn du zb eine SPS hast, die mit dem ding kommuniziert dann hast du fast keien andere Möglichkeit als ein EDS, um die daten dort zu verarbeiten.
Von Vector gibt es einen kostenlosen EDS-Editor namens "CANeds". Ihr solltet Euch aber überlegen, ob Ihr nicht einen fertigen Stack kauft. Dort sind normalerweise Konfigurationstools dabei, aus denen dann das EDS zusammen mit dem generierten Code (und evtl. sogar noch eine Doku zu den CANopen-Objekten des Gerätes) herausfällt. Evtl. ist auch http://sourceforge.net/projects/canopennode/ was für Euch. Ich wollte den Stack eigentlich mal ausprobieren, bin aber (noch) nicht dazugekommen.
Luke schrieb: > PS: Warumm finde ich sonst nirgendwo ein Protokoll wie auf Seite 20 von > dem Link ? > Müsste doch eindeutig in den CiA Datenblätter stehen? CiA 301 Kann man nach kurzer Registrierung bei CAN in Automation downloaden. http://www.can-cia.org
Sandhase schrieb: > SDOs sollten im Operationalmodus nicht vorkommen, da dazu der Knoten in > den preoperationalmodus versetzt werden muss. Der SDO Dienst wird zur Konfiguration genutzt. Die Konfiguration findet typischerweise im NMT Preoperational Mode statt. Aber: Der SDO Dienst ist auch im NMT Operational Mode erlaubt. > Wenn Ihr eh am entwerfen seit, könnt Ihr Euch Gedanken darüber machen, > was alles eingestellt werden soll und wie Ihr eine saubere > Einstellungsmöglichkeit umsetzt. Da der Kunde wohl CiA418 fordert, habt ihr wohl nicht viel nachzudenken. Hier ist alles schon vorgegeben. Durch das statische Mapping ergibt sich auch nur wenig Konfigurationsbedarf. > Noch ein Tipp, wenn ihr das ganze noch am entwerfen seid: > Die Heartbeat producer Zeit (per SDO verstellbar) muss unbedingt > eingehalten werden! > Bei uns ist es üblich, sobald ein Knoten sein Heartbeat nicht nach der > 1,5 fachen Zeit gesendet hat wird er komlett zurückgesetzt und das Ganze > beginnt von Vorne. Dies ist Sache des Systemdesigners und somit des Masters. Bei EnergyBus definieren wir eine 3fach höhere Heartbeat Consumer Zeit als die Heartbeat Producer Zeit der jeweiligen Geräte. Kommt darauf an, wie tolerant gegen Fehler man sein möchte. Da die Heartbeats eine hohe CAN ID und somit eine niedrige Priorität haben, werden diese durch eine (kurzzeitig) hohe Buslast verzögert. > Ich weiss ide ganzen CiA Normen und sowas sind kompliziert und > undurchsichtig, aber ich hoffe ich kämpft Euch da gut durch. Der CiA und die kommerziellen CANopen Stack Anbieter bieten regelmäßig Schulungen an. Da ist man zumindest auf der sicheren Seite. Vielleicht will der Kunde ja auch den CANopen Conformancetest des Can in Automation bestehen? Da zeigt sich dann jedes Missverständnis.
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.