Zemāk ir redzama PID algoritma realizācija, izmantojot mikrokontrolleri, kur sistēmai ir nepieciešams saglabāt temperatūru, kura ir mazāka vai vienāda ar 23,5 °C.
1.1.att. Temperatūras uzraudzības sistēmas blokshēma
delay_s(dt)
//Aizture sekundēs – aptuvenais iterācijas ilgums
//Nepieciešams noteikt laika izmaiņas
//Nepieciešams noteikt laika izmaiņas
actual_value = ADC_read()/2.05
//Tiek aprēķināta nolasītā temperatūra
//Tiek saglabāta temperatūras vērtība
//Tiek saglabāta temperatūras vērtība
error = (desired_value - actual_value)
//Tiek aprēķināta proporcionālā kļūda, zinot vēlamo un reālo vērtību
integral = integral + (error*dt)
//Tiek aprēķināta integrālās kļūdas daļa
derivative = (error - error_previous)/dt
//Tiek aprēķināta diferenciālās kļūdas daļa
output = KP*error + KI*integral + KD*derivative
//Tiek aprēķināta nepieciešamo izmaiņu vērtība, kuru tālāk padod uz izeju, piemēram, lai mainītu fēna griešanās ātrumu
error_previous = error
//Tiek saglabāta aprēķinātā kļūda, lai vēlāk aprēķinātu jauno kļūdas vērtību
duty = duty + output
//Tiek veiktas izmaiņas sistēmā – impulsa platuma modulācijas izmaiņas
Šoreiz tiek aplūkots PID (P – proporcionālais, I –
integrālais, D - diferenciālais) algoritms, ar kura palīdzību sistēma spēj izsekot
līdzi dažādu fizikālo lielumu izmaiņām, piemēram, temperatūras vai
apgaismojuma, lai saglabātu nepieciešamo sistēmas stāvokli. Piemēram, ja
nepieciešams, lai telpas apgaismojuma intensitāte palielinātos, kad ārā satumst,
ja nepieciešams, lai telpā gaisa temperatūra nepārsniegtu noteiktu robežu, ja nepieciešams, lai kvadrkopteris saglabātu
konstantu pozīciju.
PID algoritma ieejā tiek padota vēlamā vērtība (stāvoklis),
bet tālāk tiek aprēķināta kļūda, izmantojot atgriezenisko saiti (sensors), ar
kuras palīdzību tiek atgriezta reālā sistēmas stāvokļa vērtība. Zinot reālo un
vēlamo vērtību, tālāk tiek aprēķināta kļūda, kuru tālāk izmanto, lai aprēķinātu
visas PID algoritma komponentes (output = KP*error + KI*integral
+ KD*derivative), kuras tālāk summē, lai vēlāk padotu uz izeju atbilstošu signālu, veiktu izmaiņas sistēmā. Izmaiņas tiek veiktas tik ilgi, kamēr kļūda
nav vienāda ar nulli.
PID algoritma galvenais uzdevums ir nodrošināt, ka
sistēma spēj ātri reaģēt un nodrošināt vēlamo stāvokli.
Svarīgi ir zināt, ka, lai aprēķinātu KP,
KI un KD koeficientu vērtības, ir nepieciešams veikt
sistēmas mērījumus. Parasti, veicot sistēmas testa mērījumus, KI un
KD koeficientu vērtības ir vienādas ar 0, bet KP ir
vienāda ar 1, ar kuru palīdzību tiek noteikts sistēmas aiztures laiks (T2),
vienas svārstības ilgums (T1), kamēr sistēma sasniedz vēlamo stāvokli, un svārstību
amplitūda. Tālāk šī informācija tiek izmantota, lai izveidotu sistēmu
aprakstošu pārvades funkciju, kuru tālāk var izmantot, lai aprēķinātu PID
algoritma koeficientus (KP, KI un KD).
Matlab (Simulink rīks) ir programma, ar
kuras palīdzību ir iespējams veikt sistēmas modeļa simulēšanu, zinot pārvades
funkciju, izmantojot veiktos testa mērījumus, lai tālāk noteiktu PID
koeficientu vērtības.
Praksē biežāk, lai noteiktu PID koeficientu vērtības,
tiek izmantotas tādas metodes kā Ziegler–Nichols 1. metode (sistēmas soļa reakcijas
metode) un 2. metode (sistēmas pašsvārstību metode), taču eksistē arī citas
metodes. Ja salīdzina abas metodes, tad 1. metode ir precīzāka, jo otrā metode
ir vairāk eksperimentāla, kur, veicot sistēmas testa mērījumus, tālāk tiek
aprēķinātas koeficientu vērtības (skatīt zemāk), bet pirmā ir balstīta uz
sistēmas pārvades funkcijas izmantošanu, lai daudz precīzāk varētu noteikt
koeficientu vērtības, taču problēmas rodas, ja laiku vērtības tiek noteiktas aptuveni, ja mainās sistēma, piemēram,
kad mainās sensori, jo tad izmainās sistēmas pārvades funkcija.
Ziegler–Nichols
2. metode:
KP =
0,60*Kkritiskā (koeficients, pie kura novērojamas svārstības ar nemainīgu amplitūdu)
TI =
0,50*svārstību periods, kur KI = KP/TI
TD =
0,125*svārstību periods, kur KD = KP*TD
Ziegler–Nichols 1.
metode:
KP = 1,20*T/L
TI = 2,00*L, kur KI = KP/TI
TD = 0,50*L, kur KD = KP*TD
1.2.att. Sistēmas reakcija uz soļa funkciju