Erifunktsioonid
Erifunktsioonid pole küll kindel ja iseloomustav mõiste, kuid antud juhul on see nimetus, mille alla andis koondada keerukamad funktsioonid. Paljusid neist ei annagi siinse programmilise lihtloogika baasil lahendada, kuid mõne saab asendada ka "Binaarloogika funktsioonid" peatüki alt tuntud lihtloogikafunktsioonide kogumiga.
Kõiki LOGO! funktsioone ei ole siin jälgitavuse huvides välja toodud.
Taimerid ehk viivituse teostajad
Juhtimisülesannetes on tihti vaja tekitada ajalisi viiteid, selleks on LOGO! kontrolleril terve hulk funktsiooniplokke. Põhilised neist on ka siin välja toodud.
                    
                    
                        Sisselülitusviitega taimer (On-Delay)
                        Väljund Q on algselt madal. 
                        Kui pärast kõrge väärtuse andmist Trg 
                        sisendisse, möödub parameetris T määratud aeg, siis läheb väljund 
                        kõrgeks ja püsib kõrge kuni
                        Trg sisendi madalaks minemiseni.
                    
                    
                    
                        Väljalülitusviitega taimer (Off-Delay)
                        Väljund Q on algselt madal. 
                        Kui sisendi Trg väärtus läheb kõrgeks, 
                        siis läheb koheselt kõrgeks ka väljund 
                        Q. Kui sisend Trg 
                        madalaks läheb, siis väljund Q on veel 
                        parameetriga T määratud aja kõrge. 
                        Pärast seda läheb see madalaks.
                        Väljundit saab enneaegselt madalaks sundida 
                        R sisendi kõrgeks lülitamisega.
                    
                    
                    
                        Salvestav sisselülitusviitega taimer (Retentive On-Delay)
                        Sarnane sisselülitusviivitusega taimeriga, aga Trg sisendist 
                        kõrge signaali kadumine ei peata taimeri tööd. 
                    
Väljund Q on algselt madal. Kui pärast kõrge väärtuse andmist Trg sisendisse möödub parameetris T määratud aeg, siis läheb väljund kõrgeks ja püsib kõrge kuni R sisendisse antakse kõrge signaal.
                    
                    
                        Sisse-/väljalülitusviivitusega taimer (On-/Off-Delay)
                        Sellel taimeril on kaks viivitusparameetrit. TH määrab sisselülitusviivituse
                        aja ja TL määrab väljalülitusviivituse aja. 
                        Ta on aeg, mida loetakse.
                    
Kuni sisend Trg on kõrge, loetakse aega Ta. Kui see jõuab TH parameetriga määratud ajani (Ta = TH), siis väljund Q läheb kõrgeks ja Ta läheb nulli. Kui sisend Trg läheb madalaks, siis hakatakse jälle Ta aega lugema. Kui loetav aeg saavutab sama väärtuse, kui TL, siis läheb väljund madalaks.
                    
                    
                        Frondituvastusega pulsstaimer (Edge triggered wiping relay)
                        Sellel taimeril on kaks viivitusparameetrit. TL määrab sisselülitusviivituse
                        aja ja TH määrab väljalülitusviivituse aja. 
                        Ta on aeg, mida loetakse.
                    
                        Kui sisend Trg läheb kõrgeks, 
                        siis hakatakse lugema aega Ta. Kuna kasutatakse frondituvastust, pole vahet, 
                        kas Trg jääb kõrgeks või läheb kohe 
                        madalaks.
                        
                        Kui siendi tõusvast frondist on möödunud TL parameetriga määratud 
                        aeg (Ta = TL), siis läheb väljund 
                        Q kõrgeks ja Ta läheb nulli.
                        Koheselt hakatakse lugema järgmist aega, mis on väljundi väljalülitusviivitus.
                        Kui loetav aeg saavutab sama väärtuse, kui TH, siis läheb väljund 
                        madalaks.
 Kui taimer on aktiivne ja Trg sisendisse 
                        saabub uus tõusev front, siis alustatakse lugemist taas algusest. Kui aktiivse taimeri R 
                        (reset) sisendisse saabub mistahes hetkel tõusev front, siis lugemine peatatakse ja 
                        väljund läheb madalaks.
                    
Loendurid
Loendurid, nagu nimigi ütleb, on funktsioonid, mis võimaldavad midagi loendada. Programmiliselt võimaldavad need lugeda näiteks funktsiooni sisendisse saabuvaid tõusvaid fronte ja reaalses rakenduses juba näiteks toorikuid, nupuvajutusi või töötsükleid. Kui loendur on loendanud määratud numbrini, siis annab see sellest teada ploki väljundi oleku muutmise teel.
                    
                    
                        Üles/alla loendur (Up/down counter)
                        Suurendab või vähendab loendi väärtust ühe võrra iga kord, kui Cnt
                        sisendisse saabub positiivne front. Kui sisend Dir on madal,
                        siis loeb loendur ülespoole, kui kõrge, siis allapoole. See loendur ei suuda loendada alla nulli ega üle 999.
                        Kui R sisendisse tuleb positiivse frondiga signaal, siis võtab loendi enda
                        algväärtuse (nt 0) ja viib väljundi madalaks. Pärast seda on loendur algolekus.
                    
