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.
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 ;)
...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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.