Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
raitl
HV veteran

liitunud: 20.01.2002
|
17.11.2015 19:11:39
"fuzzy" loogikaülesanne (nüüdseks arutelu PID kontrolleri teemal) |
|
|
Kasutan oma maja kütte juhtimiseks nutikodu seadet. Tegemist on tüüpilise radiaatorkeskküttega. Radiaatoritel termostaate pole ning kogu maja on üks küttetsoon. Soojust reguleerin 3T ventiiliga mis muudab radiaatoritesse pumbatava vee temperatuuri, kasutades radikatest tagasitulevat jahedamat ja akumulatsioonipaagis olevat (enamasti) kuuma vett.
Üks lihtsam ja enamlevinum lahendus kütteautomaatikatel tundub olema selline: koostada tabel, et kui välistemp X (ja nutikamatel ka toatemp Y) siis radikasse mineva vee temp Z
Minule selline lahendus ei istu kuna tulemuseks on see, et radiaatorite tempi hoitakse ajas suht muutumatuna. Sosistatakse 40C peal kuni tuba soojaks saab selmet alguses radikas ilusti 50-60C peale lükata, tuba kiirelt soojaks lasta ja seejärel radikas vaikselt tempi hoidma sättida.
Hetkel olen oma kütteloogikaga versiooni 3.0 juures kuid jätkuvalt tahaks asja paremaks, nutikamaks ja stabiilsemaks muuta. Praegune loogika koosneb kahest osast.
Üks osa majandab puhtalt 3T ventiiliga. Talle annan ette, et radikasse on vaja X kraadi ja tema majandab positsiooniga, et etteantud targetit hoida. - see osa toimib stabiilselt ja tõrgeteta.
Teine osa jälgib toatemperatuuri, selle muutumist viimase 10 minuti vältel ning otsustab millise temperatuuriga vett peaks radiaatorisse laskma, et tulemuseks oleks etteantud toatemperatuur - Vot see osa on see, millega pidevalt maadlen.
Kuna toasooja temperatuurimuutused toimuvad viitega on tulemuseks korralik pendeldamine etteantud temperatuuri ümber.
Praeguse versiooni matemaatiline pool on lahendatud valemiga:
RadTemp = prevRadTemp + math.abs(math.ceil(100 *((Target - roomTemp)/Target)))-(Change*10) |
kus
RadTemp = radikasse mineva vee temp, mida välja arvutatakse
prevRadTemp = eelmine radikasse mineva vee temp
Target = etteantud toatemperatuur
roomTemp = praegune toatemperatuur
Change = toatemperatuuri muutus viimase 10 minuti jooksul
seega kui asendada valemis muutujad arvudega saaks näiteks:
(tuba hetkel 20C, target 23C, radika temp 30C, muutus 10 minuti jooksul -0.3C)
RadTemp = 30 + math.ceil(100 *((23 - 20)/23))-(-0.3*10) = 36 |
või:
(tuba hetkel 23C, target 20C, radika temp 50C, muutus ajas +0.4C)
RadTemp = 50 + math.ceil(100 *((20 - 23)/20))-(0.4*10) = 31 |
Koodi jooksutatakse iga 5min tagant, seega praegu jõuab radiaatorite temp umbes 20 minutiga 30 pealt 50 peale.
Probleemiks on ikkagi see õigel ajal pidama saamine
Kas on keegi kokku puutunud teemaga, või viitsiks/tahaks kaasa mõelda?
viimati muutis raitl 20.11.2015 17:20:29, muudetud 2 korda |
|
Kommentaarid: 166 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
147 |
|
tagasi üles |
|
 |
sakinaga
HV Guru
liitunud: 30.08.2006
|
18.11.2015 14:53:22
|
|
|
Rohkem hetkel süveneda ei jõua, aga igasuguste deltade ruutuvõtmine kipub tähendama, et suure erinevuse korral muudetakse temperatuuri kiiresti, väikese erinevuse korral muudetakse vähe.
_________________ Tsensuur HinnaVaatluse foorumis |
|
Kommentaarid: 159 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
151 |
|
tagasi üles |
|
 |
