Forum: Mikrocontroller und Digitale Elektronik Alternative zu Matlab Embedded Coder ?


von M. P. (et_1988)


Lesenswert?

Hallo,

ich habe gerade mit einem neuen Projekt angefangen, dass ich von meinem 
Vorgänger übernommen habe. Leider wurde hier eine Regelung auf einem 
F28335 mittels Matlab Simulink Embedded Coder programmiert.
"Leider", weil wir eine Lizenz für Matlab, Simulink, Simulink Coder und 
Matlab Coder, aber nicht für Embedded Coder haben. Dieses Add-On kostet 
erstaunlich viel.

Nun zur Frage:
Gibt es eine schlaue Herangehensweise, das Simulink-Modell ohne Embedded 
Coder zur Code-Generierung nutzen zu können, ohne gleich das ganze 
Projekt händisch in C zu verfassen?

Besten Dank!
Markus

von Eric B. (beric)


Lesenswert?

Rechne aus wieviel es kosten würde, das Ganze händisch in C 
nachzuprogrammieren (testen und Doku nicht vergessen!) und mach dann 
nochmal den Vergleich zu den Lizenzkosten.

Wäre es eine Option die Lizenzen für Simulink Coder und Matlab Coder 
aufzugeben, als Kostenersparnis?

Wenn der Vorgänger schon Embedded Coder eingesetzt hat, wo ist seine 
Lizenz dann hin?

von M. P. (et_1988)


Lesenswert?

Hallo und danke für die Antwort.
Klar, alles in C neu zu programmieren ist eine Option, es liegt ja auch 
schon der generierte C-Code von der alten Version vor.
Es wäre sicherlich billiger, das so zu machen, aber es soll ja auch eine 
Weiterentwicklung in Simulink stattfinden.
Da das Projekt aus der Uni kommt, wurde es vorher mit einer 
Campus-Lizenz erstellt.

von M. P. (et_1988)


Lesenswert?

Eric B. schrieb:
> Wäre es eine Option die Lizenzen für Simulink Coder und Matlab Coder
> aufzugeben, als Kostenersparnis?

Das Software Support Package von C2000 benötigt Simulink Coder, Matlab 
Coder und Embedded Coder.
Ich weiß auch garnicht, ob man gekaufte Lizenzen wieder zurück geben 
kann.

von Christopher J. (christopher_j23)


Lesenswert?

Allgemein musst du dir doch folgende Fragen stellen:

1. wie teuer ist es das Projekt zu portieren
2. wie teuer wäre die Lizenz
3. was gewinnst du bzw. verlierst du durch die Portierung

zu 1. und 2. hast du ja schon gesagt, dass du glaubst eine Portierung 
wäre billiger. Entscheidend ist aber meiner Meinung nach der 3. Punkt 
und da musst du dir weitere Fragen stellen:


4. ist eine Lösung in Simulink besser zu warten/zu erweitern als eine 
Lösung in C?

5. bietet eine Lösung in C Möglichkeiten, die du mit Simulink nicht 
hast?

6. wer kann/soll in Zukunft an dem Projekt arbeiten und können diese 
Leute eher Simulink oder C?

Zu 4. und 5. kann ich aus eigener Erfahrung sagen, dass 
Simulink-Programme je größer sie werden immer mehr zu "write-only-code" 
mutieren. Das hat den einfachen Grund, dass bei graphischen 
Programmierumgebungen die Eindeutigkeit wie bei C nicht so gegeben ist, 
d.h. es gibt unendlich verschiedene Möglichkeiten seine Blöcke zu 
platzieren, während es in C lediglich ein paar Zeilen Code sind. 
Desweiteren ist ein Refactoring bei einer graphischen 
Programmierumgebung grundsätzlich schwierig, d.h. wenn du etwas ändern 
willst, dann zeichnest du oft das halbe Model neu. Hast du dagegen nur 
einen simplen Regler mit einem ADC, einem DAC und ein bisschen 
Reglerlogik dazwischen, dann bist du mit Simulink super schnell fertig.

Das du mit C quasi alle Möglichkeiten hast, die die Hardware dir bietet, 
während du bei Simulink nur auf die Blöcke zurückgreifen kannst die du 
hast, sollte auch klar sein. Will man eigene Blöcke erstellen wird es 
erst richtig abartig, da hat man nämlich nicht nur die Komplexität von 
seiner Hardware und von der Sprache C, sondern muss sich noch zusätzlich 
mit den Eigenheiten von Matlab bzw. Embedded-Coder herumschlagen.

Der springende Punkt ist aber doch 6., also wer da zukünftig daran 
arbeiten soll und was diese Leute können. In der Uni wird doch 
heutzutage Matlab als "Industriestandard" verkauft, so dass es jeder 
irgendwann einmal lernen muss. Ob du fähige Leute hast oder findest, die 
ein Projekt in C (weiter-)entwickeln können, dass musst du selber wohl 
am besten wissen. Wenn du solche Leute hast dann wäre meine Entscheidung 
sehr wahrscheinlich C. Ist es aber nicht so, dann musst du eben abwägen 
und das geringere Übel wählen.

