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.
nun ja um Zeit zu sparen, sind die Vorteile wohl enorm. Den Programmieraufwand würde ich nicht für sowas investieren, wenn es nicht notwendig ist
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.
:
Bearbeitet durch User
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!
https://alternativeto.net/software/simulink/ https://www.g2.com/products/simulink/competitors/alternatives https://www.quora.com/What-are-some-good-alternatives-to-Simulink?share=1 So universell wie Simulink scheint keines zu sein, es sind immer Teilbereiche. Für Elektronikhardware GNU-Radio, für DSP und ähnliches XCos oder sein Vorgänger Scicos usw. Hier soll es aber speziell für Regelungstechnik sein.
:
Bearbeitet durch User
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.
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. Ist jetzt ein anderer Fokus als Regelungstechnik aber schon mal an gnu radio gedacht ? https://d3i71xaburhd42.cloudfront.net/c904836c886ca04e86fe2c1336decfcb3eb43558/3-Figure5-1.png https://lists.gnu.org/archive/html/discuss-gnuradio/2017-11/pngQiPrQZSh9E.png SDR und regelungstechnik verwenden beide Signalprozessing-Algos über zeitreihen und benutzen ähnliche/gleiche mathematische Grundlagen (Zeit/frequenzbereich, Stabilitätskriterien, ...)
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.html https://de.mathworks.com/help/matlab/matlab_oop/defining-interfaces.html https://de.mathworks.com/help/matlab/matlab_oop/property-size-and-class-validation.html#bvklfs7-3 https://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
Beitrag #6329605 wurde von einem Moderator gelöscht.
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.