Mal eine kleine Frage zum RS485 Bus... Ich benutze den MAX485 und habe den receiver immer aktiviert. Dachte mir nun, dass ich um kollisionen zu verhindern den Treiber manuell aktivieren muss bevor ich was sende. Ich habe zwei Teilnehmer am Bus, der eine Sendet einen Befehl, der andere antwortet leicht verzögert darauf. Wenn der "Master" (von dem der Befehl ausgeht) jetzt sendet und ich den Drive-Enable aktiv lasse (also dauerhaft sende) kommt es nicht zu einer Kollision - ich empfange die Antwort meinees "Slaves" weiterhin ohne Probleme. Wie ist das zu erklären? Ich dachte, ich würde den Bus "übertreiben" wenn ich Drive Enable dauerhaft an lasse. Oder kommt es nur zu Bus-Kollisionen wenn auch beide tatsächlich senden?
Bernd wrote: > Mal eine kleine Frage zum RS485 Bus... ... > Wenn der "Master" (von dem der > Befehl ausgeht) jetzt sendet und ich den Drive-Enable aktiv lasse (also > dauerhaft sende) kommt es nicht zu einer Kollision - ich empfange die > Antwort meinees "Slaves" weiterhin ohne Probleme. > > Wie ist das zu erklären? Ich dachte, ich würde den Bus "übertreiben" > wenn ich Drive Enable dauerhaft an lasse. Oder kommt es nur zu > Bus-Kollisionen wenn auch beide tatsächlich senden? Das könnte ich mir so erklären, daß der Daten sendende Treiber genügend Pegel gegen den gerade nicht sendenden aufbringt, daß der Receiver die Daten noch lesen kann. Wenn beide gleichzeitig Daten übertragen, wird Müll auf dem Bus sein. Falk
Mein wandler ist ganz (sehr) ähnlich zu diesen hier: http://www.e-lab.de/diverse/RS232-485sch.pdf Ich hab halt keine Ahnung wie ich die RTS Leitung vernünftig in LabView ansteuern kann. LV hat zwar funktionen um die leitung zu setzen/nicht zu setzen aber das funktioniert nicht in real time (wenn ich die Leitung setze und direkt danach sende kann es sein, dass er erst mit dem Senden anfängt und danach den Drive Enable setzt). Wartezeiten bringen leider auch nichts, weil ich das gleiche Problem auch beim Beenden des Sendevorgangs habe - wenn der Slave antwortet dann kann es sein, dass die Drive-Enable Leitung des Masters noch gesetzt ist (weil das "disablen" des RTS auch nicht in realtime erfolgt). Ich müsste den Slave auch ewig lang warten lassen bis er was senden darf weil ich ja keine möglichkeit habe den Bus auf Aktivität ab zu fragen.
Wenn du dir die Pegel auf dem Bus aussuchen kannst, also kein bereits fertiges Gerät mit einbinden musst: Nimm statt RS485-Treiber einfach CAN-Treiber. Keinen CAN-Bus wohlgemerkt, nur die Treiberbausteine dadurch ersetzen. Dann löst sich das Problem in Luft auf und die Enable-Leitung gleich mit.
Hallo, in LabVIEW kannst du einfach RTS setzen und beim Senden den Treiber aktivieren. Ein Terminal für RS485 unter LabVIEW findest Du unter http://schulen.eduhi.at/htlbraunau/lehrer/ploetz/Labbsp/index.html "Terminal 3". Gruß Franz
Bernd wrote: > Mein wandler ist ganz (sehr) ähnlich zu diesen hier: > > http://www.e-lab.de/diverse/RS232-485sch.pdf > > Ich hab halt keine Ahnung wie ich die RTS Leitung vernünftig in LabView > ansteuern kann. Ich auch nicht (kein LabView) ... > (weil das > "disablen" des RTS auch nicht in realtime erfolgt). Den Spaß hatte ich mit einem eigenen Programm und einem USB-RS232-Adapter. RTS kam nicht in Realtime. Ich habe mir damit geholfen, daß ich mir einen USB-RS485 mit einem AVR und den Treibern von ww.obdev.at(?) gebastelt habe. Mit dem TXC-Flag des USART kann man die Richtung recht gut steuern. Falk
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.