PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ENC28J60, wieviele Max im Netzwerk ??



xlanhackerx
02.01.2009, 23:10
Hallo liebe Community.

Ich habe bereits ein paar einfache Steuerplatinen mittels lochraster aufgebaut. Dort befindet sich ein Magjack, ein ENC28J60 mittels Quarzbeschaltung sowie ein atmega32.

Ich versuche mich im Moment an einer einfachen UDP Portansteuerung welche von einer Steuersoftware (Client-PC) aus angewendet werden soll.

Leider habe ich schon gelesen dass der ENC28J60 nicht in ein laufendes Netzwerk in Übermaße eingepflanzt werden sollte. Anscheind reagiert dieser zu sehr auf andere Protokolle/Ports von Windows Rechnern!!

Nun also meine Frage: Wieviele dieser Netzwerkchips lassen sich teoretisch maximal in ein bestehendes Netzwerk mit einsetzen ??

Aufgabe: Mehrere Netzwerkboards wollte ich in ein bestehendes Kabelnetzwerk (100mbit/ 2 Switchs/ 2 Laptops/3 PC´s) einbinden um diese Später anzusteuern !!


Vielleicht kann mir jemand genauere Informationen posten !!!


Dank euch


Mfg.

Oliver

the_Ghost666
03.01.2009, 00:38
naja, wenn du darauf ein Ethernet etablierst, dann gibt es keine Limits ausser die Anzahl verfügbarer MAC Adressen. Wenn du auch noch IP implementierst, ist es durch die Anzahl der freien IPs in deinem Subnet limitiert. Also bei 192.168.0.X und Subnetmask 255.255.255.0 sind es 254 mögliche Geräte, du kannst aber auch ein Class A Netz nehmen, dann kannst du über 16mio Geräte anschließen.

Wie du das mit dem Ansprechen meinst, weiß ich nicht genau, weswegen man die Anzahl limitieren soll. Reagieren kann er nur durch die Firmware dahinter, nur die ist im Stande Ports und Protokolle zu analysieren, das IC ist nur ne Ethernet-Schnittstelle.
Aber in Netzen werden regelmäßig ARP-Anfragen gestellt. Das ist die Umsetzung von Ethernet-MAC Adressen in IP Adressen (Welche MAC-Adresse hat die IP XYZ, darauf gibts dann eine Antwort, ICH hab die IP, hier ist meine MAC). Das passiert recht häufig, sodass es einen großteil des Traffics ausmachen kann, wenn gerade keine Volumentransfers stattfinden (also Rechner ist an, aber kein Programm ausser dem Betriebssystem gestartet). Da die Controller keine hohe Bandbreite haben, weil sie schlicht langsam Daten verarbeiten, kann es sein, dass dadurch Fehler oder Überlastungen auftreten.

PCF8574P
03.01.2009, 09:42
Hallo,

ein eigentlich ganz stabiler webserver auf basis des ENC28J60 gibt es von Ulrich Radig.
Evtl. kannst du ja seine Software an deinen Anpassen (IP und MAC zeugs usw...)

Links:
http://www.ulrichradig.de/home/index.php/avr/eth_m32_ex
http://www.ulrichradig.de/home/index.php/avr/avr-webmodule

Bei mir ist ein Webmodul am laufen. Bisher ohne Probs

MFG Max

xlanhackerx
03.01.2009, 10:50
Ok vielen Dank Leute.
Ja ich werde mir mal die Firmware von Ulrich anschauen, habe bereits ein Pollin Net I-O Board mit dieser Firmware versehen und bastle nun an einer Ansteuerung mit Ports welche von einer Software aus angesteuert werden.

Ich denke das die 254 Geräte nie erreicht werden :cheesy: !!!

Ok also liegt es praktisch nur an der "gut umgesetzten" Firmware welche dann gegebenenfalls die Fehler minimieren könnte !!

Ein weiterer Punkt, welcher Ich nicht ganz verstehe und im Netz auch keine aussagekräftige Hinweise gefunden habe ist die "Vollduplex" Unterstützung.

Soweit ich weiß, fährt doch ein Normales Switch nur im Halbduplex-Betrieb außer man sagt ihm dass es unbedingt in einem Vollduplex-Betrieb arbeiten soll !!!

