Hi Lieber Entwickler,
Nach eine lange Suche hier konnte ich mich leider nicht weiter schlau
machen.
Ich habe ein Steuerungsgerät für mein Praktikum zu realisieren, der ca.
40 digitale I/O für einige Sensoren, einen CANbus um mit einige
Komponente zu kommunizieren, ADC und einen DAC besitzen muss.
Als Ideen hatte ich zwei:
-Entweder mit einem Raspberry, der einige MHZ (700) Leistung unter dem
Hub hat. und dann voll ausgestatet mit einem OS. Dafür muss ich alle
dieser Expander (für die GPIO, für Canbus, Für ADC..etc) extra
ausstaten, und dazu auch die Software.
-zweite Idee wäre mit einer MCU (beispielweise Cortex-M3). Denn er
besitze all dise Schnittstellen. Da benötigte man keine Expander dazu.
Jetzt bleibt mir die Frage mit der Echtzeit Offen.
ist das Raspberry so leistungsfähig, um die funktionen im echtzeit
auszuführen ??
wie könntet ihr die zwei Idee bewerten ??
Mein Raspberry Pi ist heute gekommen, doch ich konnte das Teil bisher
noch nicht ausprobieren. Ich hab selbst mal überlegt Raspberry Pi für
Echtzeitanwendungen einzusetzen, bin aber dann relativ schnell wieder
davon abgekommen. Sicher, es mag möglich sein das Ding irgendwie
echtzeitfähig zu machen, doch da handelst du dir vermutlich mehr
Probleme ein, als es tatsächlich bringt. Das Raspberry Pi Board ist zwar
toll, aber meines Erachtens (zumindest was ich bisher gelesen habe)
einfach nicht für Echtzeitanwendungen gemacht.
Ich würde da eher zu Cortex M3 (STM32 kann ich zum Beispiel empfehlen)
raten. Meines Erachtens ist die Einarbeitungszeit in die 32bit uC von ST
jedoch schon ziemlich hoch. Falls du nur eine einfache Anwendung mit
wenig Rechenaufwand und vielen IOs realisieren musst, würde ich dir eher
zu nem AVR Derivat raten. Ansonsten solltest du da schon ein bisschen
Zeit einrechnen (je nachdem wie gut du dich mit Mikrocontrollern
auskennst).
Für die Steuerung sind unter andern auch einen Regler , der zwei Motoren
(abhähig von ihren Drehzahl) regelt zu implementieren.
Ich habe einen einfachen Blinker Programm für Raspberry geschrieben, der
einen GPIO_PIN toggelt danach mit einem Logikanalyzer das Signal
angeschaut.
was mir aufgefallen ist, dass sobald das RP etwas im Hintergrund tut,
wird das Signal nicht mehr regelmässig. und tauchen große Abstände im
Signal auf.
Der Raspberry hat intern auch einen ARM-Kern, insofern ist das relativ
egal. Relevant ist für Echtzeitanforderungen eher das verwendete
Betriebssystem, und da sieht es bei normalem Linux (Debian & Co) nicht
sonderlich toll aus.
Schau mal nach RTLinux auf dem RPi.
Oder guck nach dem Beagleboard, siehe auch
https://groups.google.com/forum/#!msg/beagleboard/i1YGBYbMYuk/oZnxT6I5W54J
- hier hat wohl jemand erfolgreich RTLinux drauf zum Laufen gebracht.
Max
Etwas vereinfacht: Der CM3 ist gut beim Steuern von Hardware mit vielen
Pins, und schlecht bei komplexeren TCP/IP Services und umfangreichen
Daten. Beim RPi ist es genau umgekehrt.
Praktikant schrieb:> Hi Lieber Entwickler,>> Nach eine lange Suche hier konnte ich mich leider nicht weiter schlau> machen.>> Ich habe ein Steuerungsgerät für mein Praktikum zu realisieren, der ca.> 40 digitale I/O für einige Sensoren, einen CANbus um mit einige> Komponente zu kommunizieren, ADC und einen DAC besitzen muss.>> Als Ideen hatte ich zwei:>>> -Entweder mit einem Raspberry, der einige MHZ (700) Leistung unter dem> Hub hat. und dann voll ausgestatet mit einem OS. Dafür muss ich alle> dieser Expander (für die GPIO, für Canbus, Für ADC..etc) extra> ausstaten, und dazu auch die Software.>> -zweite Idee wäre mit einer MCU (beispielweise Cortex-M3). Denn er> besitze all dise Schnittstellen. Da benötigte man keine Expander dazu.>>> Jetzt bleibt mir die Frage mit der Echtzeit Offen.>> ist das Raspberry so leistungsfähig, um die funktionen im echtzeit> auszuführen ??>> wie könntet ihr die zwei Idee bewerten ??
Erstmal bewerte ich Deine Rechtschreibung mit 4-.
Der Raspberry ist populär, aber nicht das einige Linux-Board. Für Dich
wäre der BeagleBoneBlack viel besser geeignet, weil er viel mehr IOs
hat. Plus: er ist auch sonst schneller.
http://beagleboard.org/Products/BeagleBone%20Black
Was ist bei Deiner Anwendung wichtig?
- Brauchst Du eine hohe Rechenleistung? Musst Du viele
Gleitkommaoperationen durchführen? Dann ist ein Linux-Board besser?
- In der Automobilindustrie gibt es oft die Anforderung, dass jedes
CAN-Gerät innerhalb von n Millisekunden (mit n<<1000) nach dem
Einschalten betriebsbereit und auf CAN Messages reagieren können muss.
Das schaffst Du mit einem Linux-Board und einem Standard-Linux niemals.
Da hast Du Bootzeiten von einigen 10 Sekunden. In diesem Fall musst Du
ein Mikrocontrollerboard verwenden, das ein prozessorinternes Flash hat,
aus dem der Code direkt ausgeführt wird. Die großen ARM11 und Cortex
A8/A9 haben das nicht, und die findest Du daher nicht in diesen
Anwendungen.
- Musst du zwingend ein festes Zeitraster einhalten, egal was auch immer
passiert? Das nennt sich "harte Echtzeit". Dafür ist Linux nicht
geeignet. Nimm ein richtiges Echtzeitbetriebssystem (RTOS) und suche die
Hardware dann nach den Anforderungen des RTOS aus. Das wäre ein Punkt
für den Mikrocontroller.
- Brauchst Du schnelle IOs? Ist es wichtig, dass der Prozessor die Pins
schnell schalten kann? Dann kannst Du nicht mit IO-Expandern arbeiten,
dann müssen es GPIO-Pins des Controllers sein. Das schließt dann den
Raspberry Pi aus, weil der nur wenige Pins dafür über hat. Und bei Linux
wirst Du Dich dann mit Kernelprogrammierung auseinandersetzen müssen,
was Dein Projekt deutlich schwieriger macht. Ohne Linux hast Du es hier
einfacher.
- Musst Du viel auf dem CAN-Bus senden oder empfangen? Werden hohe
Datenraten benötigt? Wird ein definiertes Zeitraster benötigt? Hier
schneidet der Raspbery Pi sehr schlecht ab. Die CAN-Interfaces, die es
dafür gibt, laufen alle über SPI, und der in diesen Lösungen verwendete
Microchip SPI-CAN-Controller ist dafür nicht die optimale Lösung. Der
BeagleBoneBlack hat glaube ich CAN im Mikrocontroller schon eingebaut -
Du bräuchtest dann nur noch einen Transceiver. Und wenn Du einen Cortex
M3/M4 oder einen PIC32 nimmst, dann wählst Du natürlich einen, der CAN
schon eingebaut hat.
Im großen und ganzen kann ich Dir sagen:
1. Nicht den Raspberry Pi nehmen. Der ist zwar weit verbreitet, und er
ist billig, aber er ist für das, was Du machen willst, nicht gedacht und
nicht geeignet. Es gibt genügend andere Linux-Boards, die Deine
Anforderungen besser erfüllen - falls Du überhaupt Linux verwenden
willst und verwenden kannst.
2. Überlege, ob Du die hohe Gleitkommaleistung der Linux-Boards wirklich
brauchst. Am besten ist es, wenn Du alles mit Ganzzahlen oder
Festkommazahlen machst. Das schafft dann auch ein Cortex M3/M4 oder
PIC32.
fchk
Hallo
Praktikant schrieb:> Für die Steuerung sind unter andern auch einen Regler , der zwei Motoren> (abhähig von ihren Drehzahl) regelt zu implementieren.
Wie sind die Motoren anzusteuern (PWM) ? Welche Zykluszeit wird benötigt
? Wie soll die Geschwindigkeit ausgenommen werden (via Impuls oder AB
Signal) ?
Ich würd dir wennst in Richtung Cortex M3/M4 gehst den TI TIVA C ans
Herz legen. Hat ein gutes Preis/Leistungsverhältnis.
näheres siehe Datenblatt:
http://www.ti.com/lit/gpn/tm4c123be6pz
@Frank
>Erstmal bewerte ich Deine Rechtschreibung mit 4-.
Ich kann Ihnen nur zustimmen.
Als ausländischer Student quäle ich mich immer noch mit der schwere
deutsche sprache :)
Aber für Ihre (Ausführliche Bewertung), die ich GENAU gebraucht habe.
bin ich Ihnen sehr dankbar.
@ seennoob
>Wie sind die Motoren anzusteuern (PWM) ? Welche Zykluszeit wird benötigt>? Wie soll die Geschwindigkeit ausgenommen werden (via Impuls oder AB>Signal) ?
Die Motoren werden prinzipiell mit einem Frequenzumrichter gesteuert.
Der FU konnte man entweder mit einer spanung 0...10V DC bzw. +/- 10V,
oder per CAN-Bus.
Obwohl ich für die erste Option noch tandiere...
Hallo Praktikant,
Ich hoffe Ihnen ist bewusst welche Einschränkungen es birgt wenn man
Analogwerte zum Steuern verwendet. Man ist beschränkt auf die 2 Motoren.
Bei kann könnte man sich die Vorteile eines Buses zunutze machen.
Da würde es sicher auch fertige HW geben in Form von einem Evalboard bei
den kleinen Cortex M3/M4.
Oder man nimmt sowas wie den TI AM3359 im ICE-Board.
Grüße
Eine eigene Frage?
Dieser Thread ist über 13 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.