Es gibt viele Leute, die Intersse an einem Hausbus haben oder bereits einen entwickelt haben. Die meisetn haben dabei den CAN-Bus verwendet, haben aber auch meistens ein eigenes Application-Layer-Protokoll entwickelt. Da hab ich mir überlegt, man könnte doch ein Projekt starten, das ein möglichst felxiebles Protokoll besitzt und möglichst universell einsetzbar ist. Hier mal ein paar Ideen von mir. Was Haltet ihr davon, was würdet ihr anders machen, hätte jemad interesse daran mit zu entwickel? Ein Application-Layer-Protokoll(ALP), das Bus-unabhängig ist. Als Bussysteme denke ich an -Can -Rs485 -Zweidraht Bus, I2C Man hätte die Möglichkeit, den jeweils am besten passenden Bus zu verwenden. Man könnte zum Beispiel eine kurze Stichleitung mit IIC Ausführen. Sinnvoll wäre es auch, das Protokoll so auszulegen, das auch andere Übertragungsmedien in frage kommen (Powerline, Funk, Infrarot). Wenn ich zum Beispiel eine Lampe habe, zu der keine Busleitung führ und ich nicht die Decke aufklopfen will könnte man einfach von einer Steckdose aus, die am Bus angeschlossen ist, die Lampe schalten. Wenn man dann noch einen "Rückkanal" mit einer anderen Modulationsfrequenz hat, kann man erkennen, wenn jemand im weg steht und einfach noch mal senden. Das ALP würde ich auf CAN zuschneiden, denn das CAN Protokoll hat die meisten Vorgaben. RS485 gibt kein Übertragungsprotokoll vor, man kann es sich zurechtschneiden. Jeder Teilnehmer bekommt eine feste Adresse. Wenn man 11 bit Adressen verwendet gibt es 2048 verschiedene Adressen. Für ein Normales Haus müsste es gut reichen. Bei extended CAN frames würden dann abzüglich Sender und Empfängeradresse noch 7 bit für eine art Register- oder Portadressierung übrig bleiben. Dabei gibt es Standartports, die jeder Teilnehmer unterstützen muss. Zu diesen Standartports gehört ein Ping port, eine eindeutige Hardwarekennung und die Typenkennung(gleiche Typen, die sich auch gleich ansteuern lassen, haben eine andere Hardwarekennung). Auf einem Port würde ich ein electronical data sheet realisieren. In ihm sind die wichtigsten Informationen zum ansteuern des Teilnehmers gespeichert. Auf welchem Port man was für Daten in Welchem Format Abrufen kann. Weitere Information, wie zum Beispiel ausführliche Bezeichnungen, würde ich in Form von "INI-Format" Dateien auf dem Computer bereitstellen. Eine weitere Sache, die man implementieren sollte sind Broadcasts. Mit ihnen kann man sehr schnell alle Teilnehmer auf dem Bus anzeigen. Ideal wäre es, wenn man auch Events durch das Netzt schicken kann und jeder Teilnehmer entscheidet, ob es für ihn wichtig ist( Wie es eigentlich bei CAN gedacht ist). Dem I2C würde ich noch eine besondere Rolle zukommen lassen. Da I2C andere Adressen hat( 7 oder 10 bit), die teilweise fest vom Hersteller vorgegeben sind. Deshalb kann man diese Geräte nicht direkt mit dem Bus verbinden. Ich denke man könnte diese am Router zum I2C Bus als Virtuelle Teilnehmer einbinden, die spezielle I2C Schreib- und Leseroutinen haben und allgemein angesteuert werden. Für Bekannte Geräte( z.B. Temperaturfühler) kann man dann einen Virtuellen Busteilnehmer einblenden der dann die Temperaturfunktionen unterstützt. Mit Hilfe der Reservierten Adresse bei I2C für andere Protokolle könnte man dann Pakete mit 11 bit Adressen auch durch einen I2C Bus schleusen.
ist zwar nicht exakt dass, was du realisieren moechtest, aber vielleicht trotzdem interessant... http://www.hth.com/snap/
Hört sich im ersten Augenblick gut an. Ich halte aber nichts von einer solchen EierlegendenWollMilchSau. Der Code Overhead ist mir zu groß. Da muss man ja schon für kleine Sachen einen fetten Mega nehmen. Ich verstehe auch nicht genau wieso du die unterschiedlichen Busse willst.Die 2 Drähte von CAN kann man überall hinlegen und somit auch alles steuern. Bei solchen komplexen Systemen ist auch die Fehlersuche komplex. gruß Norbert
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.