Forum: Mikrocontroller und Digitale Elektronik Simulink-Modell: wie erforderlichen Speicher abschätzen


von Lys A. (jazz_89)


Lesenswert?

Liebe Microcontroller.net-Foristen,

für eine Echtzeit-Anwendung mit mehreren Sensoren und Aktuatoren, möchte 
ich ein Simulink-Modell in C kompilieren und mit 2kHz auf einem 
RealTime-System (z.B. ein PXI von National Instruments oder ein SPS) 
deterministisch laufen lassen.
Wie kann ich vorab sicherstellen, dass der Rechner oder der 
Mikrocontroller auf dem das Simulink-Modell laufen soll, genügend 
Arbeitsspeicher für die Ausführung besitzt?

Kann man den Bedarf an Arbeitsspeicher von der Größe der C-Datei 
abschätzen? Gibt es genauere Methoden dafür?


Danke vielmals

Mit freundlichen Grüßen
jazz_89

von Bernd K. (prof7bit)


Lesenswert?

Ich weiß, das ist jetzt ein bisschen fies aus Deiner Sicht gesehen aber 
ich bin gerade dabei thematisch passende Threads zu verknüpfen:

Beitrag "Keine Ahnung in der Entwicklung"

von Karl (Gast)


Lesenswert?

Bernd K. schrieb:
> ,

Sehr hilfreich. Trottel.

@OP:
Ich kenne ein System mit ca 2000 Seiten simulink Doku das in 100 kib RAM 
läuft. Es ist aber auch problemlos möglich in einem Modell viel mehr zu 
verbrauchen.

Wie viel RAM bräuchte das in c? Embedded coder kann das auch. Simulink 
coder Faktor 2 bis 10.

Es gibt ein kostenloses target für arduino. Da kann man leicht die 
Größenordnung erkennen.

von Dampf T. (ouuneii)


Lesenswert?

Der Speicherbedarf und die Rechenleistung haengt sehr stark an den 
Algorithmen. Wenn man anstelle eines einfachen Tiefpasses mit einer 
Speicherstelle ein 20 poliges FIR Filter haben muss, wenn man anstelle 
eines einfachen PIDs, eine 20x20 Matrix durchjagen muss, usw. braucht 
man das uebernaechst Schnellere und Groessere. Das Mathlab/Simulink 
unterstuetzt diesen Trend. Denn wenn das Problem geloest ist, heisst es 
Deckel drauf, next. Auch wenn man noch stark vereinfachen koennte.

von Lys A. (jazz_89)


Lesenswert?

Dampf T. schrieb:
> Der Speicherbedarf und die Rechenleistung haengt sehr stark an den
> Algorithmen. Wenn man anstelle eines einfachen Tiefpasses mit einer
> Speicherstelle ein 20 poliges FIR Filter haben muss, wenn man anstelle
> eines einfachen PIDs, eine 20x20 Matrix durchjagen muss, usw. braucht
> man das uebernaechst Schnellere und Groessere. Das Mathlab/Simulink
> unterstuetzt diesen Trend. Denn wenn das Problem geloest ist, heisst es
> Deckel drauf, next. Auch wenn man noch stark vereinfachen koennte.

Genau in dieser Richtung geht meine Frage. Umso mehr Filter oder 
Übetragungsfunktionen man laufen lässt, desto mehr Speicher benötigt man 
offensichtlich. Und die Genauigkeit der Zahlen (bits) wird sicherlich 
auch eine Rolle spielen. Aber gibt es irgendwelche Faustregeln oder 
Ansätze? Wäre eine PXI-Plattform von National Instruments oder ein SPS 
besser geeignet für recht umfangreiche Simulink-Modelle?

Vielen Dank schon mal

von Karl (Gast)


Lesenswert?

Versteht deine sps c?
Recht umfangreiche Modelle laufen schon auf einem arduino. Sehr 
umfangreiche Modelle auf einen stm32f4 oder tricore. Enorm umfangreiche 
Modelle auf einem mpc750. Wahnsinnig umfangreiche Modelle auf einem PC.

Folglich reicht dir die sps. Ansonsten müsstest du etwas genauer werden.

von Lys A. (jazz_89)


Lesenswert?

Ich nehme an, dass die SPS C versteht, bin mir aber nicht ganz sicher, 
da ich eher aus der Maschinenbau-Ecke komme. Übrigens es ist keine 
mobile Anwendung, sondern für einen fixen Prüfstand gedacht.

