Forum: Digitale Signalverarbeitung / DSP / Machine Learning Reglerentwurf mit Open Source


von Rabbit (Gast)


Lesenswert?

Hallo Leude,

ich suche nach einem Program, das über einfache LZI Glieder verfügt und
ein Editorfenster in dem man diese verbinden kann.
Sowie die Möglichkeit einfache Testfunktionen auf Regler-Strecke-Modell
loszulassen. (Dirac,Sprung,Dreieck ...)
Mit Ausgabe von Plots (Frequenzgang und Antworten auf Testsignale).

Solche Programme gibt es zwar nicht wie Sand am Meer, dennoch
denke ich, dass relativ viele Studenten und Entwickler so ein Tool
bräuchten (und wahrscheinlich schon geschrieben haben)
Ausserdem scheint das Problemfeld/ziel relativ klar und eng abgesteckt.
BTW kennt jemand Programm[e], mit dem es auf eine generische Art
möglich ist, Blocke zu definieren, mit Attributen zu versehen und
auch zu verbinden. Ich würde sowas als Front End (zb XML als output) 
vielleicht nutzen. Den Simulationskern schreibe ich selber :)

Grüsse, Euer Rabbit

von Rigobert W. (rigo)


Lesenswert?

Hallo,

mit Scilab ist sowas möglich.

Nicht so einfach zu bedienen wie Matlab / Simulink aber es geht.

http://www.scilab.org/

Zum Test mal Version 4.1 downloaden installieren und 
Applications->SCICOS im Menu anklicken. Dann öffnet sich ein graphischer 
Editor der ein wenig Ähnlichkeit mit Simulink hat.

Über Edit->Palletes lassen sich dann z.B. lineare Übertragungsglieder 
plazieren.

Ich hab es allerdings selber noch nicht richtig ausprobiert.

von Hubert (Gast)


Lesenswert?

Hallo Rabbit,

ich glaube SciLab ist am ehesten das was Du Dir angucken solltest, denn 
es hat eine gewisse Ähnlichkeit zu Simulink.
Der Vollständigkeithalber gibt es als wissenschaftliche Programme noch 
Octave als eine Art Matlab Clone, Gnuplot oder Labplot. Wobei Gnuplot 
oder Labplot eher dazu geeignet sind wenn Du Deine Simulation zB in C 
schreibst diese dann  in eine TXT schreibst und mit Gnuplot darstellts. 
Octave ist ein Matlab Clone und funktioniert eigentlich sehr gut, wenn 
man die graphische Oberfläche nicht braucht. Zum Plotten integriert es 
Gnuplot, ist vielleicht dort ein wenig umständlicher Graphen zu 
bearbeiten, Werte anzuzeigen lassen, Pfeile ranmalen, etc. aber alles 
möglich. Ich habe selber mit Octave mit grossen Datenmengen gearbeitet 
und kann nur empfehlen es unter Linux zu machen. Die Windows Version mit 
Installer integriert eine Cygwin Umgebung und war für meine Zwecke a) zu 
alt gegenüber Linux und b) bei großen Datenmengen sehr instabil.

Eine ganz andere Möglichkeit ist es noch Spice zum Simulieren 
einzusetzen. Ob das in Deinem Fall geht weiß ich nicht, aber 
grundsätzlich löst Spice ja Knotengleichungen von DGLs. Für Linux gibt 
es das gEDA Project, das Spice oder ngspice mit einer graphischen 
Oberfläche ala Pspice verbindet. Dort könnte man sich eigene 
Bibliotheken definieren. Wobei wie gesagt Dreicksfunktion als DGL 
ausdrücken... naja ich glaube keine gute Idee.