elukaz
HV Guru

liitunud: 06.09.2004
|
18.11.2015 15:01:30
|
|
|
Mul on mingist manualist meeles et kui pealevoolu temp käib otseses seoses välis tempiga (küttekõver) siis toaanduri puhul lisatakse sellele veel fikseeritud võimendusega delta ja kogu lugu.
Näiteks soovitud temp 21, reaalne 18, sisestatud tambov=2 pealevoolule lisatakse 3x2=6 kraadi võrreldes küttekõveraga. Ilmselt seal siiski mingi ajakonstant ka et lappama ei läheks.
_________________ Ma ei saa sellest aru, järelikult on see vale. |
|
Kommentaarid: 187 loe/lisa |
Kasutajad arvavad: |
   |
:: |
3 :: |
0 :: |
151 |
|
tagasi üles |
|
 |
raitl
HV veteran

liitunud: 20.01.2002
|
18.11.2015 15:08:07
|
|
|
maatriks, see tegelikult olekski eesmärk. Kui toasoe on praktiliselt see mis vaja, siis tahakski sisuliselt teada kas parasjagu temp tõuseb või langeb. Kui tõuseb, siis radika tempi ei tõsta vaid pigem juba langetad ennetavalt.
Ma tegelikult ootaks hea meelega täiesti teiste nurkade alt ideid. Selle ülaltoodud lahenduse erinevate variatsioonidega olen nüüdseks kaks aastat mässanud. Mõtlesin et äkki mõni värske pea pakuks hoopis teise lähenemise mille peale ise polegi tulnud
|
|
Kommentaarid: 166 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
147 |
|
tagasi üles |
|
 |
ref
Kreisi kasutaja
liitunud: 10.08.2003
|
18.11.2015 16:29:33
|
|
|
Tee rohkem mõõtmisi (kord 10sek jooksul?) ja arvuta tõusu (või langust, kui tõus on negatiivne).
Näiteks võid arvutada viimase 10sek muutuse ning nende muutuste keskmine minuti (või viie?) lõikes.
Lisaks teed lülitused vahemiku lõikes - nt lubatud temperatuurimuutus on 2 kraadi enne kui automaatika reageerib (reaalselt ca 1-2 kraadist erinevust sa toas ei tunne) ja/või temperatuur langeb viimases perioodis 0.5 kraadi (need on sellised kohvipaksu pealt võetud numbrid ega oma konkreetset soovitust).
Muidugi sõltub see mõõtmiste arv ka sul kasutuses olevast sensorist (omal 50sendine odav käkk serialis, seal vaja kõigepealt realistliku näidu saamiseks teha sekundilise vahega mingi ~100 mõõtmist ja nende keskmine siis, ekstreemumid välja visates).
|
|
Kommentaarid: 17 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
15 |
|
tagasi üles |
|
 |
andresv
HV kasutaja
liitunud: 06.12.2004
|
|
Kommentaarid: 5 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
5 |
|
tagasi üles |
|
 |
raitl
HV veteran