Das Modell soll ca. 8 Eingäne haben sowie 8 Ausgänge. Die Signale werder 
zum Teil analog und zum Teil digital sein. Es soll in Echtzeit das 
Fahrzeugverhalten eines Landfahrzeuges oder eines Flugzeuges simuliert 
werden (2 kHz "hard" real time). Also Bewegungsdifferentialgleichungen 
umd ein paar Look-Up-Tabellen (bzw. Kennlinien die aufgerufen werden).

Da sich meine Programmierkenntnisse auf Matlab und etwas Labview 
begrenzen, bin ich mir nicht sicher welche Platform sinnvoll wäre (SPS 
oder PXI).

von SchaunWirMal (Gast)


Lesenswert?

Ob die folgende Antwort passt, hängt davon ab, was Du damit anfangen 
willst.

Es hindert Dich ja niemand den Code zu compilieren. Dann siehst Du wie 
groß er ist. Danach kannst Du dann Deine Entscheidungen richten.

Um welche Entscheidung geht es denn? (Ich könnte ja Vermutungen darüber 
anstellen, aber ich möchte das lieber nicht tun).

von SchaunWirMal (Gast)


Lesenswert?

Wenn Du allerdings den Compiler erst mit dem Kauf des Rechners bekommst, 
wird es schwierig.
Für die meisten uCs und handelsüblichen PCs gibt es Compiler umsonst zum 
herunterladen.
Für die eine oder andere SPS mag das anders aussehen. Aber da würde ich 
dem Händler einfach mal das Problem schildern, dass die Entscheidung 
erst fallen kann, wenn Du weißt, das der Code hineinpasst. Wenn er 
verkaufen will, dann wird er sich was einfallen lassen.

Es ist an sich nicht unmöglich, die Codegrösse bei Kenntnis der 
Architektur zumindest grob abzuschätzen. Aber das erfordert einige Zeit 
an Erfahrung und ist dann immer noch ziemlich grob.

Dazu bräuchte man aber mehr Fakten.

von Martin (Gast)


Lesenswert?

Lys A. schrieb:
> Das Modell soll ca. 8 Eingäne haben sowie 8 Ausgänge. Die Signale werder
> zum Teil analog und zum Teil digital sein. Es soll in Echtzeit das
> Fahrzeugverhalten eines Landfahrzeuges oder eines Flugzeuges simuliert
> werden (2 kHz "hard" real time). Also Bewegungsdifferentialgleichungen
> umd ein paar Look-Up-Tabellen (bzw. Kennlinien die aufgerufen werden).

Also ich bin nicht sicher, ob ich Dich richtig verstanden habe, aber 
wenn Du ein kompiliertes Simulink-Modell in Echtzeit laufen lassen 
willst, bist Du ein Kandidat für Simulink Realtime. Das ist eine 
wunderbare Sache, aber die Lizenzkosten sind happig, Du brauchst SLRT, 
Matlab, Simulink, Simulink Coder, Matlab Coder. Dazu noch ein Target, 
auf dem es läuft. Mit dem kleinsten Speedgoat-System mit einer 
Multi-IO-Karte bist Du dabei (bis geschätzt 20 kHz Abtastrate). Damit 
landest Du im mittleren fünfstelligen Preisbereich.
Wie schon gesagt, das ist ein hammermässiges Setup, erfordert aber 
tiefes Durchatmen beim Betrachten des Angebots und der Rechnung für die 
jährliche Software-Wartung. Immerhin eine Sorge hast Du nicht: Die 
Software ist so teuer, dass es bei der Hardware kaum mehr drauf ankommt. 
Speicherbedarf spielt praktisch keine Rolle...

Jemand hat "Arduino" gesagt - was bräuchte man dazu? So wie ich es sehe, 
immer noch Matlab, Simulink, Matlab Coder, Simulink Coder. Man spart 
sich zwar Simulink Realtime, aber die Ersparnis ist wohl nicht gross.

Kennt jemand den Embedded Coder? So wie ich es verstehe, baut der auf 
Matlab Coder und Simulink Coder auf.

von Karl (Gast)


Lesenswert?

OK. Ich rate Mal. Prüfstand für die Uni?
Das beschriebene Modell würde ich als winzig bis klein einstufen. Ohne 
Wertung, aber ich habe oft gesehen welche Blüten ein Modell treiben 
kann.

