PID valdymo algoritmas šiuo metu yra vienas plačiausiai naudojamų valdymo algoritmų. PID valdymas siūlo tokius privalumus kaip reguliuojami parametrai, platus pritaikymo spektras ir didelis valdymo tikslumas. Praktinėje inžinerijoje PID algoritmas gali būti taikomas įvairiose srityse, įskaitant elektromechaninį valdymą, pramoninę automatiką, robotiką ir mikroprocesorių valdymą.
Trys PID algoritmo parametrai yra: proporcinis stiprinimas Kp, integralinė laiko konstanta Ti ir išvestinė laiko konstanta Td. Skirtingoms sistemoms reikalingi skirtingi PID parametrai, o optimalūs parametrai paprastai gaunami eksperimentuojant ir derinant. Proporcinė konstanta Kp reguliuoja proporcinį stiprinimą, valdydama sistemos išėjimo ir grįžtamojo ryšio paklaidos santykį veikimo metu; integralinio laiko konstanta Ti reguliuoja integralinį stiprinimą, valdydama klaidų kaupimąsi sistemos veikimo metu; o išvestinė laiko konstanta Td koreguoja išvestinį stiprinimą, kontroliuodama valdymo sistemos klaidų kitimo greitį.
Koks yra PID algoritmo diegimas mikrovaldiklyje?
Norint įdiegti PID valdymo algoritmą mikrovaldiklyje, bendras metodas yra toks:
1. **Nustatykite PID parametrus**:
- Pasirinkite tinkamą proporcinį stiprinimą (Kp), integravimo laiką (Ti) ir išvestinį laiką (Td), atsižvelgdami į faktinio valdomo objekto charakteristikas ir reikalavimus.
2. **Jutiklio duomenų gavimas**:
- Naudokite tinkamus jutiklius (pvz., temperatūros jutiklius, padėties jutiklius ir kt.), kad gautumėte grįžtamojo ryšio duomenis realiuoju laiku-iš kontroliuojamo objekto.
3. **Nustatytinės vertės ir grįžtamojo ryšio verčių palyginimas**:
- Palyginkite nustatytą vertę (norimą vertę) su grįžtamojo ryšio reikšme, kad apskaičiuotumėte klaidą (klaidą).
4. **PID skaičiavimas**:
- Apskaičiuokite valdymo kintamąjį (išėjimą) naudodami PID algoritmo formulę: PID=Kp * Error + Ki * ∫ Error dt + Kd * d(Error)/dt.
- Kp, Ki ir Kd yra PID parametrai; Error yra klaidos reikšmė; ∫ Klaida dt reiškia integralinį narį; o d(klaida)/dt reiškia išvestinį terminą.
5. **Apribojimas** (neprivaloma):
- Tam tikroms programoms gali prireikti apriboti išvesties vertės diapazoną, kad jis neviršytų priimtino valdomo objekto diapazono.
6. **Išvesties valdymo signalas**:
- Apskaičiuotas valdymo kintamasis naudojamas kaip valdymo signalas ir siunčiamas į pavarą (pvz., variklį arba vožtuvą), kad būtų galima reguliuoti ir valdyti valdomą objektą.
7. **Nustatykite valdymo dažnį**:
- Nustatykite tinkamą valdymo dažnį-valdymo algoritmo vykdymo ciklą-, atsižvelgdami į konkrečius programos reikalavimus.
8. **Pakartokite PID algoritmą**:
- Realaus laiko cikle pakartotinai atlikite anksčiau nurodytus veiksmus, kad nuolat stebėtumėte grįžtamojo ryšio vertę, apskaičiuotumėte valdymo kintamąjį ir išvestumėte valdymo signalą, kad sistema būtų valdoma stabiliai.
Realiai programuodami mikrovaldiklius, galite pasirinkti tinkamus kūrimo įrankius ir programavimo kalbas (pvz., C arba asamblėjos kalbą), atsižvelgdami į konkretų mikrovaldiklio modelį ir kūrimo platformą. Reikėtų pažymėti, kad praktikoje yra daug PID algoritmo optimizavimo ir tobulinimo metodų, tokių kaip integralus atskyrimas ir adaptyvusis PID, kuriuos galima toliau tirti ir įdiegti pagal specifinius reikalavimus.
PID valdiklių principai ir veikimas
PID valdiklis susideda iš trijų komponentų: proporcinio (P), integralo (I) ir išvestinės (D). Jis generuoja valdymo išvestį apdorodamas sistemos klaidą, nuokrypį ir pokyčio greitį. Jo veikimas apima šiuos veiksmus:
- Gaukite nustatytosios vertės ir grįžtamojo ryšio reikšmes
- Apskaičiuokite klaidą
- Apskaičiuokite valdymo išvestį pagal proporcinį stiprinimą, integralinį narį ir išvestinį narį
- Atnaujinkite valdiklio parametrus
- Išveskite valdymo signalą
STM32 kodo įgyvendinimas
Toliau pateikiamas PID valdiklio projektavimo ir įdiegimo naudojant STM32 mikrovaldiklį pavyzdys:
```c
#include "stm32f4xx.h"
// Apibrėžkite PID valdiklio parametrus
plūduriuoti Kp=0.5; // Proporcinis pelnas
plūduriuoti Ki=0.2; // Integralinis padidėjimas
plūduriuoti Kd=0.1; // Išvestinis pelnas
// Apibrėžkite saugojimo kintamuosius
plūdės nustatymo taškas=50.0; // Nustatytasis taškas
plaukiojantis atsiliepimas=0.0; // Atsiliepimo reikšmė
float error=0.0; // Klaida
float last_error=0.0; // Ankstesnė klaida
plūdinis integralas=0.0; // Integralus terminas
// PID valdiklio išėjimo skaičiavimo funkcija
float pidController (float dt)
{
// Apskaičiuokite klaidą
klaida=setpoint - atsiliepimas;
// Apskaičiuokite integralinį terminą
integralinė += klaida * dt;
// Apskaičiuokite išvestinį terminą
plaukiojanti išvestinė=(klaida - paskutinė_klaida) / dt;
// Apskaičiuokite valdymo išvestį
float output=Kp * klaida + Ki * integralas + Kd * išvestinė;
// Atnaujinti ankstesnę klaidą
paskutinė_klaida=klaida;
grąžinti išvestį;
}
int main (tuščia)
{
kol (1)
{
// Gauti grįžtamojo ryšio reikšmę
// Nustatykite laiko intervalą
// Apskaičiuokite PID išvestį
float dt=0.01; // Šiame pavyzdyje laiko intervalas yra 0,01 s
float control_output=pidController(dt);
// Išveda valdymo signalą
// Atidėti tam tikrą laikotarpį
už (int i=0; i < 10000; i++);
}
grąžinti 0;
}




