Forum: Mikrocontroller und Digitale Elektronik Wie ethernet zu Messgerät hinzufügen


von Mike (Gast)


Lesenswert?

Hallo zusammen!

Ich habe ein Modul zum Erfassen von analogen Messwerten entwickelt.
Simpler Aufbau mit analoger Signalkonditionierung, mehrere schnelle 
ADCs, STM32 und bisschen Speicher.

Aktuell wird das ganze über UART ausgelesen. Nun sollen die Messdaten 
mit labVIEW in einem größeren Aufbau erfasst werden. Als Verbindung in 
unserem Testaufbau wäre Ethernet zu bevorzugen (örtliche Position, 
usw.), mir ist aber klar, dass es auch andere Optionen gibt.

Wie funktioniert sowas? Wie "bringe ich meinem System Ethernet bei"? 
Geplant ist nicht, den vorhandenen UART auf Ethernet zu wandeln, sondern 
eher eine "native" Ethernet Schnittstelle an den STM32 anzubinden.
Hat hier jemand einen Startpunkt (Beispielprojekte, Lektüre, App-Notes) 
für Soft- und Hardware? Ich bin irgendwie ein bisschen überfordert :-/

VIele Grüße und Danke!

von Stefan F. (Gast)


Lesenswert?

Hat dein STM32 Controller denn Ethernet?

Wenn nicht musst du einen Ethernet Controller dran hängen, zum Beispiel 
einen CP2201 und einen TCP-IP Stack in dein Projekt einbinden, zum 
Beispiel µIP von Adam Dunkels. Billiger und einfacher ist, einen ESP8266 
zu verwenden.

Siehe dazu:
http://stefanfrings.de/net_io/index.html (das ist ein Projekt mit CP2201 
an einem AVR, davon kannst du sicher einiges abkupfern)
http://stefanfrings.de/esp8266/index.html (beschreibt den ESP8266)

von Mike (Gast)


Lesenswert?

Stefan ⛄ F. schrieb:
> Hat dein STM32 Controller denn Ethernet?

Ja, stimmt. Da hätte ich mal drauf kommen können.
Der STM32F4 hat Ethernet und sollte das dann können! Wie sieht die 
Hardware-Anbindung aus, hat da jemand ein Beispiel?

Danke, Stefanus, auch für die Beispiele. Ich denke aber, wenn ich da 
einen externen Chip dranhänge, wird mir das ganze zu langsam. Sind ja 
doch viele Daten die so Echtzeitig wie möglich rüber sollen!

Vielen Dank und schönen Sonntag noch!

von Stefan F. (Gast)


Lesenswert?

Mike schrieb:
> Der STM32F4 hat Ethernet und sollte das dann können! Wie sieht die
> Hardware-Anbindung aus, hat da jemand ein Beispiel?

Du könntest vom Discovery Board abgucken.

von Dunno.. (Gast)


Lesenswert?

Mike schrieb:
> Ich denke aber, wenn ich da einen externen Chip dranhänge, wird mir das
> ganze zu langsam. Sind ja doch viele Daten die so Echtzeitig wie möglich
> rüber sollen

Mach doch Mal ne Aussage dazu. Ein paar Mbit bekommt man selbst mit 
einem wiznet w5500 und spi hin, mit den neuen mit paralleler Ansteuerung 
sollte da deutlich mehr drin sein.

Ein Nachteil von Software-Stacks a la uIP ist halt, dass es mit auf dem 
Controller läuft, also Rechenzeit braucht und ggfs von Bugs aus deinem 
Code zerlegt wird.
Daher mag ich die wiznet-chips. Und viel einfacher wird es nicht mehr, 
von der Ansteuerung her.

von Mike (Gast)


Lesenswert?

Dunno.. schrieb:
> Mach doch Mal ne Aussage dazu. Ein paar Mbit bekommt man selbst mit
> einem wiznet w5500 und spi hin, mit den neuen mit paralleler Ansteuerung
> sollte da deutlich mehr drin sein.

