Netzman
23.06.2010, 09:56
Hallo,
nach langer Arbeit kann ich die erste Version meines Microcontrollernetzwerks vorstellen.
Grundsätzlich kann man damit Daten mit wenig Aufwand zwischen µCs (und PCs, dazu später) austauschen.
Als Transportmedien sind bisher TWI und UART (Layer 0) implementiert. Diese haben die Aufgabe, Daten binär zu übertragen und sicherzustellen, dass diese auch ankommen.
Beim UART geschieht dies mit CRC8-Prüfsumme, ACK/NACK und Timeout, beim TWI mit CRC8-Prüfsumme und ACK/NACK.
Pro µC können mehrere Layer0 (Subnets) aktiv sein.
Weitere Transportmedien sind angedacht, zb. RFMxx-Module, SPI, etc.
Das eigentliche Netzwerk bildet der Layer 1, er fasst alle Layer 0 einheitlich zusammen, jeder µC (Node mit McNet) bekommt eine globale Adresse zusätzlich zur lokalen Subnetaddresse (bei TWI), kümmert sich um das Routing, den Adressaustauschprozess (Beim PowerUp wissen die Nodes nichts voneinander), das Finden der effizientesten Routing-Strecke und die Übertragung von Binärdaten.
Das Ganze ist auch noch HotPlug-fähig, d.h. die Nodes können in beliebiger Reihenfolge ein- und ausgeschaltet, resettet oder an- und abgesteckt werden.
Zusätzlich werden hier auch TWI-Slaves integriert (als Netzwerk-Node).
Zum Schluss kommt der Application-Layer 2, der ein Kommando und die Auftrennung in Datentypen ermöglicht und somit ein einfaches Interface zur Kommunikation bereitstellt.
Durch die Aufteilung in 3 Schichten mit jeweils eigenen Datenpuffern ergibt sich auch eine Warteschlange, sollte der darunterliegende Layer beschäftigt sein.
Die 2 Beispiel-Nodes senden sekündlich einen Ping zum anderen Node bzw. fragen die Richtung von einem CMPS03-Kompass ab.
Getestet auf 2-3x Mega32, verbunden über TWI oder UART.
Zur Zeit arbeite ich noch an einer Implementierung in VB.net mit serieller Verbindung, die auch schon größtenteils funktioniert, aber leider noch nicht ganz... Bei Interesse kann ich diese aber gerne posten.
Im Archiv befindet sich außer McNet noch meine bereits hier vorgestellte Timer Library sowie MyTWI von PicNick ( http://www.rn-wissen.de/index.php/TWI_Praxis_Multimaster ).
Wie der Titel schon sagt, handelt es sich hier um Version 0.1, also erhebe ich weder Anspruch auf Vollständigkeit noch Richtigkeit und bitte daher um Tester.
Schreiben könnte ich noch viel, beantworte aber lieber gezielte Fragen :)
mfg
nach langer Arbeit kann ich die erste Version meines Microcontrollernetzwerks vorstellen.
Grundsätzlich kann man damit Daten mit wenig Aufwand zwischen µCs (und PCs, dazu später) austauschen.
Als Transportmedien sind bisher TWI und UART (Layer 0) implementiert. Diese haben die Aufgabe, Daten binär zu übertragen und sicherzustellen, dass diese auch ankommen.
Beim UART geschieht dies mit CRC8-Prüfsumme, ACK/NACK und Timeout, beim TWI mit CRC8-Prüfsumme und ACK/NACK.
Pro µC können mehrere Layer0 (Subnets) aktiv sein.
Weitere Transportmedien sind angedacht, zb. RFMxx-Module, SPI, etc.
Das eigentliche Netzwerk bildet der Layer 1, er fasst alle Layer 0 einheitlich zusammen, jeder µC (Node mit McNet) bekommt eine globale Adresse zusätzlich zur lokalen Subnetaddresse (bei TWI), kümmert sich um das Routing, den Adressaustauschprozess (Beim PowerUp wissen die Nodes nichts voneinander), das Finden der effizientesten Routing-Strecke und die Übertragung von Binärdaten.
Das Ganze ist auch noch HotPlug-fähig, d.h. die Nodes können in beliebiger Reihenfolge ein- und ausgeschaltet, resettet oder an- und abgesteckt werden.
Zusätzlich werden hier auch TWI-Slaves integriert (als Netzwerk-Node).
Zum Schluss kommt der Application-Layer 2, der ein Kommando und die Auftrennung in Datentypen ermöglicht und somit ein einfaches Interface zur Kommunikation bereitstellt.
Durch die Aufteilung in 3 Schichten mit jeweils eigenen Datenpuffern ergibt sich auch eine Warteschlange, sollte der darunterliegende Layer beschäftigt sein.
Die 2 Beispiel-Nodes senden sekündlich einen Ping zum anderen Node bzw. fragen die Richtung von einem CMPS03-Kompass ab.
Getestet auf 2-3x Mega32, verbunden über TWI oder UART.
Zur Zeit arbeite ich noch an einer Implementierung in VB.net mit serieller Verbindung, die auch schon größtenteils funktioniert, aber leider noch nicht ganz... Bei Interesse kann ich diese aber gerne posten.
Im Archiv befindet sich außer McNet noch meine bereits hier vorgestellte Timer Library sowie MyTWI von PicNick ( http://www.rn-wissen.de/index.php/TWI_Praxis_Multimaster ).
Wie der Titel schon sagt, handelt es sich hier um Version 0.1, also erhebe ich weder Anspruch auf Vollständigkeit noch Richtigkeit und bitte daher um Tester.
Schreiben könnte ich noch viel, beantworte aber lieber gezielte Fragen :)
mfg