Hirdetés
- Luck Dragon: Asszociációs játék. :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- Sapphi: StremHU | Source – Self-hostolható Stremio addon magyar trackerekhez
- Pajac: Windows XP még mindig letölthető
- Vezeték nélküli porszívók - alapok
- eBay-es kütyük kis pénzért
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- Toomy: FOXPOST: régen jó volt, de már jobban jársz, ha elfelejted
Aktív témák
-
3 megabitem van itthon, pedig csak egy Chello Classicra fizetek elő.
Na ezt hogy.
Nem publikus sajnos
-
Jár valaki Németo-ban mostanság? Pontosabban el tudna valaki hozni egy hangfalat?
-
Iowa: 7 elektor, NM:5, de mindkettőben Bush áll jobban.
-
Bocs srácok, de annyira elegem van, h ezt ki kell engedni itt a fáradt gözben...12 órányi gép előtt ülés...apro kis programocska, a robotos szakirány irányításelmélet házijának első felét képes megoldani, a kunszt az, h univerzálisan, pl. tud megfelelően faktorizálni, stb, szal bárkinek ledokumentálja és megoldja. Kis program, de amíg rájöttem, mi az egésznek az elmélete...szal kemény volt.

disp(' ');
disp(' ');
disp(' ');
disp(' ');
disp(' ');
disp('FeedForward-FeedBack szabalyozo-tervezo, identifikalo programocska');
disp('mate.varga@prohardver.hu ');
disp(' ');
% 2 szabadságfokú FF-FB diszkrét szabályozó tervezo algoritmus
% specifikacios resz
scr=-3; % sc/abs(re(dominanspoluspar))
sor=-5; % so/abs(re(dominanspoluspar))
ksr=0.70; % az eloirt csillapitas erteke
load meres29; % a betoltendo meresi adatok
client_ts;
% inic resz
s=tf('s');
z=tf('z',client_ts);
modeldata=iddata(meres_kimenet__y_,meres_bemenet__u_,client_ts);
modeldata.InputName='Bemenet';
modeldata.OutputName='Kimenet';
% identifikacios resz
ze=modeldata(1:400);
ze=dtrend(ze);
domodel=armax(ze,[3 3 2 1]); % diszkret rendszer modellje (DiscreteOpenloopModel)
comodel=d2c(domodel); % a folytonos rendszer modellje (ClosedOpenloopModel)
disp(' ');disp('A diszkret rendszer atviteli fuggvenye:')
domodeltf=tf(domodel.b,domodel.a,client_ts)
disp(' ');disp('A folytonosideju rendszer atviteli fuggvenye:')
comodeltf=tf(comodel.b,comodel.a)
% a kért értékek kiszámolása:
disp('A folytonos rendszer parameterei:');
comodelb=comodel.b;
comodelgain=comodelb(4);
disp(['A:',num2str(comodelgain)]);
copoles=roots(comodel.a);
tau=sqrt(1/(copoles(2)*copoles(3)));
ks=(-1/copoles(2)-1/copoles(3))/(2*tau);
disp(['tau:',num2str(tau)]);
disp(['kszi:',num2str(ks)]);
alfa=-1/copoles(1)/tau;
disp(['alfa:',num2str(alfa)]);
disp(' ');
% a referenciamodell ertekeinek szamolasa
ccpoles=roots([tau*tau 2*ksr*tau 1]);
ccpoles=roots([tau*tau 2*ksr*tau 1]);
ccpoles(3)=copoles(1);
sc=scr*abs(real(ccpoles(1)));
so=sor*abs(real(ccpoles(1)));
zc=exp(sc*client_ts);
zo=exp(so*client_ts);
drpoles(1)=exp(ccpoles(1)*client_ts); % DiscreteReferencePoles
drpoles(2)=exp(ccpoles(2)*client_ts);
drpoles(3)=exp(ccpoles(3)*client_ts);
disp(['A referenciamodell eloirt polusai diszkret idoben:'
);
disp([num2str(drpoles')]);
disp(' ');
disp(['A megfigyelo es segedpolusok:'
);
disp(['so:',num2str(so),' | sc:',num2str(sc)]);
disp(['Diszkret idoben ugyanezek:'
);
disp(['zo:',num2str(zo),' | zc:',num2str(zc)]);
% faktorizáció, elágazások, miegyéb
% eloszor megallapitjuk a diszkret modell gainjet, az minden esetben kell
temp=tf(domodel.b,domodel.a,client_ts);
dozeros=roots(domodel.b);
domodelzpk=zpk(temp);
temp=domodelzpk.k;
dogain=temp(1);
disp(' ');
disp('A referenciamodell atviteli fuggvenye:');
domodelzpk
disp(' ');
kiejthetok=0;
%innentol neha trukkozunk, mert a matlab a specifikaciokkal ellentetben
%zpkmodellnev.z-re pl. cell-t ad vissza, nem vektort, legalabbis nekem
%nem sikerult ugy hasznalni, ahogy a doksi mondja.. lasd: 'ltiprops zpk'
% akkor ejtheto ki egy zerus, ha 0 es egy kozotti valos erteke van
% mivel igy realizalhato folytonos szabalyozoval es stabil szabalyozot
% eremenyez
% Bminusz (Bm) non monic...
% tovabba Bp=Bplus
Bm=dogain;
Bp=1;
Bmzeros=[];
Bpzeros=[];
if ((real(dozeros(2))<1)&(real(dozeros(2))>0))&(isreal(dozeros(2)))
kiejthetok=1;
Bp=(z-dozeros(2));
Bpzeros=dozeros(2);
else
Bm=Bm*(z-dozeros(2));
Bmzeros(1)=dozeros(2);
end
if ((real(dozeros(1))<1)&(real(dozeros(1))>0))&(isreal(dozeros(1)))
kiejthetok=kiejthetok+1;
Bp=Bp*(z-dozeros(1));
Bpzeros(2)=dozeros(1);
else
Bm=Bm*(z-dozeros(1));
if isempty(Bmzeros)
Bmzeros=dozeros(1);
else
Bmzeros(2)=dozeros(1);
end
end;
disp(' ');
disp('Nem kiejtheto zerusok:');
disp(num2str(Bmzeros));
disp('Kiejtheto zerusok:');
disp(num2str(Bpzeros));
% polinomfokszamok megallapitasa
bpzsize=size(Bpzeros);
bpzsize=bpzsize(2);
bmzsize=2-bpzsize;
disp(' ');
disp('Polinomok osszeallitasa:');
disp(' ');
disp('1 integratort feltetelezunk');
disp(' ');
disp('Ao polinom:');
Ao=(z-zo)^3;
Ao
disp(' ');
disp('Am polinom fokszamfeltetele: Am=2, ha gr B-=0, Am=1+gr B- egyebkent');
disp(' ');
if bmzsize==2
disp('A polinom harmadfoku, tehat zc is polus lesz.');
Am=(z-drpoles(1))*(z-drpoles(2))*(z-zc);
Amzeros=[drpoles(1);drpoles(2);zc];
disp(['Am:'
);
Am
disp(' ');
disp(['Polusok:'
);
disp(num2str(Amzeros));
else
disp('A polinom masodfoku, csak az eredeti dominans poluspar szerepel.');
Am=(z-drpoles(1))*(z-drpoles(2));
Amzeros=[drpoles(1);drpoles(2)];
disp(['Am:'
);
Am
disp(' ');
disp(['Polusok:'
);
disp(num2str(Amzeros));
end
disp(' ');
Amsize=size(Amzeros);
Amsize=Amsize(1);
Aosize=3;
Sgr=3;
disp('gr S=gr A=3');
disp('gr Ao=gr A=3');
disp(['gr R1''=gr B- =',num2str(bmzsize)]);
Rgr=bmzsize;
disp(' ');
disp('C=Am*Ao=');
Am*Ao
disp(' ');
[Cnum,Cden]=zp2tf([Amzeros;zo;zo;zo],0,1);
disp(' ');
disp('A:=A(z-1)=');
[Anum,Aden]=zp2tf([drpoles';1],0,1);
A=tf(Anum,1,1)
disp(' ');
disp('B:=B- =');
[Bnum,Bden]=zp2tf(Bmzeros',0,dogain);
B=tf(Bnum,1,1)
disp(' ');
% A diophantoszi egyenletrendszer megoldasanak matrixai
disp('Osszeallitom a linearis egyenletrendszer matrixait');
if bmzsize==1
AA=[[Anum'
,[Bnum 0 0 0]',[0 Bnum 0 0]',[0 0 Bnum 0]',[0 0 0 Bnum]'
;
CC=(Cnum(2:6)-[Anum(2:5),0])';
else
AA=[[Anum';0],[0;Anum'
,[Bnum 0 0 0]',[0 Bnum 0 0]',[0 0 Bnum 0]',[0 0 0 Bnum]'
;
CC=(Cnum(2:7)-[Anum(2:5),0,0])';
end
disp(' ');
disp('A mátrix:');
disp(num2str(AA));
disp(' ');
disp('C mátrix:');
disp(num2str(CC));
disp(' ');
disp('Megoldva az egyenletrendszert, a paramétervektor:');
XX=inv(AA)*CC;
disp(num2str(XX));
Rparam=XX(1:bmzsize);
Sparam=XX((bmzsize+1)
Amsize+3));
% Celegyenes...
%Rz' es a tobbi... definicio szerint
Rzv=tf([1;Rparam]',1,client_ts); % 1 kell elore, mert Rzv monic
Sz=tf(Sparam',1,client_ts); % ez meg nem monic
Amnum=zp2tf(Amzeros,0,1); % Bm' meghatarozasahoz kellenek az alabbiak
Bmnum=zp2tf(Bmzeros',0,dogain);
Bmv=sum(Amnum)/sum(Bmnum);
disp(' ');
disp('R1'' polinom:');
Rzv
disp(' ');
Tz=Bmv*Ao;
Rz=Bp*(z-1)*Rzv;
FF=Tz/Rz;
FB=Sz/Rz;
disp(' ');
disp('Vegul a szabalyozoban szereplo polinomok:');
disp(' ');
disp('T:');
Tz
disp(' ');
disp('S:');
Sz
disp(' ');
disp('R:')
Rz
disp(' ');
disp('Az elorecsatolo ag atviteli fuggvenye az FF, a visszacsatolo ag');
disp('atviteli fuggvenye az FB valtozoban talalhatok az esetleges tovabbi felhasznalashoz.');
disp(' ');
% Szimulaciok
disp('A szimulacio a diszkretideju modellt hasznalja. Ellenorzeskepp');
disp('Simulink hasznalhato a folytonosideju modell szabalyozasahoz,');
disp('de korrekt identifikacio utan a kimenetek meg fognak egyezni.');
disp(' ');
% normal idoallando
sys=feedback(domodelzpk,FB);
sys=FF*sys;
sys2=sys;
y100=step(sys,15);
sys=feedback(1,domodelzpk*FB); % a vezerlojel megallapitasahoz csak a vissza
%csatolas modjan valtoztatunk termeszetesen
sys=FF*sys;
u100=step(sys,15);
comodelzpk=zpk(comodel);
comodelgain=comodelzpk.k(1);
cozeros=roots(comodel.b);
copoles=roots(comodel.a);
[tempn,tempd]=zp2tf(1,copoles'/1.25,1);
comodel125=tf(comodelb(4)/1.25/1.25,tempd); % ketszer leosztunk, az elozo sor miatt
[tempn,tempd]=zp2tf(1,copoles'/0.75,1);
comodel75=tf(comodelb(4)/0.75/0.75,tempd);
domodelzpk=c2d(comodel125,client_ts);
sys=feedback(domodelzpk,FB);
sys=FF*sys;
y125=step(sys,15);
sys=feedback(1,domodelzpk*FB); % a vezerlojel megallapitasahoz csak a vissza
%csatolas modjan valtoztatunk termeszetesen
sys=FF*sys;
u125=step(sys,15);
domodelzpk=c2d(comodel75,client_ts);
sys=feedback(domodelzpk,FB);
sys=FF*sys;
y75=step(sys,15);
sys=feedback(1,domodelzpk*FB); % a vezerlojel megallapitasahoz csak a vissza
%csatolas modjan valtoztatunk termeszetesen
sys=FF*sys;
u75=step(sys,15);
pltime=(1:150)';
disp(' ');
disp('Idoallandok: kek: eredeti, zold:125%-os, piros: 75%-os');
figure(1);
plot(pltime,y100,pltime,y125,pltime,y75);
grid on
figure(2);
plot(pltime,u100,pltime,u125,pltime,u75);
grid on
% es kesz is.
-
100000. topic.
http://prohardver.hu/rios3_forum.php?mod=40&id=100000 -
Text-boy: kellene a tábla.
Mennyiért? -
válasz
TrollBalint
#1320
üzenetére
(hát ez kész
) -
(@12:03:00)
Czigus: máté most kel
Czigus: jaja
Ben: nem semmi...
Ben: honnan tudod?
Czigus: most felhívtam, hogy mi van vele
Ben: aha
Czigus: ha ő nem online, akkor vagy alszik, vagy valami baj van
Ben: igen
-
Phú, azt hiszem, van új avatarom.

-
Lékó nyert!
Aktív témák
- BESZÁMÍTÁS! ASROCK B650M R7 7700 16GB DDR5 1TB SSD RTX 3070Ti 8GB ASUS TUF GT301 GIGABYTE 750W
- Bomba ár! Lenovo ThinkPad X13 G1- i5-10310U I 16GB I 256SSD I 13,3" FHD Touch I Cam I W11 I Gari!
- GYÖNYÖRŰ iPhone 12 mini 64GB Kék -12 hónap JÓTÁLLÁS - Kártya független, 100% gyári Akkumulátor
- GYÖNYÖRŰ iPhone 14 128GB Starlight -1 ÉV GARANCIA -Kártyafüggetlen, MS3677
- Apple iPhone 14 / 128GB / Kártyafüggetlen / 12HÓ Garancia / Akku: 85%
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest


);
Amsize+3));
)