liitunud: 20.01.2002
|
19.11.2015 12:44:58
|
|
|
andresv, olen siiani PID kõrvale jätnud just seetõttu, et tundunud kergelt overkill olema.
Aga nüüd otsustasin et teen proovi ära. Kirjutasin nii radika tempi reguleerimise kui ka toasooja majandamise jaoks PID kontrollerid valmis. Nüüd algab kalibreerimise protsess et täpsed Kp, Ki ja Kd väärtused mõlema tarbeks välja selgitada. Eks annan siia märku mis tulemused olema saavad.
EDIT:
On keegi reaalselt käsitsi PID väärtuseid seadistanud? Või vähemalt sügavamalt PID kontrolleri teooriaga kokku puutunud?
Mure selles, et kuidagi ei suuda endale selgeks teha kuidas PID Output väärtust näiteks 3T ventiilile rakendada.
Hetkel ei suuda lahti hammustada, kuidas kontrolleri output, mille aluseks on radika temperatuuri vahemik 25C - 60C tõlkida ventiili avatuse protsendiks (0-100).
Määrasin Ki ja Kd omal 0-ks et esialgu puhtalt P kontrolleriga loogika paika saada. Sisuliselt hetke süsteem:
Rs = radiaatori target temp
Es = targeti ja reaalse tempi vahe
Us = kontrolleri Output( Kp * Es)
Ys = reaalne radika temp
Kontrolleri outputi näited:
(Ys)30
(Rs)50
Output = (Es)20 * (Kp)1 = 20
Output = (Es)20 * (Kp)10 = 200
Output = (Es)20 * (Kp)0.5 = 10
|
Esimese hooga määrasin Kp väärtuseks 1 ja lihtsalt liitsin Outputi 3T ventiili hetkepositsioonile. Justkui toimis aga enne Ki ja Kd väärtuste kallale minemist tahaks kindel olla, et ma asjast õigesti aru olen saanud
|
|
Kommentaarid: 166 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
147 |
|
tagasi üles |
|
 |
andresv
HV kasutaja
liitunud: 06.12.2004
|
19.11.2015 16:55:16
|
|
|
Ega mul kogemusi pole, ainult targutamise oskus aga
25C - 60C tõlkida ventiili avatuse protsendiks (0-100).
[25C - 60C] => lauhtame 25 saame => [0 - 35] => jagame 35-ga, saame => [0 - 1] => korrutame 100-ga, saame => [0 - 100]
ehk output = (temp - 25)/(60-25)*100
|
|
Kommentaarid: 5 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
5 |
|
tagasi üles |
|
 |
raitl
HV veteran

liitunud: 20.01.2002
|
19.11.2015 17:17:12
|
|
|
andresv, minu esialgne mõttekäik oli sama kuid - see eeldab, et 3T ventiili konkreetne avatuse aste vastab kindlale temperatuurile radiaatoris. Nii see paraku pole.
Pigem võiks ventiili toimetamist võtta auto gaasipedaalina. Määrad ära kui kiiresti kiirendad (ehk siis antud juhul temp tõuseb)
|
|
Kommentaarid: 166 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
147 |
|
tagasi üles |
|
 |
andresv
HV kasutaja
liitunud: 06.12.2004
|
19.11.2015 18:36:26
|
|
|
nu kui pole lineaarne seos, siis järelikult logaritmiline ehk siis kõigepealt võtad logaritmi ja teed selle teisenduse ja siis paned e-astmesse selle tulemuse.
või vastupidi, enne e-astmesse ja siis logaritm. Midagi sellist oli vist.
|
|
Kommentaarid: 5 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
5 |
|
tagasi üles |
|
 |
sakinaga
HV Guru
liitunud: 30.08.2006
|
19.11.2015 21:54:36
|
|
|
Või võta tuletis vms
Eks ta üks katsetamine ole ja siis datapointide pealt saab educated guessi teha, mis seos seal on.
_________________ Tsensuur HinnaVaatluse foorumis |
|
Kommentaarid: 159 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
151 |
|
tagasi üles |
|
 |
raitl
HV veteran

liitunud: 20.01.2002
|
20.11.2015 05:58:51
|
|
|
Hetkel jäin 3T juhtimisel selle variandi juurde, et liidan PID Outputi hetke klapi positsioonile otsa. Kp ja Kd väärtused on mõlemad 0.4. Aga Ki väärtust sisse tuua ei saa. Kohe kui see suurem kui 0 on, rapsib metsikult üle. Seega praegu tegu PD kontrolleriga Aga vähemalt toimib superhästi. Overshoot on minimaalne (minnes 30C pealt 50C peale on esmane peak umbes 51C ja peale seda hoiab stabiilselt targetit)
Üritan täna nüüd toasooja PID kah ära sättida. Vaatame mis saab.
|
|
Kommentaarid: 166 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
147 |
|
tagasi üles |
|
 |
elukaz
HV Guru

