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
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.
LinuxSystem ? Was soll das ? Ein Controller oder DSP ist da viel passender.
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.
Mit USB sollte es auch gehen. Interrupt-Transfer kann man auf 1ms Abtastzeit stellen.
hat deine firma kein geld sich nen anständigen ing zu leisten
@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 ;-)
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.