MODBUS RTU -> CANopen DSP 309-2 LSB/MSB

Gast #2482059
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.
Gast #2483087
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 ;)
Gast #2483127
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.

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