Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  "fuzzy" loogikaülesanne (nüüdseks arutelu PID kontrolleri teemal) märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
raitl
HV veteran


liitunud: 20.01.2002



Autoriseeritud ID-kaardiga

sõnum 17.11.2015 19:11:39 "fuzzy" loogikaülesanne (nüüdseks arutelu PID kontrolleri teemal) vasta tsitaadiga

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 icon_smile.gif

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
vaata kasutaja infot saada privaatsõnum
sakinaga
HV Guru

liitunud: 30.08.2006




sõnum 18.11.2015 14:53:22 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
elukaz
HV Guru
elukaz

liitunud: 06.09.2004




sõnum 18.11.2015 15:01:30 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
raitl
HV veteran


liitunud: 20.01.2002



Autoriseeritud ID-kaardiga

sõnum 18.11.2015 15:08:07 vasta tsitaadiga

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 icon_biggrin.gif
Kommentaarid: 166 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 147
tagasi üles
vaata kasutaja infot saada privaatsõnum
ref
Kreisi kasutaja

liitunud: 10.08.2003




sõnum 18.11.2015 16:29:33 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
andresv
HV kasutaja

liitunud: 06.12.2004



Autoriseeritud ID-kaardiga

sõnum 18.11.2015 16:39:24 vasta tsitaadiga

seadmete juhtimine käib enamasti PID-i abil

https://et.wikipedia.org/wiki/PID-kontroller
https://en.wikipedia.org/wiki/PID_controller#Pseudocode
https://suw.biblos.pk.edu.pl/resources/i1/i4/i4/i9/i0/r14490/GorzenskiR_GuidelinesControl.pdf (algus ainult poola keelne)


Võibolla suunan sind kuvaldaga kärbest tapma, ei süvenenud väga sinu probleemi.
Kommentaarid: 5 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 5
tagasi üles
vaata kasutaja infot saada privaatsõnum
raitl
HV veteran


liitunud: 20.01.2002



Autoriseeritud ID-kaardiga

sõnum 19.11.2015 12:44:58 vasta tsitaadiga

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 icon_biggrin.gif
Kommentaarid: 166 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 147
tagasi üles
vaata kasutaja infot saada privaatsõnum
andresv
HV kasutaja

liitunud: 06.12.2004



Autoriseeritud ID-kaardiga

sõnum 19.11.2015 16:55:16 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
raitl
HV veteran


liitunud: 20.01.2002



Autoriseeritud ID-kaardiga

sõnum 19.11.2015 17:17:12 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
andresv
HV kasutaja

liitunud: 06.12.2004



Autoriseeritud ID-kaardiga

sõnum 19.11.2015 18:36:26 vasta tsitaadiga

nu kui pole lineaarne seos, siis järelikult logaritmiline icon_biggrin.gif 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
vaata kasutaja infot saada privaatsõnum
sakinaga
HV Guru

liitunud: 30.08.2006




sõnum 19.11.2015 21:54:36 vasta tsitaadiga

Või võta tuletis vms icon_lol.gif

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
vaata kasutaja infot saada privaatsõnum
raitl
HV veteran


liitunud: 20.01.2002



Autoriseeritud ID-kaardiga

sõnum 20.11.2015 05:58:51 vasta tsitaadiga

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 icon_biggrin.gif 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
vaata kasutaja infot saada privaatsõnum
elukaz
HV Guru
elukaz

liitunud: 06.09.2004




sõnum 20.11.2015 15:41:42 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
raitl
HV veteran


liitunud: 20.01.2002



Autoriseeritud ID-kaardiga

sõnum 20.11.2015 17:19:38 vasta tsitaadiga

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 icon_smile.gif

Hetkel välistemperatuuri kuidagi sisse ei arvesta.
Kommentaarid: 166 loe/lisa Kasutajad arvavad:  :: 1 :: 0 :: 147
tagasi üles
vaata kasutaja infot saada privaatsõnum
elukaz
HV Guru
elukaz

liitunud: 06.09.2004




sõnum 20.11.2015 18:27:44 vasta tsitaadiga

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
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  "fuzzy" loogikaülesanne (nüüdseks arutelu PID kontrolleri teemal)
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.