Im worst-case (wird aktuell nicht verwendet, wäre aber gut wenn geht): 
16Kanäle, 16bit, 100ksps = 25,6Mbit reine Nutzdaten plus bisschen 
overhead.
Klingt schon heftig merke ich grad :D

Klappt das überhaupt mit 100mbit Ethernet?

Wiznet W5500 schaue ich mir an.

Viele Grüße!

von jo mei (Gast)


Angehängte Dateien:

Lesenswert?

Mike schrieb:
> Wie sieht die
> Hardware-Anbindung aus, hat da jemand ein Beispiel?

Ist als abstrahierter Schaltungsvorschlag in "jedem Datenblatt"
eines Ethernet-fähigen STM-Controllers zu finden.

von Mike (Gast)


Lesenswert?

Mike schrieb:
> Im worst-case (wird aktuell nicht verwendet, wäre aber gut wenn geht):
> 16Kanäle, 16bit, 100ksps = 25,6Mbit reine Nutzdaten plus bisschen
> overhead.

Upps, kleiner Rechenfehler. Es sind nur 4 ADCs an Board, mit jeweils 
einem 4er Multiplexer. Also nur 4 Kanäle, 16bit, 100ksps = 6,4MBit. 
Klingt schon besser.

von Stefan F. (Gast)


Lesenswert?

Mike schrieb:
> 25,6Mbit reine Nutzdaten plus bisschen overhead.

Dazu brauchst du ja schon Gigabit Ethernet, damit es zuverlässig läuft.

von Dunno.. (Gast)


Lesenswert?

Mike schrieb:
> Es sind nur 4 ADCs an Board, mit jeweils einem 4er Multiplexer. Also nur
> 4 Kanäle, 16bit, 100ksps = 6,4MBit. Klingt schon besser.

Da wirds für den w5500 schon eher eng. Aber das ist auch ein schon eher 
älterer typ, da gibt's auch neuere..
Kriegst du denn die Daten so schnell erfasst? Wie viel Rechenzeit hast 
du da noch...? Egal wie, die Übertragung braucht ja auch noch ihre 
Zeit..

von Johannes S. (Gast)


Lesenswert?

Ein LAN8720 Modul und MBed-OS, allemal besser als die Wiznet Krücke. 
Welcher STM32 wird denn verwendet, und ist das ein Standard Evalboard 
oder eigene HW?

von Witzbold (Gast)


Lesenswert?

Wenn Ethernet nicht von Anfang an mit hineindesignt ist,
wird das mit "Dranproempeln" eher nichts.
Tu dir einen 2. STM32 aufs Bord, z.B. einen STM32F107
nebst PHY. Oder einen M3/M4 der die PHY schon onbord hat.
Der kann sich dann vollinhaltlich ums Ethernet kuemmern
und stoert nicht die Messungen.
Die Daten kannst du bordintern ja einigermassen schnell
z.B. per SPI dahin schaufeln.
Mit einer guten Library ist auch das Schreiben eines
Socketservers recht einfach. Z.B. CMX MicroNet.

von Wolfgang (Gast)


Lesenswert?

Mike schrieb:
> Wie funktioniert sowas?

Früher (tm) hätte man einfach irgendeinen Serial-to-Ethernet Konverter 
daneben gestellt und auf dem PC dann einen gewöhnlichen, wenn auch 
virtuellen Com-Port gehabt.
Wenn man das für Einzelstücke betriebswirtschaftlich betrachtet, ist das 
die direkteste Lösung. In einer halben Stunde hast du den Stack auf dem 
STM wahrscheinlich nicht am Laufen.

von Johannes S. (Gast)


Lesenswert?

Wolfgang schrieb:
> In einer halben Stunde hast du den Stack auf dem STM wahrscheinlich
> nicht am Laufen.

Ja, heute braucht man nur noch so lange wenn Rechner oder Internet zu 
langsam sind, sonst geht es in ca. 15 Minuten.

