Protokoll für serielle Übertragung, Bit 9?

Oct 27, 2007 22 Replies

ACK, wenn es so wäre. Isset aber nicht: Die Verkabelung ist als elektrischer Ring ausgeführt und wird ganz normal als RS485-Bus benutzt. Dadurch, dass die Enden eben keinen Ra haben sondern wieder miteinander verbunden sind, gibt es eben für die Welle, die sich auf dem Kabel ausbreitet, kein Ende mehr. Also eine Welle ab jeweiligem Transmitter wetzt links rum, die andere rechts eröm. Und gerade, wenn sie meinen, einen Busabschluss zu brauchen, kommt der Zwillingsbruder "andere Welle" und lädt die Leitung wunschgemäß auf. Drum gibt es keinen Grund für eine Reflektion etc. Nix wird an Leistung zusätzlich verbraten, alle sind glücklich :-)

Als Nachteil gibt es nur den doppelten Kabelaufwand, dafür keine hohen Verluste in den Ra und somit kannste 256 Teilnehmer dranhängen, wo sonst nur offiziel sich 32 tummeln (dürfen). Unterm Strich dann wohl doch billiger, IMHO auf jeden Fall besser!

Sollte doch mal das Kabel unterbrochen werden, kann man mit ggf. verminderter Baudrate noch alle Teilnehmer erreichen, es gibt dann allerdings Reflektionen, da dann der Buss 2 offene Enden hat. So gesehen eine erhöhte Sicherheit gegen Kabelbruch als weiterer Vorteil.

Ich find die Idee genial! Das ist so simpel, da hätte ich selber drauf kommen können. Aber so Tricks hat mir in meinem Studium keiner beigebracht und heutzutage können die Jungs (und Mädels) nicht mal mehr richtig löten :-]

Saludos Wolfgang

Meine 7 Sinne: Unsinn, Schwachsinn, Blödsinn, Wahnsinn, Stumpfsinn, Irrsinn, Lötzinn. Wolfgang Allinger Paraguay reply Adresse gesetzt ! VoIP 02173 / 99 39 209 ca. 15h00..21h00 MEZ SKYPE:wolfgang.allinger

"Stefan Brröring" schrieb im Newsbeitrag news:fg6iot$p8f$ snipped-for-privacy@news1.ewetel.de...

Bit Stopbit

Ja, jetzt habe ich es endlich begriffen.

Danke.

Sven

Hallo Stefan,

anbei nochmal einen Schnipsel aus meinem Empfangs Code Hier werden immer Frames mit einer festen L=E4nge (8 Byte) empfangen:

typedef union { uint8_t Byte[8];

struct { uint8_t Adresse; uint8_t Befehl; uint32_t Daten; uint16_t CRC16; }; } RecFrameT;

typedef struct { uint8_t Befehl; Long Daten; } RecDataT;

typedef union { uint8_t Byte[29]; // 21 uint8_t Info; uint16_t Analog[2]; uint16_t Word; CounterDataT Counter; } SndDataCollectionT;

typedef struct { uint8_t Typ; SndDataCollectionT Daten; } SndDataT;

volatile RecDataT RecDaten; // Speicher f=FCr den vom Master // empfangenen Befehl volatile SndDataT SndDaten; // Speciher f=FCr die zu sendenen // Daten

// RS485 Interrupt SIGNAL(SIG_UART_RECV) { uint8_t b; static uint16_t crc, RecCRC; static uint8_t FrmByteCnt=3D0; static RecFrameT Frame;

b =3D UDR; // Empfangenes Byte speichern

// Pr=FCfen ob das Adressflag gesetzt wurde if(RS485Timeout=3D=3D0) { if(b =3D=3D ModulID) { UCSRA =3D UCSRA & !(1

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required