Wenn Du jedoch Dein Tool gefunden hast oder etwas drum herum 
programmierst und noch Zeit hast, dann mach bitte eine Dokumentation. 
Ich denke genau auf dem Gebiet gibt es noch viel für die OpenSource 
Akzeptanz zu tun. Die großen Firmen und selbst die meisten Hochschulen 
setzen auf Matlab weil die Dokumentation/Hilfe recht gut und 
beispielhaft ist. Von der Seite sind es dann wohl nur die Studenten und 
kleineren Firmen wo OpenSource für diese eingesetzt wird? Wenn ich nicht 
jeden Tag Matlab brauche und für eine Handvoll Simulation reicht mir 
auch Octave.
Aber so langsam setzt sich ja OpenSource durch. Bin mal gespannt wohin 
das noch führt. Gerade im wissenschaftlichen und kommerziellen Bereich 
ist die Bedienung der Programme noch nicht sehr intiutiv. Wenn ich da an 
den Leiterplattenzeichner aus dem gEDA Projekt denke, da bin ich doch 
nach 5 Projekten auf Eagle umgestiegen. Und die pspice ähnliche 
Oberfläche war doch sehr instabil, da kann man besser LTSpice (auch 
nicht frei, dafür freeware) nutzen.
Leider kann ich nicht programmieren, und somit bleibt mir außer 
ausprobieren und evtl. ein wenig in der Mailingliste meckern nicht viel 
übrig.


von Gringo (Gast)


Lesenswert?

@Rabbit,
eine Reglersimulation ist in einer venuenftigen Programmiersprache ein 
kleine Uebung. Schmeiss dieses Matlab weg. Fuer ne Hochschule mag das 
gut sein, weil die Lizenzen guenstig sind. Fuer eine Firma oder einen 
Privaten ist Matlab viel zu teuer. Fuer eine vernuenftige 
Programmiersprache ist jeweils auch eine Opensource Mathematiklibrary 
erhaeltlich.

von Rabbit (Gast)


Lesenswert?

Danke für Eure Antworten
scilab scicos sieht sehr interessant aus, werde auf jeden Fall
damit rumprobieren. Gnuplot kenne ich gut, gefällt mir auch recht gut.
Octave hab ich installiert und erste Schritte ala tutorial gemacht.
Allerdings genau wie beim Matlab kommt bei mir kein richtiger Durchbruch 
...
es liegt aber auch zum grossen Teil daran, dass ich mich dann
zurück zu Python,numpy,pylab und matplotlib zurückziehe.
Ich finde nun mal Python als Sprache schöner und ästhetischer als
Matlab mit fortranähnlichen Schleifen etc.
Seit einiger Zeit beobachte ich auch die Aktivität in der
Ruby community (bezogen auf mathematische Module)
leider bietet Ruby noch nicht den Umfang von Python.
Ich glaub Perl hat einige interesante Module zu bieten,
aber Perl will ich im Moment mir nicht antun^^

Von Labplot höre ich zum erstem mal, werde auch mal austesten.

Würdet Ihr lieber eine simple GUI (verlinkbare Rechtecke mit Attributen 
und
Kreise) auf Qt, Wx oder Java swing basieren?

Grüsse

von Kai (Gast)


Lesenswert?

Hallo,

bei www.kahlert.com gibt es eine Demo Version von WinFact 7. Mit dem 
dazugehörigen Programm BORIS können Regelkreise zusammengestellt werden.
Das Programm ist zum größten Teil selbsterklärend. Man sollte nie mit 
Kanonen auf Spatzen schiessen, mit BORIS wirst du schnell Erfolge 
erzielen.

von Weinga-Unity (Gast)


Lesenswert?

Hallo! Ich selbst kann auch Scilab/Scicos empfehlen. Bedienung von 
Scicos ist gewöhnungsbedürftig, geht aber trotzdem ziemlich schnell 
(vorallem, wenn man die Tastenkürzel kennt). Mich wundert es, dass die 
Oberfläche unter Windows besser ist als unter Linux. Dokumentation und 
Tutorials gibts es ja mittlerweile doch einiges an Material.

Das generieren eigener SCICOS-Blöcke geht auch sehr schön. Hilfreich 
dabei ist, dass die Funktion für die Oberfläche und die Funktion für die 
Simulation getrennt sind. Somit kann man z.B. relativ einfach einen 
Tiefpassfilter-Block bauen (wo man nur die Grenzfrequenz im Dialog 
eingibt), welche im Hintergrund wieder auf auf die Standard 
LTI-Komponente von SCICOS zugreift. Man programmiert also nur mehr die 
GUI neu, und sagt, wie die A,B,C,D Matrizen auszusehen haben.