Aber bei der Informationsflut des TO scheint es ja nicht so wichtig zu 
sein.

von Arc N. (arc)


Lesenswert?

Je nachdem was noch an Peripherie am STM übrig ist, gingen bspw. auch 
ein ESP32 (gibt ne Reihe fertiger Module mit Ethernet) oder bspw. 
LAN9250 oder AX88796C (Ethernet-Controller mit Phy, die entweder über 
SPI/Quad-SPI oder parallel 8-/16-Bit angesteuert werden können), LAN7500 
(USB->Ethernet).
Oder, wie schon geschrieben wurde, ein Redesign mit nem STM32, der schon 
Ethernet kann...

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Na ja, nach der Hardware kommt die Software. Also zuerst einmal ein 
IP-Stack. Will man nur IPv4 oder soll es auch IPv6 sein? Vollständiger 
Stack oder "geht so gerade"? Verschlüsselung (TLS) oder nicht? Wie wird 
der Host konfiguriert (manuell, DHCP, SLAAC, mDNS ...)?

Dann kommen die anwendungsspezifischen Protokolle. Will man irgendwas 
basteln oder soll es wegen labView eher was standardisiertes für 
Messgeräte sein (LXI mit oder ohne VXI-11 und der ganze Rattenschwanz 
der je nach Anforderungen dran hängt, wie SCPI und IVI-Treiber für den 
PC)?

Das sollte man sich vorher mal überlegen, sonst wird das eine unendliche 
Geschichte und der Mikrocontroller ist schnell zu klein.

von Stefan F. (Gast)


Lesenswert?

Arc N. schrieb:
> Je nachdem was noch an Peripherie am STM übrig ist, gingen bspw. auch
> ein ESP32

Ist der wirklich schnell genug? Ich frage, weil ein ESP8266 nicht einmal 
1/10 der geforderten Übertragungsleistung wenn er die Nutzdaten bereits 
im Speicher hätte.

von Stefan F. (Gast)


Lesenswert?

Hannes J. schrieb:
> Na ja, nach der Hardware kommt die Software. Also zuerst einmal ein
> IP-Stack. Will man nur IPv4 oder soll es auch IPv6 sein? Vollständiger
> Stack oder "geht so gerade"? Verschlüsselung (TLS) oder nicht? Wie wird
> der Host konfiguriert (manuell, DHCP, SLAAC, mDNS ...)?

Da ist was dran. Mit der Schnittstelle kommt das Wunschkonzert. Auf 
einmal erwarten die Kunden Features als Selbstverständlichkeit, an die 
keiner gedacht hat.

von A. F. (artur-f) Benutzerseite


Lesenswert?

Mike schrieb:
> Im worst-case (wird aktuell nicht verwendet, wäre aber gut wenn geht):
> 16Kanäle, 16bit, 100ksps = 25,6Mbit reine Nutzdaten plus bisschen
> overhead.

Vor knapp 10 Jahren hatte ich einen STM32F107 mit 66MBit/s via Ethernet 
gehabt (iperf Test). Denke mit einem STM32F407 sind die 25 Mbit locker 
möglich.

von Arc N. (arc)


Lesenswert?

Stefan ⛄ F. schrieb:
> Arc N. schrieb:
>> Je nachdem was noch an Peripherie am STM übrig ist, gingen bspw. auch
>> ein ESP32
>
> Ist der wirklich schnell genug? Ich frage, weil ein ESP8266 nicht einmal
> 1/10 der geforderten Übertragungsleistung wenn er die Nutzdaten bereits
> im Speicher hätte.

ESP32 != ESP8266. Ethernet geht beim ESP32 ziemlich nah an das 
theoretische Maximum (70 bis 90 MBit/s, iperf) und so viel Overhead 
sollte in dieser Anwendung eigentlich nicht mehr hinzukommen, dass die 
Datenrate zu weit einbricht. Siehe bspw. 
https://esp32.com/viewtopic.php?t=2013 oder 
https://www.crowdsupply.com/silicognition/wesp32/updates/why-ethernet 
bzw. 
https://hackaday.io/project/85389-wesp32-wired-esp32-with-ethernet-and-poe/log/151366-final-performance-checks

