Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Mein Problem:
Ich habe einen messwiderstand mit platine und transceiver drauf (so komplett gekauft). der transceiver ist von TI (SN65HVD3082).
Laut dem Verkäufer soll das ganze über RS-485 kommunizieren und zwar mit einer Baudrate von 20888, 8 Datenbits und einem Stopbit (die nennen das Multiprozessor Protokoll).
Der messwiderstand wird durch das senden der geräteadresse abgefragt (eine 2). und soll daraufhin 5 byte zurücksenden mit den gemessenen werten.
ich habe jetzt das messmodul an einen rs-485 zu usb konverter angeschlossen und verscucht über VISA die schnittstelle anzusprechen. an dem konverter blinkt die lampe für Tx wenn ich die adresse sende, aber zurückkommen tut nix!
Muss ich da jetzt noch nen treiber programmieren oder wie? Soll doch eigentlich über RS-485 laufen und das protokoll ist ja nur das senden der Geräteadresse?! oder nicht?
Schau' dir mal den Error-Ausgang vom Einstellen-VI an - ein Standard-PC respektive die Standard-API-Funktionen können 20888 nicht. Ob LV das irgendwie kann?
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
' schrieb:Schau' dir mal den Error-Ausgang vom Einstellen-VI an - ein Standard-PC respektive die Standard-API-Funktionen können 20888 nicht. Ob LV das irgendwie kann?
also von LabVIEW aus bekomme ich keine fehlermeldung! d.h. alles läuft fehlerfrei durch inkl. der initialisierung der schnittstelle. gibt es denn vielleicht einschränkungen bei der baudrate zur übertragung über rs-485? ist denn das programm wenigstens soweit richtig? oder muss ich noch mehr einstellungen vornehmen über die properties oder sowas?
ich habe mir mal einen RS-485 zu RS-232 Konverter selber bebastelt. Die Datenübertragung habe ich mir dann mit dem Hyperterminal angeschaut, um zu schauen ob überhaupt etwas gesendet wird. Jetzt weiß ich nicht ob der Hyperterminal auch mit dem USB-Port funktioniert?
Sonst musst Du mal nach einer Software suchen, welche das kann.
Wäre doch möglich, das die Daten gar nicht erst ankommen?
ich habe mir mal einen RS-485 zu RS-232 Konverter selber bebastelt. Die Datenübertragung habe ich mir dann mit dem Hyperterminal angeschaut, um zu schauen ob überhaupt etwas gesendet wird. Jetzt weiß ich nicht ob der Hyperterminal auch mit dem USB-Port funktioniert?
Sonst musst Du mal nach einer Software suchen, welche das kann.
Wäre doch möglich, das die Daten gar nicht erst ankommen?
Gruß
Lanos
also am konverter komm auf jeden fall was an, da ja dort die Tx lampe leuchtet! ob von dort aus auch was an das messmodul geht kann ich nicht überprüfen, da ich leider kein oszi zur verfügung habe! Was kann ich denn nur noch machen? is denn mit dem programm alles in ordnung oder habe ich da was vergessen zu initialisieren oder sowas?
' schrieb:gibt es denn vielleicht einschränkungen bei der baudrate zur übertragung über rs-485?
Nein, es gibt keine Einschränkungen hinsichtlich der Baudrate.
Zitat:ist denn das programm wenigstens soweit richtig?
Soweit würde ich prinzipiell sagen: ja. Was immer nichts schadet: Eine Zeitverzögerung zwischen Senden von Daten und Erwarten einer Antwort. Bei ein Zeichen Senden und fünf Zeichen Empfangen bei ca. 20kB würde ich mal 25ms warten.
Ist denn das Senden alleine der "2" ausreichend oder muss da nicht vielleicht ein abschließendes Zeichen (z.B. CRLF) folgen?
Was auf jeden Fall und wenn nur zur Verifizierung sehr gut ist, ist das Nachmessen der Pegel auf der Leitung mittels eines Oszilloskopes. Ca. 20kB entsprechen zwischen 45 und 50µs.
Außerdem: Hast du eine echte RS485, also eine Zweidraht-Verbindung, bei der sowohl auf dieser einen Leitung gesendet wie empfaneg wird? Oder hat du eine RS422, also eine Vierdraht-Verbindung. Hier gibt es für den Sende- wie für den Empfangskanal entsprechende Leitungen. Bei einer "echten" RS485 musst du verifizieren, ob der Konverter nicht möglicherweise eine Handshakeleitung zum Umschalten der logischen Kanäle braucht. Manchen Konvertern kann man nämlich sagen, sie sollen den Empfang, der grundsätzlich auch beim Senden auftritt (eine Leitung!) unterbinden. Dafür muss man den Empfang dann halt explizit freigeben.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Außerdem: Hast du eine echte RS485, also eine Zweidraht-Verbindung, bei der sowohl auf dieser einen Leitung gesendet wie empfaneg wird? Oder hat du eine RS422, also eine Vierdraht-Verbindung. Hier gibt es für den Sende- wie für den Empfangskanal entsprechende Leitungen. Bei einer "echten" RS485 musst du verifizieren, ob der Konverter nicht möglicherweise eine Handshakeleitung zum Umschalten der logischen Kanäle braucht. Manchen Konvertern kann man nämlich sagen, sie sollen den Empfang, der grundsätzlich auch beim Senden auftritt (eine Leitung!) unterbinden. Dafür muss man den Empfang dann halt explizit freigeben.
[/quote]
Ja wie gesagt habe kein Oszi.
Die verbindung ist eine 2-draht verbindung bei der das originale und das invertierte Signal und die masse übertragen werden, sprich: PIN 2 Data+ (B)
PIN 1 Data- (A)
PIN 5 GND
den KOnverter habe ich ohne hardware handshake gejumpert. d.h. CTS always enabled. ausserdem habe ich einen jumper auf "enable TxD driver only when trasmitting" gesetzt, damit ich später mehrere dieser messmodule auf den bus legen kann. ist das vielleicht der fehler? hat denn jemand vielleicht schon ma was in der art gemacht? ich weiss einfach nich mehr weiter?! Bitte helft mir!
Danke
Haste mal bei TI geschaut ob die vielleicht Application notes oder andere Design-Dokumente anbieten?
Gruß, Rob
Bitte Beachten:
Die obenstehenden Texteile können unter Umständen Sarkasmus und Ironie enthalten, für nicht erkannten Sarkasmus oder nicht erkannte Ironie wird keine Haftung übernommen.
N.B.: "Multiple exclamation marks, " he went on, shaking his head, "are a sure sign of a deseased mind." - Terry Pratchett
Das ist ein Nachteil.
Du könntest die Baudrate aber auch wie folgt verifizieren: Sende zu einem anderen PC (oder einer anderen COM innerhalb des selben PCs). Sende und Empfange zuerst mit 9600 Baud. Stelle dann beide - Sender und Empfänger - auf 20888 um und kucke, ob alles richtig geht. Dann stellst du nur den Empfänger auf 9600 und lässt den Sender auf 20888. Wenn jetzt immer noch alles geht, hast du ein Problem. Es ist nämlich noch lange nicht gesagt, dass auch tatsächlich 20888 herauskommen, obwohl genau dies eingestellt ist. Zumindest in WinXP-Standard-API ist es so, dass trotz Einstellung auf 20888 mit 9600 (bzw. der zuvor ringestellten Baudrate) gesendet wird.
Zitat:ausserdem habe ich einen jumper auf "enable TxD driver only when trasmitting" gesetzt,
Das klinkt wie eine sinnvolle Funktion. Das würde ich auch so machen.
Zitat:hat denn jemand vielleicht schon ma was in der art gemacht?
Ja, aber nicht ohne Oszi und nicht mit 20888 Baud
Außerdem nehm ich immer zwei Stoppbits, auch wenn da steht bzw. vorgeschrieben ist "ein Stoppbit". Heutezutage ist es gerade einer asynchronen Überragung egal, ob zwei oder eins.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Haste mal bei TI geschaut ob die vielleicht Application notes oder andere Design-Dokumente anbieten?
Gruß, Rob
ja habe ich schon nachgeschaut aber da is meiner meinung nach nix dabei woraus ich ableiten könnte was ich falsch mache?! die haben dort zwar nen beispiel benutzen aber nen usb seriell controller von ti. also nix für mich. ich versuche das ja mit dem ftdi in meinem fertigkonverter. was soll ich nur machen, mir gehen langsam die ideen aus!!!
Danke