to zní dobře!
jen taká otázka, co se rozumí u pid to jedno číslo na vstupu a na výstupu?
a nevíte prosím jak v simulinku generovat pulsní (obdelníkový) signál, který by postupně zvyšoval svou frekvenci? samostatný blok sem na to nenašel a ani se mi to nepodařilo poskládat z bloků
krokový motor
PID = proporcionalno, integracn, derivacny regulator. Cisla ktore obsajuhe on su 3 .. konstanty pre P, I a D zlozku.
Na vystupe to dava vystupne cislo
Na vstupe to cita zadanu hodnotu a meranu hodnotu.
Pracuje to tak ze spavy rozdiel zo zadanej a nameanej hodnoty a toto prehana cez PID na vystup.
Velmi jednoduchy regulator ktory ma I a D zlozky nulove pracuje len s konstantou P zlozky a pocitat takto:
(zadana_hodnota - namerana hodnota)*koeficient_slozkyP = vystupna hodnota.
Pokial je tam I a D zlozka musite pracovat uz s casovou zmenou t.j. pametat si starsie hodnoty nameranych dat aby ste I zlozku vobec vedeli pouzit.
Velmi jednoduchy disktreny PI regulator by potom pocital podla vzorca:
(zadana_hodnota - namerana hodnota)*koeficient_slozkyP +
(zadana_hodnota - namerana hodnota)_v_case_o periodu_skor *koeficient_slozkyI = vystup.
PID bude podobny ale pribudne pripocitanie zlozky D v tvare _zmena(zadana_hodnota - namerana hodnota) * koeficient_zlozky_D.
Pod pojmom zmena sa rozumie napr velmi zjednodusene rozdiel medzi prave aktualnym meranim a predchadzajucim meranim.
Odporucam pri experimentovani s tymto najprv zadat I a D zlozku nulovu .. a vyladit zlozku P .. potom I a az nakoniec D.
Na vystupe to dava vystupne cislo
Na vstupe to cita zadanu hodnotu a meranu hodnotu.
Pracuje to tak ze spavy rozdiel zo zadanej a nameanej hodnoty a toto prehana cez PID na vystup.
Velmi jednoduchy regulator ktory ma I a D zlozky nulove pracuje len s konstantou P zlozky a pocitat takto:
(zadana_hodnota - namerana hodnota)*koeficient_slozkyP = vystupna hodnota.
Pokial je tam I a D zlozka musite pracovat uz s casovou zmenou t.j. pametat si starsie hodnoty nameranych dat aby ste I zlozku vobec vedeli pouzit.
Velmi jednoduchy disktreny PI regulator by potom pocital podla vzorca:
(zadana_hodnota - namerana hodnota)*koeficient_slozkyP +
(zadana_hodnota - namerana hodnota)_v_case_o periodu_skor *koeficient_slozkyI = vystup.
PID bude podobny ale pribudne pripocitanie zlozky D v tvare _zmena(zadana_hodnota - namerana hodnota) * koeficient_zlozky_D.
Pod pojmom zmena sa rozumie napr velmi zjednodusene rozdiel medzi prave aktualnym meranim a predchadzajucim meranim.
Odporucam pri experimentovani s tymto najprv zadat I a D zlozku nulovu .. a vyladit zlozku P .. potom I a az nakoniec D.
V Simulinku je přímo modul PID regulátoru, takže to je asi jasné. Jedno číslo na vstupu je právě ta hodnota, co se do toho modulu přivádí na vstup, tedy jak psal "k", je to e = w - y, a to jedno číslo na výstupu je to y, co je na výstupu PID modulu.
Při identifikaci systému si spočítáte složky P, I, D nebo pomoci autotuningu spočítáte za chodu, vzhledem k tomu, že se jedná o bakalářku, tak asi to první, protože autotuning jste asi ještě nedělali.
Už si nepamatuji jestli se v Simulinku dá najít blok y -> f, ale zcela jistě půjde poskládat nebo vytvořit pomocí m-file bloku, který si můžete naprogramovat podle libosti.
Základ pro generování signálu STEP (tedy f) bude asi následující:
To dole je blok dopravniho zpozdeni do, ktereho musite privadet vystup regulatoru y - cas zpozdeni je neprimoumerny y, teda asi takto v=k/y, kde k je nejaka konstanta, v podstate na ni moc nezalezi, upravuje jen velikost frekvence v zavislosti na y, ale pokud nebude mit PID limity, tak si poradi s jakoukoli kladnou hodnotou k.
Tomáš
Při identifikaci systému si spočítáte složky P, I, D nebo pomoci autotuningu spočítáte za chodu, vzhledem k tomu, že se jedná o bakalářku, tak asi to první, protože autotuning jste asi ještě nedělali.
Už si nepamatuji jestli se v Simulinku dá najít blok y -> f, ale zcela jistě půjde poskládat nebo vytvořit pomocí m-file bloku, který si můžete naprogramovat podle libosti.
Základ pro generování signálu STEP (tedy f) bude asi následující:
Kód: Vybrat vše
_
1 >--|x|------o---> f
|- |
| _____ |
|__v__|
y >------/
Tomáš
no tak zadání prozatím vyšumělo do prázdna, zůstalo nerealizováno, takže tak.. Ale asi se to k tomu brzy vrátím.
ale jak už jsem psal, děkuju za reakce..
a nevěděli byste jak udělat generátor signálu, který bý zvyšoval frekvenci svých pulsů?
já to zkoušel přes matlab function atd, vytvořit tam nějakou neustále zvyšující se proměnou, kterou bych neustále násobil blok generátoru, ale to nefunguje a speciální blok jsem nenašel..
ale jak už jsem psal, děkuju za reakce..
a nevěděli byste jak udělat generátor signálu, který bý zvyšoval frekvenci svých pulsů?
já to zkoušel přes matlab function atd, vytvořit tam nějakou neustále zvyšující se proměnou, kterou bych neustále násobil blok generátoru, ale to nefunguje a speciální blok jsem nenašel..
Jsem už nějakou dobu ze školy a Matlab doma nemám, ale mám dojem, že i speciální bloky co generují náběh/doběh tam jsou a řekl bych. že jsem je i používal. Nastavoval se čas zvyšování a snižování hodnoty a počáteční a koncová hodnota. Jinak lze na to klidně použít třeba PID blok, kde nastavíte pouze integrační konstantu, ostatní nulové a zavedete zpětnou vazbu, tak jak u regulátoru.
Tomáš
Tomáš
no tak tady ale popisujete změny velikosti amplitudy v čase, že? Já potřebuji změny frekvence signálu, tedy změny na x-ové ose (čas), ne na y-nové ose (amplituda)tomashal píše:Nastavoval se čas zvyšování a snižování hodnoty a počáteční a koncová hodnota.
Tomáš
To s tím PID (pouze I) nefunguje, zase se mění jen amplituda
Ano popisuju jak měnit v čase amlitudu, kterou potřebujete pro generátor frekvence, popsaný výše pomocí dopravního zpoždění. Na výstupu dostanete samozřejmě to co potřebujete.
Tomáš
Tomáš