Der ENC28J60 kann ja beides, Halb sowie Vollduplex. Was wäre sicherer bzw eigentlich ist doch immer Vollduplex angewiesen um Daten zu senden und gleichzeitig zu empfangen außer man schreibt ein Protokoll welches dann das ganze auch im Halbduplex ermöglicht !!

Thx

Greetz Oliver

xlanhackerx
04.01.2009, 17:31
So da bin ich mal wieder.
Habe jetzt mal geschaut wie ich die ganzen Boards geschickt anwenden könnte, vorallem um das ganze einfacher zu vernetzen.

Dabei ist mir ein wichtiger Punkt eingefallen, welcher ich wohl nicht so ganz allein beantworten könnte.

Ich habe ja mehrere Boards, jedes Board bekommt eine eigene Mac,sowie IP-Adresse. Ich möchte ja dort Daten senden sowie empfagen (Messwerte von Sensoren, Schalter auswerten, Relais schalten, usw)

Das ganze soll von einem Programm aus gesteuert werden.

Welches Protokoll soll ich am besten für die Datenverbindung verwenden ?

UDP klingt eigentlich recht einfach, allerdings lese ich laut wikipedia-Artikel dass das Protokoll keinerlei Sicherheitsfunktionen hat.
Soll heißen, wenn was fehlerhaft ankommt oder garnicht ankommt dann ist alles Fehlerhaft !!

Wichtig:
Ich möchte keine Webserver mit den Boards aufbauen, sie sollen ausschließlich von der Software angesteuert werden (Echtzeit-Übertragung)!!!


Hoffe ihr könnt mir da helfen !

Mfg. Oliver

the_Ghost666
04.01.2009, 18:41
Also TCP und UDP unterscheiden sich in den Punkten, dass UDP die einfache Variante von TCP ist, dafür gedacht, kurze, einfache Informationen ohne Absicherung zu verpacken.
TCP stellt eine synchronisierte Verbindung her, und beide Seiten zählen die Byte, die empfangen bzw gesendet wurden. Damit kannst du feststellen, ob Daten verschütt gegangen sind. Ist das der Fall, übernimmt es das Protokoll, die verlorenen Teile neu zu senden, bis es richtig angekommen ist. Deswegen ist TCP für große Datenmengen und hohe Datensicherheit prädestiniert.
UDP kommt viel schlanker daher, dh du hast weniger Overhead, es wird nur die Nachricht übermittelt, dabei wird nicht geprüft, ob sie ankam oder so. Du hast aber in beiden Geschichten noch die Sicherheitsmaßnahmen von Ethernet und IP, die zb CRC Summen mitschicken, um fehlerhafte Übertragungen zu finden.
Gute Beispiele für die Protokollwahl: SNTP, das Simple Network Time Protocol, was benutzt wird, um von einem Server eine Uhrzeit zu beschaffen nutzt UDP, es wird eine UDP Anfrage an den Server geschickt "Wie spät ist es?" Die Rücksendeadresse ist bekannt, da das UDP Protokoll den Absenderport mitschickt und der SNTP Port abgesprochen ist.
Die AntwortIP steck im IP-Datagramm, was die UDP-Message enthält.
Und da es nicht wichtig ist, ob die Message nun ankommt, braucht nicht abgesichert zu werden, wenn es keine Antwort gibt, sendet man einfach die Anfrage nochmal.
Bei ner Geschichte wie FTP wird TCP benutzt. Hier ist es wichtig, dass die Pakete alle ankommen, um den Inhalt richtig aufbauen zu können. Ausserdem geht es nicht um nur 4, 5 Bytes, sondern sendet direkt große Datenmengen, z.b. ein 35MB Video-File, bei dem es wichtig ist, dass alle Bytes in der richtigen Reihenfolge und vollständig ankommen. Der Mehraufwand fällt hier nichtmehr ins Gewicht, aber man hat halt mehr Overhead pro Paket, um 35MB zu transferieren, brauchst du nochmal 35kb an Verwaltungskram, der übertragen werden muss.