Ein Studienkollege und ich haben vor nem halben Jahr etwa ein Hardware 
entwickelt (basiert auf ATMega8), wo man mehrere LTI-Systeme über RS232 
reinspielen kann und die dort laufen. Mittlerweile gibt's auch eine 
Scilab und Scicos Toolbox. D.h. unter Scilab kann man den Regler 
entwerfen und direkt in das Board runterladen lassen. Zusätzlich kann 
man auch Messungen von Scilab aus durchführen lassen. Die Scicos-Toolbox 
besteht aus mehreren Blöcken, wo das Hardwareboard direkt angefahren 
wird (stetzen der Simulations-Parameter realtime-scaling=1). So kann man 
z.B. direkt von Scicos aus ein System regeln (natürlich nicht 
echtzeitfähig, aber bei langsameren Systemen funktionierts gut). Hoffe, 
dass ich mal Zeit finde, um ne Homepage für das Projekt zu machen.

Hier noch einige Bilder (hoffe, die Links funktionieren):
Demo - Vergleich System in Scicos und System in der Hardware
http://weingaunity.we.funpic.de/uni/img/scicos_uclti_aufbau.jpg
http://weingaunity.we.funpic.de/uni/img/simulation_und_messung.jpg

http://weingaunity.we.funpic.de/uni/img/uCLTIBoard.jpg
http://weingaunity.we.funpic.de/uni/img/uCLTIGui-Linux-7.jpg


GnuPlot in Kombination mit LaTeX versteht sich natürlich auch.

von Rigobert W. (rigo)


Lesenswert?

Das sind ja sehr brauchbare infos, danke.

von Thomas (Gast)


Lesenswert?

@ Weinga-Unity
super Projekt, was ihr da gemacht habt. Wird denn da der komplette 
C-Code von SCILAB generiert, automatisch kompiliert und dann der 
download gestartet? Oder werden einfach nur die Reglerparameter 
eingestellt?

von Weinga-Unity (Gast)


Lesenswert?

Das Board selber kann nur LTI-Systeme aufnehmen (auch mehrere, und diese 
auch noch verlinken). Dies geschieht z.B. über scilab (da werden die 
A,B,C,D's runtergeladen).

Der Block in Scicos nimmt jetzt direkt verbindung mit dem Board auf und 
ließt die ADC's und DAC's ein. Über 2 virtuelle ADC's am Board, können 
über die RS232 Signale an das Board gesendet werden (z.B. 
Sollgrößenvorgabe).

Lädt man nun ein geeignetes LTI-System in das Board, kann es einfach als 
IO-Karte für Scicos verwendet werden.

von ebookaktiv (Gast)


Lesenswert?

Siehe mal das eBook "Grundlagen digitael Regler mit SCICOS und SCILAB" 
auf www.ebookaktiv.de

Sehr praktisch, kaum Theorie

von Peter (Gast)


Lesenswert?

Hallo...

Für die Regelungstechnik ist scilab/scicos die 1.Wahl, neben der 
Simulation von Regelkreisen und regelkreisgliedern bietet SCILAB die 
Möglichkeit Bodediagramme und Ortskurven zu plotten und damit auch 
stabilitätsuntersuchungen zu machen.

ein Beisp. in SCILAB

s=poly(0,'s')
Kp=4
Ki=10
Kd=0.1
t1=3
t2=10
t3=0.5
I=syslin('c',(Ki)/s)
D=syslin('c',(Kd*s)*(1/(1+0.001*s)))
T1=syslin('c',1/(1+t1*s))
Fr=(Kp+I)
Fs=T1
F=Fs*Fr
Fw=F/(1+F)
Fz=((Fs/(1+F))+1)
bode([F;Kp;I;T1],0.001,100)
nyquist(F,0.001,100)
t1=[0:0.05:50]
t2=[50:0.05:100]
t3=[500:0.05:750]
plot2d(t1,csim('step(t)',t1,Fw))
plot2d(t2,csim('step(t)',t2,Fz))

...einfach in SCILAB kopieren.....

...peter

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.