von Witzbold (Gast)


Lesenswert?

In der, und fuer die Industrie wird man kaum einen ESP32 benutzen.
Darauf kommen die Bastler hier wieder nicht.

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

Aktuell wird ein UART verwendet? Wieviel Kilobit rennen da über die 
Leitung?

Mach mal eine realistische Abschätzung. 25MByte/s sind für das bißchen 
Hardware zu viel.

von Strubi (Gast)


Lesenswert?

Witzbold schrieb:
> In der, und fuer die Industrie wird man kaum einen ESP32 benutzen.
> Darauf kommen die Bastler hier wieder nicht.

Mir ist immer wieder raetselhaft, warum einige immer wieder 
gebetsmuehlenartig die mit no-go-Fehlern bespickten Espressif-Chips 
empfehlen. Wenn da 'LabVIEW' und 'Messung' steht, duerfte eine 
24/7-Verfuegbarkeit gefragt sein.

@Mike: Wenn Du Echtzeit-Datenuebertragung willst, wuerde ich 
ausschliesslich auf DMA-basierte RTP(UDP)-Stacks setzen. uIP hat dafuer 
eine suboptimale Architektur, soll aber auf manchen Systemen ausreichen. 
Wir haben dafuer schliesslich eine Loesung auf FPGA-Basis entwickelt (um 
die ADC-Kanaele noch zu komprimieren).
Die Schwierigkeit ist dann u.U., auf PC-Seite den passenden 
LabVIEW-Daemon zu entwickeln, der die gepushten Daten (Echtzeit) 
entgegennimmt und fuer LabVIEW-Pull-Betrieb aufbereitet.

von Franz (Gast)


Lesenswert?

Michael X. schrieb:
> Mach mal eine realistische Abschätzung. 25MByte/s sind für das bißchen
> Hardware zu viel.
Wo hast du den Wert her?
Er hat Anfangs von 25MBit geschrieben und ist dann auf 6,8MBit runter 
gegangen.
Deshalb hab ich nicht verstanden, warum schon von Gigabit Ethernet 
geschrieben wurde.

von Johannes S. (Gast)


Lesenswert?

Der UART vom F4 schafft schon 10,5 MBit/s, der beim F7 nochmal doppelt 
soviel. Aber ob der PC da noch mitkommt?
Und um ESP ging es ja nicht, nur wenn der STM32 den der TO verwendet 
keinen EMAC hat.

von georg (Gast)


Lesenswert?

Franz schrieb:
> Deshalb hab ich nicht verstanden, warum schon von Gigabit Ethernet
> geschrieben wurde.

Das ist halt die Lösung aller Ahnungslosen: viel hilft viel.

Georg

von W.S. (Gast)


Lesenswert?

Mike schrieb:
> Simpler Aufbau mit analoger Signalkonditionierung, mehrere schnelle
> ADCs, STM32 und bisschen Speicher.
> Aktuell wird das ganze über UART ausgelesen. Nun sollen die Messdaten
> mit labVIEW in einem größeren Aufbau erfasst werden. Als Verbindung in
> unserem Testaufbau wäre Ethernet zu bevorzugen

Jaja: "Nichts ist zu schwer für den Mann, der es nicht SELBST tun 
muß"...

..aber du müßtest es selber tun. Momentan arbeitet dein ganzes Zeugs per 
UART und nun soll es per Netzwerk gehen. Also wieviele Netzwerk-Server 
auf µC-Basis hast du denn schon selbst gebaut (also HW und SW)?

