[ mish_ns @ 16.02.2012. 08:55 ] @
Pozdrav svima.
Interesuje me da li je neko radio PI regulaciju na Siemensovim PLCovima?
Odnosno da li je sam pisao "kod" za regulaciju?
Imao sam ideju da uradim nešto tako pomoću Cyclic Interrupt bloka.
Međutim nisam se puno susretao sa PI,PID regulacijom.

Prvo bi trebao od zeljenje oduzeti merenu vrednost npr. temperature.
Zatim uporediti, ako je zeljena veća od merene onda uključujem neki grejač da dogrevam.
U suprotnom isključujem...
To bi bilo P dejstvo.

E sad kod integralnog bi trebao da sumiram prethodne greške i da na osnovu toga eliminišem grešku u ustaljenom stanju?

Da li neko ima kod recimo u C-u ili drugom programskom jeziku?

HVALA
[ ivan veljovic @ 16.02.2012. 09:09 ] @
TIA v11
[ mish_ns @ 16.02.2012. 09:37 ] @
Moze i V11 i V10.5 ili neki od Step7 za 300 ili 400.
Znam da postoje ugrađene f-je, ali sam mislio sam da napišem...
[ elektrostudio @ 16.02.2012. 19:11 ] @
Pre 10god sam pisao za S5 PID ali je to izgubljeno jer mi otkazao PG. Secam se da sam koristio OB20 ili 21 ili 22 (izvrsava se svakih 100ms) za izvor realnog vremena pa ako to moze pomoci eto. Inace imam isto uradjeno u asm za PIC ali to sad naci je veliko pitanje jer sam se selio vise puta a u to doba su postojale samo diskete i dos. A ovde na forumu je Veselinovic (doduse ne na STEP-u) radio takvo nesto pa mozes i to pogledati. Inace sam trosio nekih 5-6 lokacija iz DB-a za cuvanje vrednosti u float-u. treba ti razlika SP-a i PV-a nova, stara razlika SP i PV, kao i akumulirana vrednost i dela i akumulirana vrednost D dela.

[Ovu poruku je menjao elektrostudio dana 16.02.2012. u 20:29 GMT+1]
[ mish_ns @ 16.02.2012. 20:24 ] @
da to sam i mislio to je taj cyclic interrup koji sam pomenuo...
Pogledacu jos malo po netu...
Do tad ako ima još neko neki predlog nek javi...
Za sad me više interesuje logika, kako realizovati (kroz kod) PI regulaciju.
Znači neka formula, ali onaj oblik koji se koristi u programskim jezicima...
[ ivan veljovic @ 17.02.2012. 00:29 ] @
Pocni od P regulatora. njegova prenosna funkcija je proizvod pojacanja i signala greske.

u(t) = Kp x e(t)

signal greske je e(t) = r(t) - y(t) gde je r(t) referentni signal odnosno, obicno,
zeljena vrednost, a y(t) je izlaz sistema.

[ ivan veljovic @ 17.02.2012. 07:12 ] @
okacicu ja kasnije primer P regulatora, u LAD dijagramu, za simensa...
[ mish_ns @ 17.02.2012. 20:18 ] @
Ok za P dejstvo mi je jasno...

u(t) = Kp x e(t)
gde je e(t) = r(t) - y(t)
tj. e(t) - greska
r(t) - zeljena vrednost(referentna)
y(t) - izlazni signal

E sad kod I dejstva bi to izgledalo ovako:
u(t) = Ki x integral
gde je
integral = integral + e(t)

I kad smo vec kod toga hajde da pitam i za D.
Ono bi trebalo ovako:
u(t) = Kd x diferencijal
gde je
diferencijal = (e(t) - e(t-1))/dt

Ovo t je vreme odmeravanja recimo 100ms.

nadam se da ne gresim?
koje su vrednosti konstanti Kp,Kd,Ki?
koliko je vreme Ti i kako ga ovde iskoristiti?

[ elektrostudio @ 17.02.2012. 20:34 ] @
Bas tako je - zato sam rekao da moras negde da cuvas prethodnu razliku i novu razliku kod D dela. Kod I dela si dobro napisao. Kreni od deklaracije I - vreme potrebno u sekundama da pri razlici PV i SP od 1% dobijes izlaz 100% (PV = procesna vrednost; SP - zadata vrednost), Inace se D komponenta koristi uglavnom kod temperatura, retko kod protoka, pritiska i nivoa
[ mish_ns @ 17.02.2012. 21:28 ] @
Citat:
Kreni od deklaracije I - vreme potrebno u sekundama da pri razlici PV i SP od 1% dobijes izlaz 100%

