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.
Gast
#7016787
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?
Gast
#7018014
In Deiner Aufzeichnung sind wahrscheinlich folgende Einträge PDOS:
1 | |
2 | |
3 | |
4 | |
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
Gast
#7018044
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...
Gast
#7018334
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
Gast
#7275200
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.
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.