www.mikrocontroller.net

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


Autor: Samuel Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan B. (stefan) Benutzerseite
Datum:

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

Autor: Samuel Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: 6645 (Gast)
Datum:

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

Autor: Tobias G. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: 6645 (Gast)
Datum:

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

Autor: Morin (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Samuel Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.