Definícia vzorcov ČOV / Techuv¶
Definovanie denných / mesačných / ročných vzorcov pre hodnotenie ČOV a úpravní.¶
- Oprava vybraného vzorca - pre vybraný vzorec klik na tlačidlo ceruzky na hornej lište
- Nový vzorec klik na zelený krížik na hornej lište.
- Klik na tlačidlo "Pridať nový záznam" na hornej lište umožní definovanie nového údaja pre výstup (vzorca) ČOV.
- Klik so shiftom založí nový údaj pre výstup (vzorec) ako kópiu existujúceho. Na definovanie údaja pre výstup (vzorca) treba vyplniť a definovať niektoré údaje.
2/ Vyplnenie povinných a nepovinných údajov pre údaj pre výstup (vzorec):
Povinné údaje- Názov údaja pre výstup (názov vzorca): Odporúča sa na začiatku názvu dať kód (4-miestny ako napr. D101 (D ako denná)) a názov výstupnej zostavy. Za tým uviesť názov údaja pre výstup (vzorca). Toto spôsobí to, že pri prehliadaní a výbere výpočtového údaja (vzorca) sú tieto údaje vytriedené podľa prvých 4 znakov názvu (tzv. kôd vzorca) a podľa Poradia pre triedenie. Zároveň to definuje príslušnosť výstupného údaja k nejakej výstupnej zostave, ktoré je dobré nazývať rovnakým spôsobom, teda s 4-miestnym kôdom na začiaku názvu.
- Merná jednotka
Nepovinné údaje je možné vyplniť:
- Predvolené záhlavie je text, ktorý sa bude tlačiť v záhlaví tabuľlky výstupnej zostavy. Tento údaj sa dá ešte pri definovaní výstupnej zostavy zmeniť.
- Zaokrúhliť na umožňuje zadať počet des. miest pre zaokrúhlenie výpočtu. Tento údaj sa dá ešte pri definovaní výstupnej zostavy zmeniť.
- Poradie pre triedenie určuje v akom poradí sa majú zobrazovať jednotlivé výpočtové údaje v rámci zostáv s rovnakým kódom
3/ Definovanie výpočtových parametrov, ktoré budú použité pri definovaní údaja pre výstup (vzorca).
Vpravo v tabuľke - klik na tlačidlo zaradiť nový záznam, ktorá je tesne nad pravou tabuľkou, doplní do pravej tabuľky nový riadok, s názvom premennej (A,B,...). Pre túto premennú je potrebné definovať Ukazovateľ, Prevádzkový vstup, Parameter alebo iný vzorec. Toto sa realizuje ľavým dvojklikom myši na riadok výpočtového parametra.
- Ukazovateľ: vo výberovom zozname sa vyberie ukazovateľ a chemické odberné miesto, pokiaľ sa jedná o rozbor na výusti zaškrkne sa políčko "Údaj podľa väzby na výusť"
- Prevádzkový vstup: vo výberovom zozname sa vyberie prevádzkový vstup, pokiaľ sa jedná o prietok na výusti zaškrkne sa políčko "Údaj podľa väzby na výusť"
- Parameter: vo výberovom zozname sa vyberie odberné miesto, parameter nádrže (objem, plocha,...)
- Vzorec: vo výberovom zozname sa vyberie vzorec, ktorého výsledok sa použije ako parameter. Pri denných údajoch smieme definovať iba denný vzorec. Pri mesačných údajoch smieme definovať denný vzorec alebo mesačný vzorec. Ak sme definovali denný vzorec ako parameter mesačného vzorca, musíme tento parameter "obaliť" agregátnou funkciou. Ak sme definovali mesačný vzorec ako parameter mesačného vzorca, musí tento parameter stáť mimo agregátnej funkcie. Príklad mesačného vzorca, ktorý obsahuje jeden denný vzorec(@D) a jeden mesačný vzorec(@M) ako parameter: suma(@D)/@M. Nesprávne by bolo: suma(@D/@M) alebo @D/@M alebo suma(@M)/@D
Vybrané Odberné miesto filtruje výberový zoznam Chemických odberných miest, Prevádzkových vstupov.
Zápis definície výpočtového parametra sa vykoná kliknutím na tlačidlo Pridať po vybere z príslušných výberových okien. Vtedy sa definícia výpočtového parametra prenesie do tabuľky parametrov.
Pre každý Výpočtový parameter je možné vyplniť:
- Por.odber.miesta umožňuje zadať Poradie odberného miesta, na ktorom sa nachádza chemické odber. miesto, prevádzkový vstup, nádrž alebo z ktorého sa počíta vzorec. Pokiaľ sa nevyplní, berie sa poradie odb. miesta zo stĺpca zostavy (čo je zväčša 0 ale môže byť ľubovoľné poradie). Určenie Poradia OM v definícii vzorca má prednosť pred určením Poradia OM v definícii zostavy.
4/ Definovanie údaja pre výstup (vzorca).
Vľavo v textovom poli je potrebné napísať vzorec s využitím zadefinovaných výpočtových parametrov a znakov:
@ pre premennú, napríklad vzorec A*B má vyzerať @A*@B
konštanty (čísla s desatinnou bodkou alebo bez nej)
*je znak pre násobenie
/ je znak pre delenie
+ je znak pre súčet
( ) zátvorky pre definovanie priority vykonávaných operácií
znaky > a < pre porovnanie hodnot v podmienke
pravý klik myšou ponúka ďalšie možnosti (rôzne funkcie, napr. priemer, suma, pocetdnivmesiaci a pod.). Tieto funkcie majú rôzny význam pre denné, mesačné a ročné vzorce)
v mesačných a ročných zostavách musí by každá premenná (okrem mesačného alebo ročného vzorca použitého ako parameter tohto vzorca) vovnútri nejakej agregátnej funkcie (suma, priemer, počet, minimum, maximum)
Suma(@A) znamená sumár denných údajov definovaný pomocou premennej A v mesiaci (roku)
Suma(@A) je hodnota mesačného údaja, ak je premenná A definovaná ako mesačný prevádzkový vstup
Priemer(@A) znamená priemer denných údajov definovaných pomocou premennej A v mesiaci (v roku)
Minimum(@A), Maximum(@A), Pocet(@A) znamená min., max., počet denných údajov v mesiaci (v roku)
je možné použiť alternatívne výpočty pomocou funkcie "ak (podmienka) potom (vzorec1) inak (vzorec2) koniec". Ak je splnená podmienka vykoná sa výpočet pomocou vzorca1, inak pomocou vzorca2.
Pri nesprávnom vyplnení vzorca sa objaví červený výkričník a chybný výpočtový údaj sa nedá zapísať.
V textovom poli Vzorec preložený do T-SQL syntaxe, ktorú databáza vyhodnocuje je možné skontrolovať T-SQL syntax vzorca, ktorú databáza využíva.
Aj Údaj pre výstup (vzorec) je možné písať priamo syntaxou T-SQL.
Slovenská syntax je len ako doplnok pre zjednodušenie, kto má skúsenosti s T-SQL môže využívať aj to.
Pre zjednodušenie čitateľnosti doporučujeme používať nové riadky, vzorce to povolujú.
5/ Zoznam funkcií.
- Základné definície:
- Agregátnej funkcia: Funkcia, ktorá redukuje maticu hodnôt na jednu číselnú hodnotu. Napr. suma(@A), kde @A je denný prietok je mesačný (ročný) prietok
- Null :Je prázdna hodnota, inými slovami ak v danom dni nie je hodnota pre daný ukazovateľ, prevádzkový vstup, parameter nádrže alebo vzorec. Hodnota null je agresívna, čo znamená že hocijaký matematický alebo logický výraz obsahujúci null je vyhodnotený ako null.
- 5*null = null
- sin(null) = null
- zaokr(null) = null
- podmienka "@a=null" je vždy vyhodnotená ako null, čo sa správa ako nepravda, teda logická podmienka nebola splnená (aj ak je @A null je spomínaná logická podmienka vyhodnotená ako null (nie pravda), správne by sa daná podmienka napísala "@A je null")
- pi - Ludolfovo číslo
- priem(@A,@B,...) - priemer viacerých hodnôt. Pozor tento priemer nie je agregátnou funkciou, pracuje s číslami.
Logické podmienky:
- nulaaknull(): testuje či je hodnota parametra null, ak ano vráti 0
dá sa to použiť na sčítanie parametrov nulaaknull(@A)+nulaaknull(@B)+nulaaknull(@C), pričom @A+@B+@C vráti null ak je aspoň jeden z parametrov null
ak () potom () inak () koniec: ak (logická podmienka) potom (ak pravda) inak (ak nepravda) koniec
Príklad: ak (@A>0) potom (@B*1000*86.4/@A) koniec
ak () potom () koniec: obdoba predošlého, bez "inak", tento výraz by sa dal napísať ako "ak () potom () inak (null) koniec", pretože ak podmienka nie je splnená tak vracia null
- je null: vráti pravdu ak je daný parameter null (@A=null je nesprávny test, či @A je null alebo nie)
- je nie null: podobne ako "je null"
- prvenenulove(,): umožnuje vyhodnotíť prvé nenulové z 2 parametrov, prvenenulove(@A,@B)
Príklady: prvenenulove(1,null)=1, prvenenulove(null,8)=8, prvenenulove(2,5)=2, prvenenulove(null,null)=null
Trigonometria:
sin(): sínus uhla v radiánoch
cos(): cosínus uhla v radiánoch
tan(): tangens uhla v radiánoch
cot(): cotangens uhla v radiánoch
asin(): inverzný sínus uhla v radiánoch
acos(): inverzný cosínus uhla v radiánoch
atan(): inverzný tangens uhla v radiánoch
Funkcie:
zaokr(,): zaokrúhli parameter na určený počet desatinných miest. zaokr(1.238,2)=1.24
zaok+(): zaokrúhli parameter k najbližšiemu väčšiemu celému číslu. zaok+(2.7)=3
zaok-(): zaokrúhli parameter k najbližšiemu menšiemu celému číslu. zaok-(2.7)=2
exp(): umocní e na parameter
abs(): urobí abolútnu hodnotu parametra
moc(): umocní parameter na druhú
mocn(,): umocní parameter na určenú mocninu. mocn(2,4)=16
odm(): druhá odmocnina z parametra
Agregátne funkcie: (týka sa mesačných a ročných vzorcov)
Aby sme pochopili načo slúžia agregátne funkcie, musíme si uvedomiť, že denný parameter (napr. denný prietok) v mesačnej (ročnej) zostave predstavuje maticu (súbor) hodnôt. Je možné túto maticu sčítať,vynásobiť,odčítať alebo predeliť s inou maticou. Avšak každa táto matica musí byť vo vnútri nejakej agregátnej funkcie, ktorá túto maticu vyhodnotí ako číslo.
Príklad: @A je denný prietok, @B je koncentrácia ukazovateľa
@A*@B nám vráti maticu, ktorej prvky sú denné výsledky súčinu denného prietoku a koncentrácie ukazovateľa
do výstupu nesmie ísť matica, teda je možné tieto denné hodnoty napr. spriemerovať - "priemer(@A*@B)"
ak by sme chceli mať vzorec, ktorý počíta celkový prietok za mesiac (rok) * priemerná koncentrácia, vzorec by vyzeral "suma(@A)*priemer(@B)"
- priemer(): priemer denných hodnôt
- suma(): sumár denných hodnôt
- počet(): počet denných hodnôt
- min(): minimum denných hodnôt
- max(): maximum denných hodnôt
- početdnívmesiaci: počet dní v danom mesiaci (len v mesačných použiteľné)
- početdnívroku: počet dní v danom roku (len v ročných použiteľné)
6/ Zápis údaja pre výstup (vzorca) do databázy:
sa vykoná kliknutím na tlačidlo zápis na hornej lište.
Poznámky a príklady:
Program umožňuje v jednom vzorci kombinovať údaje z viacerých nádrží, napr. urobiť priemer ukazovateľa nameraného na viacerých nádržiach. Napr. priem(@F,@G,@H,@I), kde @F, @G, @H a @I sú ukazovatele NL105 v nitrif. nádržiach č. 1, 2, 3 a 4.
Vzorec pre Zaťaženie kalu v nitrifikačných nádržiach, vypočítaný z priemeru NL105 namerných na jednotlivých nádržiach:
@A*@C/(@D*priem(@F,@G,@H,@I)), kde @F, @G, @H a @I sú ukazovatele NL105 v nitrif. nádržiach č. 1, 2, 3 a 4.
Umožňuje definovať vzorec pre jednu konkrétnu nádrž (v prípade viacerých nádrží).
- Pokiaľ niektorý údaj vstupujúci do výpočtového údaja (vzorca) nie je nameraný, potom sa celý výpočet nevykoná a výpočtový údaj zostane na danom mieste výstupnej zostavy prázdny. Pokiaľ sa má napriek nevyplnenému údaju vzorec vypočítať a nevyplnený údaj sa má vziať ako nulová hodnota, potom túto vec treba ošetriť výrazom nulaaknull( ). Napr. nulaaknull(@A) sposobí, že nenameraný údaj A berie s hodnotou 0.
- Súčet (@A)+(@B) sa nevypočíta, ak jeden z údajov nie je vyplnený.
Súčet nulaaknull(@A)+nulaaknull(@B) spočíta obe hodnoty. Ak sú obe hodnoty nevyplnené, výsledok je 0
Súčet: ak(nulaaknull(@A)+nulaaknull(@B))>0 potom (nulaaknull(@A)+nulaaknull(@B)) koniec dáva súčet oboch hodnot, v prípade, že sú obe hodnoty nevyplnené, výsledok je prázdny (výsledok nie je 0).
- Delenie nulovou hodnotou je potrebné ošetriť podmienkou, napr. ak (@A>0) potom (@B/@A) koniec. Uvedený výraz využíva podmienku a znamená, že ak je A>0 potom sa výpočet=B/A, inak zostane výraz nevypočítaný, t.j. prázdny. Pokiaľ by sa neuplatnila podmienka a A=0, program by hlásil chybu delenie nulou. Iná možnosť použitia podmienky je: ak (@A>0) potom (@B/@A) inak (@B/@C) koniec. Tento výpočtový výraz po vyhodnotení podmienky A>0 realizuje jeden z výrazov B/A alebo B/C.