Hallo,
ich benutze für regelungstechnische Anwendungen GNU Octave, womit ich
für meine Zwecke bislang alles abdecken kann, was ich von Matlab im
Studium kennengelernt habe.
Nun suche ich einen möglichst kostenlosen und mit Octave kompatiblen
Simulink-Ersatz. Ich bin bei der Recherche auf BORIS gestoßen, jedoch
soll die Demo-Version die Projekte wohhl nicht abspeichern können, was
eher schlecht ist^^
Ich brauche im Prinzip nur eine Simulationsfähigkeit für
Mehrgrößensysteme im Zustandsraum, Sollwert-und
Zufallsstörgrößen-vorgabe, Stellgrößenbeschränkungen, Digitale Blöcke
und so die Standarddinge.
ManuelR schrieb:> Ich brauche im Prinzip nur eine Simulationsfähigkeit für> Mehrgrößensysteme im Zustandsraum, Sollwert-und> Zufallsstörgrößen-vorgabe, Stellgrößenbeschränkungen, Digitale Blöcke> und so die Standarddinge.
Das geht alles sehr einfach mit Python. Oder mit C/C++, wenn es noch
einen Tick schneller laufen soll. Nebenbei kannst du dir noch ein
Malen-nach-Zahlen-Buch kaufen und ausmalen für das Klickibunti-Erlebnis.
Kein Mensch braucht Simulink.
Björn schrieb:> Nebenbei kannst du dir noch ein> Malen-nach-Zahlen-Buch kaufen und ausmalen für das Klickibunti-Erlebnis.> Kein Mensch braucht Simulink.
Natürlich, kein Mensch braucht Simulink. Keiner würde auf die Idee
kommen, dass es praktisch wäre, wenn das Modell gleich grafisch
dokumentiert ist. Und natürlich würde man nie, niemals auf die Idee
kommen, dass Simulink-Modelle auch von Menschen gebaut werden, die nun
mal nix mit Code zu tun haben, weil Maschinenbauer, Antriebstechniker
oder Thermodynamiker.
Bei deinem Horizont wär das Malen-nach-Zahlen-Buch bei dir wohl besser
aufgehoben...
Euer Horizont ist da etwas kurz. Simulink kann extrem viel und ist sehr
mächtig. Es geht da um komplexe Gemischte Systemsimulation, Model based
development, Zertifizierte Auto Code Generierung etc pp.
Jan (Gast)
>Euer Horizont ist da etwas kurz. Simulink kann extrem viel und ist sehr>mächtig. Es geht da um komplexe Gemischte Systemsimulation, Model based>development, Zertifizierte Auto Code Generierung etc pp.
Vergiss nicht: Wir sind hier im Forum für fortgeschrittene
Blinklichtexperten. Von denen darfst Du nicht erwarten, dass sie den
Nutzen eines mehrere tausend Euro teures Tools einschätzen können, das
vorwiegend von Fachspezialisten in großen Firmen und Universitäten
benutzt wird.
Die Blinklichter programmieren sie lieber "bare metal".
Simulator schrieb:> Blinklichtexperten. Von denen darfst Du nicht erwarten, dass sie den> Nutzen eines mehrere tausend Euro teures Tools einschätzen können, das> vorwiegend von Fachspezialisten in großen Firmen und Universitäten> benutzt wird.
Deshalb kostet ein KFZ-Blinker heute auch 3-stellige Summen, weil er von
zertifizierten Fachspezialisten mit mehrere (zig)tausend Euro teuren
Tools simuliert und Code für den 4-Kern-64-Bit-Echtzeit-Blinkcomputer
generiert wurde (4 GB Flash, bootet in weniger als 2 Sekunden!), nur so
kann optimales und fehlerfreies Blinken gewährleistet werden. Das ist
die Zukunft!
> "bare metal"
Ohne uns Bare Metaller wäret ihr Matlabber komplett aufgeschmissen und
könntet kein einziges Byte Code generieren. Ihr müsstet die Blinker
mechanisch ansteuern! Also mach mal halblang.
Bernd K.
>Deshalb kostet ein KFZ-Blinker heute auch 3-stellige Summen, weil er von>zertifizierten Fachspezialisten mit mehrere (zig)tausend Euro teuren>Tools simuliert
Nö. Die HK sind bei Stückzahlen über 100.000 vernachlässigbar und die
Tools fallen da nicht ins Gewicht. Die Preise kommen vom Vertrieb und
der Lagerhaltung.
>Ohne uns Bare Metaller wäret ihr Matlabber komplett aufgeschmissen und>könntet kein einziges Byte Code generieren.
Auf jeden Fall. Fast so abhängig wie vom Bäcker um die Ecke.
Björn schrieb:> Kein Mensch braucht Simulink.
Und was tust du, wenn die auftraggebende Firma dir ein Simulink-Modell
sendet, das du verwenden musst, als Vorgabe?
Wäre ja prima, wenn die Alternative solchiges zu Importieren in der Lage
wäre, aber ist sie das?
Ich meine, ich sitze hier im Konstruktionsbüro mit 24 anderen
Entwicklern und von denen hockt die Hälfte an Kundenaufträgen, die auf
solchen Simulink Modellen basieren.
>Wäre ja prima, wenn die Alternative solchiges zu Importieren in der Lage>wäre, aber ist sie das?
Warum sollte sich jemand die Mühe machen, eine Open-Source Software zu
schreiben, die ein teures System ersetzt, das nur von Spezialisten
benutzt wird?
Wie viel Zeit müsst da jemand in die Entwicklung stecken, damit sie zu
einem über 20 Jahre gewachsenem System kompatibel ist?
Simulator schrieb:> Wie viel Zeit müsst da jemand in die Entwicklung stecken, damit sie zu> einem über 20 Jahre gewachsenem System kompatibel ist?
Eben!
Also, eine Alternative zu Matlab/Simulink wäre schon allein aufgrund
dieser völlig verkackten Scriptsyntax allemal erstrebenswert.
Ansonsten habe ich letzte Woche Scilab bei mir installiert - nur noch
nicht ausprobiert.
>Also, eine Alternative zu Matlab/Simulink wäre schon allein aufgrund>dieser völlig verkackten Scriptsyntax allemal erstrebenswert.
"verkackten Scriptsyntax" was soll das sein? Matlab ist nicht gleich
Simulink. Matlab ist für die Berechnung von Daten in Form von Matrizen
mit komplexen Zahlen gemacht. Welche Syntax sollte da besser sein?
Christoph M. schrieb:> Welche Syntax sollte da besser sein?
Wie wäre es mit irgendetwas C-ähnlichem?
Allein das man keine Variablen deklarieren kann ohne sie zu
initialisieren - was soll der Blödsinn?
Christoph M. schrieb:> Matlab ist für die Berechnung von Daten in Form von Matrizen> mit komplexen Zahlen gemacht.
Und da hätte man sich mal eine vernünftige und logische Weise einfallen
lassen können, Matritzen zu erstellen. Anstatt vieler verwirrender.
Ich habe mit Matlab jetzt schon seit einigen Jahren nicht mehr
gearbeitet und meine Kritikpunkte nicht mehr alle vollständig beisammen.
Ich habe aber den Vergleich zu C, Java, VBA (was schon eine
fürchterliche Sprache ist), LabView und ASM, wobei ich den meisten Code
bisher in Java und VBA geschrieben habe. Bei Matlab hat mich oft gestört
daß die Sprache einem eine eigenwillige Struktur aufzwingt und der Code
recht schnell unübersichtilch und immer weniger selbsterklärend wird.
Und der gruselige Codeeditor tut sein Übriges dazu.
Auch die Formulierung von if- oder switch-Statements oder Schleifen:
keine vernünftige Kapselung z.B. der Abbruchbedingung wie z.B. (), aber
das Ende des Codeblocks mit 'end' unnötig lang ausschreiben.
LaTex-gerenderte Ausdrücke für größere Formeln im Quellcode wären
großartig, aber das ist für eine Skriptsprache, dessen Hauptanwendung
Berechnungen sind, leider zuviel verlangt.
MathWorks ist halt einfach eine Firma, die ausschließlich von dem
historsich gewachsenen Problem lebt, in einer Nische zu lange allein
gewesen zu sein und dadurch große Verbreitung erlangt zu haben.
Keine Konkurrenz -> beschissenes Produkt.
Und soweit ich das bisher gesehen habe, stehe ich mit dieser Meinung
keineswegs allein da.
>Und soweit ich das bisher gesehen habe, stehe ich> mit dieser Meinung keineswegs allein da.
Sicher, aber ein Schüler, der Mathematik nicht mag, steht mit seiner
Meinung auch nicht alleine da.
Matlab ist für Leute, die sich vor allen Dingen im Bereich Modellbildung
und Simulation bewegen. Wer sich mit anderen Themengebieten beschäftigt,
wird dafür auch geeignetere Tools finden.
Jetzt komm mir nicht von oben herab mit solcher Bauernschläue.
Es ist doch völlig wumpe an welchen Anwenderkreis sich Matlab richtet.
Ob ich eine Windturbine simuliere oder Signalverarbeitung (beides habe
ich damals gemacht) - es ändert ja nichts daran, daß die Sprache an und
für sich Grütze ist. :)
Nachtrag:
Allzumal "Modellbildung und Simulation" keinerlei Beziehung zum
Codeumfang hat. Vernünftig strukurierten Code will man ja eigentlich
immer haben.
Wühlhase schrieb:> Jetzt komm mir nicht von oben herab mit solcher Bauernschläue.>> Es ist doch völlig wumpe an welchen Anwenderkreis sich Matlab richtet.> Ob ich eine Windturbine simuliere oder Signalverarbeitung (beides habe> ich damals gemacht) - es ändert ja nichts daran, daß die Sprache an und> für sich Grütze ist. :)
Sorry Hase, du hast leider keine Ahnung von aktuellem Maltab.
Was genau gefällt dir denn nicht? Die Syntax ist eine der schönsten die
ich kenne. Wenn du viel switch/case machst, programmierst du nicht im
"Matlab Style". Wenn du viele (unübersichtliche) Schleifen hast ebenso
nicht.
Latex Ausdrücke können generiert werden, wenn du die symbolic toolbox
hast. Latex Unterstützung bei Grafiken ist etwas beschissen, da gebe ich
dir recht. Wir aber erst bei hochqualitativen Grafiken für Paper o.ä.
relevant. Brauchen die meisten Leute nicht.
Der Codeeditor wird in naher Zukunft durch ein deutlich modernes Pendant
ersetzt (und ist jetzt schon nutzbar).
Es ist keine Skriptsprache mehr, sondern imo eine echte
Programmiersprache. Mit Test Framework, mit Mocking Framework, sehr
gutem Profiler, Requirement tracking, (bidirektionale) Schnittstellen zu
C, C++, Python, .NET, Fortran.
Die Politik mit den Toolboxen kotzt mich natürlich auch an, $$$... Aber
viele Sachen kann man dann eben problemlos mit z.B. Python nachbilden.
Und ich habe noch kein Tool/Sprache gesehen, mit so guten Plot
Funktionen.
Glaubt mir, ich suche aktiv nach Alternativen. Mein Boss wäre sehr happy
> 10 k€ einfach so einsparen zu können.
Ich gucke mir momentan Julia an.
Jan K. schrieb:> Sorry Hase, du hast leider keine Ahnung von aktuellem Maltab.
Das ist durchaus möglich, ich schrieb ja das ich vor zwei bis drei
Jahren damit zu tun hatte.
Jan K. schrieb:> Was genau gefällt dir denn nicht? Die Syntax ist eine der schönsten die> ich kenne.
Wenn man gerne mit Basic programmiert, dann mag einem die Syntax sicher
gefallen. Die Syntax von VBA geht mir z.B. auch sehr auf den Sack. Das
ewige Ausschreiben von jedem Kram mit "end" war so eine nervige
Angelegenheit. Auch das Fehlen einer vernünftigen for-each-Schleife war
so ein Ärgernis. Zusätzlich zu dem, was ich weiter oben schon schrieb.
Ach ja...auch die Abart, daß eine Funktion mehr als einen Wert
zurückliefern kann, empfand ich nur als Ärgernis. Weil ich nur einen
brauchte, den anderen aber trotzdem mitbehandeln mußte.
Jan K. schrieb:> Wenn du viel switch/case machst, programmierst du nicht im> "Matlab Style". Wenn du viele (unübersichtliche) Schleifen hast ebenso> nicht.
Wahrscheinlich ist das ein Teil des Problems: Eine gute
Programmiersprache sollte einem keinen bestimmten Stil aufzwingen um
brauchbar zu sein. (Unabhängig davon, daß es in den meisten Sprachen
bestimmte Konventionen gibt.) Jedenfalls ist das meine Meinung.
Jan K. schrieb:> Latex Ausdrücke können generiert werden, wenn du die symbolic toolbox> hast.
Ich meinte Formeln im Codeeditor. Um komplexere Ausdrücke
übersichtlicher in einer bekannten weise darzustellen.
Jan K. schrieb:> Der Codeeditor wird in naher Zukunft durch ein deutlich modernes Pendant> ersetzt (und ist jetzt schon nutzbar).
Schön wenn sich in naher Zukunft mal was tut...aber das ist erst dann
ein Argument, wenn sich was getan hat, vorher nicht. Wenn ich mich recht
erinnere hat der Codeeditor einem noch nichteinmal die zugehörige
Klammer angezeigt.
Ich finde ja, das vernünftige Software durchaus auch Geld kosten darf,
aber sie muß dann das Geld auch wert sein. Aber für ein dermaßen teures
Werkzeug wie Matlab erwarte ich dann auch eine IDE, die z.B. mit
Netbeans wenigstens auf Augenhöhe ist. Der einzige Editor, den ich kenne
und der schlechter ist als der Codeeditor von Matlab, ist der MS Editor
in Windows - der kann schlicht gar nix als nur das Allernötigste.
Jan K. schrieb:> Es ist keine Skriptsprache mehr, sondern imo eine echte> Programmiersprache.
Wenn ich mich recht erinnere, hat mich auch eine mangelhafte
Typsicherheit bei Matlab sehr verdrossen. Es ist zwar nur meine Meinung,
aber eine Programmiersprache ohne Typsicherheit ist eine Skripsprache,
nicht für größere Dinge geeignet.
Auch eine ausgefeiltere Objektunterstützung, z.B. mit abstrakten Klassen
und Interfaces fehlt mir, um es als "echte" Programmiersprache
anzusehen.
Das Vorhandensein von vielen Bibliotheken und Werkzeugen sind kein
Bestandteil der Sprache an sich, d.h. davon würde ich die Unterscheidung
zwischen Skriptsprache und "echter" Programmiersprache nicht abhängig
machen.
Danke für deine ausführliche Antwort. Ich fühl mich zwar schon wie ein
Matlab Prediger hier, möchte aber zumindest ein paar Sachen nicht
unkommentiert lassen :)
Wühlhase schrieb:> Wenn man gerne mit Basic programmiert, dann mag einem die Syntax sicher> gefallen. Die Syntax von VBA geht mir z.B. auch sehr auf den Sack. Das> ewige Ausschreiben von jedem Kram mit "end" war so eine nervige> Angelegenheit. Auch das Fehlen einer vernünftigen for-each-Schleife war> so ein Ärgernis. Zusätzlich zu dem, was ich weiter oben schon schrieb.>
Ich mag keine Basic Syntax und die von VB ist grauenhaft. Das liegt aber
nicht daran, dass man statt "}" ein "end" hinschreiben muss, wie du es
sagst - da gewöhnt man sich schnell dran.
Es gibt vernünftige for-each Schleifen, nur heißen die nicht so, denn
die standard for-Schleife kann das bereits alles:
1
names = ["jonas" "julia" "foo"];
2
for singleName = names
3
disp(singleName)
4
end
Was gibt es einfacheres? Es können natürlich auch über cell-arrays oder
numerische arrays iteriert werden.
(Wobei es sogar ein Mini Addon gibt, wo sie genau so heißen:
https://de.mathworks.com/matlabcentral/fileexchange/48729-for-each)
> Ach ja...auch die Abart, daß eine Funktion mehr als einen Wert> zurückliefern kann, empfand ich nur als Ärgernis. Weil ich nur einen> brauchte, den anderen aber trotzdem mitbehandeln mußte.
Muss man nicht
1
function [a,b,c] = myFun()
2
a = rand(1);
3
b = rand(10,5);
4
c = 1:10;
5
end
6
7
a = myFun();
8
[a, b] = myFun();
9
[~, ~, c] = myFun();
10
% etc...
Außerdem ist es verdammt praktisch, dass es mehrere Rückgabewerte gibt.
Der erste ist normalerweise der Wichtigste, die weiteren geben
zusätzliche Details o.ä. an. Macht Python doch genauso oder?
> Jan K. schrieb:>> Wenn du viel switch/case machst, programmierst du nicht im>> "Matlab Style". Wenn du viele (unübersichtliche) Schleifen hast ebenso>> nicht.>> Wahrscheinlich ist das ein Teil des Problems: Eine gute> Programmiersprache sollte einem keinen bestimmten Stil aufzwingen um> brauchbar zu sein. (Unabhängig davon, daß es in den meisten Sprachen> bestimmte Konventionen gibt.) Jedenfalls ist das meine Meinung.>
Darüber lässt sich natürlich streiten :) Fakt ist aber, dass Matlab für
numerische Berechnungen benutzt wird und dort finden quasi keine
Iterationen statt (auf high level) - es sollte alles vektorisiert
werden, um die entsprechenden CPU Instruktionen zu benutzen.
Auch das ist bei Python dasselbe. Schleifen abstrahieren das Problem
nicht, sondern gehen zu sehr ins Detail und bringen viel boilerplate
Code und deine ungeliebten "end"s ;)
> Jan K. schrieb:>> Latex Ausdrücke können generiert werden, wenn du die symbolic toolbox>> hast.>> Ich meinte Formeln im Codeeditor. Um komplexere Ausdrücke> übersichtlicher in einer bekannten weise darzustellen.>
Welche Sprache kann das? Das wäre in der Tat manchmal hilfreich. Kenne
ich aber leider nicht. Und ich finde, Matlab gehört zu den Sprachen, die
man am besten lesen kann, wenn es an Gleichungen geht.
> Jan K. schrieb:>> Der Codeeditor wird in naher Zukunft durch ein deutlich modernes Pendant>> ersetzt (und ist jetzt schon nutzbar).>> Schön wenn sich in naher Zukunft mal was tut...aber das ist erst dann> ein Argument, wenn sich was getan hat, vorher nicht. Wenn ich mich recht> erinnere hat der Codeeditor einem noch nichteinmal die zugehörige> Klammer angezeigt.>
Nana, so schlecht ist der aktuelle jetzt auch nicht. Es gibt auto
Vervollständigung, Auto Formatierung, code warnings (+ und best
practices, wie z.B. Performanztips on the fly), code folding, jump to
reference und einiges mehr. Dass du ends suchst ist nur ein Symptom ;)
Bin mir aber tatsächlich nicht sicher, ob ends markiert werden. Braucht
man aber wie gesagt auch nicht.
> Ich finde ja, das vernünftige Software durchaus auch Geld kosten darf,> aber sie muß dann das Geld auch wert sein. Aber für ein dermaßen teures> Werkzeug wie Matlab erwarte ich dann auch eine IDE, die z.B. mit> Netbeans wenigstens auf Augenhöhe ist. Der einzige Editor, den ich kenne> und der schlechter ist als der Codeeditor von Matlab, ist der MS Editor> in Windows - der kann schlicht gar nix als nur das Allernötigste.>
Sorry, das stimmt halt so nicht, siehe oben. Es ist nicht mein
Lieblingseditor und moderne Varianten sind leistungsstärker, siehe
VSCode, Atom, NetBeans oder was auch immer. Aber er ist nicht so grottig
wie du sagst. Und vermutlich hast du noch nicht mit dem Keil µVision
Editor was programmiert ;)
> Jan K. schrieb:>> Es ist keine Skriptsprache mehr, sondern imo eine echte>> Programmiersprache.>> Wenn ich mich recht erinnere, hat mich auch eine mangelhafte> Typsicherheit bei Matlab sehr verdrossen. Es ist zwar nur meine Meinung,> aber eine Programmiersprache ohne Typsicherheit ist eine Skripsprache,> nicht für größere Dinge geeignet.
D.h. Dropbox (Python), Facebook (PHP) und viele andere bauen keine
großen Dinge?
>> Auch eine ausgefeiltere Objektunterstützung, z.B. mit abstrakten Klassen> und Interfaces fehlt mir, um es als "echte" Programmiersprache> anzusehen.>
Gibt's ausnahmslos alles... Vererbung, interfaces, abstract classes,
Datentyp Checks für Klassen Properties und für Argumente von Funktionen
(wobei das natürlich eine grundsätzliche Frage ist dynamisch vs statisch
typisierte Sprachen, Matlab und auch Python versuchen beide Vorteile zu
verbinden), siehe z.B.:
https://de.mathworks.com/help/matlab/matlab_oop/abstract-classes-and-interfaces.htmlhttps://de.mathworks.com/help/matlab/matlab_oop/defining-interfaces.htmlhttps://de.mathworks.com/help/matlab/matlab_oop/property-size-and-class-validation.html#bvklfs7-3https://de.mathworks.com/help/matlab/matlab_prog/function-argument-validation-1.html
Alle Grafik Elemente und alle neueren Datentypen (z.B. tables oder
datetime) sind ausnahmslos instantiierte Objekte von Klassen.
> Das Vorhandensein von vielen Bibliotheken und Werkzeugen sind kein> Bestandteil der Sprache an sich, d.h. davon würde ich die Unterscheidung> zwischen Skriptsprache und "echter" Programmiersprache nicht abhängig> machen.
Okay. Ernst gemeinte Frage, gehören z.B. die ganzen Container bei C++
zur Sprache? C und libc? Python ohne Numpy? Ich geb dir ja Recht, libs
gehören vielleicht nicht direkt dazu, werden aber in der Praxis ja
zusammen mit der Sprache benutzt. Im Beispiel Matlab ist aber in der
Kernsprache (ohne toolboxes oder libs) schon ziemlich viel drin, siehe
oben ;]
Ich suche dennoch nach Alternativen..
@OP, wenn du was ohne Grafik in Betracht ziehen würdest, nimm Python
oder Julia.
https://en.wikibooks.org/wiki/Julia_for_MATLAB_Users/Index/Toolboxes/Control_System_Toolbox
Schönen Abend
Ich arbeite an eine ALternative fuer SImulimk, voellig in Python
(PyQt5), und Ih habe diese Loesung mit meiner Studenten in SUPSI
benuetzt, um echte Regelungssysteme zu entwicklen.
Im momet lauft das System nur unter Linux (eine VirtualBox VM ist fuer
tests vorhanden) und ich generiere Code fur Linux RT systeme (auch unter
Raspberry PI) und STM32H7 systeme (in Entwicklung).
Einige Beispiele sind auf Youtube, nd das Suchbegriff ist "pysimCoder"
Das ganze System ist immer in Entwicklung, aber Hilfe sind willkommen!
https://github.com/robertobucher/pysimCoder
Beispiel fuer Servo
https://www.youtube.com/watch?v=mZ5VjvjJFrU