Kui loendi väärtus saavutab On parameetri väärtuse, lülitub loenduri väljund Q kõrgeks. Kui loendi väärtus saavutab Off parameetri väärtuse, lülitub loenduri väljund madalaks. Start val parameeter määrab loendi algväärtuse.
- Kui On ≥ Off
                            
- Q = 1, kui loend ≥ On
 - Q = 0, kui loend < Off
 
 - Kui On < Off (nagu kõrvalolevas näites)
                            
- Q = 1, kui On ≤ loend < Off
 - Q = 0, kui loend ≥ Off
 
 
                    
                    
                        Sageduspäästik (Thershold trigger)
                        Võimaldab paika panna aja G_T
                        (Gate time), mille vahemikus Fre sisendisse tulnud pulsse loetakse.
                        On parameeter määrab läve, mitu pulssi ajaühikus (G_T) peab tulema, et väljund
                        Q sisse lülitada. Off parameeter määrab läve, mitu pulssi ajaühikus (G_T) 
                        peab tulema, et väljund Q välja lülitada. Pulsside arv ei pea olema täpne vaid sisselülitused ja väljalülitused toimuvad allmärgitud põhimõttel:
                    
- Kui On ≥ Off
                            
- Q = 1, kui pulsside-arv > On
 - Q = 0, kui pulsside-arv ≤ Off
 
 - Kui On < Off (nagu kõrvalolevas näites)
                            
- Q = 1, kui On ≤ pulsside-arv < Off
 - Q = 0, kui pulsside-arv ≥ Off
 
 
Muud funktsioonid
                    
                    
                        RS triger (Latching relay)
                        RS triger toimib mäluelemendina ja jätab oma väljundi oleku meelde. Sellel on kaks sisendit
                        S ehk set ja R ehk reset.
                        S sisend seab trigeri väljundi Q kõrgeks. See jääb kõrgeks
                        seni, kuni see R sisendi kaudu madalaks seatakse.
                    
Seda on hea kasutada siis, kui mingi lühikese sisendsignaali peale peab kontrolleri väljund rakendunuks jääma kuni mingi teise lühikese sisendsignaalini. Samuti on seda mugav kasutada erinevate protsesside olekute meelde jätmiseks, näiteks "automaattsükkel hetkel töötab".
                    
                    
                        Pulssrelee (Pulse relay)
                        Pulssrelee Trg sisend pöörab väljundi Q
                        olekut. Kui enne oli väljund kõrge, siis pärast Trg sisendisse tulnud kõrget signaali
                        läheb väljund madalaks ja vastupidi.
                        Säilinud on ka RS trigerist tuntud sisendid S ja R, mis
                        avaldavad väljundile samasugust mõju, nagu RS trigeri puhul. 
                        S sisend seab trigeri väljundi Q kõrgeks. See jääb kõrgeks
                        seni, kuni see R sisendi kaudu madalaks seatakse või ka antud juhul 
                        Trg sisendi kaudu pööratakse.
                    
Antud funktsioon on kasulik näiteks siis, kui ühe ja sama mittefikseeruva nupuga on vaja mingit väljundit nii sisse kui välja lülitada, kuid sama väljund peab olema juhitav paraleelselt ka erinevate sisendsignaalide kaudu (näiteks veel kaks nuppu, üks sisse, teine välja).
                    
                    
                        Tarkvaraline lüliti (Softkey)
                        Selle funktsiooni abil saab LOGO! kontrolleri pealsest kasutajaliidesest seda "lülitit" sisse ja välja lülitada menüüst "Set Param"
                        . 
                        On mõeldud, et see "lüliti" lülitab signaali sisendist En väljundisse Q.
                        Parameetrite alt saab seda "lülitit" seadistada. 
                        See võib olla fikseeruv (type: switch) 
                        või mittefikseeruv (type: momentary pushbutton).
                        Saab ka valida, kas see on programmi käivitudes lülitatud (initial status: 
                        on) või lülitamata (initial status: on).
                    
Sisend En peab olema kõrge, et lüliti lülitamisel väljund kõrgeks läheks.
Seda funktsiooni saab kasutada LOGO! kasutajaliidese menüüsse seadistamisvõimaluste tekitamiseks, mis võimaldavad programmi käitumist või protsessi käiku muuta vastavalt sellele, kuidas see tarkvaraline lüliti programmis ühendatakse.
                Analoogfunktsioonid
