Pokud jste tento soubor uploadovali a otevřeli v IPython Notebooku (a ne jen ve www prohlížeči),
můžete celý referát vyhotovit v tomto souboru a elektronicky odevzdat (nejlépe ukázat na konci hodiny).
V případě pozdějšího dodání [viz instrukce dole](#odevzdani).

<font color=blue> ZDE NAPIŠTE VAŠE JMÉNA, datum a čas (2x klik sem)

jména studentů:

datum :
čas cvičení: 7:15? - 8:45?

</font>

Laboratorní úloha O4 – Uzavřený regulační obvod s PID regulátorem


Popis úlohy

Regulovaná soustava je systém dvou propojených nádrží kde:

  • akční veličinou $u$ jsou otáčky čerpadla (respektive jim odpovídající napěťový signál), které vhání vodu do horní nadrže.
  • regulovaná veličina $\color{blue}y$ je výška hladiny ve spodní nádobě, která je přímo úměrná snímanému tlaku $\color{blue}P$.


Obr.1: Systém dvou propojených nádrží (uvažují se pouze dvě pravé nádrže)

HW řešení regulačního obvodu

Raspberry Pi + GertBoard



Obr.2: GertBoard(vlevo) propojený přes GPIO piny s Raspberry Pi(vpravo).


Obr.3: Umístění jednotlivých bloků na desce GertBoard.

Obr.4: Připojení motoru čerpadla a tlakového čidla ke GBd [1,2].

SW (open-source)

  • Raspbian - OS pro Raspberry Pi na bázi Linuxu
  • Python 2.7 - skriptovací programovací jazyk [3]
    • Spidev - Tento modul poskytuje komunikaci po SPI sběrnici. V tomto případě je Spidev použit pro komunikaci s AD převodníkem MCP3002.
    • Wiringpi - Poskytuje komunikaci s kontrolérem BD6222, který používá jeden z GPIO pinů na RPi pro pulsně šířkovou modulaci (PWM) a druhý pin pro orientaci motoru.
    • Numpy – Numerický Python pro vědecké výpočty a zpracování dat (analogie Matlabu)
    • Matplotlib – Knihovna grafů pro Python (analogie Matlabu).
    • wxPython – Modul pro vývoj grafických uživatelských prostředí (GUI) v Pythonu.
    • iPython Notebook - Nástroj pro tvorbu dokumentů s interaktivními výpočty v Pythonu pro webové prohlížeče (html, LaTex, Python). Zde je použit ke kompletní dokumentaci a tvorbě vašeho referátu
      Pozn.: Pokud nestihnete úlohu zpracovat při hodině, iPython Notebook spustíte v počítačových učebnách v prostředí Linux z příkazové řádky terminálu příkazem:
      \:> ipython notebook

      Pro instalaci na vlastním počítači lze použít distribuci Anaconda - Python 2.7, viz. odkaz [3]. Případně si můžete vyzkoušet bez instalace online Ipython Notebook na cloud systému [SageMath, viz.[4]](#sagemath)
      (ale úlohu můžete zpracovat i jiným, standardním, způsobem) </ul></ul>

Odkazy

[1]
Matouš Sláma, „Využití mikropočítače Raspberry Pi pro adaptivní identifikaci a řízení hydraulicko-pneumatické soustavy s využitím jazyka Python". Diplomová práce, Ústav přístrojové a řídicí techniky,Fakulta strojní, ČVUT v Praze, 2014.
[2]
Ivo Bukovský, Matouš Sláma, "Platforma pro návrh adaptivního regulátoru, implementaci a testování algoritmů". Workshop ARTEP 2014, Slovensko, 2014. (článek, poster)
[3]
Python 2.7, 32 bit, Anaconda - distribuce Pythonu pro zpacování dat, Continuum Analytics, 2015.

[4]
SageMathCloud™ collaborative computational mathematics - SageMath, IPython, LaTeX, and terminals in your browser , (William Stein, University of Washington, 2013).
[5]
"PPS C4 tutorial Python (vs Matlab).py" minitutoriál Pythonu v rámci cvičení předmětu PPS, ČVUT v Praze, Fakulta strojní.
[6]

</small> </div>

<font color=#00f> Úkol </font>

<font color=#00F> Úkolem je experimentálně odměřit přechodové charakteristiky a vyhodnotit vliv složek P a I na kvalitu regulačního pochodu pro regulační obvod se soustavou dvou propojených nádrží a porovnat s teoretickými simulacemi.

  1. SIMULAČNÍ EXPERIMENT - V připravených skriptech Pythonu odsimulujte přechodovou charakteristiku soustavy tvořené sériovým zapojením dvou soustav prvního řádu, viz. (1,2)

  2. LABORATORNÍ EXPERIMENT - odměřte přechodovou charakteristiku soustavy dvou propojených nádrží

  3. LABORATORNÍ EXPERIMENT - zkusmo odhadněte parametry regulátoru a odměřte přechodové charakteristiky URO (uzavř. reg. obvodu) s regulátorem typu:
    1. P
    2. PI
  4. Vyhodnoťte řízení s P a PI regulátorem a vyhodnoťte vliv složek P a I na kvalitu reálného regulačního pochodu.
  5. Pokuste se zkusmo nastavit simulační parametry $S_{u1}, \tau_1, S_{u2}, \tau_2$ tak, aby jste se simulací přechodové charakteristiky soustavy přiblížili naměřenému reálnému průběhu. (nepovinné)

</font>

Postup

Na ploše Raspberry Pi spusťe tento interaktivní návod a referát v jednom jako IPython Notebook pomocí skripu (ikonkou) O4-Notebook

Simulační experiment

Dynamiku výšky hladiny v dolní nádrži lze obecně aproximovat seriovým zapojením spojitých lineárních soustav

$$ \tau_1\cdot \dot{y}_1(t)+y_1(t)=S_{u1}\cdot u(t), $$
(1)
$$ \tau_2\cdot \dot{y}_2(t)+y_2(t)=S_{u2}\cdot y_1(t), $$
(2)

kde význam označení je následující:
$u$ ... akční veličina (hodnota signálu řízení otáček čerpadla) [V]
$y_1$, $\tau_1$ a $S_{u1}$ ... výška hladiny [/], časová konstanta [sec] a statické zesílení horní nádrže [/],
$y_2$, $\tau_2$ a $S_{u2}$ ... výška hladiny [/], časová konstanta [sec] a statické zesílení dolní nádrže [/],
$t$ ... čas [sec]

Pro takto jednoduchý systém (1,2) a při uvažování (dostatečně) malé periody vzorkování $\Delta t$, můžeme rovnice (1,2) upravit na tvar
$$ \dot{y}_1(t)=\left( S_{u1}\cdot u(t)-y_1(t)\right) \cdot\frac{1}{\tau_1}, $$
(3)
$$ \dot{y}_2(t)=(S_{u2}\cdot y_1(t)-y_2(t))\frac{1}{\tau_2}, $$
(4)


a simulace se bude pak počítat jako
$$ y_1(t+\Delta t)=y_1(t)+\dot{y}_1(t)\cdot \Delta t,$$
(5)

$$ y_2(t+\Delta t)=y_2(t)+\dot{y}_2(t)\cdot \Delta t , \ \ \ \ \ \ \text{přičemž} \ \ y=y_2.$$

(6)
</div>

Implementace simulace je pak v následující buňce, zkuste měnit parametry $\tau$ i $S_u$ a pozorujte rozdíl v odezvě na jednotkový skok:

In [1]:
#celý kód se provede stiskem Shift+Enter
%matplotlib inline
from matplotlib.pyplot import *
from numpy import *
#-------------------------------------------------

dt=0.1                             # rychle vzorkovani pro simulaci spojite soustavy [sec]
tau1=20 ; Su1=1 ; tau2=20 ; Su2=1  # zvolte i jiné parametry
Tstop=180                          # doba simulace [sec]

#-------------------------------------------------
#inicializace promennych a simulace soustavy (z nulovych p.p.)
t=arange(0,Tstop,dt)        # delka simulace [sec]
N=len(t)                     # delka dat
y1=zeros(N); y2=zeros(N)    
u=zeros(N) ; u[10/dt:]=1       #jednotkovy skok vstupu v case 10 secund.
for k in range(0,N-1):
    dy1dt=(Su1*u[k]-y1[k])*1./tau1
    dy2dt=(Su2*y1[k]-y2[k])*1./tau2
    y1[k+1]=y1[k]+dt*dy1dt
    y2[k+1]=y2[k]+dt*dy2dt
#-------------------------------------------------

tmin=0; tmax=180       #  upravte si rozsah casove osy pro graf vas [sec]

#------vykreslení----------------------------------
subplot(211)
plot(t,u)
xlabel('t [sec]'),ylabel('u [V]'),grid(), title('simulace')   # popisy os
xlim(tmin,tmax),ylim(min(u)-1,max(u)+1) 
subplot(212) 
plot(t,y2,'g')
xlabel('t [sec]'),ylabel('y [/]'),grid()  # popisy os
xlim(tmin,tmax), ylim(min(y2)-1,max(y2)+1)   
#---------------
#ulozeni vysledku do textoveho souboru, soubory budou ve slozce O4-data, ktera je
#ve slozce, ze ktere byl spusten IPython Notebook, cela cesta je tedy /home/pi/LAB/O4-data
savetxt('O4-data/simulation/t_sim.txt',t)
savetxt('O4-data/simulation/u_sim.txt',u)
savetxt('O4-data/simulation/y_sim.txt',y2)
ERROR: Line magic function `%matplotlib` not found.

Data průběhu veličin ze simulace jsou uložena v /home/pi/LAB/O4-data (na ploše je její zástupce) v podsložce simulace. Při každém běhu výše uvedeného simulačního skriptu budou přepsána, pokud je chcete uchovat pro pozdější použití, zkopírujte je jinam, nejlépe na vaše USB.

Laboratorní experiment

  1. Grafické rozhraní úlohy (GUI) spusťe pomocí skriptu (ikonkou) F4-O4-Program

  2. Otevře se okno programu, pro měření použijte záložku “PI Control + Controller Tuning”. Pro experiment ponechte počet iterací 400 a vzorkovací periodu 0.4 sec = vzorkování Raspberry Pi (tímto se v podstatě nastavuje doba běhu experimentu jako 400*0.4=160 [sec]).

Obr 5. GUI pro přechodové charakteristiky, zde zobrazeno pro URO s PI regulátorem (main.py)

  1. Nejprve změřte přechodovou charakteristiku soustavy nádrží bez regulátoru. Regulátor je vypnutý pokud je v políčku “PID on/off” nula.

    1. Po dokončení nastavení klikněte na “Start of Experiment”, tím se zahájí měření.

    2. Po skončení experimentu (čerpadlo se zastaví) klikněte na “Plot Step” pro vykreslení jeho průběhu do grafu.

    3. Záznamy průběhů veličin z jsou uloženy v /home/pi/LAB/O4-data (na ploše je její zástupce) v podsložce step. Pozor, při dalším spuštění experimentu budou přepsány novými daty! Pokud je chcete uchovat uložte si je na USB (např. pro pozdější porovnání s výsledky simulace)

    4. Po dokončení měření přechodové charakteristiky ji zobrazte následujícím skriptem. Zobrazena bude naposledy měřená přechodová charakteristika, pokud chcete zobrazit jinou, změřenou dříve, překopírujte data jejího průběhu do složky s daty /home/pi/LAB/O4-data/step

In [17]:
#SOUSTAVA - zde nactete a zobrazite (naposledy) namerena data prechodove charakteristiky
# ze souboru v ze souboru /home/pi/LAB/O4-data/step/

#------nacteni souboru s prechodovou charakteristikou----------------------------------
t=loadtxt('/home/pi/LAB/O4-data/step/t_step.txt')    
u=loadtxt('/home/pi/LAB/O4-data/step/u_step.txt')    
y=loadtxt('/home/pi/LAB/O4-data/step/y_step.txt')    

tmin=0; tmax=160       #  upravte si rozsah casove osy pro vas graf [sec]

#------vykreslení----------------------------------
subplot(211)
plot(t,u)
xlabel('t [sec]'),ylabel('u [V]'),grid(),title('SOUSTAVA - merena prechodova charakteristika')   # popisy os
xlim(tmin,tmax),ylim(min(u)-1,max(u)+1)    # popisy os
subplot(212) 
plot(t,y,'g')
xlabel('t [sec]'),ylabel('y [/]'),grid()   # popisy os
xlim(tmin,tmax), ylim(min(y)-1,max(y)+1)   
show()
  1. Nyní proveďte experiment se zapnutým P a pak i PI regulátorem (“PID on/off”=1). Nastavte parametry regulátoru $r_0$ a $T_i$, doporučené jsou hodnoty řádově stejné jako hodnoty výchozí. Pokud chcete provést měření jen s P regulátorem, nastavte parametr $T_i=0$.

    1. Po dokončení nastavení klikněten na “Start of Experiment”.

    2. Po skončení experimentu (čerpadlo se zastaví) klikněte na “Plot Plant” pro vykreslení jeho průběhu do grafu.

    3. Data po každém experimentu (“t.txt”, w=žádaná veličina ("desired") ... “d.txt”, y=regulovaná ... “y.txt”) si opět ukládejte na USB flash disk, jsou uloženy v /home/pi/LAB/O4-data (na ploše je její zástupce) v podsložce regulator.

    4. Měření zopakujte pro několik různých nastavení P a PI regulátoru a soubory s nejlepším regulačním pochodem nakopírujte zpět do složky regulator a skriptem níže vykreslete průběhy.
In [5]:
  #URO - zde nactete a zobrazite namerena data prechodove charakteristiky URO ze souboru ktere jste do tohoto PC nakopirovali z USB flash disku

#------nacteni souboru s prechodovou charakteristikou----------------------------------
t=loadtxt('/home/pi/LAB/O4-data/regulator/t.txt')    
w=loadtxt('/home/pi/LAB/O4-data/regulator/d.txt')    
y=loadtxt('/home/pi/LAB/O4-data/regulator/y.txt')    

tmin=0; tmax=160       #  upravte si rozsah casove osy pro graf vas [sec]

#------vykreslení----------------------------------
subplot(211)
plot(t,w)
xlabel('t [sec]'),ylabel('w [/]'),grid(),title('URO - merena prechodova charakteristika')   # popisy os
xlim(tmin,tmax),ylim(min(w)-1,max(w)+1) 
subplot(212) 
plot(t,y,'g')
xlabel('t [sec]'),ylabel('y [/]'),grid()   # popisy os
xlim(tmin,tmax), ylim(min(y)-1,max(y)+1) 
show()

<font color=blue>Závěr</font>

<font color=blue> Zde zhodnoťte výsledky,
odborně zodpovězte 4. úkol,
</font>

Uložení a odevzdání vašeho referátu

Vytvoření PDF:

Nejprve soubor uložte File/Save v menu IPython Notebooku, pak otevřete náhled tisku tohoto souboru File/Print View
V hlavním menu tohoto www prohlížeče vytiskněte tento náhled do formátu pdf (tlačítko vpravo nahoře) a váš pdf soubor :
a) uploadujte do vaší domovské složky na serveru fsh.fsid.cvut.cz, pomocí ftp klienta bareFTP (nebo Midnight Commander)
b) nebo si uložte na svůj usb flashdisk.

