Forum: PC-Programmierung MODBUS RTU -> CANopen DSP 309-2 LSB/MSB


von Dirk (Gast)


Lesenswert?

Hallo Leute,

Kann mir jemand sagen, wie die Reihenfolge / Indizes der Bits in den 
Bytes "Protocol control" zu interpretieren, bzw zu implementieren ist?
CiA schreibt in CiA 309-2, Seite 7:
MSB = Index 0
LSB = Index 7
Auf Seite 14 (Configure SDO timeout command) steht auch ein Beispiel, 
welches die "verdrehte Darstellung" unterstreicht:
0x05 = specified network
0x01 = default network
(Bit 0 = 1 -> schreiben, Bit 2 = 1 -> Network ID option enabled, deckt 
sich also...).
http://read.pudn.com/downloads157/doc/comm/701058/CiA%20CanOpen/CiA%20309-2%20DS%20V1.1%20Interfacing%20CANopen%20with%20TCPIP%20-%20Part%202%20ModbusTCP%20mapping%28IGCO_309_2v01010001%29.pdf

So weit, so gut. Beim Lesen dachte ich mir: Ok, wenn die das unbedingt 
anders als der Rest der Welt machen wollen, vma.

Ich soll nun ein RS485 MODBUS RTU -> CANopen Gateway programmieren. 
Funktionsgrundlage ist ein bestehendes "Ethernet-Modul", welches in 
unserem Auftrag von einer externen Firma programmiert wurde.
Scheinbar sind die auch schon auf dieses "Problem" gestoßen und haben 
bei der CiA angerufen, um das zu klären.
Die (wenig professionelle) Antwort kam 2 Wochen später: "Müsste anders 
sein als dokumentiert, LSB = Idx 0, MSB = Idx 7, also wie gewohnt und 
üblich".

Die Antwort stellt mich natürlich nicht zufrieden. Deshalb habe ich den 
halben Tag damit verbracht, einen MODBUS-Master zu finden, der den FC43 
MEI-Type 13 unterstützt, oder auch ein paar einfache Beispiele, bin aber 
nicht fündig geworden (OT: Warum zum Geier packen die nicht einfach mehr 
Beispiele in ihre Dokus?? Das erklärt mehr und besser als 1000 Tabellen 
und Text).

Bevor ICH jetzt noch mal bei der CiA anrufe, wollte ich zuerst nach 
euren Meinungen und Erfahrungen Fragen.
Auf das oben erwähnte Ethernet-Modul kann ich mich nicht berufen, da 
detaillierte Tests noch ausstehen und das Produkt sowieso noch niemandem 
verkauft wurde.

Danke und Gruß,
Dirk.

von Dirk (Gast)


Lesenswert?

Erklärung gefunden:

In CiA 309-2 v1.1 auf Seite 5 steht der Verweis auf die RFC 791, da 
wiederum steht:

Whenever an octet represents a numeric quantity the left most bit in the
diagram is the high order or most significant bit.  That is, the bit
labeled 0 is the most significant bit.  For example, the following
diagram represents the value 170 (decimal).

                            0 1 2 3 4 5 6 7
                           +-+-+-+-+-+-+-+-+
                           |1 0 1 0 1 0 1 0|
                           +-+-+-+-+-+-+-+-+

Ist also tatsächlich so. Und das Beispiel (Configure SDO timeout) ist 
schlicht falsch.
...wieder was dazu gelernt / Lehrgeld bezahlt ;)

von Dirk (Gast)


Lesenswert?

...und schon wieder zu schnell geschossen...
Das Beispiel stimmt. Was (mich) hier verwirrt, ist einfach nur das 
"Labeling" der Bit-Indizes, besonders, weil sie ja auch bei 0 anfangen. 
Ich bin es gewohnt, die Bit-Bezeichnung mit dem binären Exponent 
gleichzusetzen, die sehen das eher als "Bezeichner". Man könnte auch 
A,B,C,... verwenden, dann wäre es klarer.

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.