Analoogväärtused muudetakse kontrolleris digitaalseks, seega tegelikkuses pole tegemist analoogfunktsioonidega vaid funktsioonidega, mis töötlevad mitmebitilisi digitaalväärtuseid, mis ainult esindavad analoogväärtusi.
                    ![[joonis]](assets/prg_ef_acomp_tt.png)
                    
                        Analoogkomparaator (Analog Comparator)
                        Võrdleb kahte analoogsignaali esindavat väärtust ja lülitab ploki binaarväljundit olenevalt rakendumislävest.
                        
                        Funktsioon leiab sisendite Ax ja Ay vahe.
                        Edasi võrdleb see vahet sisselülituslävega (parameeter On) ja väljalülituslävega 
                        (parameeter Off). Kuigi funktsioonil on kaks sisendit, ei pea tingimata mõlemat ühendama.
                        Kui on soov võrrelda ainult ühte analoogsisendi väärtust rakendumislävega, võib teise sisendi tühjaks jätta.
                        
                        
                        Väljundi lülitumise tingimused:
                    
- Kui On ≥ Off
                            
- Q = 1, kui (Ax - Ay) > On
 - Q = 0, kui (Ax - Ay) ≤ Off
 
 - Kui On < Off
                            
- Q = 1, kui On ≤ (Ax - Ay) < Off
 - Q = 0, kui (Ax - Ay) ≥ Off
 
 
                    
                        Analoog lävipäästik (Analog threshold trigger)
                        Sarnane analoogkomparaatorile, kuid sellel on vaid üks sisend. Kui üks sisend ja vahe arvutamine välja jätta on kõik sama. 
                        Lülitab ploki binaarväljundit olenevalt sisendsignaalist Ay ja selle väärusest 
                        sisselülitusläve On ja väljalülitusläve Off suhtes.
                        
                        Väljundi lülitumise tingimused:
                    
- Kui On ≥ Off
                            
- Q = 1, kui Ax > On
 - Q = 0, kui Ax ≤ Off
 
 - Kui On < Off
                            
- Q = 1, kui On ≤ Ax < Off
 - Q = 0, kui Ax ≥ Off
 
 
                    ![[joonis]](assets/prg_ef_adiftrig_tt.png)
                    
                        Analoog differentsiaalpäästik (Analog differential trigger)
                        Funktsioon, mille binaarväljund läheb kõrgeks, kui sisendi Ax väärtus on vahemikus,
                        mis jääb parameetri On väärtuse ja sellest parameetri 
                        Differential võrra erineva väärtuse vahele.
                    
Mugav mingisuguse vahemiku tuvastamiseks. Kasutades mitut erinevate vahemikega instantsi sellest funktsioonist võib näiteks toorikuid kõrguse järgi sorteerida või näidata kasutajale, millal mingi küttekeha sobivas vahemikus olev temperatuur on saavutatud.
- Q = 1, kui On ≤ Ax < ( On + Differential )
 - Q = 1, kui On ≥ Ax > ( On + Differential )
 
                    
                    
                        Analoog aritmeetika (Analog math)
                        Võimaldab lihtsat analoogväärtuste liitmist, lahutamist, korrutamist ja jagamist.
                        Funktsioonis saab kasutada kuni 4 operandi. Operand võib olla nii konstant kui ka
                        mõne teise analoogfunktsiooni väljund. Seda funktsiooni ei ole võimalik
                        otse sisenditega siduda, kuigi kohandatud sisendväärtust on võimalik lugeda läbi
                        analoogpäästiku (analog triger) või analoogvõimendi 
                        (analog amplifier) funktsioonide.
                    
Tehte järjekorra määramiseks on võimalik anda tehetele 3 erinevat prioriteeti: H - kõrge; M - keskmine; L - madal. Kõrgema prioriteediga tehted teostatakse esimesena, madalamaga viimasena.
Kõrvaloleval pildil on kujutatud tehe (B004.Ax+B005.Ax) / 2.
Operandidena saab kasutada järnevate funktsioonide näidatud parameetreid:
- Analoog komparaator (Analog comparator): Ax – Ay
 - Analoog päästik (Analog trigger): Ax
 - Analoog võimendi (Analog amplifier): Ax
 - Analoog multiplekser (Analog multiplexer): AQ
 - Analoog ramp (Analog ramp): AQ
 - Analoog aritmeetika (Analog math): AQ
 - PI kontroller (PI controller): AQ
 - Üles/alla loendi (Up/Down counter): Cnt
 
                    
                    
                        Analoogvõimendi (Analog math)
                        Tegu on funktsiooniga, millega saab analoogväärtust skaleerida mingisse teise vahemikku. Parameetriteks on 
                        Gain ehk võimendustegur ja Offset ehk nihe.
                    
Pingesisendi vahemik on vaikimisi 0..1000. Selleks peab olema Gain 1,00 ja offset 0. Kui peaks tekkima vajadus saada sisend hoopis vahemikus 0..10, siis tuleb Gain parameetriks määrata 0,01. Sellisel juhul vastab väärtus täpselt pingele, kuid kaotame täpsuses. Kui peaksime vajama hoopis vahemikku 50..500, siis peaks Gain olema 0,45 ja Offset 50.
Samasugune funktsionaalsus on olemas ka mitmes teises analoogfunktsioonis.
               
               
               
               ![[ekraanipilt]](assets/prg_ef_amath_scr_v.png)
![[ekraanipilt]](assets/prg_ef_aamp_scr_v.png)