Sta znaci da pri razlici od 1% dobijem izlaz 100%? Ako sam dobro shvatio ->
NPR
imam grejac i
treba da grejem neku komoru na 40 'C (SP) - 1% je 0.4 'C i u nekom trenutku mi je PV=39.9
I ako je apsolutna vrednost SP-PV <=0.4 iskljucujem grejac,
a za ostale slucajeve ukljucujem na neku def. snagu???
[ elektrostudio @ 18.02.2012. 10:35 ] @
Ne tako, imas ulazni opseg temp 0-200degC i to je 0-100% ulaza PV i imas 0-200degC zadatu vrednost sto je opet 0-100% ulaza SP za regulator te I komponenta se racuna kao vreme za koje ce pri razlici od 1% ulaza (kako je opesg 0-200degC to znaci 2degC) doseci izlaznu vrednost 100%. Prevedeno: ako je set 50degC a merena vrednost 48degC, I=60sec znaci da ce za 60sec izlaz dostignuti 100%. Ako stavis I=30sec pri istim ulaznim vrednostima izlaz ce dostici 100% za 30sec. Moras sve prevesti u % jer je tako lakse.
[ mish_ns @ 18.02.2012. 10:58 ] @
Sad mi je jasno...Hvala...
Cini mi se da je na ovom linku pravi kod:
http://pcbheaven.com/wikipages/PID_Theory/?p=2

Pitanje je na kraju samo kako podesiti Kp,Ki i Kd...
Jel ima neka eksperimenalna 'odokativna' metoda za određivanje ovih parametara? (znam za dalinovu i ZN metodu)
[ elektrostudio @ 21.02.2012. 16:39 ] @
Uh, odokativna metoda je da poznajes proces koji zelis da regulises. Najgore je sa temperaturom... Da li regulises otvaranje/zatvaranje nekog ventila ili radis On/Off sa grejacima?
[ mish_ns @ 21.02.2012. 18:21 ] @
To sam dao kao primer.
Recimo da radim on/off sa grejacima... :)
[ elektrostudio @ 21.02.2012. 18:51 ] @
Ako su grejaci u pitanju i radis PWM onda kreni sa kp=0.3, i=60sec i bez D dela. Potom povecavaj kp a samanjuj Ivreme. Kada krene u oscilovanje sistema vratis malo vrednosti unazad i onda kreni lagano sa kd...

[Ovu poruku je menjao elektrostudio dana 21.02.2012. u 20:18 GMT+1]
[ elektrostudio @ 24.02.2012. 20:15 ] @
Napravi li sta?
[ mish_ns @ 25.02.2012. 15:16 ] @
Nisam još uvek ništa uradio, nemam vremena ovih dana.
Čim stignem probacu nešto.

Zamoli bih Ivana samo da okači P regulator.
Pozdrav
[ ivan veljovic @ 11.03.2012. 12:33 ] @
evo, jednostavan primer P regulatora. primer se odnosi na rezervoar u koji se pumpom
doliva voda. rezervoar ima senzor (povratna sprega) koji meri visinu vode u rezervoaru
i salje informaciju PLC-u na analogni ulaz. pumpa za vodu je povezana na alalogni izlaz PLC-a.
rezervoar ima poremecaj odnosno otvor na dnu kroz koji otice voda.

u network 7 se prvo nalazi SUB. tu racunam razliku izmedju zeljenog nivoa ("zeljeni_nivo") i
stvarnog nivoa ("senzor_nivo_prikazHMI"). tu razliku smatram greskom ("greska").

dalje vrednost greske mnozim sa faktorom pojacanja ("Kp_faktor") i to smestam u promenljivu ("PREG_izlaz").

u network 8 poredim vrednost zeljenog nivoa ("zeljeni_nivo") i vrednosti promenljive ("PREG_izlaz").
preko JMP skacem na "mesto_01", odnosno na pocetak network 7 sve dok postoji razlika
zeljenog i stvarnog nivoa.

e sada, network 8 treba da bude ustvari network 9. tada bi se u network 8 nalazio blok koji
ukljucuje pumpu. tada u network 7 se racuna greska i mnozi sa faktorom Kp, pa dalje u network 8
bi se pokretala pumpa da ubacuje vodu u rezervoar a u network 9 bi se poredile vrednosti sve dok se
razlikuju zeljeni i stvarni nivo.

ovo je najobicniji nacin realizacije P regulatora i sada ovo treba razmotriti i unaprediti da to
bude OK.

neka neko prokomentarise ovu ideju, ako nije problem (unapred zahvaljujem).








[ mish_ns @ 14.09.2012. 12:52 ] @
Evo ljudi konacno sam uradio PIregulaciju i primenio u praksi.
Pomocu ove f-je sam regulisao brzinu rada motora (preko frekventnog regulatora). proces koji se kontrolise jeste vakuum u rezervoaru.

E sad ako neko ima želju da na ovo dodamo još i D dejstvo i uradimo kompletan PID regulator...

PS.Network 8 i Network 9 ne spadaju u PI regulaciju ali su jako bitni za hardverske granice