Forum: PC-Programmierung Embedded Linux mit Regelung im 1ms Bereich. Möglich?


von Samuel Schmidt (Gast)


Lesenswert?

Hallo,

ich habe einen FPGA mit USB 2.0 Schnittstelle der zur Zeit mit einem 
normalen PC (für eine Regelung) läuft. Ich würde jetzt gerne die 
Regelung unter 1ms Ablaufen lassen. Die USB-Delay Zeit ist sehr gering 
und die Berechnung sollte auch reletiv schnell erfolgen. Da das aber mit 
einem großem Linux System wohl nicht so schnell geht habe ich an ein 
ARM9 System mit Embedded Linux gedacht. Die Soll-Größen sollen ca. alle 
100ms mit der alten Steuerung auf dem PC erneuert werden. Hier dachte 
ich an Ethernet.

Ich bin mir der Komplexität durchaus bewust. Und sag mal, dass ich das 
hinbekomme könnte.

Aber geht das überhaupt. Die RT-Kernels von PC-Distributionen haben 
Taskscheiben im 1ms Bereich. Ich bräuchte kleinere (Faktor 10?!?), aber 
dann besteht die Gefahr das die CPU nur mit Task-Wechseln zutun hat.

Ich stelle mir das ungefähr so vor:

Embedded Linux <-> FGPA: (alle 1ms)
--Daten empfangen
--Berechnen (auch der Daten zum/vom PC)
--Daten senden

Embedded Linux <-> PC:  (alle 100ms)
--Daten empfangen
--Daten senden

     1ms                100ms
FPGA-----Embedded Linux-------PC

Könnte das gehen?!?

Grüße

Samuel

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Könnte gehen. Aber das Ding in der Mitte erinnert mich an Kanonen und 
Spatzen.

von Samuel Schmidt (Gast)


Lesenswert?

Hallo,

vielen Dank für die Antowort. Wg: "Kanonen und Spatzen", wie darf ich 
das verstehen? Sollte ich lieber auf dem PC ein RT Betriebsystem mit 
einem normalen Linux Kernel als Task laufen lassen?

Gruß

Samuel

von 6645 (Gast)


Lesenswert?

Weshalb kann die Regelung nicht ausschliesslich auf dem FPGA laufen ? 
Den PC nur zur Visualisierung unf Konfiguration einzusetzen waere 
einfacher.

von Tobias G. (Gast)


Lesenswert?

Hallo,
zuerst zu deinem Problem. Echtzeitlinux auf x86 Basis mit Abtastraten 
unter 1ms sind sehr wohl möglich. Natürlich kommt das ganz auf dein 
Modell an.
Wie es der Zufall will, arbeite ich bei einer Firma, die ein solches 
Echtzeitsysteme vertreibt ;-)

http://www.cosateq.com/

Gruss Tobi

von Karl (Gast)


Lesenswert?

Was ist das denn für eine Regelung, dass du gleich einen ARM9 verpulvern 
willst? Was macht das FPGA? Ein ARM7 ohne Linux rechnet trotz TCP/IP 
Stack noch einiges weg, in so einer Millisekude.

von 6645 (Gast)


Lesenswert?

Ja, wenn's nicht floatingpoint sein muss... eine normale Integer 
Regelung kriegt man schon in einem FPGA hin.

von Morin (Gast)


Lesenswert?

Brauchst du garantierte Berechnungszeiten? Davon hängt deine OS-Wahl 
maßgeblich ab. Es gibt in dem Bereich sog. "soft-real-time" OSes (glaub 
darunter fällt Embedded Linux auch, bin aber nicht sicher) die im 
Prinzip normale OSes mit massiver Optimierung auf Geschwindigkeit sind. 
Und es gibt "hard-real-time" OSes, die i.a. sogar langsamer sind, aber 
ihre garantierten Verzögerungszeiten auch einhalten.

Nur um ein Beispiel zu nennen: Ein soft-RT-OS könnte einen 
Prozesswechsel in max. 100 µs durchführen, außer du hast extremes Pech 
mit Cache Misses, dann können es schonmal bis zu 500 µs und mehr sein - 
kommt aber fast nie vor, deshalb nicht so schlimm. Ein hard-real-time-OS 
würde dagegen sagen: "200 µs, aber niemals mehr, egal was passiert". 
Ersteres wäre z.B. für ein User Interface praktisch, letzteres wenn >200 
µs eine Maschine gegen die Wand fahren lassen würde (typischerweise in 
einer Kette von anderen Ereignissen).

Deshalb: Überleg als erstes, ob du garantierte Zeiten brauchst. Embedded 
Linux ist wie gesagt - meines wissens - ein soft-RT-OS.

Davon abgesehen überleg auch, ob es für eine Steuerung überhaupt ein OS 
braucht. Sowohl kurze als auch garantierte Zeiten bekommt man ganz ohne 
OS sehr viel einfacher, sofern die Aufgaben entsprechend einfach sind.

Ansonsten sparst du sicher mit Linux ne Menge Arbeit, aber es lohnt sich 
sicher auch, andere RTOS-Projekte anzusehen.

von Samuel Schmidt (Gast)


Lesenswert?

Hallo,

vielen Dank für die Antworten.

RE: Weshalb kann die Regelung nicht ausschliesslich auf dem FPGA laufen?

Es sollen mehrere Fuzzy Regler laufen die event lernen sollen. Zur Zeit 
dient das FPGA nur zum Sammeln der Daten. Die Logik möchte ich ungerne 
im FPGA haben, weil es dann lange dauert wenn etwas geändert werden 
soll.

RE: zuerst zu deinem Problem. Echtzeitlinux auf x86 Basis mit 
Abtastraten
unter 1ms sind sehr wohl möglich.

Ich habe nochmal gegoogelt und mittels RTAI einen 10kHz Taktgeber als 
Thread bei ausgelastetem PC gesehen. Sehr eindrucksvoll.

RE: dass du gleich einen ARM9 verpulvern willst?
Es muss nicht ein ARM9 sein. Ich habe nur mal grob überfolgen was man 
für sein Geld bekommt und ein ARM9 ist nicht viel teuer und er hat eine 
MMU (erleichtert etwas den Einstaz von Linux). Aber es kann auch was 
ganz anderes sein.

RE: Ja, wenn's nicht floatingpoint sein muss... eine normale Integer
Regelung kriegt man schon in einem FPGA hin.

Nein ich könnte es ganzzahlig mit einer Auflösung von 12Bit realisieren.

RE: Brauchst du garantierte Berechnungszeiten?

Ja. Es soll eine Stromregelung für Gleichstrom-Motoren werden.

---

Ich mag die Kombination von Echtzeit und Betriebsystem nicht gerne. Ich 
habe da nicht viel Ahnung von. Ich werden einfach mal weiter mit Euren 
Meinungen und Informationen googlen und überlegen. Und bin für weitere 
Tips natürlich dankbar.

Grüße

Samuel

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.