PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : RS485- Pegel



ngblume
24.01.2007, 10:29
Guten morgen ...

ich bastele gerade ein wenig an einem underwater rov...
dabei bin ich auf www.aquaticus.info gestoßen..
dort gibt es einen rs232-rs485 converter der genau meinen erwartungen entsprach.. nachgebaut (da ich keine platinen ätzen kann, RS232-TTL von pollin erweitert..)
RS485 möchte ich halb-duplex mit 2 adern aufbauen..
in diesem zusammenhang sind mehrere Fragen aufgetreten die ich auch nach längerer recherche nicht beantworten kann:

- muss ich vom MAX485 den RX mit dem TX von TTL verbinden oder TX-TX ? (vor allem wegen der kombination von Pollin-RS232-TTL-Wandler mit MAX485)
- den gesamten wandler habe ich mal an ein oszilloskop angeschlossen..
resultat: wenn ich beide RS485 adern differentiell messe, kommt nichts raus (sollte zur definition passen) -> also gegen masse. dann allerdings habe ich kein invertiertes signal sondern zwei identische signale..
was in meinen augen der definition widerspricht..
muss ich jetzt einen gegen masse messen und den anderen gegen 5V um die invertierung zu erreichen ?
Das würde allerdings bedeuten, dass im kabel selber zwei identische signale fließen und das würde der idee der störungsverhinderung entgegenstehen oder ? (hoffe, dass ist noch verständlich ;-) )
- und dann habe ich auf einer seite der links der wikipedia seite zu rs485 gelesen, dass die polung wichtig ist.. heißt das, dass ich immer den pol 6 des MAX485 mit der selben ader verbinden muss und identisches auch für pin 7 ?
- zum abschluss: da für RS485 kein protokoll definiert wurde, muss man sich das selber bauen.. kein problem allerdings wird beim vorschlag für ein protokoll meistens vorgeschlagen das erste packet mit 9 bit zu senden (8 für adresse und 1 für identifikation als adresse) -> später dann die 8-bit variante für daten.. dann müsste ich ja auch die uarts umschalten oder ?
könnte ich nicht in die datenpackete (bzw. nur ins erste) den adressaten einbauen..? es "lesen" ja eh alle mit und können dann entscheiden, ob sie was tuen müssen oder nicht .. bzw. ich könnte einfach einen kommando standard entwickeln der in die 8-bit ein kommando steckt (zum beispiel alle 26 buchstaben) und dann nur der betroffene Slave darauf reagiert.. somit würde die adressierung wegfallen.. Frage: ist das möglich ?

Vielen dank für die antwort im voraus..

MfG
ngb

P.S.: hoffe, dass ist noch halbwegs verständlich ;-)

Vitis
24.01.2007, 17:09
also, das mit den 9 Bit hat halt einfach praktische Gründe.
Was unterscheidet ein Datenbyte von einem Adressbyte ?
Beide sind 8 Bit lang, können nen Wertebereich von 0 - 255
annehemen ... hmmm. Daher eben aha, hier kommt ein 9-Bit
ergo hier beginnt Protokoll, ab hier gehts los. Ne alternative
wär auch über Timer möglich, von wegen aha, 5ms keine Daten,
das nächste Byte müssen dann Adressen sein.
Aber für Version B muss halt das Timing stimmen, sprich durch
die Timeouts verlierste was an möglicher Übertragungsrate, dafür
muss halt bei Variante A n Bit mehr übertragen werden.
Wichtig ist, dass alle Empfänger merken wann wo das Paket
anfängt und wo aufhört um verstehen zu können ob sie jeweils
gemeint sind, auch wenn mal n Byte irgendwie verloren geht
muss der Empfänger sich immer neu orientieren können.
Ach so, auch ein Buchstabe hat nur einen Zahlenwert der ihn
als solchen identifiziert (Siehe ASCII).

Die Pegel der 485 sollten gegenläufig sein, denn genau darauf
beruht die Funktion der 485 und auch die tollen Eigenschaften
bezüglich Reichweite. Der Häufigste Fehler bei nem 485-Netz
ist der AB-Tausch, sprich vertauschen der LEiter.
Witzigerweise erhält der µC noch Daten, nur stimmt eben nix mehr.

Dout auf RX Din auf TX werden die Dinger angeschlossen. Dann noch
zu berücksichtigen, der Busteilnehmer muss den Bus aktiv belegen
und auch wieder freigeben wenn er mit seiner Übertragung fertig ist.
Auch ein häufiger fehler, sprich Busteilnehmer sendet Daten drauf,
obwohl Bus noch von anderem Teilnehmer belegt. Dafür hat der Max485
extra 2 Pins, die Ihm die Datenrichtung eingeben. Ein passiver Teilnehmer
muss immer auf Horchmodus stellen.

PS: Zum Protokoll: Für Single-Master reicht ne Empfängeradresse,
für Multimaster geht das so nicht mehr, da muss der Slave wissen,
wer will was von wem.

ngblume
28.01.2007, 13:33
vielen dank-..
werde ich versuchen zu berücksichtigen..

MfG
ngb