PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : echtzeitfähiges Ethernetprotokoll?



Manta
28.04.2011, 18:03
Hej!

Ich suche ein echtzeitfähiges Ethernetprotokoll! Klingt komisch aber ja. Ich weiß natürlich das Ethernet auf Grund seines CSMA/CD Verfahren an sich nicht echtzeitfähig ist! Allerdings stellt sich mir die Frage ob man das nicht irgendwie umgehen kann?

lg

shedepe
28.04.2011, 18:25
Ja es gibt solche Protokolle in der Industrie, einen Überblick darüber gibt es auf wikipedia
http://de.wikipedia.org/wiki/Echtzeit-Ethernet

nanoBean
28.04.2011, 23:06
Leider hast du nicht geschrieben, wofür du das brauchst. Eventuell ist aber UDP für dich interessant. Im Gegensatz zu TCP ist hier jedoch nicht sichergestellt, dass die Daten auch auf jeden Fall ankommen (bzw. in der richtigen Reihenfolge). Aber dafür ist es schnell und der Overhead von TCP entfällt.

Tante Edith verweist dich auch noch mal auf den Wikipedia Artikel zu UDP

Felix G
29.04.2011, 00:00
Bei UDP ist die mittlere Datenrate in der Regel deutlich höher als bei TCP. Das liegt hauptsächlich daran, daß TCP "nett" ist und versucht die Bandbreite gleichmäßig zu verteilen, bzw. die Leitung nicht zu überlasten (wodurch Paketverluste minimiert werden). UDP hingegen fehlen derartige Mechanismen, daher fährt es immer mit Vollgas, egal ob ein Baum im Weg ist oder nicht.

Wenn Jemand aber von Echtzeitfähigkeit spricht, ist die Latenz üblicherweise sehr viel interessanter als die Datenrate, und was das betrifft sind beide Protokolle eher schlecht.
(jedenfalls verglichen mit klassischen, auf harte Echtzeitfähigkeit ausgerichteten Bussystemen und Protokollen wie z.B. CAN)


Natürlich kann man es z.B. über das im Wikipedia-Artikel erwähnte PTP schaffen, mehrere Netzwerkteilnehmer sehr gut zu synchronisieren, aber ob das schon ausreicht hängt sehr von der konkreten Anwendung ab.

Klebwax
29.04.2011, 07:00
Hallo,

TCP/IP oder UDP haben mit Ethernet nichts zu tun. Daß diese Protokolle im LAN typischerweise über Ethernet abgewickelt werden, kann diesen Eindruck erwecken, ändert aber an der Tatsache nichts. Schon die DSL-Leitung zwischen Teilnehmer und Vermittlung ist nicht Ethernet, transportiert aber TCP oder UDP.

Ein fehlerkorrigierendes Protokoll (z.B. TCP) kann nie wirklich echtzeitfähig sein. Ich kann nie garantieren, daß ich einen Fehler korrigieren kann. Dem Prokoll bleibt nur übrig, die Verbindung abzubrechen, selbst wenn die Verbindung wieder funtioniert. Das geht bei Echtzeit garnicht.

Es gibt sehr wohl Ethernet-Erweiterungen, die echtzeitfähig sind. Eigentlich alle Hersteller von Steuerungen arbeiten daran. Wieweit daraus schon eine akzeptierte Norm entstanden ist, habe ich nicht so genau verfolgt. Ich habe leider auch keine Links parat, im Netz sollte sich aber was finden lassen.

MfG Klebwax

Manta
29.04.2011, 10:31
Also ich bräuchte dieses Protokoll für ein kleines Projekt von mir:

Ich will mit meinem Computer einen Roboter steuern, allerdings kommt es dabei auf Reaktionsvermögen an - ich brauche also harte Echtzeit (oder seht ihr das anders - dann bitte um Korrektur!)

Das ganze sollte über Ethernet laufen!

lg Manta