Den arduino habe ich erwähnt weil es dafür einen kostenlosen embedded 
coder gibt mit dem man ganz einfach testen kann. Raspberry Pi glaub ich 
auch.

Ein arduino due rechnet dir das wahrscheinlich, ein raspi auf jeden Fall 
aber das ist nicht das was du brauchst. Du brauchst eine Umgebung die 
stabil läuft und erweiterbar ist und mit der man Messdaten erfassen kann 
und evtl auch eine Benutzeroberfläche. Daher ni pxi oder dspace oder 
eberspächer oder mit Einschränkungen Etas.

Genauso brauchst du ein fertiges Target für simulink, weil es nicht zu 
deinem Hintergrund passt selbst eines zu entwickeln.

Wenn ich falsch liegen sollte: Shit in Shit out ?

von Lys A. (jazz_89)


Lesenswert?

> Also ich bin nicht sicher, ob ich Dich richtig verstanden habe, aber
> wenn Du ein kompiliertes Simulink-Modell in Echtzeit laufen lassen
> willst, bist Du ein Kandidat für Simulink Realtime. Das ist eine
> wunderbare Sache, aber die Lizenzkosten sind happig, Du brauchst SLRT,
> Matlab, Simulink, Simulink Coder, Matlab Coder. Dazu noch ein Target,
> auf dem es läuft. Mit dem kleinsten Speedgoat-System mit einer
> Multi-IO-Karte bist Du dabei (bis geschätzt 20 kHz Abtastrate). Damit
> landest Du im mittleren fünfstelligen Preisbereich.
> Wie schon gesagt, das ist ein hammermässiges Setup, erfordert aber
> tiefes Durchatmen beim Betrachten des Angebots und der Rechnung für die
> jährliche Software-Wartung. Immerhin eine Sorge hast Du nicht: Die
> Software ist so teuer, dass es bei der Hardware kaum mehr drauf ankommt.
> Speicherbedarf spielt praktisch keine Rolle...

Ja, du hast es richtig verstanden^^
Es soll keine "quick 'n dirty" -Aktion werden und vor allem soll das 
System erwiterbar sein, deswegen darf es ruhig etwas kosten :))


Ich habe die Wahl zwischen:
--Matlab+Simulink Coder+Speedgoat,
--Labview+Veristand+PXI (als DAQ-Gerät und Target)
-- oder ein SPS-System (z.B. von B&R automation mit deren "Automation 
Studio")

Mir fällt es etwas schwierig die richtige Wahl hier zu treffen. Hat 
jemand Erfahrung mit diesen Systemen. Was unterscheidet den hinsichtlich 
Flexibilität, Erweiterbarkeit und Kompatibilität mit Simulink die SPS 
von den anderen zwei?


Danke vielmals

: Bearbeitet durch User
von Martin (Gast)


Lesenswert?

Ich selber kenne nur SLRT (Simulink Realtime, kommt auf Simulink Coder 
obendrauf)+Speedgoat. Die Hardware ist der kleinere Teil, da lohnt es 
nicht zu sparen. Mit der 19"-Version hat man genügend Schub und auch 
Erweiterungsmöglichkeiten.
Die Software ist recht komplex und braucht schon etwas Einarbeitung. 
Wenns mal läuft, kommt man extrem schnell zu Ergebnissen, für 
Algorithmen-Prototyping ist das genial. Wie überall bei Matlab schleppt 
auch SLRT viel historischen Ballast mit, so dass die Bedienung nicht aus 
einem Guss ist. Sehr wichtig bei einem so komplexen System ist der 
Support. Der von Speedgoat ist 1a, der von Mathworks etwas langsamer, 
aber auch OK. Man sollte gar nicht erst dran denken, den Wartungsvertrag 
nicht zu verlängern. Die Doku ist zwar nicht schlecht, aber manche 
subtile Details kann man kaum wissen, dann hilft der Support.

Labview hat mich schon so viel geärgert, dass ich es nur noch 
gezwungenermassen verwenden werde. Allerdings kenne ich deren 
Echtzeit-Variante nicht.

SLRT ist, trotz aller Problemchen, ein Wahnsinnstool, mit dem man, wenn 
man die Einarbeitung hinter sich hat, sehr effizient arbeiten kann. Wenn 
das Budget es hergibt unbedingte Empfehlung. Es hilft sicher auch, wenn 
man schon vorher in der Matlab-Welt zuhause war.

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.