Forum: Mikrocontroller und Digitale Elektronik Ethernetfähiges µC-Board und andere Herausforderungen


von Florian K. (koppi)


Lesenswert?

Hallo,
erstmal der Hintergrund:
Eine von mir zu schreibende Software (Steuersoftware) auf einem 
Linux-System soll 500 mal pro Sekunde einen 16Bit-Wert (Drehwertgeber) 
einlesen, durch nen Algorithmus laufen lassen, und dann auf der Basis 
der Berechnungen ein Taktsignal für einen Schrittmotor mit maximal 2KHz 
erzeugen.
Das ganze hat harte Echtzeitanforderungen.
Die Latenzen müssen sehr gering bleiben. Ausserdem muss eine "heutige" 
Standardschnittstelle genutzt werden. Wäre dann USB oder Ethernet.
Mittels USB werd ich das wegen der Latenzen vergessen können.

Also der Plan: Per Ethernet (Punkt-zu-Punkt-Verbindung) wird ein µC 
angesprochen. Per UDP sollten da die Latenzen kein Problem sein. Oder?
Nun brauche ich ein Board, das Ethernet kann und mindesten 8 I/O Ports 
hat, mit denen ich den Schrittmotor ansteuern und den Drehwertgeber 
auslesen kann. Das Board liest den Wert ein, schickt's zum PC, bekommt 
einen neuen Wert für die Schrittmotorsteuerung... Das ganze bitte mit 
500Hz.

Jemand ne Idee welches Board dafür geeignet ist?
Hält jemand die Idee für undurchführbar?

MfG
Florian

von Matthias L. (matze88)


Lesenswert?

Hmm eigentlich schreit das geradezu nach dem Parallelport am PC, zumal 
dieses externe Board im Prinzip keinerlei Leistung braucht (500x pro 
Sekunde IOs einlesen/ausgeben ist im Prinzip ein scherz, selbst für 
nicht ganz aktuelle µCs.)
Einzig die Schnittstellenvorgabe ist da etwas ungünstig. Du müsstest 
schauen, ob du das mit nem Softwareethernetstack schaffst (-> Webserver 
von Ulrich Radig vll als Vorlage?) UDP halte ich nicht wegen der Latenz 
für nötig sondern weil du den Echtzeitanspruch hast, dass du dir lieber 
nen Packetloss als ne retransmission erlauben kannst. Wobei ja 
theoretisch in der Direktverbindung keine Pakete verloren gehen :-)

Auch eine USB<->RS232 Wandlung und dann einfach die Daten über ne Uart 
empfangen/senden dürfte im Übrigen noch passen. Wieviel Latenz lässt du 
denn zu?

Oder warum nicht das Linuxprog komplett auf nen µC auslagern? Sind das 
so komplexe Berechnungen, dass das ein moderner PC machen muss? 500 
Pakete/Sekunde ist nicht gerade wenig und dort auf einem PC eine Latenz 
< 1ms einzuhalten dürfte nahezu unmöglich sein.

Per USB dürftest du übrigens wenn du geschickt arbeitest auch in die 
Richtung 2-5ms kommen.

von 4421 (Gast)


Lesenswert?

LinuxSystem ? Was soll das ? Ein Controller oder DSP ist da viel 
passender.

von Tim (Gast)


Lesenswert?

Wenn das µC Board genügend Power hat um 1000 UDP Telegramme pro
Sekunde zu verarbeiten, dürfte es auch schnell genug sein um
die Steuersoftware von dir direkt auszuführen.

Ansonsten gibt es noch die RS232....
Die benötigte Bandbreite von mindestens 1500 Bytes/s
schafft eine Verbindung mit 38400 Baud locker.
Latenz in dem Fall ca 1,7 msec (2x3 Byte).
Sehr viel besser dürfte die Ethernet Lösung auch nicht werden...

ps: Mist, zu langsam.

von Phil (Gast)


Lesenswert?

Mit USB sollte es auch gehen. Interrupt-Transfer kann man auf 1ms 
Abtastzeit stellen.

von tzuz (Gast)


Lesenswert?

hat deine firma kein geld sich nen anständigen ing zu leisten

von Florian K. (koppi)


Lesenswert?

@tzuz:
Ne, ich versuche gerade ein anständiger Ing. zu werden ;-) Ist ein 
FH-Projekt.

@Matthias
Was Parallelport und RS232 angeht:
Sind keine "heutige" Schnittstellen. Das ganze soll auch auf nem 
Notebook laufen. Da sind USB, Firewire, Ethernet...

@Phil
Was meinst du genau mit USB? USB-RS232-Wandler
Die Latenz sollte 2ms nicht überschreiten. Und ich fürchte, dass das 
sowohl beim Wandeln ein Problem darstellt, wie auch bei der späteren 
Verarbeitung.
Aber morgen (heut ist zu spät für sowas :-) ) werd ich mir mal ansehen, 
was es mit der Interupt-Transfer-Rate auf sich hat.


Die Steuerung ist ne Fuzzy-Logic. Die ließe sich wohl auch ebensogut auf 
dem µC unterbringen. Jedoch wird die von einer Kamera mit Daten 
gefüttert.
Diese macht 250 Bilder/sek (500 wäre besser). Der PC wertet die Bilder 
aus (Binarisieren, Objektfindung), berechnet Koordinaten und gibt die an 
die Fuzzy-Logic weiter. Diese errechnet unter Berücksichtigung des 
aktuell gemessenen Winkels vom Drehwertgeber die neue Schrittfolge für 
den Schrittmotor und gibt die Daten an diesen weiter.
Die Bildberechnung wird nen starken Multicore-CPU brauchen, um alles in 
2-4ms zu schaffen. Das kann wohl nicht auf nen Controller ausgelagert 
werden.


Gar nicht mal so einfach, oder?
Was die Ethernetvorschläge angeht, weitere Hardwarevorschläge?
"Webserver von Ulrich Radig" schau ich mir noch an, aber jetzt will ich 
erstmal schlafen ;-)

von Florian K. (koppi)


Lesenswert?

So,
selbstbauvarianten wie der Webserver von Ulrich Radig kommen aufgrund 
von wenig Zeit nicht in Frage.
USB->RS232 ist vom Prof ausgeschlossen worden.
Nach einigen Recherchen schwanke ich zwischen:

- Ethernut 2 (das Board ist in der FH noch vorhanden) nur bin ich mir 
nicht sicher ob das schnell genug ist. Klar, testen kann ichs mal, aber 
wenn ihr sagt, ich kanns gleich vergessen, kann ich die Zeit dafür 
sparen
Erfahrungen?

- ICNOVA AP7000 bzw. Grasshopper-Board
Wo ist da eigentlich genau der Unterschied?

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.