CAN OPEN CiA Draft Standard 301

OP #7015531
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.
Gast #7018014
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
Gast #7018044
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...
Gast #7018334
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
OP #7034838
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
Gast #7275200
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren