Hi, ich beginne grade mit MatlabRealtime zu arbeiten, dazu programmiere
ich Programme mit Simulink.
Wo laufen denn diese Programme drauf? Kann ich dazu jeden xbelibigen PC
nehmen? Ist das Matlab Realtime ein eigenständiges Betriebssystem oder
einfach sowas wie ein Treiber, der im Hintergrund wo läuft? Wenn ich
jetzt in Matlab-Simulink meinen Code compilieren lasse, dann muss ich ja
mit dem Compilat irgendwo hin, aber wohin genau? Kann ich dazu auch
einen Arduino benützen oder einen Rspberry Pi?
ja, aber wo läuft das Programm dann drauf? Wenn ich mit Simulink ein
Modell gemacht und compiliert habe, kann ich es dann z.B. auf einem
Raspberry Pi ausführen? Das steht in Deinem Link nicht drinnen.
Guido C. schrieb:> "Simulink Desktop Real-Time™ provides a real-time kernel for executing> Simulink® models on a laptop or desktop running Windows® or Mac OS X."
Das hab ich auch grad gelesen, aber was bedeutet das genau? Ich brauche
also ein Echtzeitbetriebssystem - und dann? Kann ich dann das Simulink
RealTime als Programm herunterladen, was sich dann in den Kernel
reincompiliert? Oder gibts auch ein Programm, so dass ich einen
separaten älteren Laptop bswp. nutzen kann, den mit meinem Haupt-PC
verbinde und dann damit Programme rübersenden und da rauf laufen lassen
kann? Dass verrät mir nämlich leider die Seite nicht :-(
Ich habe mir das grade angeschaut:
http://de.mathworks.com/hardware-support/simulink-desktop-real-time.html
Das sind ja z.B. lauter Einschub-Karten für ISA- oder PCI-Slots. Muss
ich mir so eine Karte kaufen und die dann in den PC einbauen? Ein
Raspberry Pi z.B. oder Arduino ist nicht darin aufgeführt. Aber es gibt
doch auch ein Echtzeitkernel für den Raspberry Pi, würde der darauf
nicht funktionieren mit dem Simulink?
Hi,
ich hab das hier grad im Internet gefunden:
http://www.osrtos.com/rtos/freertos
Kann ich das RTOs z.B. auf meinem Raspberry Pi installieren, dann auf
meinem PC mit Simulink etwas machen und dass dann auf dem Raspberry mit
RTOs laufen lassen und testen, was es macht?
Nicht so OutOfTheBox wie du es gerne hättest. Wenn du es auf einem
anderen System laufen lassen willst, musst du dir den Quellcode von
deinem SimulinkModel ausspucken lassen (glaube ich eine weitere
Kauflizens). In diesen musst du dann noch ein paar Sachen reintun, wie
Signale, wo auch immer du die her bekommst.
Die nötigen Bibliotheken und Runtime-Umgebungen gibt es nicht für Linux.
Sondern nur für Windows und MacOS.
Waltraud B. schrieb:> on a laptop or desktop running Windows® or Mac OS X."
Es ist genauso, wie es da steht: Es läuft auf einem Laptop oder
Desktop-PC unter Windows oder OS-X.
Was auch bedeutet, es läuft nicht auf und unter irgend etwas anderem...
Oliver
Mhmm, das verwundert mich grade etwas.
Bei uns auf Arbeit haben wir von einer Partner Firma eine Matlab Runtime
für Linux (Ubuntu 1204 64bit) und ein kompiliertes Simulink Model.
Oliver S. schrieb:> Es läuft auf einem Laptop oder> Desktop-PC unter Windows oder OS-X
Ja, aber was muss ich denn dann machen? Ich habe noch einen Laptop mit
Windows drauf. Muss ich dann ein zusätzliches Programm noch
installieren? Oder läuft es auch auf dem PC, wo ich mein Matlab drauf
laufen habe? Oder muss ich irgendwie noch ein Programm installieren? Ich
habe bei Download nichts weiter gefunden, was ich machen muss, damit das
realtime-Programm läuft und wenn ich das Simulink-Realtime programm
compiliere, dann krieg ich eine .bin-Datei und keine ausführbare
exe-Datei, die ich starten könnte. Ich hatte gedacht, ich würde die .bin
oder auch evtl eine .hex-Datei dann an das Zielsystem senden, das
Zielsystem einschalten und dann läfut das Matlab-Simulinkmodell dort
drauf als fertiges Programm, ist das nicht so?
Oliver S. schrieb:> Vielleicht beschreibst du mal etwas genauer, was du eigentlich machen> möchtest.
Ich will an einem Windows-PC mit Simulink/Matlab-Simulink ein Modell
schreiben, dass fehlerfrei compilieren und auf einem anderen Computer
dann ausführen lassen (was ich compiliert habe). Es gibt in dem Simulink
so Blöcke, damit kann man z.B. was an- und ausstellen. Ich will auf
meinem Raspberry damit dann z.B. eine Lampe an einem Pin an- und
ausschalten. Oder wenn es auf einem Computer läuft mit Schnittstellen,
weil so ein PC dann keine Pins hat, dann will ich z.B. über die serielle
Schnittstelle eine Nachricht verschicken oder kriegen oder über das
Netzwerk was an einen anderen Computer schicken. Die Blöcke dazu sind ja
alle in dem Simulink da.
Hallo, ich habe das hier gefunden:
http://users.etech.haw-hamburg.de/users/hempel/projekte/xpc
Da ist von einem xPC-Target die Rede, was genau ist das? Ist das ein
Programm, dass ich auf einem anderen Computer laufen lassen kann, damit
das Matlab-Programm, dass compiliert wurde, dann darauf läuft?
Ist ein Matlab-Programm, dass ich mir compiliert habe, eigentlich ein an
sich für sich lauffähiges Programm oder müssen dazu noch
Zusatzbibliothken irgendwo anders vorhanden sein - wie in Windows z.B.
DLLs, wo auch noch Funktionen vorhanden und drinnen sind? Oder geht das
dann komplett ohne DLLs?
Es gibt doch für jedes System den individuellen Zielcompiler. Es gibt
z.B. einen freien gcc-Compiler für arm-32, dann für arm-8 etc. Kann ich
einfach mit Simulink dann etwas programmieren, mit dem speziellen
Compiler compilieren, linken und dann auf dem Zielsystem draufflashen?
Hallo,
vermutlich meinst du mit Realtime, die Matlab,Simulink, Stateflow
"Coder" Toolboxen. Diese generieren aus deinem Matlab Code, C Code. Mit
dem Code kannst du dann machen was du willst. ;)
Durch Anpassung der Schnittstellen und einem passenden Compiler wirst du
den Code auch auf einem Mikrocontroller, Raspberry,... zum Laufen
kriegen.
Wird aber je nach Anwendung ziemlichen Aufwand bedeuten.
Es gibt dann noch Embedded Coder, was in die ähnlicher Richtung geht.
Du kannst dir das aber so wie ich das sehe sparen. Der Raspi wird seit
R2013a mit einer eigenen Toolbox unterstützt.
http://it.mathworks.com/hardware-support/raspberry-pi-simulink.html
xPC-Target ist bzw. war eine Lösung bei der ein bootfähiges
Mini-Betriebssystem + das kompiliete Modell aus Matlab heraus erstellt
wurde. Das kann man dann über Netz, Floppy oder was auch immer auf dem
Ziel-PC starten und das kompilierte Modell wird da dann direkt
ausgeführt.
Inziwschen verwendet das faste keiner mehr, MABx etc sind einfach
komfortabler und für viele "Bastel-Boards" gibt es inzischen ja auch
Targetkonfigurationen.
Um das Modell in C-Code zu überführen sind doch noch (teure) Tools wie
Embedded Coder oder TargetLink erforderlich.
Hast du die?
Oder gibts da noch andere Möglichkeiten der Codegenerierung?
X. O. schrieb:> Code, C Code.
Ach so, ich kriege dann C-Code, ich dachte, das Matlab nutzt dann gleich
dass gnu/gcc, um daraus ein Programm zu machen. Also, ich mache jetzt
sowas ähnliches, nur nicht mit dem Coder, sondern da drücke ich dann in
Simulink auf den Buiild-Button und dann erhalte ich eine .bin-Datei und
keinen C-Quellcode mehr. Es muss doch dann also schon irgendwas damit
passieren.
rcc schrieb:> gibt es inzischen ja auch> Targetkonfigurationen.
ja, und es gibt doch dann für jede Platform den speziellen
Target-GCC-Compiler, ich habe z.B. unterschiedliche Boards, da habe ich
dann unterschiedliche gesehen. Es gibt z.B. von Atmel für
unterschiedliche Atmels-Dinger verschiedenartige Compiler und ich
dachte, man nimmt einfach einen speziellen Compiler, um dann das damit
zu machen. Die gcc-Compiler sind doch meisstens kostenlos, darum doch
ddas gcc.
Hi, ich habe jetzt einen alten Laptop mit Windows 7, einer Netzwerkkarte
und einer seriellen Schnittstelle, ich will das ganze jetzt mit
SimulinkRealtime ansteuern, indem ich in Simulink ein Programm schreibe
mit meinem PC und dass dann auf dem Laptop zum Laufen kriege. Wie geht
das genau? Da sind ja ein paar Links, so wie der hier:
Guido C. schrieb:> "Hardware Support" klickst erhältst du eine Auflistung der unterstützten> Hardware.> http://de.mathworks.com/products/simulink-desktop-real-time/index.html> http://de.mathworks.com/hardware-support/simulink-desktop-real-time.html
Leider steht da nicht drinnen, wie man das genau macht, dass das auch
bei mir auf dem Laptop dann läuft. Muss ich dann auf dem Laptop auch das
Matlab installiert haben oder reicht es dann einfach, ein compiliertes
Matlab-Simulink-Modell dort rüberzukopieren und dann von da starten zu
lassen? Wenn ja, wie geht das?
Hallo Waltraut,
Simulink Realtime bringt sein eigenes Betriebssystem mit! Das kann man
direkt von Diskette oder USB-Stick starten. Auf dem Laptop deshalb kein
Windows installiert sein. Eine bootbare Diskette oder USB-Stick kann man
in Matlab mit dem Befehl "xpcbootdisk" oder
"SimulinkRealTime.createBootImage" ein Menü öffnen, indem eine Bootdisk
erstellt werden kann.
HTH,
Stefan
Also von Deinem ersten Link ausgehend steht doch alles da:
Simulink Coder generates C and C++ code from the model and the solver.
Together with Simulink Coder, Simulink Desktop Real-Time creates a
binary file of the model and solver using the included C compiler. The
real-time kernel loads the resulting binary file and I/O device drivers,
and establishes a connection with Simulink. In external mode, the model,
solver, and I/O device drivers all execute in real time. You can achieve
performance approaching 20 kHz in external mode.
Also: Simulink mus installiert sein mit diesem real time kernel (der
wohl teile von Windows oder MacOS ersetzt). Dann in diesen das binary
file laden, "external mode" starten und glücklich sein. Wie genau das
Schritt für Schritt geht wird wohl in der Doku erklärt sein, aber dafür
will ich jetzt nicht extra einen Account anlegen.
Stefan H. schrieb:> "SimulinkRealTime.createBootImage" ein Menü öffnen, indem eine Bootdisk> erstellt werden kann.
Hi,
ich hab das probiert, ich kann aber nicht einstellen, dass der eine CD
erstellen soll, der meckert:
Wenn ich das mache:
>>SimulinkRealTime.createBootImage" ein Menü öffnen, indem eine Bootdisk>>erstellt werden kann.
dann kommt kein Menü, in dem ich was einstellen kann, sondern halt die
Fehlermeldung, die ich oben grade erklärt habe, dass die kommt. Warum
schreibst Du mir, dass ein Menü kommt, obwohl kein Menü kommt, was mache
ich also falsch?
Hallo Waltraud,
probier mal folgendes: Gib im Command-Windows xpcexplr ein.
Dann kommt eine Oberfläche, die wie im Bild aussieht. Mit Klick auf
'Properties' kommst du ins Menü, in dem Du die Bootdisk erstellen
kannst.
Grüße,
Stefan
Hi, dass klappt:
Stefan H. schrieb:> Hallo Waltraud,>> probier mal folgendes: Gib im Command-Windows xpcexplr ein.> Dann kommt eine Oberfläche, die wie im Bild aussieht. Mit Klick auf> 'Properties' kommst du ins Menü, in dem Du die Bootdisk erstellen> kannst.>> Grüße,>> Stefan
Ich hab jetzt auch den PC verbunden mit dem anderen PC.
Jetzt möchte ich folgendes machen:
Am Zielsystem - also dort, wo die CD mit dem Targetprogramm drauf
gestartet ist - ist eine serielle Schnittstelle mit einem USB-Port
drinnen, also keine richtige serielle Schnittstelle wie früher, sondern
ein RS232-Simulator, der durch die USB-Schnittstelle bereitgestellt
wird:
Sowas in der Richtung ist das, nur ein bißchen anders:
https://www.reichelt.de/?ARTICLE=163092&PROVID=2788&wt_mc=amc141526782519998&gclid=COf3leKd8skCFYpsGwodLLwJeA
Aber es funktioniert unter Windows.
Jetzt möchte ich mit Matlab etwas mit der seriellen Schnittstelle
machen. Ich möchte mit Simulink etwas über diese Schnittstelle
übertragen, z.B. ein Zeichen. Ich will das Programm in Simulink machen,
compilieren, auf das Zielsystem übertragen, dort starten und dann dort
damit von da aus Zeichen senden und empfangen, die ich dann auf einem
zweiten Rechner mit serieller Schnittstelle zum Beispiel mit Putty sehen
kann.
Wenn ich das Matlab-Real-Time-Betriebssystem auf dem Zielsystem starte,
kommt ein schwarzer Bildschirm, wo unten steht - Matlab Realtime und ein
bißchen etwas über den Speicher und die Anzahl der CPUs, sowie die
eingestellt IP-Adresse zur Kommunikation mit dem Netzwerk über die
Netzwerkschnittstelle. Und ich sehe den jetzt auch in meinem Netzwerk,
wenn ich mir alle Netzwerkteilnehmer anzeigen lasse, dass der Rechner da
ist und mit dem Target-Explorer kann ich auch eine Verbindung zu diesem
Rechner aufbauen. Also ist schon mal eine Kommunikation geht und jetzt
möchte ich das gerne mit der seriellen Schnittstelle ausprobieren, damit
ich weis, ob das klappt oder ob das nicht klappt.
Aber kann ich mir auch die auf dem Zielsystem vorhandene Periferie
anschauen, z.B. alle angeschlossenen USB-Geräte, alle Netzwerk-Karten,
ggf. auch solche, die mit USB angeschlossen wurden und so, wie geht das?