Hi, ich überlege einen RS485 Bus für mich zu Basteln, Habe hier viel gelesen und dabei wird of diskutiert, wie das bei vielen Nodes und RS485 ist, wenn zwei gleichzeitig senden wollen. Ich habe noch 1 Doppelader frei und nun die tolle Idee gehabt, eine BUSY line zu machen, damit müsste ich doch auf der sicheren Seite sein, oder??
Nein. Was passiert wenn mehrere wollen und Busy endet? Was passiert wenn mehrere wollen und nicht Busy ist? Das funktioniert erst, wenn du das Busy mit einer eindeutigen ID wie CAN fährst um Konflikte aufzulösen.
Das Protokoll muss so gestaltet sein dass immer nur einer sendet. Falls dann doch mal eine Störung auftritt so muss diese über XOR nzw CRC Checksummern erkannt werden.
Ich kam ebenfalls auf die Idee und bin gerade dabei einen Hausbus mit einer Handshake (Busy) Leitung zu ralisieren. Ich habe die ersten Parts bereits fertig (PC Interface, Rolladensteuerung und Testclient) und ein wenig mit Microcontroller und C# programmiert. Ich bin bis jetzt sehr zufrieden damit. Jeder Busteilnehmer prüft ob die Handshake Leitung frei (low) ist. Um zu senden wird die Handshakeleitung high gesetzt und dann erst gesendet. In dieser Zeit kann kein anderer Busteilnehmer senden. Erst wenn die Leitung wieder low ist darf ein anderer senden. Die Rolladensteuerung habe ich gerade erst gestern fix montiert, bin gerade dabei die nächsten Komponenten zu bauen. Wenn ich mehr Erfahrungen gesammelt habe kann ich ja wieder berichten.
Vergesst das mit der Busy Leitung. Baut einen soliden Single Master Bus auf und gut. Dazu gibts schon ein halbes Dutzend Threads im Forum. MFG Falk
Ja, es gibt 3 Leitungen.. Ich vernetze meinen Bus mit CAT5 Kabeln für +, -, A, B, Handshake und habe noch 3 weitere Leitungen frei für spätere Erweiterungen (z.B. digitale Audioübertragung, ...). Das 2 Teilnehmer die Leitung gleichzeitig hochziehen ist fast unmöglich. In meinem Testprogramm mit Endlosschleifen bei 3 Teilnehmern die unterschiedlich senden und empfangen gab es keine Probleme. Sollten doch mal 2 Teilnehmer zur gleichen Microsecunde hochziehen wollen wird der Befehl wahrscheinlich nicht ankommen. Derzeit wird über einen Timeout die Handshake wieder freigegeben. Eine Rückbestätigung habe ich (noch) nicht implementiert. Einen Singlemaster wollte ich nicht da von mehreren Teilnehmern aus Schaltbefehle ohne Verzögerung gesendet werden sollen. Dzt. gibt es keine merkbare Verzögerung wenn ich eine Taste drücke die auf einem anderen Teilnehmer ein Relais schalten soll. Wenn gerade ein anderer Teilnehmer z.B. eine Temperatur sendet ist die Verzögerung auch nur ein paar Millisekunden. Alles in allem ist das die optimale Lösung für mich da ich 1. Hobbybastler bin und 2. in meinem Haus vielleicht max 10 Teilnehmer haben werde. Eine prof. Lösung sieht wohl anders aus aber um das geht es bei mir nicht, das muss jeder selber entscheiden. Gruß Wolfgang
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.