Es ist ja nicht nur die Schaltungstechnik, sondern eben auch die ganze 
Programmierung, wobei es nicht mal ausreicht, LowLevel-Treiber und nen 
TCP/IP-Stack hinzukriegen - sondern da ist eben auch die volle Kanne an 
Netzwerkprogrammierung fällig.

Ganz oben meinte "jo mei", daß es als Ratschlag wohl ausreicht, vom µC 
ein paar Linien zu einem Kringel namens PHY zu malen und das Problem ist 
gelöst.

Wieviele Leute hier können so einen weiten Spagat von Analogtechnik, 
schnellen ADC's bis hin zur Server-Programierung?

Oder anders gefragt: Was hast du denn für ein Team für so ein Projekt? 
Nur dich selbst?

Ich würde da etwas anders herangehen, zum Beispiel erst mal einen 
simplen FT245 an den µC anflanschen, womit der serielle Flaschenhals 
erstmal beseitigt ist und man dafür die übliche Infrastruktur am PC 
bereits fertig hat.

Vielleicht reicht das bereits völlig aus - und wenn nicht, dann ist 
immer noch genug Zeit, an Zeugs wie Ethernet zu denken. Eventuell sogar 
derart, daß du von deinem µC aus per FT245 auf einen Raspberry oder 
Rockpi oder so gehst und von dort aus die Übertragung per Netzwerk 
erledigst.

Aber das alles selbst machen wollen und ohne zuvor eigene Erfahrungen in 
Sachen Netzwerk_HW+SW gesammelt zu haben, halte ich für einen zu großen 
Brocken, an dem man sich leicht verschlucken kann.

W.S.

von jo mei (Gast)


Lesenswert?

W.S. schrieb:
> Ganz oben meinte "jo mei", daß es als Ratschlag wohl ausreicht, vom µC
> ein paar Linien zu einem Kringel namens PHY zu malen und das Problem ist
> gelöst.

Du leidest sehr wohl an grober Fehlwahrnehmung.

Das einzige was ich in diesem Thread gegeben habe ist ein Hinweis
wie man ein Netzwerk/LAN an einen STM32 bekommen kann. Zur
Verbesserung (Hoffnung auf Genesung bzw Verbesserung des Krankheits-
bildes) deiner massiven Wahrnehmungsstörung hier nochmal das volle
Zitat meines Beitrages:

jo mei schrieb:
> Ist als abstrahierter Schaltungsvorschlag in "jedem Datenblatt"
> eines Ethernet-fähigen STM-Controllers zu finden.

von Johannes S. (Gast)


Lesenswert?

W.S. schrieb:
> ber das alles selbst machen wollen und ohne zuvor eigene Erfahrungen in
> Sachen Netzwerk_HW+SW gesammelt zu haben, halte ich für einen zu großen
> Brocken, an dem man sich leicht verschlucken kann.

ja, aber nur wenn man meint alles besser zu können und keiner fremden 
Software traut, und dann lieber EMAC + PHY mit magic numbers 
programmiert und einen eigenen IP Stack zusammenfrickeln will.
Dagegen gibt es OS mit sehr Posix nahen Sockets, so das sich die 
Programmierung kaum von der am PC unterscheidet und man schnell eine 
UDP/TCP Kommunikation aufbauen kann.

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

@jojos:
Ich will nich wissen wie ein IP Stack aus W.S. seiner Feder aussehen 
wird ;)
Ansonsten ist es ja auch echt nicht schwierig den LWIP einzubinden, der 
kommt ja schon mit allem was man sich so wünschen kann und das auch als 
STM32 Port.
Bzw FreeRTOS hat ja auch nen passenden IP Stack.
https://www.freertos.org/FreeRTOS-Plus/FreeRTOS_Plus_TCP/index.html
(gleich kommen von dem Geisteskranken wieder Hasstiraden gegen RTOS)

W.S. schrieb:
> Wieviele Leute hier können so einen weiten Spagat von Analogtechnik,
> schnellen ADC's bis hin zur Server-Programierung?
Du schonmal nicht!

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.