liitunud: 06.09.2004
|
20.11.2015 15:41:42
|
|
|
Ega segisti juhtimisel muud varianti polegi kui väljundi mõõtmine, sisendid on ju muutuvad. Kindel asend annab ainult kindla segamissuhte ja sedagi ainult juhul kui pumpade kiirus ei muutu. Aga varasemast jutust jäi mulje et see osa oli juba lahendatud?
Üldse peaks alustama probleemi sõnastamisest. Kas see on läbi külmunud maja kiire üleskütmine või jooksvalt ühtlase temperatuuri hoidmine? Mis mõjutusi veel on peale välistempi? Kas välisandur on olemas ja kuidas sellega arvestatakse?
_________________ Ma ei saa sellest aru, järelikult on see vale. |
|
Kommentaarid: 187 loe/lisa |
Kasutajad arvavad: |
   |
:: |
3 :: |
0 :: |
151 |
|
tagasi üles |
|
 |
raitl
HV veteran

liitunud: 20.01.2002
|
20.11.2015 17:19:38
|
|
|
elukaz kirjutas: |
Ega segisti juhtimisel muud varianti polegi kui väljundi mõõtmine, sisendid on ju muutuvad. Kindel asend annab ainult kindla segamissuhte ja sedagi ainult juhul kui pumpade kiirus ei muutu. Aga varasemast jutust jäi mulje et see osa oli juba lahendatud? |
Selle osaga on jah päris hea. Setpointi suure (30 ja üle C korraga) muutuse puhul tekib kerge overshoot aga jääb kraadi-paari sisse. Kripeldab aga see tunne, et asi pole tehtud "päris nii nagu õige oleks"
tsitaat: |
Üldse peaks alustama probleemi sõnastamisest. Kas see on läbi külmunud maja kiire üleskütmine või jooksvalt ühtlase temperatuuri hoidmine? Mis mõjutusi veel on peale välistempi? Kas välisandur on olemas ja kuidas sellega arvestatakse? |
Tegemist on ikkagi 24/7 elamiseks kasutatava majaga. Kuid kuna tegemist on tavalise puuküttega mida puhverdab suhteliselt nigel 500l akumulatsioonipaak, siis teinekord talvel päev otsa kodust ära käies võib maja päris maha jahtuda. Samuti lisab keerukust seesama käsitsi kütmise fakt - alati ei pruugi radiaatorisse laskmiseks vajaliku temperatuuriga vett olla.
Lisaks välistempile on mõjutajaks kindlasti tuul kuna tegemist pole just eeskujulikult soojustatud elamisega. Kuna tegemist on nutimajaga siis erinevaid andmeid mida kasutada, on kuhjaga. Küsimus ongi ennekõike selles, kuidas neid ära kasutada nii, et neist ka kasu oleks. Näiteks oleks võimalik kasutada Netatmo ilmateadet, tuulekiirust, õhuniiskust, sademete hulka. Seda kas aknad on lahti/kinni, kas inimesi on kodus, mitu inimest on kodus... ja nii edasi
Hetkel välistemperatuuri kuidagi sisse ei arvesta.
|
|
Kommentaarid: 166 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
147 |
|
tagasi üles |
|
 |
elukaz
HV Guru

liitunud: 06.09.2004
|
20.11.2015 18:27:44
|
|
|
Noh, tahtsid erinevaid lähenemisnurki, pane välisandur ja proovi sedasi kerida nagu ma varem kirjeldasin. Ja et vältida tavalist jama mis sellega kaasneb et kui väljas läheb soojaks siis tuba on kõle sest seinad hingavad külma siis andur mitte otse õue vaid nö seina sisse, kas siis kuskile räästakasti või seina peale ja tükk soojustust peale nii et mõõdaks välis ja seinatempi koosmõju. See aitab ilma kiirete kõikumiste ja tuule vastu.
Et tuba kiirelt soojaks saada siis proovida max tambovit.
_________________ Ma ei saa sellest aru, järelikult on see vale. |
|
Kommentaarid: 187 loe/lisa |
Kasutajad arvavad: |
   |
:: |
3 :: |
0 :: |
151 |
|
tagasi üles |
|
 |
|