Forum: Mikrocontroller und Digitale Elektronik CAN OPEN CiA Draft Standard 301


von Manuel M. (carpc)



Lesenswert?

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.

von StinkyWinky (Gast)


Lesenswert?

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.

von Manuel M. (carpc)


Lesenswert?

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?

von stinkywinky (Gast)


Lesenswert?

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

von stinkywinky (Gast)


Lesenswert?

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...

von HAL9000 (Gast)


Lesenswert?

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

von Manuel M. (carpc)


Lesenswert?

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

von Viktor (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.