von M. P. (et_1988)


Lesenswert?

Vielen Dank Christopher für die Ausführliche Gegenüberstellung!

Leider bin ich noch neu im Geschäft und kann schwer abschätzen, ob eine 
Portierung nach C (und das wäre in meinem Fall einfach mit dem 
generierten Code weiter zu arbeiten) sinnvoll ist.

4. ist eine Lösung in Simulink besser zu warten/zu erweitern als eine
Lösung in C? - für mich auf jeden Fall, da ich das jetzt "kann"

5. bietet eine Lösung in C Möglichkeiten, die du mit Simulink nicht
hast? - bestimmt, aber ist auch nicht nötig... soweit

6. wer kann/soll in Zukunft an dem Projekt arbeiten und können diese
Leute eher Simulink oder C? - erstmal nur ich und dann Studenten, die 
alle lieber Matlab benutzen

Das mit dem "write-only-code" ist natürlich so eine Sache. Bisher habe 
ich noch nicht wirklich viel im C-Code wieder gefunden, was ich vorher 
im Simulink-Modell hatte.

Vielleicht mal anders gefragt: Was ist der Unterschied zwischen 
Matlab/Simulink Coder und Embedded Coder? Kann ich nicht (evtl. auf 
Umwegen), auch ohne den Embedded Coder den C-Code erhalten? Ist 
vielleicht eine dumme Frage, aber würde 5000€ sparen.

von Null-Null (Gast)


Lesenswert?

Erzaehl doch mal was zur Regelung. Ein normaler PID ? Dann ist er 
schnell neu geschrieben. Eigentlich ist auch eine andere Regelung 
schnell geschrieben, denn das Wissen steckt in der Parametrierung.

von M. P. (et_1988)


Lesenswert?

Hallo,

von Simulink wird sowohl der ReadOut des ADC für 4 Sensoren sowie die 
arithmetische Berechnung der Sensorwerte (Kalibrierung) vorgenommen.

Diese werden dann in 3 PID-Reglern gegeben und damit 4 Ausgangsgrößen 
geregelt.

Würde schon irgendwie gehen.

Mir wurde von einem Freund jetzt TargetLink von dSPACE empfohlen, um den 
Code zu generieren. Ich schau mir das mal an :)

von TestX (Gast)


Lesenswert?

Kalibrierung und 3 PID Regler...dafür braucht man nun wirklich kein 
Matlab/Simulink..

dSpace setzt bei sowas auch auf Matlab/Simulink auf...kostet aber noch 
um Welten mehr da man selbstverständlich alle Matlab Lizenzen zusätzlich 
benötigt.

Generell lohnen sich solche Toolchains nur für hochkomplexe Regelungen 
und Rapid-Prototyping..

Octave/Scicos/Scilab können ansonsten auch solch simple Dinge..

von Christopher J. (christopher_j23)


Lesenswert?

Markus P. schrieb:
> Vielleicht mal anders gefragt: Was ist der Unterschied zwischen
> Matlab/Simulink Coder und Embedded Coder?

Soweit ich das verstehe:
Matlab Coder: Matlab Code nach C
Simulink Coder: Simulink Blockschaltbilder nach C
Embedded Coder: Integration der beiden oberen mit der Toolchain des 
jeweiligen Targets, sowie Target-spezifische Blöcke, z.B. ADC, DAC, PWM, 
usw.


Markus P. schrieb:
> Kann ich nicht (evtl. auf Umwegen), auch ohne den Embedded Coder den
> C-Code erhalten?

Geht vielleicht irgendwie für den Reglercode aber z.B. die ADC-Blöcke 
sind weg.


Markus P. schrieb:
> Mir wurde von einem Freund jetzt TargetLink von dSPACE empfohlen

Kann mich da TestX nur anschließen. Zum einen wirst du weiterhin 
Embedded Coder benötigen, wenn du z.B. die ADC-Blöcke weiterhin nutzen 
willst und zum anderen wird es bei dSpace erst richtig teuer.

von M. P. (et_1988)


Lesenswert?

Danke für die Einschätzungen, dann versuche ich mal mein Glück und 
versuche meinen ersten Regler in C. :)

von Matthias Simons (Gast)


Lesenswert?

Falls da jemand noch nach 3 Jahren drüberstolpert: Grundsätzlich sollte 
es möglich sein, mit dem reinen RTW nur C-Code zu generieren (für 
Signalverarbeitung, Regler, Vorsteuerung) und sich dann händisch einen 
Wrapper drum zu programmieren, der die Schnittstellen im Mikrocontroller 
bedient.

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.