Andre_S
29.04.2011, 11:54
Hallo Manta,

definiere mal "Reaktionsvermögen". Welche Besonderheit definiert Deinen Bot.
Es haben ja inzwischen viele Roboter, welche über Ethernet laufen, mal völlig egal welches Protokoll.


Gruß André

Ceos
29.04.2011, 11:57
Dein Computer erfüllt doch selbst die Bedingungen für Echtzeit garnicht, also bringt es dir nichts über nen raw oder pcap Socket Daten von und zum Roboter zu senden! Du musst halt mit der Latenz leben lernen! Falls du komplexe Steuerungsabläufe hast die eines exakten Timings bedürfen würde ich sowieso einen µController vorschlagen, der abstrakte Befehle wie "arm hoch" oder so über LAN entgegen nimmt ... und dafür iss TCP und sogar UDP allemal gut genug ... zumal es für µController auch genügend fertig-chips gibt die einem das IP-Protokoll abnehmen! Die Wiznet-Module sind mein persönlicher Favorit, aber die Entscheidung überlass ich dem Betrachter ^^ http://www.dacomwest.de/de/etherics_hardwired.htm

Klebwax
29.04.2011, 19:30
Also ich bräuchte dieses Protokoll für ein kleines Projekt von mir:

Ich will mit meinem Computer einen Roboter steuern, allerdings kommt es dabei auf Reaktionsvermögen an - ich brauche also harte Echtzeit

Hallo,

so einfach ist das mit so einem Begriff "harte Echtzeit" nicht. Wie schon Andre_S angemerkt hat, definiere mal "Reaktionsvermögen". Ich kann auch einen Roboter mit einer Trillerpfeife steuern, der Pfiff heißt: mäh mal den Rasen und fahr dich dann aufladen. Wenn er dann losmacht, ist das ganz schön Echtzeit (meine Kinder waren da eher nicht echtzeitfähig;) ).

Mit Ethernet kann man schon eine ganze Menge erreichen, ohne auf die Echtzeiterweiterungen zurückgreifen zu müssen. Planung und Systemanalyse ist dafür aber fast wichtiger als programmieren. Was man sicher nicht hinkriegen wird, ist Schrittmotoren mit STEP und DIR über das Netz zu steuern. Aber eine CNC so mit G-Codes zu steuern, daß sie nie ins Stottern kommt, sollte machbar sein.

MfG Klebwax

Manta
01.05.2011, 16:24
oke! also ich denke mal das ich mir das ganze etwas einfacher vorgestellt habe als es wird! ich hatte vor meinen Bot mal "einfach" von meinem Pc aus anzusteuern und das so das wenn ich ihm sage "Arm hoch" das er das dann auch umgänglich macht! also das zwischendurch keine zeit verstreicht! aber da ich hier anscheinend einen gravierenden denkfehler gemacht habe muss ich eingestehen das ich daneben lag! kann ja mal passieren!
hat hier jemand vllt eine idee wie man sowas anders lösen könnte?
ethernet war mein ausgangspunkt weil ich mir vor einiger zeit einen µC oder besser ein ganzes evaluierungsboard gekauft habe das eine solche schnittstelle besitzt. da hab ich mir gedacht wäre ja mal nett das teil auch zu verwenden wenn es schon da ist :D.
ich stells jetzt mal einfach so in den raum: hat hier jemand eine idee wie man das anders lösen könnte?
wenn es dafür für nöten ist ich habe folgende kenntnisse:
programmiersprachen: assembler, C und C++ (bevorzugt aber C)
elektrotechnische kenntnisse sind ganz oke :D und mein wissen bezüglich datenübertragung stufe ich mal selbst als mittel ein! - aber bin immer bereit was neues zu lernen und mich auch gründlich damit auseinander zu setzen :D

lg Manta

