Guten Tag, ich möchte die Kommunikation mit einem Batteriesystem herstellen. Dabei verstehe ich das CAN OPEN CiA Draft Standard 301 Protokoll nicht. Insbesondere wie ich von Objectadressen (im Can Protokoll) zu den CAN Ids (CAN Adressen) komme. Für den Start wäre der wichtigste Befehl: Object 2055h: Battery contactors authorization (S.85) Dieser wird benötigt um das Batteriesystem einzuschalten. Ich habe auch bei einem funktionierdem System den CAN Bus aufgzeichnet. In den Logdateien müsste der Befehl (Object 2055h:) zu finden sein. Es wäre mir eine sehr große Hilfe wenn jemand am Beispiel Object 2055h die CAN Adresse (hex) mit den dazugehörigen Daten (hex) nennen kann.
So wie ich das sehe, wird das Objekt 2055h in der PDO2 übertragen. Du musst also im Log nach der PDO2 suchen. Welche COB-ID für PDO2 verwendet wird, ist in den CiA Dokus zu finden.
Danke für deine Antwort. Ja genau das ist ja mein Problem. Ich habe noch nicht verstanden wie ma anhand der Object ID die COP ID ermitteln kann. Die Cob ID ist CAN ID, die dann über den CAN Bus übertragen wird?
In Deiner Aufzeichnung sind wahrscheinlich folgende Einträge PDOS:
1 | 204 20165.7 Rx 0181 8 21 00 00 00 00 00 02 00 |
2 | 205 20166.2 Rx 0281 8 00 00 00 00 C0 4E 00 00 |
3 | 206 20166.7 Rx 0381 7 00 00 10 3B 00 00 01 |
4 | 207 20167.2 Rx 0481 8 9F 48 00 00 08 01 00 4C |
Die COB-IDs sind 0181h, 0281h, 0381h und 0481h. Das lässt sich aus "CiA301 CANopen application layer and communication profile", Tabelle 71 "Generic pre-defined connection set for TPDO" entnehmen
Die COB-ID von RPDO2 wird auf Seite 14 in "09-0974-SDU-SEL-DH-CanOpen_Dictionary_RevO.pdf" definiert: Default value 0300h + Node ID Die "2055" wirst du nicht in der Aufzeichnung finden (Ausser bei SDO-Zugriffen). Bei PDOs wird im Standard definiert, welches Objekt an welcher Stelle der 8 Bytes übertragen wird. Das läuft dann ohne Overhead. Du musst also herausfinden: 1. Welche PDO interessiert mich: -> PDO2 2. die COB-ID von PDO2: wahrscheinlich 0381h 3. Welche Objekte werden in PDO2 gepackt, siehe "6.3.2. Object 1601h: Mapping parameter" im selben Dokument 4. Wie werden die Objekte genau in den (max) 8 Bytes abgelegt Es ist leider eine steile Lernkurve...
Hi ! Ich habe mir gerade mal das Tracefile angesehen. CanId 0x701 -> Bootupmessage (Das ist also die Knotennummer 1) Canid 0x181 -> PDO 1 (Cobid = 0x180 + Knotennummer) Canid 0x281 -> PDO 2 (Cobid = 0x280 + Knotennummer) Canid 0x381 -> PDO 3 (Cobid = 0x380 + Knotennummer) Canid 0x481 -> PDO 4 (Cobid = 0x480 + Knotennummer) Daten Slave -> Master. Die Belegung der 8 Byte kann aus den Mappingparametern ausgelesen werden. Canobjekte können ausgelesen werden: CanID 0601 (0x600 + Knotennummer) Daten : 40 2B 20 02 00 00 00 00 40 -> Lesebefehl 202B -> Index 02 -> Subindex 00 00 00 00 -> Ohne Bedeutung. Antwort auf Lesebefehl: CanID 0581 (0x580 + Knotennummer) Daten : 4F 2B 20 02 08 00 00 00 4F -> Datentyp 4F = 1 Byte, 4B = 2Byte,47 = 3Byte, 43 =4Byte 202B -> Index 02 -> Subindex 08 Nutzdaten Du hast noch mehrere Probleme: 1. Du bekommst eine Busyheavy Warnung, mit dem Bus ist also irgendetwas nicht in Ordnung. 2. Ich sehe hier RTR Telegramme, das deutet auf die Verwendung von Nodeguarding, das solltest du abstellen. Kein vernünftiger Mensch verwendet das heute noch. MFG Edgar
Guten Tag, ich bin weitergekommen und konnte die Objekte zuordnen. Ich habe unten mal beispielhaft die Objekte 2029 (Max Cell Volt) und 202A (Min Cell Volt). Nun ist mir nicht klar wie ich den Spannungswert hier auslesen kann. Verstehe das CanOpen Dokument (z.B: Seite 53 Max Cell Volt) noch nicht. Für mich wäre hier der Spannungswert in mV wichtig. 533) 35058.5 Rx 0080 0 534) 35110.8 Rx 0601 8 40 29 20 03 00 00 00 00 // 2029 Max Cell Volt 535) 35118.8 Rx 0581 8 4B 29 20 03 DC 05 00 00 536) 35119.4 Rx 0181 8 23 00 00 04 10 00 02 00 537) 35119.9 Rx 0281 8 00 00 00 00 00 00 00 00 538) 35120.3 Rx 0381 7 00 00 00 00 00 00 01 539) 35120.8 Rx 0481 8 00 00 00 00 08 01 00 44 540) 35148.7 Rx 0701 1 05 541) 35219.5 Rx 0181 8 01 00 00 04 00 00 02 00 542) 35220.0 Rx 0281 8 00 00 00 00 00 00 00 00 543) 35220.5 Rx 0381 7 00 00 00 00 00 00 01 544) 35221.0 Rx 0481 8 00 00 00 00 08 01 00 4B 545) 35249.4 Rx 0701 1 05 546) 35309.8 Rx 0080 0 547) 35320.2 Rx 0181 8 01 00 00 04 00 00 02 00 548) 35320.7 Rx 0281 8 00 00 00 00 00 00 00 00 549) 35321.2 Rx 0381 7 00 00 00 00 00 00 01 550) 35321.7 Rx 0481 8 00 00 00 00 08 01 00 4B 551) 35350.2 Rx 0701 1 05 552) 35362.1 Rx 0601 8 40 2A 20 03 00 00 00 00 // 202A Min Cell Volt 553) 35370.6 Rx 0581 8 4B 2A 20 03 DC 05 00 00 554) 35420.9 Rx 0181 8 01 00 00 04 00 00 02 00 555) 35421.5 Rx 0281 8 00 00 00 00 00 00 00 00 556) 35421.9 Rx 0381 7 00 00 00 00 00 00 01 557) 35422.4 Rx 0481 8 00 00 00 00 08 01 00 4B 558) 35450.9 Rx 0701 1 05 559) 35521.6 Rx 0181 8 21 00 00 04 00 00 02 00 560) 35522.2 Rx 0281 8 00 00 00 00 00 00 00 00 561) 35522.6 Rx 0381 7 00 00 00 00 00 00 01 562) 35523.1 Rx 0481 8 00 00 00 00 08 01 00 4B 563) 35551.6 Rx 0701 1 05 564) 35560.7 Rx 0080 0
Hi! Ich bin gerade an einem ählichen Projekt. Ich weiß nicht ob du schon die Antowort auf deine Frage selbst gefunden hast. Wenn nicht, dann hier: 535) 35118.8 Rx 0581 8 4B 29 20 03 DC 05 00 00 Die Geringste Spannung in deinem System ist 56325mV, denn hex DC05 ist 56325 in dec. also 56,325V Modul mit der kleinsten Spannung. Wenn du noch am Projekt bist könnten wir ja gerne mal per Email den Stand austauschen.
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.