Mein Tipp: Wenn du nur Schalten möchtest und einzelne Messwerte brauchst, dann nimm UDP, sende die Geschichte und prüfe mit ner zweiten UDP Anfrage, ob auch alles geklappt hat, dh der neue Status geschaltet wurde. Das sollte auch bei deinen Sensordaten reichen, wenn du damit zb nur Raumtemperatur oder so übertragen willst.
Eine zusätzliche Datensicherung könntest du dann noch in die UDP-Message schreiben, zb Anzahl der Bytes, Messwerte, Prüfsumme .

Was mich interessieren würde, womit möchtest du das PC Programm schreiben, und wie sprichst du die Netzwerkkarte an, bzw. sagst dem Betriebsystem, dass du einen Port möchtest und die und die Daten schreiben willst?

xlanhackerx
04.01.2009, 19:06
Hi vielen Dank für die Info.

Die Software wird in Visual Basic Net geschrieben.
Glaube hab noch irgentwo die dll liegen welche UDP Ansteuerungen vereinfacht !!!

Das Board selber wird Quasi als Server arbeiten.
Einen sehr schönen link dafür habe ich Hier (http://www.nikbamert.com/index.php?seite=elektronik&subsite=udp) gefunden !
Das ganze ist mit einem Atmega8 aufgebaut worden, ich verwende dafür eine Atmega32.

Was micht natürlich ein bischen unsicher macht ist folgendes.
Wenn jetzt mehrere boards gleichzeit verschiedene Werte senden, könnte dann es nicht passieren dass der Client-PC (Software) einfach ein paar Werte ausläst, bzw einfach zu langsam alles empfängt.
Dann könnte es sein dass Werte fehlen oder fehlerhaft sind.

Ich würde gerne ein vielleicht sicherere Variante wählen um wirklich sicher zu gehn dass die Daten auch hundertprozentig angekommen sind.

Geschaltet werden:

- Deckenbeleuchtung
- Steckdose
- Rolläden (I2C Bus mit externer Beschaltung)
- Heizung (I2C Bus - Umgebaute Thermotronic Atmega8)
- Verschiedene Verbraucher


Ich würde natürlich schon gerne sichergehn dass auch wirklich das gewünschte "Produkt" geschaltet hat.


Naja.. vielleicht doch deine Variante mit nem Sicherheitsmerkmal
oder vielleicht doch ein anderes Protokoll !!!


Thx.


Mfg. Oliver

the_Ghost666
04.01.2009, 21:00
Normaleweise hat so ne NIC (Netzwerkkarte) einen Buffer, der einkommenden Traffic, der an sie (ihre MAC) gerichtet ist, speichert und bearbeitet.
Solange dein Server ein echter PC ist, sehe ich überhaupt kein Problem was die Geschwindigkeit angeht, es sei denn du schreibst eine solche Software, die deine NIC überlastet oder falsch arbeitet.
Und auch jeder dieser ICs hat 8kB an Buffer, wenn ich das im Datenblatt richtig gesehen habe.
Ethernet ist ein so robustes System, dass man sogar in industrieller Umgebung immer mehr darauf eingeht (Profibus über Ethernet).
Und wenn du eh einen fertigen TCP-IP Stack hast, würde ich mir nicht die Mühe machen, ein neues Layer zu entwickeln.
Wenn du die IPs dann statisch verteilst oder noch nach ner MAC-Liste filterst, kannst du auch sichergehen, dass die Sachen an die richtige Stelle gelangen.
MfG
Björn

xlanhackerx
04.01.2009, 21:32
Ok vielen Dank.
Ich werde mal experimentieren und schauen was so am besten laufen wird !!

Willst du auch so etwas erarbeiten ??

Danke nochmal !!

Mfg. Oliver

the_Ghost666
05.01.2009, 07:00
Eigentlich nicht, aber mit dem Link, den du gepostet hast, wärs sicher interessant.
Ausserdem kommst du aus Duisburg, das macht direkt sympatisch, komme aus Dinslaken, studiere nur gerade an der Nordsee.
Ein Freund hat den Ulrich Radig Webserver nachgebaut, aber das direkt über die Ports und ne eigene Anwendung zu steuern, ist ne feine Lösung, auch wenn man dann die gewünschte Anwendung immer installieren oder mitnehmen muss, n Webbrowser hat ja jeder. Spart aber auch immens Speicherplatz.
Wenn ich irgendwann mal genug Zeit haben sollte, steht so ein Projekt sicher auf der Liste, aber momentan gilt es meine Bachelorarbeit fertig zu machen.

Ich hab letztes Semester eine Vorlesung namens TCP-IP belegt, in der alles vom Aufbau einer Ethnernet-Schnittstelle, bis zum Protokollbaum und einigen Anwendungen auf Linux behandelt wurde.
Wenn du schon etwas fertig hast und gerne ausprobieren würdest, kann ich dir empfehlen ein einfaches Hub zu nehmen oder auf dem PC, wo die Software läuft das Programm Wireshark zu installieren. Das ist ein Netzwerk-Analysator, der ALLE hereinkommenden Pakete detektieren kann, oder Netzwerkverkehr auf einer transparenten Ebene, wie einem Hub überwachen kann. D.h. du siehst genau den Ethernet-Frame, das IP-Paket bis hin zum Inhalt einer UDP oder TCP Message. Ich denke, das wird zum debuggen sehr hilfreich sein, dann siehst du auch was, oder was nicht ankommt oder gesendet wird. Nach ner kurzen Einarbeitung ist das ein sehr mächtiges Werkzeug für jeden, der etwas mit Netzwerktechnik zu tun hat.

Ceos
05.01.2009, 08:49
ich werf mich hier auch mal in die runde, da ich selber grad an über netzwerk gesteuerte ... sagen wir ..... "automaten" .... arbeite .... den ENC28j60 hab ich frühzeitig verworfen, der programmaufwand ist meines erachtens zu mächtig und frisst zu viel prozessorzeit ... TCP ist mit quasi nur einem socket möglich, es sei denn man schliesst noch nen speicher an um zusätzlich zwischen den einzelnen socketstacks hinund herzuschalten

ich würde dir ans herz legen auf http://www.dacomwest.de/de/etherics_hardwired_w3100a.htm zu schauen, das ist wie ein ENC28j60 nur hat der 3100A den IP-stack schon integriert, ausserdem hat er 4 sockets die parallel arbeiten

du must eigentlich nur auf den interrupt des chip reagieren und dann die notwendigen register abrufen ..... wenn du die defines richtig anlegst, erinnert der quellcode schon sehr an die socketprogrammierung unter C

pyr0skull
05.01.2009, 09:07
ich würde dir ans herz legen auf http://www.dacomwest.de/de/etherics_hardwired_w3100a.htm zu schauen, das ist wie ein ENC28j60 nur hat der 3100A den IP-stack schon integriert, ausserdem hat er 4 sockets die parallel arbeiten

du must eigentlich nur auf den interrupt des chip reagieren und dann die notwendigen register abrufen ..... wenn du die defines richtig anlegst, erinnert der quellcode schon sehr an die socketprogrammierung unter C

Sieht interessant aus, gibt es wiederrum aber nur als LQFP. Hast du denn eine Bezugsquelle dafür? Finde den bei keinem gängigen Anbieter.

Ceos
05.01.2009, 09:14
dacom selbst verkauft die dinger (auch als fertig aufgebaute module mit magjack .... hab selber 5 stück rumliegen)

http://www.dacomwest.de/de/ethermodul_net_nm7010b.htm

die benutze ich, SPI und parrallel (betreibe ich parallel an nem M128, wegen datendurchsatz) und 2 M8 für die steuerung bzw. datenerfassung

preise sind moderat ... ich warte drauf dass meine platine bald mal fertig wird dann teste ich das ding selber mal ... bisher hab ichs nur in freiverdrahtung über SPI gemacht .... durchsatz reicht aber nicht aus und die verdrahtung ist mies wegen EMI

sieh zu dass du die 2.5mm variante bestellst, ich hab ausversehen das kleine raster bestellt, weswegen ich noch nicht testen kann


EDIT: hab grad nochmal angerufen, zum experimentieren, bestell dir die WIZ812MJ, alternativ 811, die müssten beide um die 25€ liegen ...

als privatkunde musst du nur eine email schicken mit artikel-nr. oder bezeichnung und menge, du bekommst dann die daten für die vorkassen, überweist, und schon sind die module unterwegs

xlanhackerx
06.01.2009, 10:36
@ Ceos: Hmm dieser Chip klingt wirklich interessant, allerdings ist der Preis wirklich hoch. Und wenn ich richtig gelesen habe, bekommt man mit einem Atmel AVR bis zu 6MBit/s mit einem ARM7 bis zu 20MBit/s Transferrate !!

Kann der ENC28J60 nicht mehr ?? Glaube bis zu 10MBit/s oder ??
Liegt natürlich an der Programmierung und dem Datensatz welcher übetragen wird (Anzahl).

@the_Ghost666: Joar Duisburg ist vollkommen richtig. Ich erarbeite im Moment das ganze Privat um dieses Projekt später für meine Praktische Abschlussprüfung einzusetzen. Ich mache den Elektrotechnischen Assistenten mit der FHR zusammen an einem Berufskolleg.
Zu deinem Punkt mit der Software: Ja da hast du schon recht, man könnte ja eine Portable-Version der Clientversion erarbeiten :cheesy:
Das Programm Wireshark habe ich bereits schonmal verwendet, allerdings wars mir dann zu schwer es richtig anzuwenden. Muss einfach mal das Manual durchlesen 8-[

pyr0skull
06.01.2009, 12:13
25€ ist schon ziemlich hart, nur um mal zu testen. Da kommt ja dann nochmal ein Magjack dazu und ein Adapter-PCB, da es die Teile ja nur als SMD gibt.

Kann man mal im Hinterkopf behalten, als Spielerei kommt das aber nicht in Frage für mich.

the_Ghost666
06.01.2009, 12:21
Wichtig ist bei Wireshark, einfach die richtigen Befehlsformate zu kennen.
Ein kleines Beispiel:
Starte Wireshark, geh auf Capture -> Interfaces
Klicke Start neben der Verbindung, die deiner Netzwerkkarte entspricht, wo auch deine Hardware zu verbunden ist. An der IP kannst du dich orientieren, wenn es die Verbindung ist, über die du auch Internet hast, dann klick einfach da, wo die meisten Pakete ankommen.
Wenn du dann im Hauptfenster bei Filter: ip.addr == 192.168.1.1 angibst, dann zeigt er nur Pakete an, die Entweder von der Adresse 192.168.1.1 kommen, oder dorthin gesendet werden.
Wenn du die Zeile noch erweiterst auf: ip.addr == 192.168.1.1 and udp
zeigt er nurnoch udp Verbindungen zu oder von der IP an.
Im Fenster darunter kannst du dir dann detailiert den Ethernet Frame angucken, und darunter das IP-Paket, was darin verpackt ist, und das UDP (User Datagram Protocol), was wiederum darin steckt. Hier kannst du dir die Ports, die Länge und die Checksum anschauen. Darunter steht dann zuletzt der Inhalt des UDP Pakets. Wenn er das Protokoll kennt, interpretiert er es sogar. Kannst das ja mal mit der IP von deinem Router oder deines eigenen PCs testen und eine Website aufrufen. Dann wirst du z.B. einige hellblaue Pakete mit den DNS-Informationen finden.

the_Ghost666
06.01.2009, 12:27
P.S.:
Nochmal zu der Socket Geschichte:
D.h. mit dem ENC28J60 kann ich nur eine Verbindung zu einem anderen Host/Client auf einmal herstellen, und wenn ich z.B. neben nem FTP auch einen HTTP Server einrichten will, dann kann ich immer nur entweder FTP oder HTTP zugreifen, nicht gleichzeitig?
Wie siehts denn mit dem Realtek Chipsatz aus, den man sich gut von Low-Budget Netzwerkkarten runterlöten kann (RTL8019 oder so? im vierseitigen SMD Gehäuse)?

xlanhackerx
06.01.2009, 12:47
Hmm das scheint ne gute Frage zu sein, soweit ich weiß macht der Chip halbduplex sowie vollduplex. Soweit ich aber weiß kann der Server von Radig aber auch beides gleichzeitig verarbeiten. Normalerweise schickst du ja zuerst die Datei hoch und dann betrachtest du sie !!!

Das mit den Realtek Chips hatte ich mir auch erst überlegt. Da ich hier ungefähr 6 alte Netzwerkkarten rumliegen habe wäre das natürlich eine geniale Idee. Soweit ich aber weiß ist das Ansteuern dieser Chips mit einem enormeren Programmier/Hardwareaufbau verbunden als mit einem ENC28J60.

Wenn jemand darüber genauere Infos hat, immer her damit :lol:

Ceos
06.01.2009, 12:48
25€ ist schon ziemlich hart, nur um mal zu testen. Da kommt ja dann nochmal ein Magjack dazu und ein Adapter-PCB, da es die Teile ja nur als SMD gibt.


lol das komplette modul inklusive magjack kostet 25€ ... das einzige was du noch machen musst, per SPI oder parallelbus verbinden fertig!

achja spannungsregler nicht vergessen, 3.3V mit 5V toleranten eingängen


.h. mit dem ENC28J60 kann ich nur eine Verbindung zu einem anderen Host/Client auf einmal herstellen
jein .... es kommt darauf an, dass deine firmware es in die reihe bekommt, die ganzen sequenznummern den einzelnen sockets zuzuordnen und das TCP protokoll für jede einzelne verbindung aufrecht zu erhalten ... du musst dir vorstekllen, du hättest nur einen serverport mit accept(1); der geschlossen wird sobald eine verbindung besteht und erst dann wieder reagieren kann ... das modul von dacom macht automatisch DHCP und alles was du sonst noch so brauchst, dein board mit magjack, spulen und RCs kostet sicherlich auch so seine 15€ + ätzen + löten ... mit dem modul reicht "fast" schon ne streifenraster platine


Kann der ENC28J60 nicht mehr ?? Glaube bis zu 10MBit/s oder ??
Liegt natürlich an der Programmierung und dem Datensatz welcher übetragen wird (Anzahl).

neee, eben durch SPI und da du den ganzen protokollquatsch selber machen musst, schaffst du kaum mehr als 1MBit

nochmal der link zum modul http://www.wiznet.co.kr/en/pro02.php?&ss%5B2%5D=2&page=1&num=91
und die dacom seite http://www.dacomwest.de/de/ethermodul.htm

xlanhackerx
06.01.2009, 13:00
@Ceos:



Zitat:
Kann der ENC28J60 nicht mehr ?? Glaube bis zu 10MBit/s oder ??
Liegt natürlich an der Programmierung und dem Datensatz welcher übetragen wird (Anzahl).


neee, eben durch SPI und da du den ganzen protokollquatsch selber machen musst, schaffst du kaum mehr als 1MBit


Und wie würde man es hinbekommen tatsächliche 10MBit/s zu schaffen, oder vielleicht ein bischen mehr als 3-5 MBit/s ??

Wieviel schafft denn eigentlich das Board von Ulrich Radig ??

the_Ghost666
06.01.2009, 13:44
Sagmal, ist das für dich überhaupt wichtig? Wenn du das zum Schalten nutzen möchtest, reichen doch kurze Befehle, oder möchstest du ein Live-Stroboskop über Ethernet steuern *g* Sowas ist ja nur bei großen Datenmengen wichtig

xlanhackerx
06.01.2009, 13:58
Nö reicht doch vollkommen, wollte nur mal wissen !!
Vielleicht kommt ja demnächst der Staubsauger den ich in Echtzeit steuern möchte ](*,) :cheesy:

Nein es reicht ja wirklich vollkommen aus. Wollte nur mal wissen ob sowas theroretisch möglich ist und was für Maßnahmen getroffen werden müssen :lol:

Ceos
06.01.2009, 14:57
3-5 MBit/s schafft das oben gepostete modul im parallelmodus mit nem atmega, SPI braucht glaub ich schon wieder zu viel overhead, wenn es um burst-daten geht ginge zur not auch ein 830er aus der modulreihe, der hat n 8/16bit interface und DMA modus, also memorymapped möglich und somit fast 50MBit