shedepe
01.05.2011, 17:02
Mit einem uC wirst du das ganze dennoch so umsetzen können, dass es für dich als "Echtzeit" erscheint. Der PC muss dem Controller ja nicht mehr senden als den Befehl: "Arm hoch", was ja ziemlich schnell zu übertragen ist.

Manta
01.05.2011, 18:47
naja bei einem befehl wie "arm hoch" ist das ja noch machbar, aber wie schaut das ganze dann mit z.B. einem fahrgestell aus?wenn der bot geradefährt und dann ausweichen muss, muss er sofort ausweichen. ja das kann man auch mit sensoren lösen z.B. abstandsensoren usw. aber mir wäre es lieber wenn ich das selbst könnte!

lg

shedepe
01.05.2011, 18:50
In dem Fall wäre die langsamste Komponente warscheinlich Du.

Ceos
02.05.2011, 09:06
naja bei einem befehl wie "arm hoch" ist das ja noch machbar, aber wie schaut das ganze dann mit z.B. einem fahrgestell aus?wenn der bot geradefährt und dann ausweichen muss, muss er sofort ausweichen. ja das kann man auch mit sensoren lösen z.B. abstandsensoren usw. aber mir wäre es lieber wenn ich das selbst könnte!

lg

du beliebst zu scherzen, oder ? wie groß schätzt du bitte die Verzögerung ein, wenn du z.B. ein Hinderniss mit einer Webcam oder ähnlich erkennst und den Befehl "ausweichen" gibst und zum Bot sendest? Ich sags mal so:

Licht in Cam zu Bild wandeln -> 100-500ms ?! (je nach qualität der cam)
Bild von Cam an PC senden -> 10ms ?!
Bild in Anwendung laden -> 10ms ?!
Bild analysieren und Hinderniss erkennen -> 100-500ms ( je nach qualität der Erkennungsmethode )
Befehl an Bot senden (per Netzwerk) -> 1mS
Befehl im Bot zerlegen und Reaktion einleiten -> 50-100ms

die Werte sind alle nur geschätzt und gewichtet um dir mal zu zeigen wo du wahrscheinlich dran arbeiten musst!

Schau dir mal die ArDrone an, die wird mit IPhone/Pod/Pad per WLAN gesteuert und WLAN ist schon von der Übertragung her eher ungünstig! Und soweit ich das richtig gelesen habe, haben sich sogar ein paar Bastler erlaubt das Ding über seine Kameras vom PC allein steuern zu lassen! ... und die Kameras haben ne gute Sekunde Verzögerung, weshalb sich die Drone schon von Hand nur schwer über die Kameras steuern lässt! .. vll. iss mein IPod auch nur Schrott ^^

Richard
02.05.2011, 09:29
du beliebst zu scherzen, oder ? wie groß schätzt du bitte die Verzögerung ein, wenn du z.B. ein Hinderniss mit einer Webcam oder ähnlich erkennst und den Befehl "ausweichen" gibst und zum Bot sendest? Ich sags mal so:


Das dürfte sehr unterschiedlich ausfallen. Ich habe hier ein RN Motorkontrol am eepc über W-Lan und Camera VLC übertragung. Auf dem Rad habe ich ein weißes Isoband geklebt. Wenn diese Marke im Bild auftaucht und ich den Stop button drücke macht das Rad noch locker ~15...20 cm. Die Live Bild Übertragung braucht halt auch etwas Zeit......Als "Echtzeit" würde (ich) das nicht mehr betrachten.

Gruß Richard

Ceos
02.05.2011, 11:06
dein Problem wird die Webcam und die Trägheit des Motors sein, die Übertragung eines einfachen Befehls bedarf weniger als 1ms ... es sei denn, die Firmware braucht Ewigkeiten um den Befehl aus der Netzwerkschnittstelle zu lesen!!!

Es kommt alles auf dein Können an! Bzw. die Komponentenauswahl!

RN Motorkontrol: .. kenn ich persönlich nicht, vermute mal 1 Prozessor drauf, der ala Round Robin die Netzwerkschnittstelle nicht sofort abruft sondern nur wenn er grad Zeit hat!