Uložení interaktivního notebooku:

Zdrojový kód tohoto interaktivního referátu je soubor s příponou .ipynb, který zde běží na virtuálním serveru interaktivního Pythonu s IP adresou 127.0.0.1
Tento zdrojový soubor získáte stažením v horním menu Notebooku přes File/Download as/IPython (.ipynb)
Pro eventuelní další zpracování v IPython notebooku (např. v Linuxu v pc učebnách nebo pokud si sami nainstalujete Python, viz. odkaz [3]) si tento interaktivní referát opět můžete přímo uploadovat do vaší domovské složky na serveru fsh.fsid.cvut.cz, pomocí ftp klienta bareFTP (nebo Midnight Commander) a nebo uložit na váš usb flashdisk.

Referát si nechte zkontrolovat na konci hodiny. Pokud je dokončen, máte hotovo. Na nutnosti výtisku se dohodněte se svým vyučujícím.

Pokud se referát rozhodnete dokončit později a nebo i zpracovat jinak(Word, Libre, LaTex, Matlab, Excel), odevzdáváte vytištěný referát.
Při pozdějším dopracování a pro tisk mužete nadbytečné obrázky a texty z tohoto souboru odstranit (viz nůžky v menu - Cut Cell)


Tento soubor si nechte zkontrolovat a stáněte si jej jako referát vaší skupiny
Pro zájemce je možné zorganizovat seminář jak pracovat v IPython Notebooku, viz. ivo.bukovsky @ fs.cvut.cz.

This website does not host notebooks, it only renders notebooks available on other websites.

Delivered by Fastly, Rendered by Rackspace

nbviewer GitHub repository.

nbviewer version: 89297bd

nbconvert version: 5.3.1

Rendered (Sun, 24 Sep 2017 17:38:20 UTC)