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.