Forum: Mikrocontroller und Digitale Elektronik Ethernet-Modul oder doch RS232/485


von Christian B. (christian_b5)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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.

von Dr. Sommer (Gast)


Lesenswert?

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.

von Michael K. (Gast)


Lesenswert?

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 (;-))

von Christian B. (christian_b5)


Angehängte Dateien:

Lesenswert?

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
von da1l6 (Gast)


Lesenswert?

Multi-Master + Mikrocontroller -> CAN-Bus

Gibt AVRs (und ARMs) mit CAN Controller integriert.

da1l6

von Thomas S. (selli69)


Lesenswert?

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.

von foobar (Gast)


Lesenswert?

Eine evtl nicht ganz uninteressante Eigenschaft von Ethernet ist die 
galvanische Trennung der angeschlossenen Geräte.

von Thomas S. (selli69)


Lesenswert?

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.

von Christian B. (christian_b5)


Lesenswert?

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
Noch kein Account? Hier anmelden.