Umsetzung als SIL (Software-in-the-Loop)
(EN google-translate)
(PL google-translate)
Zur Umsetzung des Reglers mit Beobachter mit einem Software-Regler auf der Grundlage von Scilab, muß das, was zuvor simuliert wurde in Einzelschritten ausgeführt werden.
Grundidee: Es wird zyklisch ein Zeitschritt der Simulation getriggert durch die Hardware ausgeführt und der aktuelle wert der Regelabweichung von außen übergeben.
Umsetzung unter Verwendung der vorhandenen Simulation: Für einen Zeitschritt wird eine kurze Simulation durchgeführt, der folgendes von außen, d.h. von der Hardware, vorgegeben wird:
  | 
//######## INITIALISIERUNG ########
clear();
R=[0.1028838, 0.0075232, 0.0001731, 0.4205213];
function f = rechteSeite(t,y)
    sim_phi    = y(1,1);  //Pixelposition
    sim_omega  = y(2,1);  //Pixelgeschwindigkeit "w"
    sim_alfa   = y(3,1);  //Pixelbeschleunigung
    sim_intphi = y(4,1);  //Integral von Phi
    
    a=36.0;
    b=326.0;
    c=115509.0;    
    
    u = -R*y; //simuliertes y als Grundlage für u.
    usim = u + 0.01*(real_phi-sim_phi); //Abweichung zw. realem und simul. phi zurückführen.
    f(1,1) = sim_omega;
    f(2,1) = sim_alfa;
    f(3,1) = -a*sim_alfa-b*sim_omega+c*usim;
    f(4,1) = sim_phi;
endfunction
//######## INPUT ########
//Vorgaben von aussen, um es leichter von Java aus handhaben zu können, nur ein Zeilen-Vektor:
EINGABE = [100,0.1,100,0,0,0];
real_phi = EINGABE(1,1);    //von aussen vorgeben, eigentlich ist das hier die Regelabweichung von der aktuellen Ballposition.
dauer    = EINGABE(1,2);    //Zeitschrittweite des zyklischen Aufrufs
y0       = EINGABE(1,3:6)'; //Endzustand aus letzter Simulation
//######## Simulation ########
//Testweise wie in der Messung simulieren:
t=linspace(0,dauer,10);
t0=0.0;
y=ode(y0,t0,t,rechteSeite);
anz=size(y);
yout=y(:,anz(1,2))';
u=-R*y;
anz=size(u);
//uout = u(anz(1,1),anz(1,2));
uout=mean(u); //Mittelwert aus der kurzen Simulation.
//######## OUTPUT ########
//Nach der Simulation nach Aussen zurueckgeben:
AUSGABE=[uout,yout];
//wird das reale system ausgeregelt?:
plot(t,y(1,:));  //sim_phi
Code 0-1: Illustration des Vorhabens mittels eines Quelltextes.
blusci105.zip - Neue Version des Projekts blusci105.
Aufgaben
  | 
Bild 0-1: Testlauf mit Zustandsregler.