Hallo, Für mein Projekt(Flugsimulator) will ich mehrere ATMega/ATXMega-Module und ggf. wenige FPGA-Module miteinander verbinden. Schätzungsweise ca. 30-50 Module. Die Module sollen Daten an einen Server senden können, Befehle von diesem empfangen und auch untereinander Befehle senden können. Beispielsweise soll ein Modul ein Taster haben, um die LED's der beleuchteten Drucktaster und Anzeigen, etc. auf den anderen Modulen zu testen. Das sollte auch funktionieren ohne das der Server eingeschaltet ist. Nachtrag: Distanzen ca 10-30 Meter. Der Server ist in einem Serverschrank in einem anderem Raum. In dem Schrank befindet sich auch ein Baugruppenträger in dem ein oder mehrere Einplatinenrechner platz finden sollen, die auch Befehle an die Module senden sollen und von diesen Daten abrufen können. Platinen sollen gefertigt werden, bestücken will ich diese selbst soweit möglich. Ich will aber ohne irgendwelche Shields/Hats auskommen, Module sollen nur aus einem PCB bestehen, da diese zum Teil in eigens angefertigte Gehäuse eingebaut werden und dadurch teilweise die Platinengröße bzw. maximale Höhe Vorgegeben wird. Zuerst war der Plan jedes Modul zu einem "Switch-Modul" via RS232 oder RS485 zu verbinden. Switch-Module sollten das Routen der Datenpakete bewältigen. RJ45 Buchsen auf den Platinen, Verbindung via gekreuztem Lan Kabel. Einige Module sollten mehrere Transreciver haben, diese Module sollten dann auch Routen können. Nun bin ich mir aber nichtmehr so sicher ob diese Idee überhaupt so gut ist, da es viele Möglichkeiten für Fehler gibt und dadurch die Switch-Module ggf. zum Flaschenhals bei der Datenübertragung werden. Ich müsste selbst die ganze Software schreiben, was wohl sehr viel Zeit braucht, die ich dann nichtmehr in den Rest des Projekts stecken kann. Desweiteren müsste ich immer aufpassen auch ein Crossover Kabel zu verwenden oder nicht ausversehen das Modul mit einem Ethernet Netzwerk zu verbinden. Softwaremäßig könnten auch unzählige Fehler eingebaut werden(Was passiert wenn ein Modul mit z.b. 2 Transrecivern 2 Leitungen zum Switch-Modul hat, etc..) Mir ist eingefallen das ich da doch dieses WIZNet Modul noch rumliegen habe und die Firma hat ja auch UART zu Ethernet-Chips im Portofolio, Lantronix bietet etwas ähnliches an. Nun ist meine Frage, welchen Weg würdet Ihr gehen? Momentan tendiere ich zur Lösung mit den WIZNet Chips, da diese günstig sind, ich mich (fast) nicht um die Software kümmern muss, Standart RJ45 Buchsen auf den Platinen vorsehen kann, Standart Lan-Kabel verwenden kann und das ganze für mich weniger Fehlerquellen wie eine RS-232/485 Installation hat. Oder habt Ihr noch ganz andere Ideen auf die ich gerade nicht komme? Leider tendiere ich ab und zu Dinge zu verkomplizieren mit dem Ziel sie Flexiebler zu machen. Schonmal Vielen Dank für eure Antworten Gruß, Christian
Ethernet hat hier den Vorteil, dass du auf fix und fertige Switche zurück greifen kannst mit allen damit verbundenen Debug Möglichkeiten. Wenn es auf ein paar Euro mehr oder weniger nicht ankommt würde ganz klar Ethernet bevorzugen. Anstelle der Wiznet Module könntest du Dir auch mal die CrumbX1-Net Module anschauen, da ist nämlich ein Xmega + Ethernet Controller drauf. Vielleicht genügen Dir die (wenigen) herausgeführten I/O Pins. Die aktuelle Beispiel-Firmware bekommst du dort: http://stefanfrings.de/net_io/index.html. Ethernet ist natürlich deutlich aufwändiger zu programmieren, aber das sollte niemanden bei der großen Anlage abschrecken. Ich denke, die Vorteile überwiegen dort.
Verrate doch mal was zur gewünschten Datenrate und Latenz. Als erstes klingt es mal, als wäre CAN hier deutlich geeigneter und gleichzeitig einfacher & billiger. Ein externes Ethernet-Modul (WIZNet, enc28j60, ...) an einem Mikrocontroller ist eine ziemliche Krücke. Wenn die Wahl doch auf Ethernet fällt, solltest du dir überlegen einen Mikrocontroller mit integriertem Ethernet-Controller, wie z.B. STM32, zu nehmen. Das ist letztendlich besser integriert und du hast weniger Komponenten.
Christian B. schrieb: > Leider tendiere ich ab und zu Dinge zu verkomplizieren mit dem Ziel sie > Flexiebler zu machen. Egal was Du heute für Optionen der Optionen einplanst, morgen wirst Du was brauchen an das Du nicht gedacht hast. Definiere mal was an Daten und Latenz gefordert ist. Im einfachsten Fall hast Du dann einfach 50 Knoten am gleichen RS485 Bus, die mit minimaler Verkabelung und minimalen Kosten ein einfaches Protokoll fahren. > Ich > müsste selbst die ganze Software schreiben, Modbus Protokoll auf den Controllern laufen lassen. Gibts fertig und 'open' und nimmt Dir das meiste ab. > da es viele Möglichkeiten für Fehler gibt Ja, und es könnte auch ein Flugzeug auf den Serverschrank fallen ... Vergiss die Router, wenn Du die nicht zwingend brauchst. Häng alles an RS485. 1Mbit über 40m sollte noch kein Problem sein. Wenn was kaputt ist, muss es repariert werden, so einfach ist das. Man kann auch RS485 Transceiver vom dauerhaften Senden abhalten, oder einfach einen Bus verwenden, der durch einzelne Knoten nicht blockiert werden CAN (;-))
Erstmal vielen Dank für eure Antworten! So, ich habe mal ein schnelles Diagramm erstellt was vorhanden ist bzw. wie ich mir das in etwa vorstelle. Die meisten Daten müssen eigentlich nur übertragen werden, sobald sich etwas ändert. Das entsprechende Modul prüft periodisch die angeschlossenen Taster/Drehschalter/etc. und vergleicht dann mit dem Status im RAM, Encoder werden ggf. über Interrupts gelesen, Temperatursensoren werden nur auf PCB's eingesetzt die viel Abwärme produzieren bzw. auf PCB's die eingehaust sind um Überhitzungen durch LED's zu minimieren(Möglicherweise werde ich das anders lösen). Ich schätze die größte Auslastung bringen die Befehle zum Schalten der LED's bzw. 7-Segment anzeigen, aber auch hier muss nicht jede Sekunde jedes einzelne Modul angesprochen werden. Alles was hohe Datenraten erfordert läuft über andere Schnittstellen(Grafikdisplays) und soll nicht durch die Module angesteuert werden. Leider kann ich keine Zahlen nennen zur Latenz und Datenrate, alles Zeitkritische läuft über die Displays bzw. PC/Server. Es würde aber auch kein Spaß machen erst 2 Sekunden zu warten bis die Hintergrundbeleuchtung regiert, wenn man den entsprechenden Potti betätigt. Ich werde mich mal in die Themen CAN und Modbus einlesen. Ich meinte mit den vielen Fehlermöglichkeiten eher das ich mir da mehr Fehler in Soft und Hardware selbst einbauen kann, ich habe schonmal Tage verbracht nen Fehler zu finden dann lag es am dem fehlenden Bypass-Cap... ich hatte schon den Hersteller verteufelt :0 Toll, jetzt ist der Anhang 3 mal da...
:
Bearbeitet durch User
Ich empfehle eine der drei Möglichkeiten: 1. CAN 2. Modbus RS485 3. Modbus IP Jede dieser Optionen hat ihren eigenen Charme. Leg mal deine Kommunikationsparameter bzw. Anforderungen fest und sieh dir an, welche Option am besten für dich passt.
Eine evtl nicht ganz uninteressante Eigenschaft von Ethernet ist die galvanische Trennung der angeschlossenen Geräte.
foobar schrieb: > Eine evtl nicht ganz uninteressante Eigenschaft von Ethernet ist die > galvanische Trennung der angeschlossenen Geräte. Stimmt. Jedoch ist bei RS485 eine galvanische Trennung ebenso dringend anzuraten. Und für CAN gibts auch Möglichkeiten.
Tut mir leid das ich den Thread nochmal ausgrabe, aber ich konnte mich erst vor kurzem wieder mit dem Thema beschäftigen. Ich werde jetzt den CAN Bus nehmen, das ist wohl der Simpelste aufbau. Danke nochmal für alle Beiträge, ihr habt mir sehr geholfen!
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.