|
|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2024 11 30, 11:25. Visos datos yra GMT + 2 valandos.
|
|
|
|
Forumas » Skaitmeninė elektronika » PID algoritmas
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
Puslapis 1 iš 2 Pereiti prie 1, 2 Toliau |
|
|
PID algoritmas |
Parašytas: 2016 02 05, 09:07 |
|
|
|
nesusišnekėjau per visą dieną su (vieno iš įžymiausių automatikos tiekėjų) PID nustatymais. Neišeina iš generavimo, neslopina. Supasi nuo minimumo iki maksimumo. Pradėjau rašyti savo algoritmą su overšūto poveikio įsiminimu, ir pamaniau, kadgi jau turi būti kas nors susidūręs ir atidirbęs gerą reguliatorių, dirbantį be overšūto arba bent jau gerai slopinantį. Padėkite, kolegos. |
|
Paskutinį kartą redagavo a1girdas, 2018 02 06, 17:30. Redaguota 1 kartą |
|
|
|
|
|
Re: PID algoritmas |
Parašytas: 2016 02 05, 16:59 |
|
|
|
a1girdas rašo: |
nesusišnekėjau per visą deiną su (vieno iš įžymiausių automatikos tiekėjų) PID nustatymais. Neišeina iš generavimo, neslopina. Supasi nuo minimumo iki maksimumo. Pradėjau rašyti savo algoritmą su overšūto poveikio įsiminimu, ir pamaniau, kadgi jau turi būti kas nors susidūręs ir atidirbęs gerą reguliatorių, dirbantį be overšūto arba bent jau gerai slopinantį. Padėkite, kolegos. |
O tai kaip sistema elgiasi, visai išjungus I ir D dedamąsias ir palikus minimalią P įtaką? Be to, koks yra jutiklio reakcijos laikas? Nes jei jutiklis yra už kilometro nuo valdančios sklendės ir reakcijos laikas vos ne pusvalandis, tai kitoks reguliavimas, nei min/max, neįmanomas |
|
|
|
|
|
|
PID algoritmas |
Parašytas: 2016 02 05, 22:25 |
|
|
|
Čia yra keli derinimo metodai ir šiaip info, jei būtų įdomu apie PID pasiskaityti autoriui ar kam kitam:
https://en.wikipedia.org/wiki/PID_controller#Loop_tuning
Žinant daugiau apie sistemą (procesą, grįžtamąjį ryšį), būtų galima patarti konkrečiau. Jei sistema generuoja, tai gali būti per didelis bet kuris iš koeficientų.
Net ir su pusvalandiniu vėlinimu galima suderinti be overšūto, tiesiog nusistovėjimo laikas bus atitinkamas. |
|
|
|
|
|
|
PID algoritmas |
Parašytas: 2016 03 30, 11:28 |
|
|
|
Citata: |
r reakcijos laikas vos ne pusvalandis, tai kitoks reguliavimas, nei min/max, neįmanomas |
tą dėstytoją, kuris tokių nesąmonių mokina, diskvalifikuočiau galutinai. Mūsų programuotojai irgi kažką panašaus kliedi.
Truputį keičiu klausimą: kas su Siemens PID susidūręs, prašom patarti. Siemens PID reguliavime apie 200 kintamųjų. Velnias ragus nusilauš, kol sugaudysi, kurie ten reikalingi.
Citata: |
galima suderinti be overšūto |
derinant overšūtas netgi, sakyčiau, privalomas. Kartą per dieną irgi nepakenks. Procesas yra toks:
siurblys turi palaikyti 2m³/h srautą plius minus 0,1m³/h. Skysčio klampumas nepastovus, bet kinta tik tolydžiai lėtai. Srauto daviklio atsako laikas yra kelios minutės, nuo 1 iki 3. Srautas pakinta daug greičiau - per kelias sekundes. Valdomas siurblio dažnis. Dažnio diapazonas tarp 19,5Hz ( tik skystam skysčiui apie 0,8m³/h, tirštas skystis išvis dar nejuda) iki 23,8Hz, kada tiek skysto, tiek tiršto srautas apie 2m³/h. |
|
Paskutinį kartą redagavo a1girdas, 2016 03 30, 15:21. Redaguota 1 kartą |
|
|
|
|
|
PID algoritmas |
Parašytas: 2016 03 30, 11:34 |
|
|
|
O tai auto tune nesusitvarko? |
|
|
|
|
|
PID algoritmas |
Parašytas: 2016 03 30, 14:56 |
|
|
|
kitam valdikliui panašiu atveju gerai praėjo auto tune. Šiam valdikliui nei vienu atveju (visur kitur pas mus daviklio atsakymo laikas daug greitesnis) auto tune per protingą laiką nesibaigė, tai ir nenaudojam. Šiam konkrečiam atvejui auto tune minkėsi kokias 8 valandas, net nepasakysiu, ar užsibaigė, ar ne. Tiek laiko sugaišta, kad galima paprastą savo algoritmą sumesti ir pamėginti. |
|
|
|
|
|
|
PID algoritmas |
Parašytas: 2016 03 30, 17:58 |
|
|
|
a1girdas rašo: |
Truputį keičiu klausimą: kas su Siemens PID susidūręs, prašom patarti. Siemens PID reguliavime apie 200 kintamųjų. Velnias ragus nusilauš, kol sugaudysi, kurie ten reikalingi be overšūto . |
Šakės viskam. Siemens degraduoja . Ir HV apsaugos terminalus paleido į pasaulį su nauju softu, užimančiu kompe labai daug vietos. Tas pats su 1200 valdiklių serija.Kitiems tas pats softas jau netinka, savaime suprantama. Gal tokiu būdu kovoja už vietos po saule išlaikymą, kuo sudėtingiau, tuo geriau. Ber vartotojui tai visai |
|
|
|
|
|
|
PID algoritmas |
Parašytas: 2016 03 30, 19:03 |
|
|
|
vidas.k rašo: |
a1girdas rašo: |
Truputį keičiu klausimą: kas su Siemens PID susidūręs, prašom patarti. Siemens PID reguliavime apie 200 kintamųjų. Velnias ragus nusilauš, kol sugaudysi, kurie ten reikalingi be overšūto . |
Šakės viskam. Siemens degraduoja . Ir HV apsaugos terminalus paleido į pasaulį su nauju softu, užimančiu kompe labai daug vietos. Tas pats su 1200 valdiklių serija.Kitiems tas pats softas jau netinka, savaime suprantama. Gal tokiu būdu kovoja už vietos po saule išlaikymą, kuo sudėtingiau, tuo geriau. Ber vartotojui tai visai |
Sorry už OT
Ir neseniai teko susidurti su siemens cerberos priešgaisrinėmis sistemomis.... Na kaip čia pasakius, sistema rimta, bet aprašymas tragiškas. Tuo labiau, kad didžiosios dalies funkcijų niekas neišnaudos |
|
_________________ Do not argue with an idiot. He will drag you down to his level and beat you with experience.
mane rasite: mano profilyje |
|
|
|
|
|
PID algoritmas |
Parašytas: 2016 03 30, 19:34 |
|
|
|
a1girdas rašo: |
kitam valdikliui panašiu atveju gerai praėjo auto tune. Šiam valdikliui nei vienu atveju (visur kitur pas mus daviklio atsakymo laikas daug greitesnis) auto tune per protingą laiką nesibaigė, tai ir nenaudojam. Šiam konkrečiam atvejui auto tune minkėsi kokias 8 valandas, net nepasakysiu, ar užsibaigė, ar ne. Tiek laiko sugaišta, kad galima paprastą savo algoritmą sumesti ir pamėginti. |
Nu nežinau tech. procesas paprastas kaip dvi kapeikos. Inercija minimali.Turi ten viskas lengvai gautis. Su stiprinimu gal daugiau pažaist reikia.
Labai norint galima fuzzy daryt |
|
|
|
|
|
|
PID algoritmas |
Parašytas: 2016 10 08, 19:20 |
|
|
|
Kad jau kalbamės apie PID algoritmą, gal kas padėtumėte su PID algoritmo programa. Programa rašau and Arduino Uno pagal pateiktą pavyzdį. Skirtingai, nei įprastai programa turėtu valdyti rėlę, o ne analoginį išėjimą PWM pavidalu. Programos pavizdys atrodo taip.
Kodas: |
/********************************************************
* PID RelayOutput Example
* Same as basic example, except that this time, the output
* is going to a digital pin which (we presume) is controlling
* a relay. The pid is designed to output an analog value,
* but the relay can only be On/Off.
*
* To connect them together we use "time proportioning
* control" Tt's essentially a really slow version of PWM.
* First we decide on a window size (5000mS say.) We then
* set the pid to adjust its output between 0 and that window
* size. Lastly, we add some logic that translates the PID
* output into "Relay On Time" with the remainder of the
* window being "Relay Off Time"
********************************************************/
#include <PID_v1.h>
#define RelayPin 6
//Define Variables we'll be connecting to
double Setpoint, Input, Output;
//Specify the links and initial tuning parameters
PID myPID(&Input, &Output, &Setpoint,2,5,1, DIRECT);
int WindowSize = 5000;
unsigned long windowStartTime;
void setup()
{
windowStartTime = millis();
//initialize the variables we're linked to
Setpoint = 100;
//tell the PID to range between 0 and the full window size
myPID.SetOutputLimits(0, WindowSize);
//turn the PID on
myPID.SetMode(AUTOMATIC);
}
void loop()
{
Input = analogRead(0);
myPID.Compute();
/************************************************
* turn the output pin on/off based on pid output
************************************************/
unsigned long now = millis();
if(now - windowStartTime>WindowSize)
{ //time to shift the Relay Window
windowStartTime += WindowSize;
}
if(Output > now - windowStartTime) digitalWrite(RelayPin,HIGH);
else digitalWrite(RelayPin,LOW);
} |
Rezultatas tas kad ant sesto isejimo gaunu standartinį PWM signalą. O kiek suorantu turėtu būti kaip ilgas PWM. |
|
|
|
|
|
|
PID algoritmas |
Parašytas: 2016 11 13, 22:14 |
|
|
|
assembled linką davęs veikia puikiai, pagrindinė taisyklė, kad negeneruotų stiprinimas min.... |
|
|
|
|
|
PID algoritmas |
Parašytas: 2016 12 22, 10:56 |
|
|
|
Citata: |
Programos pavizdys atrodo taip |
ar pats suvoki, kad programos nepateikei?
ką nori padaryt? |
|
|
|
|
|
PID algoritmas |
Parašytas: 2016 12 22, 12:07 |
|
|
|
Visu pirma reikia myPID.SetOutputLimits(OUTPUT_MIN, OUTPUT_MAX); // pvz PWM'ui reikia ( 0, 255 );
Po myPID.Compute(); Output gauni reiksme [ OUTPUT_MIN .. OUTPUT_MAX ] ribose...
Jei valdai per PWM, tai kisi reiksme tiesiai i PWM, pvz:
Kodas: |
analogWrite( OUT_PIN, constrain( Output, 0, 355 ) );
|
Jei valdai su rele, tai:
Kodas: |
if ( Output >= ( OUTPUT_MIN + OUTPUT_MAX ) / 2 ) {
// ijungi rele
} else {
// isjungi rele
} |
|
|
|
|
|
|
|
PID algoritmas |
Parašytas: 2018 02 04, 23:06 |
|
|
|
sveiki,
radau tema, tai prikelsiu, reikia pagalbos su PID, nes jo nesuprantu ir programuojant nezinau kaip parasyt. jei kas galesit pagelbeti, busiu labai dekingas.
Esu pasidares inkubatoriu, temperaturos ribos nusistato pvz.: 37,8 C ir 37,9 C jei pakyla iki 37,9 rele atjungia sildyma, ir laukia kol atves ir pasieks 37,8 ir vel rele ijungs sildyma.
Problema atsiranda tada kai pasiekia 37,9 sildyma isjungia, bet temperatura kyla iki 38,2 ir pan. sildytuvas siltas ir jis dar sildo, viskas logiskai. tokia pat problema ir nukritus temperaturai iki 37,8 kol sildytuvas ikaista, temperatura krempta zemyn iki 37,6 ir pan. man asmeniskai per dideli svyravimai.
sildytuvas yra 100W ateityje zadu deti 300W bet esmes tai neturetu keisti. gal tiek daug nenukris greiciau uzkais. stovi 12v ventiliatorius su pvm valdau apsukas, kai ijungtas sildymas beveik MAX duodu apsuku, kai isjungiu sildyma, vos vos sukasi.
temperaturos daviklis SHT31
Ir dabar klausimas ar su PID pavyktu, "pataisyti" kad butu kuo mazesnis temperturos svyravimas? jei taip gal kas galit pagelbeti ir uzvesti ant kelio kaip skaiciuoti ir parasyt koda. nemazai itakos turi aplinkos temperatura, kur stovi inkubatorius. jei butu reikalinga ja irgi galiu nuskaityti. |
|
_________________ Skype: dmb-220 |
|
|
|
|
|
|
Google paieška forume |
|
|
Naujos temos forume |
|
|
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
|
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
|
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
|
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
|
LEGO
Mänguköök,
mudelautod,
nukuvanker |
|
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope |
|
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
|
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
|
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
|
GTA 6 Weapons
GTA 6 Characters,
GTA 6 Map,
GTA 6 Vehicles |
|
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
|
|
|