Forum: Mikrocontroller und Digitale Elektronik Probleme mit RS485


von Olaf R. (gruser)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe Probleme mit der RS485, der rechte Teil des Bildes ist in 
Ordnung, der TX-enable geht auf "1" (rote Kurve), und die Daten (die 
weiße Kurve, hier z.B. der Zahlenwert 170 bzw. binär 10101010) werden 
übertragen. Aber warum in aller Welt gehen beide Signale erst einmal auf 
logisch "1" am linken Bildrand? Das ist mir noch nicht ganz klar, hier 
der Code den ich in Visual Basic 2005 verwendet habe:

Sub Transfer(ByVal Wert)

        Using com1 As IO.Ports.SerialPort = 
My.Computer.Ports.OpenSerialPort("COM3")

            com1.Encoding = System.Text.Encoding.GetEncoding(28591)
            com1.BaudRate = 57600
            com1.DtrEnable = True
            com1.Parity = IO.Ports.Parity.None
            com1.WriteTimeout = 500
            com1.Write(Sendung, Wert, 1)
            com1.Close()

        End Using

    End Sub


Vielleicht hat wer eine Idee? Muss das so sein?

Grüße
Olaf

von spess53 (Gast)


Lesenswert?

Hi

Startbit.

MfG Spess

von Stefan R. (sero)


Lesenswert?

Hallo,

bin ich richtig, das der lila Plot das Transmit enable ist, welches Du 
aus dem DTR der seriellen Schnittstelle generierst ?

Der Grund, warum Du vor dem eigentlichen Byte, was Du sendest, eine 
steigende und am Ende eine fallende Flanke hast wird das Start und das 
Stopbit sein, was Deine serielle Schnittstelle automatisch um das zu 
sendende Byte legt.


Viele Grüße
Stefan

von Olaf R. (gruser)


Lesenswert?

Hallo Stefan,

ganz genau, mit "com.DtrEnable = True" wird der DTR-Ausgang entsprechend 
geschaltet, das scheint ja auch gut zu klappen. Die Übertragung der 
Daten (weißer Plot) erfolgt während der Master bzw. der PC den Bus auf 
Senden einstellt (lila Plot). Bei der Datenübertragung gibt es ein 
sauberes Startbit, ist hier auf dem Bildchen schlecht zu sehen. Aber was 
sich da links im Bild abspielt kann doch eigentlich kein Bit sein, 
schaut mal wie lang ein normales Bit dauert und wie lang dieses dann 
wäre, und dann die lange Pause bis zur eigentlichen Datenübertragung. 
Also für mich wäre die Welt eher in Ordnung wenn ich nur den rechten 
Teil gemessen hätte ;(

von Stefan R. (sero)


Lesenswert?

Also ich weiss nicht so recht, aber der linke Teil des Oszi Schirmes 
sieht für mich aus, wie das Ende der vorher gehenden Übertragung, oder 
bist Du sich das Du nur ein Byte auf den Bus geschickt hast !

von Olaf R. (gruser)


Lesenswert?

Kann eigentlich nicht sein, wenn ich ein Zeichen übertragen will, geht
DTR wie auf dem Bild zwei mal auf Senden. Wenn ich 3 Zeichen übertrage, 
geht DTR 6 mal auf Senden (bzw. logisch 1).

Wobei muss dir Recht geben, die billigen Oszilloskope triggern nicht
immer sauber, fürchte bin auch einer auf den der Spruch passt: Wer
billig kauft der kauft zweimal ;)

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Was ist hier denn dargestellt?
Von einem RS485-Signal ist das bestenfalls die Hälfte, RS485 ist 
differentiell...
Und RS485 hat auch kein DTR, DSR usw. usf.
Auch ein PC mit einer COM3 hat vorrangig (wenn überhaupt) nur eine 
RS232.
Gibts zu dem Bild auch noch irgendwelche Skalenteilungen (V/div und 
Zeitbasis)?

>Aber warum in aller Welt gehen beide Signale erst einmal auf
>logisch "1" am linken Bildrand?
Die gehen nicht, die sind schon...

Der ist auch nicht schlecht:
 com1 As IO.Ports.SerialPort = 
My.Computer.Ports.OpenSerialPort(COM3)

von Olaf R. (gruser)


Lesenswert?

Lothar Miller wrote:
> Was ist hier denn dargestellt?
Das Versenden eines Bytes über eine RS485
> Von einem RS485-Signal ist das bestenfalls die Hälfte, RS485 ist
> differentiell...
Gemessen A (bzw. TX) gegen Masse
> Und RS485 hat auch kein DTR, DSR usw. usf.
Der Kanal DTR wird benutzt um TX_Enable zu schalten (zum Wechsel von 
Empfang auf Senden)
> Auch ein PC mit einer COM3 hat vorrangig (wenn überhaupt) nur eine
> RS232.
Das stimmt, mit entsprechenden Treiberbausteinen (MAX485) aber auch 
geeignet um RS485 Protokolle zu verwenden
> Gibts zu dem Bild auch noch irgendwelche Skalenteilungen (V/div und
> Zeitbasis)?
2V/div, Zeitbasis kann ich nicht mehr nennen
>
>>Aber warum in aller Welt gehen beide Signale erst einmal auf
>>logisch "1" am linken Bildrand?
> Die gehen nicht, die sind schon...
Stimmt nicht ganz, eine steigende Flanke war Triggersignal für Messung
>
> Der ist auch nicht schlecht:
>  com1 As IO.Ports.SerialPort =
> My.Computer.Ports.OpenSerialPort(COM3)
Ist nicht wirklich relevant, benutze Software auf verschiedenen Rechnern 
und habe unterschiedliche Schnittstellen, an der Benamung sollte es 
nicht liegen

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.