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 ??
Kommt auf Deine "Echtzeitbedingungen" an. Gruß Martin
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
https://github.com/jameswalmsley/RaspberryPi-FreeRTOS http://www.stevebate.net/chibios-rpi/GettingStarted.html http://alanstechnotes.blogspot.de/2013/03/rtems-on-raspberry-pi.html
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
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.