HVAC-kirjasto
HVAC kirjasto
Sisältää monia perusfunktioita ja pistetyyppejä LVIO automaatiota ajatellen.
Pistetyypit ja funktiot:
* hvacPIDController
Säädin piste. Voi sisältää vapaan määrän säätöportaita. Virittämiseen on
porraskohtainen suhdealue, ja säädinkohtainen integrointi- ja derivointiaika.
Jotta säädin toimisi, se tarvitsee toimiakseen kutsun hvac_runPID() funktiolle.
Funktio: hvac_runPID (idPID [, input, en])
Funktiokutsu tarvitsee pakollisesti
idPOID (string) säädin pisteen nimi tietokannassa (tyyppi vacPIDController)
input (valinnainen, real) säätimen feedback, eli mittauksen arvo real lukuna
en ( valinnainen, int) säätimen tila, eli vaikkapa pumpun käyntitila
Palauttaa true jos kutsu onnistui, muuten false
Esimerkki (suoraan vacPIDController pisteen script kentässä):
hvac_runPID (id)
* hvacCurve
Yleiskäyttöinen muunnoskäyrä, jota voi käyttää esimerkiksi lämpötilan säätöön.
Voi sisältää täysin vapaan määrän pisteitä. Muunnos käyrästöllä tehdään
hvac_curve() funktiolla.
Funktio: hvac_curve (idCurve, dataIn)
idCurve (string) pakollinen. Käyrän tietokantapisteen nimi.
dataIn (real) pakollinen. Käyrälle vietävä (muunnettava) lukuarvo.
Funktio palauttaa käyrältä muunnetun arvon.
* hvacSchedule
Viikko pohjainen aikaohjelma piste.
Jokainen päivä voi sisältää vapaan määrän tapahtumia. Käytetään yhdessä
hvac_scheduler() funktion kanssa.
Funktio: hvac_scheduler (idSch [, tEpoch] )
idSch (string) Aikaohjelmapisteen nimi tietokannassa
tEpoch (int, valinnainen) jos halutaan, että ajastusta ei tehdä
oikean kellonajan mukaan, tällä voidaan viedä haluttu
aika funktiolle unix epookkina.
* hvacTimer
Piste kuvailee yleiskäyttöisen viiveen. Käytetään yhdessä
hvac_timer() funktion kanssa.
Toimii siten, että seuraa pisteen input kenttää (tai kutsussa rValue parametria)
ja mikäli siinä havaitaan nouseva tai laskeva reuna (eli sen arvo muuttuu),
asettaa funktio pisteen output kentän samaan arvoon kuin input kenttä
annettujen viiveiden kuluttua.
Eli jos input muuttuu arvosta 0 arvoon 2, muuttaa funktio pisteen output kentän
arvoon kaksi onDelay (nouseva reuna) millisekunnin kuluttua. Jos viiveen aikana
input palaa takaisin arvoon 0, resetoituu viiveen laskenta alkuun.
Samaa logiikkaa käytetään myös, kun input kentän arvo pienenee, eli siinä
havaitaan laskeva reuna.
hvacTimer pisteellä oleva stepSize parametri määrää, kuinka paljon output voi
yhden viivekierroksen jälkeen muuttua. Eli jos ..
stepSize = 1 ja output = 0
.. ja input muuttuu 0 -> 3, ja onDelay = 2000
Oletuksella että hvactimer() funktiota kutsutaan ainakin kerran kahdessa
sekunnissa, muuttuu pisteen output kahden sekunnin päästä arvoon 1, ja
jälleen kahden sekunnin päästä arvoon 2. Tällä ajastimella on siis mahdollisa
tehdä myös ramppeja (vaikkapa analogi pisteisiin), asettamalla stepSize arvoksi
sopiva luku.
Funktio: hvac_timer (idtimer [, rValue, rOnDelay, rOffDelay] )
idtimer (string) ajastin pisteen nimi tietokannassa.
rValue (real, valinnainen) Haluttu input arvo ajastimelle. Jos tätä
ei anneta kutsussa, funktio käyttää tietokantapisteen
input kenttässä olevaa arvoa.
rOnDelay (real, valinnainen) Haluttu päällemeno viive millisekunteina.
Jos tätä ei anneta, funktio käyttää pisteessä onDelay kentässä
olevaa arvoa.
rOffDelay (real, valinnainen) Haluttu poismeno viive millisekunteina.
Jos tätä ei anneta, funktio käyttää pisteessä offDelay kentässä
olevaa arvoa.
* Funktio: hvac_limit (pointId [, hiLimit, loLimit] )
Tämä kutsu rajoittaa pisteen pv kentän haluttujen rajojen väliin. Tämä
funktio ei liity mihinkään tiettyyn pistetyyppiin, vaan sitä voi käyttää kaikkiin
sellaisiin pisteisiin, joilla on pv kenttä.
pointId (string, pakollinen) Rajoitettavan pisteen nimi
hiLimit (real, valinnainen) pisteen pv kentä numeraalisen arvon
yläraja.
loLimit (real, valinnainen) pisteen pv kentä numeraalisen arvon
alaraja.
Mikäli hiLimit tai loLimit parametreja ei anneta kutsussa, funktio koettaa löytää
annetulta pisteeltä highLimit tai lowLimit kenttiä, ja käyttää niissä olevia
arvoja rajoituksen tekemiseen.
HUOM! Nykyisessä slcenginen versiossa tehdään pisteen pv kentän rajoitus
automaattisesti, jos pisteelle on luotu highLimit ja/tai lowLimit kentät.
Tätä funktiota tarvitaan siis vain erikoistapauksissa.