Hallo Experten,
Ich bin auf der Suche nach einer Möglichkeit einen
Ethernet Frame in einen UC (waschl. Stm32)
einzulesen und dann über den 2 Netzwerk Anschluss
an den nächsten Teilnehmer zu senden.
Ich will damit einen Logger bauen der das Telegramm
Komplett aufzeichnen kann. Auch wenn es unglaublich klingt
Sind 10 MBit in Ordnung :-) aber mehr wären auch cool!
Primär Anwendung wäre hier der Modbus bzw. Diagnose.
Der Aufbau wäre dann sozusagen so:
Master - > PHY - > uC - > PHY - > eigentlicher Teilnehmer
Der Aufbau ist vom Ethercat abgekupfert wobei die eben
Asics mit 2 Phy's und der Intelligenz haben und auch die Frames
Im durchlauf auslesen.
Kann man sowas mit Physical Layer transceiver machen?
Ich dachte an etwas wie 2 enc28j60 und einen STM32
Und das dann via DMA durchschaufeln.
Über Antworten würde ich mich sehr freuen,
Vorab vielen Dank!!
Grüße Max
Hallo,
da du nichts über dein eigentliches Ziel schreibst, schweife ich mal ein
wenig ab. Wenn nur dein Ziel ist, Pakete mitzulesen, wäre ein „Mirror
Port“ auf einem managbarem Switch einfacher :-) Wenn es unbedingt der uC
sein soll, vergiss meine Antwort :-)
Lg
Mach es anders:
Die allermeisten Microcontroller brauchen noch einen extra PHY für
Ethernet.
Jetzt schau Dir den hier an:
https://www.microchip.com/wwwproducts/en/LAN9354
Für den Microcontroller ist es ein PHY. Er wird genauso angeschlossen
und funktioniert auch so. Es ist aber ein 3-Port-Switch, und zwar ein
managebarer. Zwei Ports gehen an RJ45-Buchsen, der dritte Port ist das
RMII an den Mikrocontroller. Damit kann der Baustein zum einen alle
Pakete zwischen den beiden LAN-Ports automatisch an den jeweils anderen
weiterreichen. Und zum anderen kann dieser Chip wie die meisten
managebaren Switche Port Mirroring, d.h. er kann Pakete, die durch einen
Port gehen, automatisch an einen weiteren Port ausleiten.
Jetzt weiß ich nicht, was Du mit den Paketen genau machen willst. Wenn
das mehr als ein Hobby ist, kaufst Du das hier:
https://www.amazon.de/Dualcomm-1000Base-T-Gigabit-Ethernet-Network/dp/B004EWVFAY/ref=sr_1_2
Das geht auch für Gigabit Ethernet. Die duplizierten Pakete kannst DU
dann an einem PC weiter verarbeiten.
Wenn Du das mit einem Mikrocontroller weiterverarbeiten willst, ohne
groß basteln zu wollen, nimmst Du das hier:
Prozessorboard:
https://www.microchip.com/DevelopmentTools/ProductDetails/PartNO/DM320007
LAN-Board (da ist der Vorgängerchip drauf, den kannst Du auch nehmen):
https://www.microchip.com/DevelopmentTools/ProductDetails/AC320004-4
Basisboard:
https://www.microchip.com/DevelopmentTools/ProductDetails/PartNO/DM320002
Damit hast Du dann bereits ein funktionierendes System mit
funktionierender Software, das Du nachbauen und weiterentwickeln kannst.
fchk
Maximal schrieb:> Ich dachte an etwas wie 2 enc28j60
Mit denen sicherlich nicht, denn man müsste jeden Frame mühselig
über SPI abholen und sein Protokoll beachten. Zudem ist die
Datenrate über SPI sicherlich zu stark eingeschränkt (ohne den
Grenzwert jetzt genau zu kennen).
au weia schrieb:> Mit denen sicherlich nicht, denn man müsste jeden Frame mühselig> über SPI abholen und sein Protokoll beachten.
Und wo ist das Problem? Dass ein Paket eingegangen oder gesendet ist,
kann er per INT-Pin melden, da bleibt nur recht wenig Overhead. Und den
eigentlichen Paketinhalt kann man natürlich problemlos per DMA
transferieren.
> Zudem ist die> Datenrate über SPI sicherlich zu stark eingeschränkt (ohne den> Grenzwert jetzt genau zu kennen).
20MHz maximaler SPI-Clock. Das langt absolut locker, um 10Mbit Ethernet
zu behandeln. Da haben wohl Ingenieure drüber nachgedacht...
Hallo,
Wow, das ging ja schnell.
@fhck danke für den Hinweis und den Link, der IC ist wirklich
interessant Und bietet genau das nach dem ich gesucht habe!!!
@c-hater schön erklärt, den "Zufall" mit der SPI Geschwindigkeit hab ich
nicht erkannt, ist aber einleuchtend. :-)
Jetzt hab ich erstmal Datenblatt Studium vor mir.
Nochmals vielen Dank für die Infos und die Antworten.
Grüße
Also wenn es dir wirklich nur um die Diagnose geht und nicht um die
Bastelei:
Nimm einen Raspberry Pi mit einem zusätzlichen USB Ethernet Adapter. Auf
dem mittels der bridge utils eine Ethernet Bridge erstellen, fertig.
Tut genau das was angefragt wurde, erlaubt auch Pakete auszuleiten oder
zu filtern, schafft ziemlich sicher >>10MBit, und du hast auch gleich
ein bisschen Rechenpower für komplexes Logging dabei.
Finde schon interessant, mit welchen Kanonen hier auf Spatzen geschossen
wird.
Tut es denn kein zusätzlicher Netzwerkanschluss am Rechner, der an einem
Hub hängt? Die Prozessnachrichten werden einfach durch den Hub gejagt.
Am Rechner kann man bequem alles mit Wireshark mitlesen.
Dafür würde ich mir nicht den Aufwand mit Zusatzhardware machen, die
zudem ja auch erst mal entwickelt und debuggt werden muss. Am Ende fängt
man an, die Zusatzhardware zu debuggen anstatt das zu entwickelnde
Gerät.
mfg mf
Achim M. schrieb:> Tut es denn kein zusätzlicher Netzwerkanschluss am Rechner, der an einem> Hub hängt? Die Prozessnachrichten werden einfach durch den Hub gejagt.> Am Rechner kann man bequem alles mit Wireshark mitlesen.
Richtige Hubs gibt es ja nicht mehr, und bei normalen, unmanaged
Switches kommen die Pakete ja gar nicht mehr bei Dir vorbei, da brauchst
Du schon einen Managed Switch mit Port Mirroring. Das ist die Lösung,
die ich vorgeschlagen habe - entweder als Kaufware, als Bastelware oder
als nackten Chip.
fchk
Wie schon geschrieben geht das mit 30€ für einen RPi + USB NIC. Wenn man
gleich 2 USB NICs drauf wirft (dann vermutlich ~35€), lassen sich die
Daten sicherlich auch an einen angeschlossenen Rechner ausleiten.
Maximal schrieb:> Sind 10 MBit in Ordnung
Hmm, Geheimdienste machen das mit 10 GBit on the fly inklusive
Protokolldecodierung, dezippen, Schlagwortanalyse und können
modifizierte Pakete weiterleiten.
Das macht man mit FPGAs, tausenden davon.
Aber du scheinst ja Zeit zu haben., dann geht auch ein rPi oder PC.