Camera VLC : meinst du jetzt vom VLC Player ? Wenn das Bild erst noch codiert wird ist es kein Wunder dass eine Verzögerung entsteht! Lieber ne Kamera nehmen, die mit entsprechenden Treibern und ner API ausgestattet ist um die Bilder direkt zu lesen! Ich habe hier auf Arbeit mal mit ner 1000 € Cam gearbeitet um ein Echtzeitbild über eine Radarkeule zu legen, als Rechner hatte ich da nen Atom auf nem Mini-ITX und der war schon schwer am schaufeln um nur die Kamera auszulesen! Zwecks Einsparungen wollte ich das Bild vorher übern Codec gehen lassen (ne extra Steckkarte) und dann in die Anwendung laden .... Ergebnis war 1 Sekunde Verzögerung etwa ... aber die Prozessorlast hat sich deutlich verbessert.

Ich will damit nur nochmal betonen, dass es NICHT der OUTPUT ist, der langsam ist, sondern der INPUT!

ACHTUNG: Ich werde hier ein paar Links einstellen um ein paar Möglichkeiten aufzuzeigen die ich persönlich favorisiere, es soll keine Werbung sein!

http://www.dacomwest.de/de/ethermodul.htm unter Gatewaymodule finden sich viele Lösungen für eine easy-use Schnittstelle für µCs ans LAN

alles Weitere ist deinen Künsten im Umgang mit Mikrokontrollern bzw. dem Zukauf entsprechender serielle ansteuerbarer Hardware überlassen (bei seriellen Lösungen habe ich bisher nie irgendwelche Probleme mit verzögerungen festgestellt ... abgesehen von Trägheit)

Richard
02.05.2011, 12:36
Da hast Du natürlich recht, VLC eepc Camera RN Motorcontrol über RS232 und das ganze auch noch per VNC bedient.
Da kommen halt Zeiten zusammen. Mit entsprechender Kamera soni/Sanjo im kxx € Bereich sieht das dann natürlich besser aus. Aber die können sich nur die Kunden, nicht der Sevice Techniker leisten. :-( 5..6 Mpixel Netzkameras kosten halt etwas.


War bei mir eh nur ein halbherziger Versuch mir das andauernde Gerenne quer durch die Hütte zu ersparen. :-)

Gruß Richard

Ceos
02.05.2011, 16:30
es gibt auch günstige Kameras mit wenig latenz, nur solltest du den Stream SELBST aufnehmen und verarbeiten und nicht zusätzlich decodieren/recodieren lassen und dann noch über eine Schnittstelle von einem Programm zum nächsten jagen (es sei denn Handsteuerung über Webcam, dann iss wohl wirkllich die Cam zu lahm beim streamen) .. und wenn du beim bedienen von Hand ne Verzögerung (sichtkontakt) bemerkst, wird es wohl wirklich an dem Control-Modul liegen ...

Ich habe mir 2 der Module die ich oben gelinkt habe bestellt und werd sie auf Arbeit mal unter die Lupe nehmen und berichten

ne Motorsteuerung die mit geringer Latenz über RS232/UART funktioniert sollte es sicherlich geben oder kann man zur Not auch selber bauen.

Ich frage mich wieviel Strom das WLAN-Modul wohl verschlingen wird, das alte Ethernet-Modul war seeehr hungrig mit 200mA bei 3.3V!!!!!

Dann bau ich mir vielleicht auch mal was Fahrbares XD

Manta
04.05.2011, 18:56
hej!

nun ja also das hört sich ja ziemlich einheitlich an das das entweder ein unternehmen wird das nicht funktioniert oder das es gar nicht möglich ist! aber ja wir werden sehen! ich werd mal schaun und probieren :D. das ist wie mit der heissen herdplatte die man nicht angreifen soll und beim ersten mal MUSS man die einfach angreifen :D.

lg