Binaarloogika funktsioonid
Funktsionaalset üksust, milles teostatakse binaarloogika põhioperatsioone (nt. Boole loogikatehteid), nimetatakse loogikablokiks või ka lüliks. Graafiliselt kujutatakse lüli sisendite ja väljunditega ristkülikuna. Binaarloogika põhioperatsioonide teostust saab kirjeldada ka erinevat tüüpi kontaktide abil.
						Tabelis 4.1 on esitatud põhilised binaarloogika elemendid FBD, 
               			LD ja ST 
               			keeles, millest saab koostada binaarloogika funktsioone. FBD 
               			keeles lisatakse eituse puhul ring sisendi juurde enne kasti. Väljundi jaoks kasutatakse 
               			FBD keeles pikemat joont, mille 
               			lõppu kirjutadakse muutuja nime. See lisatakse ikooni  abil.
 abil.
                	
NING- ja VÕI-lülid
NING-lüli
Joonisel 4.1 on kujutatud binaarloogika NING-lüli (tehe) FBD, ST ja LD keeles. Nagu joonisel 4.1 esitatud olekutabelist näeb on NING-lüli väljundis signaal väärtusega loogiline 1, kui selle kõikides sisendites on signaal väärtusega loogiline 1. Väljundis on signaal loogiline 0 isegi siis kui ainult ühes sisendis on signaal loogiline 0. NING-lüli võib omada rohkem kui kaht sisendit.
| Olekutabel | FBD | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 
 |  | |||||||||||||||
| ST | LD | |||||||||||||||
| 
                                	//Ning tehe ST keeles |  | 
                   		Joonisel 4.1 esitatud binaarloogika NING-lüli võib lugeda järgmiselt:
						  Muutuja Valjund1 on aktiivne kui muutuja Sisend1 
                   		väljastab signaali väärtusega loogiline 1 NING muutuja Sisend2 on 
                   		ka aktiivne (väljastab signaali väärtusega loogiline 1).
                    
Järgnevalt on esitatud CoDeSys koostatud NING-lüli näite failid, mis saab laadida alla ja testida arvutis.
VÕI-lüli
Joonisel 4.2 on kujutatud binaarloogika VÕI-lüli (tehte) LD, ST ja FBD keeles. Nagu joonisel 4.2 esitatud olekutabelist näeb on VÕI-lüli väljundis signaal väärtusega loogiline 1, kui vähemalt ühes VÕI-lüli sisendis on signaal väärtusega loogiline 1. Väljundis on signaal loogiline 0, kui kõikides sisendites on signaal loogiline 0. VÕI-lüli võib omada rohkem kui kaht sisendit.
| Olekutabel | LD | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 
 |  | |||||||||||||||
| ST | FBD | |||||||||||||||
| 
                                	//Või tehe ST keeles |  | 
                    	Joonisel 4.2 esitatud binaarloogika VÕI-lüli võib lugeda järgmiselt:
	
						  Muutuja Valjund1 on aktiivne kui muutuja Sisend1 väljastab signaali väärtusega loogiline 1 VÕI muutuja Sisend2 on ka aktiivne (väljastab signaali väärtusega loogiline 1).
                    
Järgnevalt on esitatud CoDeSys koostatud VÕI-lüli näite failid, mis saab laadida alla ja testida arvutis.
NING- ja VÕI-lüli kombinatsioon
NING- ja VÕI-lülidest saab koostada keerukamaid loogikatehteid nagu NING-VÕI- ja VÕI-NING-loogikaühendused [viide]. NING-VÕI-loogikaühenduses on NING-tehte väljund ühendatud VÕI-tehte sisendiga. VÕI-NING-loogikaühenduse puhul on vastupidi. Joonisel 4.3 on kujutatud antud loogikaühendused LD ja ST keeles.
| LD | |
|---|---|
|  |  | 
| ST | |
| 
                                	//NING-VÕI-Loogikalülitus | 
                                	//VÕI-NING-loogikalülitus | 
                    	NING-VÕI-tehte tulemuseks on signaal loogiline 1, kui vähemalt üks NING-lüli 
                    	väljundsignaal on loogiline 1. Näiteks peavad muutujad Sisend1 ja 
                    	Sisend2 olema aktiivsed, et muutuja 
                    	Väljund1 oleks ka aktiivne. VÕI-NING-tehte 
                    	tulemuseks on signaal loogiline 1, kui mõlema VÕI-lüli tulemuseks on signaal loogiline 1. Näiteks kui 
                    	muutujad Sisend1 ja Sisend4 
                    	on aktiivsed, siis on ka muutuja Väljund1 aktiivne. 
                    
IF tingimuslause
						//IF tingimuslause põhi osad
						IF (*Tingimus 1*) THEN
						    (*Programmi lõik 1*);
						ELSIF  (*Tingimus 2*) THEN
						    (*Programmi lõik 2*);
						ELSE
						    (*Programmi lõik 3*);
						END_IF;
                     
                     
                	IF tingimuslauset kasutatakse kui soovitakse, et ST keeles koostatud programmi lõik käivitub ainult siis kui mingi kindel tingimus on täidetud. Joonisel 4.4 on asitatud IF tingimuslause ehitus. IF tingimuslause tingimused peavad olema sellised, mis annad tulemus(te)na välja vastuse TÕENE (loogiline signaal 1) või VÄÄR (loogiline signaal 0). Programmi lõigud võivad sisaldada koodi/käske.
                		Järgnevalt on seletatud lahti IF tingimuslause tööpõhimõte.
                		Kui IF juures olev tingimus 1 on TÕENE, siis täidetakse IF 
                		rea järel olevat programmi lõiku 1. Ülejäänud programmi lõigud jäetakse vahele kuna nendest 
                		hüpatakse üle (liigutatakse kohe END_IF juurde).
                		ELSEIF rea järel olevat programmi lõiku 2 täidetakse kui 
                		IF juures olev tingimuse 1 on VÄÄR aga ELSIF juures 
                		olev tingimus 2 on TÕENE.
                		ELSE rea järel olevat programmi lõiku 3 täidetakse kui 
                		IF ja ELSIF juures olevad tingimused on VÄÄRAD.
                		Kui IF ja ELSIF juures olevad tingimused (mõlemad) on 
                		TÕESED, siis täidetakse ainult IF lause järel olevat programmi lõiku 1. 
                		ELSIF järel olevat programmi lõiku 2 ei täideta, kuna see jäetakse vahele. 
                		Seega tuleks teha tingimused sellised, mis välistaksid seisundit, kus kõik tingimused on TÕESED.
                	
Kui lisatingimusi on vaja rohkem kui üks, siis võib lisada juurde teisi ELSIF-e. Lisatavad ELSIF osad peavad olema eespool kui ELSE. Vastasel juhul neid ei täideta, kuna programmis hüpatakse neist üle. Kui lisatingimusi ei ole vaja, siis võib ELSIF osa ära jätta. Ka ELSE osa võib ära jätta kui seda ei ole vaja.
						//Üks IF tingimuslause teise sees
						IF (*Tingimus 1*) THEN
						    (*Programmi lõik 1 osa 1*);
						    IF (*Tingimus 2*) THEN
						        (*Programmi lõik 2*);
						    END_IF;
						    (*Programmi lõik 1 osa 2*);
						ELSE
						    (*Programmi lõik 3*);
						END_IF;
                     
                     
                	Ühe IF tingimuslause sisse võib panna ka teise IF tingimuslause (joonis 4.5). Kuid siin tuleb vaadata et END_IF pannakse õigesse kohta. Vastasel juhul ei pruugi esimene IF tingimuslause töötada nii nagu vaja.
Joonisel 4.6 on esitatud NING- ja VÕI-lülid IF tingimuslause abil.
| NING-tehe | 
|---|
| 
                               	//NING-tehe IF tingimuslause abil | 
| VÕI-tehe | 
| 
                               	//VÕI-tehe IF tingimuslause abil | 
Järgnevalt on esitatud CoDeSys koostatud IF tingimuslause näite failid, mis saab laadida alla ja testida arvutis.
Eitus
Joonisel 4.7 on kujutatud binaarloogika eituse lüli FBD, LD ja ST keeles. Nagu joonisel 4.7 esitatud olekutabelist näeb on eituse väljundis signaal väärtusega loogiline 1, kui selles sisendis on signaal väärtusega loogiline 0. Väljundis on signaal loogiline 0 kui sisendis on signaal loogiline 1. Eitus võimaldab binaarloogikas inverteerida sisendsignaali (operandi või muutuja) väärtust ja edastada saadud tulemuse lüli väljundisse.
| Olekutabel | FBD | ||||||
|---|---|---|---|---|---|---|---|
| 
 |  | ||||||
| ST | LD | ||||||
| 
                                //Eitus ST keeles |  | 
                    	Joonisel 4.7 esitatud binaarloogika eitust võib lugeda järgmiselt:
						  Muutuja Valjund1 on aktiivne kui muutuja 
                   		Sisend1 EI OLE aktiivne.
                    
Järgnevalt on esitatud CoDeSys koostatud Eituse näite failid, mis saab laadida alla ja testida arvutis.
                    	Eituse tekitamiseks FBD-s kasutatakse ikooni 
                    	 ja LD-s ikooni
 
                    	ja LD-s ikooni  . 
                    	Eituse lisamiseks tuleb valida sobiv joon/element ja siis vajutada vastava ikooni peale.
. 
                    	Eituse lisamiseks tuleb valida sobiv joon/element ja siis vajutada vastava ikooni peale.
                    
Joonisel 4.8 on esitatud eitust sisaldav NING-lüli FBD, LD ja ST keeles. Nagu näha ei pea kasutama eitust eraldi. Seda saab kasutada teiste loogikalülide või muude funktsioonide juures. FBD keeles võib panna eituse ka NING-lüli sisendi juurde (otse kasti vastu).
| FBD | LD | 
|---|---|
|  |  | 
| ST | |
| 
                                //Eitus NING-tehte sees | |
                    	Joonisel 4.8 esitatud programmi võib lugeda järgmiselt:
                    	  Muutuja Valjund1 on aktiivne kui muutuja 
                    	Sisend1 on aktiivne NING muutuja 
                    	Sisend2 EI OLE aktiivne.
                    
                    	Loogikalüli operatsiooni (tehte) tulemuseks saadud väljundi (signaali) väärtust võib binaarloogika 
                    	ka inverteerida. Selleks on CoDeSys-s FBD ja LD keeles olemas inverteeritud väljund operatsioon 
                    	(/) (joonis 4.9). Inverteeritud väljund võtab eespool 
                    	olevast loogikalüli väljundist tuleva signaali väärtuse vastu, inverteerib selle ja annab saadud tulemuse 
                    	otse muutujale edasi. Inverteeritud signaal ei kandu kuhugi mujale edasi, kui just vastavat muutujat 
                    	(Valjund2) ei kasutata kusagil mujal programmis.
                    
| FBD | LD | 
|---|---|
|  |  | 
                    	Joonisel 4.9 esitatud programmi võib lugeda järgmiselt:
                    	  Muutuja Valjund2 on aktiivne kui muutuja 
                    	Sisend1 EI OLE aktiivne. Muutuja 
                    	Valjund1 on aktiivne kui muutuja 
                    	Sisend1 on ka aktiivne.
                    	Ehk siis muutuja Sisend1 signaal kantakse otse edasi muutujasse 
                    	Valjund1, aga muutujasse Valjund2 
                    	inverteeritud kujul.
                    
Eitust saab kasutada ka NING- ja VÕI-lüliga seotud väljundlüli juures (joonis 4.10). Eitusega NING-lüli kutsutakse EI-NING-lüliks (NAND) ja VÕI-lüli EI-VÕI-lüliks (NOR) [viide]. LD keeles tuleb kasutada NING- ja VÕI-lüli lõpus tavalise väljundi asemel (joonised 4.1 ja 4.2) inverteeritud väljundit, et teha neist NAND ja NOR elemendid.
| FBD | |
|---|---|
|  |  | 
| LD | |
|  |  | 
| ST | |
| 
                                //EI-NING-tehe | 
                                //EI-VÕI-tehe | 
VÄLISTAV-VÕI-lüli
Joonisel 4.11 on kujutatud binaarloogika VÄLISTAV-VÕI-lüli (VVÕI - XOR) LD, ST ja FBD keeles. Binaarloogika VVÕI-lüli väljundsignaaliks on loogiline 1, kui selle lüli kahe sisendmuutuate signaalid on erineva väärtusega. Kui ühe sisendmuutuja signaal on loogiline 1 ja teise oma on loogiline 0 siis on VVÕI-lüli tulemuseks signaal loogiline 1.
| Olekutabel | LD | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 
 |  | |||||||||||||||
| ST | LD | |||||||||||||||
| 
                                //VVÕI-tehe ST keeles |  | 
                    	Joonisel 4.11 esitatud binaarloogika VVÕI-lüli võib lugeda järgmiselt:
						  Muutuja Valjund1 on aktiivne kui AINULT muutuja 
                   		Sisend1 on aktiivne VÕI AINULT muutuja 
                   		Sisend2 on aktiivne.
                    
Järgnevalt on esitatud CoDeSys koostatud VVÕI-lüli näite failid, mis saab laadida alla ja testida arvutis.
VVÕI-lüli võib omada rohkem kui kaht sisendit, seljuhul on VVÕI-lüli tulemuseks signaal loogiline 1, kui signaali loogilist 1 omavate sisendite (muutujate) arv on paaritu.
VVÕI-lüli saab koostada ka NING- ja VÕI-lülidest, kui see puudub programmeerimiskeeles (joonis 4.12).
| FBD | LD | 
|---|---|
|  |  | 
SR- ja RS-trigerid
SR- ja RS-trigereid kasutatakse lüli sisendisse saabuva lühiajalise signaali oleku (eluea) pikendamiseks. Sisendsignaali väärtus salvestatakse lülis. Trigerid teostavad mälufunktsioone.
SR-triger
                        Joonisel 4.13 on kujutatud SR-trigerit 
                        FBD, 
                        LD ja 
                        ST keeles. CoDeSys-s tuleb iga uus SR-triger 
                        deklareerida vastava POU muutujate 
                        deklaratsioonialas. See tähendab et anda nimi. Põhjus on selles, et SR-triger on defineeritud CoDeSys-s kui 
                        FB ja see vajab mälu muutujate väärtuste 
                        meelespidamiseks. Antud näites näeb SR-trigeri deklaratsioon välja järgmine: 
                        SR_Trig1 : SR;. 
                    
| FBD | LD | 
|---|---|
|  |  | 
| ST | |
| 
                                //SR-trigeri deklareerimine POU deklaratsioonialal | |
| Signaalide ajadiagramm | |
|  | |
                        SR-trigeri (joonis 4.13) väljundile Q1 antakse signaal loogiline 0, 
                        kui sisendis RESET on signaal loogiline 1 ja sisendis SET1 on signaal loogiline 0. 
                        Trigeri olek jääb kestma kuni selle toite sisselülitamiseni (SET1 aktiivseks). Väljundi 
                        Q1 signaal muutub loogiliseks 1, kui sisendisse SET1 saabub signaal loogiline 1 
                        sõltumata sellest, milline on sisendi RESET signaal. Sisend SET1 on ülimuslik. Seetõttu 
                        kutsutakse SR-trigerit ülimusliku sisselülitamisega trigeriks. Signaali väärtuse muutus sisendis 
                        SET1 ei mõjuta väljundit Q1, kui viimase signaal on juba loogiline 1 ning 
                        sisendis RESET on signaal loogiline 0.
                    
Järgnevalt on esitatud CoDeSys koostatud SR-trigeri näite failid, mis saab laadida alla ja testida arvutis.
RS-triger
                    	Joonisel 1.14 on kujutatud RS-trigerit 
                    	FBD, 
                    	LD ja 
                    	ST keeles. Ka RS-triger tuleb deklareerida nagu 
                    	SR-triger vastava POU muutujate 
                    	deklaratsioonialas. Antud näites näeb RS-trigeri deklaratsioon välja järgmine: 
                    	RS_Trig1 : RS;.
                    
| FBD | LD | 
|---|---|
|  |  | 
| ST | |
| 
                                //RS-trigeri deklareerimine POU deklaratsioonialal | |
| Signaalide ajadiagramm | |
|  | |
                        RS-trigeri (joonis 1.14) väljundisse Q1 antakse signaal loogiline 1, 
                        kui trigeri sisendisse SET saabub signaal loogiline 1 ja sisendis RESET1 on signaal 
                        loogiline 0. See olek jääb kestma kuni trigeri väljalülitamiseni (sisendile RESET1 antakse peale 
                        signaal loogiline 1). Sisendi SET signaali väärtuse muutus ei mõjuta väljundit Q1, kui 
                        viimase signaal on loogiline 1. Signaali loogiline 1 saabumisel sisendisse RESET1 muutub trigeri 
                        väljundi Q1 signaal loogiliseks 0 sõltumata sellest, milline on signaali väärtus sisendis 
                        SET. Sisend RESET1 on ülimuslik. Seetõttu kutsutakse RS-trigerit 
                        ülimusliku väljalülitamisega trigeriks.
                    
Järgnevalt on esitatud CoDeSys koostatud RS-trigeri näite failid, mis saab laadida alla ja testida arvutis.
Trigerid NING-, VÕI-lüli ja eituse abil
NING- ja VÕI-lülidest ning eitusest saab koostada SR- ja RS-trigeri (joonis 4.15).
| FBD | |
|---|---|
|  |  | 
| LD | |
|  |  | 
| ST | |
| 
                                //SR-triger | 
                                //RS-triger | 
SET ja RESET funktsioonid
Operandi/muutuja väärtuse muutusi (ümberlülitusi) saab teha PLC programmi erinevates osades kasutades SET (S) ja RESET (R) funktsioone [viide]. Need funktsioonid võimaldavad lõhkuda SR- ja RS-trigerid erinevateks osadeks tehes eraldi erinevates kohtades muutujate sisse- ja välja-lülitamise operatsioone. Puuduseks on ülevaate kaotamine programmis selle üle, mis tingimustel toimus mingi väljundi väärtuse muutus (trigeri lülitus). Samas saab üht sisendtingimust (signaali üht väärtust) kasutada rohkem kui ühe trigeri väljundi juhtimiseks (joonis 4.16).
| FBD | LD | 
|---|---|
|  |  | 
                    	SET ja RESET väljundi tekitamiseks kasutatakse FBD 
                    	ja LD keeles ikooni 
                    	 . 
                    	Vastava väljundi lisamiseks valida sobiv joon ja siis vajutada nii mitu korda ikooni kuni tekib sobiv väljundfunktsioon.
. 
                    	Vastava väljundi lisamiseks valida sobiv joon ja siis vajutada nii mitu korda ikooni kuni tekib sobiv väljundfunktsioon.
                    
Järgnevalt on esitatud CoDeSys näidis failis, kus on koostatud RS-triger kasutades SET ja RESET funktsioone. Failid saab laadida alla ja testida arvutis.
						(*SET funktsioon ST keeles*)
						IF Set_1 THEN
						    Q_1 := TRUE;
						END_IF;
						
						(*RESET funktsioon ST keeles*)
						IF Reset_1 THEN
						    Q_1 := FALSE;
						END_IF;
                     
                     
                	
                    	ST keeles puuduvad SET ja RESET funktsioonid, 
                    	kuid neid saab teostada IF tingimuslause abil. Joonisel 4.17 on teostatud SR-triger. 
                    	Set_1 on sisend, mis muudab väljundi väärtuse üheks. 
                    	Reset_1 on sisend, mis muudab väljundi väärtuse nulliks. 
                    	Q_1 on väljund, mis väljastab SET või RESET funktsiooni tulemuse. 
                    	IF tingimuslausete järjekorra muutmisega saab teha, et SET funktsioon oleks ülemuslik. Praegu jääb peale 
                    	RESET funktsioon.
                    
Tabelis 4.2 on esitatud muutujad koos andmetüüpide ja kirjeldusega.
| Muutuja | Sisend/Väljund | Andmetüüp | Kommentaar | 
|---|---|---|---|
| Sisend1, Sisend3, Set_1 | SET1, SET | BOOL | SET sisend | 
| Sisend2, Sisend4, Reset_1 | RESET, RESET1 | BOOL | RESET sisend | 
| Valjund1, Valjund2, Q_1 | Q1 | BOOL | Väljund, kuhu väljastatakse trigeri tulemus | 
Signaali väärtuse muutuse tuvastamine
Füüsikalise signaali väärtuse muutumist mõõdetakse ja kasutatakse signaali oleku muutuse tuvastamiseks. Signaali väärtuse kasvamist (muutus 0 → 1) nimetatakse positiivseks frondiks ja signaali väärtuse vähenemist (muutus 1 → 0) negatiivseks frondiks [viide]. Signaali väärtuse muutust kirjeldab lühike impulss väärtusega loogiline 1. Selle impulsi kestus on võrdne ühe programmi täitmistsükli kestusega (joonis 4.18).
Signaali väärtuse muutuse (frondi) tuvastamiseks on PLC-s jaoks olemas standardfunktsioonid. Mõne funktsiooni juures tuleb kasutada eraldi muutujat, mis seotakse vastava funktsiooni juures kasutatud muutujatega, et pidada meeles nende väärtusi eelmises PLC töötsükli ajal.
Nii positiivse (tõusva) kui ka negatiivse (langeva) frondi avastamiseks pakub CoDeSys kolme eri tüüpi funktsiooni. Järgnevalt kirjeldatakse lahti positiivse frondi funktsioonid:
R_TRIG funktsioon
                    	R_TRIG funktsioon (joonis 4.19) võtab sissetuleva signaali sisendis CLK vastu (mis kantakse 
                    	temani jooni mööda FBD ja 
                    	LD keeles) ja kontrollib selle frondi muutust. 
                    	Tulemus väljastatakse väljundi Q kaudu ja kantakse ühendusjoone(te) kaudu edasi teiste 
                    	programmeerimiskeele elementideni/funktsioonideni. See võimaldab kasutada seda funktsiooni igal pool 
                    	PLC programmis positiivse 
                    	frondi tuvastamiseks. Selles funktsioonis kasutatakse ainult üht muutujat nimega 
                    	POS1, milles hoitakse selle funktsiooniga seotud muutujate väärtusi 
                    	ning salvestatakse eelmises tsüklis olnud sisendi CLK väärtus. R_TRIG funktsiooni muutuja 
                    	deklaratsioon näeb välja järgmine: POS1 : R_TRIG;. 
                    
| FBD | LD | 
|---|---|
|  |  | 
| ST | |
| 
                                //R_TRIG muutuja deklareerimine POU deklaratsioonialal | |
Järgnevalt on esitatud CoDeSys koostatud R_TRIG funktsiooni näite failid, mis saab laadida alla ja testida arvutis. Siin tuleb arvestada, et palja inimese silmaga selle funktsioonitööd ei näe.
Joonisel 4.19 kujutatud näites kontrollitakse operandi Sisend1 positiivset fronti. Selle tuvastamisel (hetkel, mil Sisend1 väärtus muutus üheks) muutub operand Valjund1 väärtus kõrgeks üheks programmi tsükliks. Järgmisel programmi täitmise tsüklil muutub operandi Valjund1 väärtus tagasi madalaks, kuna operandi Sisendi1 väärtus ei muutunud või see muutus nulliks antud tsüklis. Enamasti on PLC-s ühe programmi täitmise tsükliaeg liiga lühike, et kajastada frondi muutust PLC väljundis. Selleks tuleks kasutada SET ja RESET funktsioone.
|P| funktsioon
                    	|P| funktsioon võimaldab tuvastada FBD 
                    	ja LD keeles mingi kindla muutuja positiivset fronti. 
                    	Joonisel 4.20 esitaud näites on selleks muutujaks 
                    	Sisend2. Tulemus kantakse joone kaudu edasi teiste programmeerimiskeele elementideni/funktsioonideni. Selle funktsiooni jaoks ei ole vaja defineerida eraldi operandi. |P| funktsioon puudub ST keeles.
                    
| FBD | LD | 
|---|---|
|  |  | 
Järgnevalt on esitatud CoDeSys koostatud |P| funktsiooni näite failid, mis saab laadida alla ja testida arvutis. Siin tuleb arvestada, et palja inimese silmaga selle funktsioonitööd ei näe.
                    	Joonisel 4.20 kujutatud näites kontrollitakse muutuja 
                    	Sisend2 positiivset frondi olemasolu kui muutuja 
                    	Sisend1 on aktiivne (signaal on loogiline 1). Muutuja 
                    	Sisend1 abil juhitakse muutuja 
                    	Sisemd2 frondi muutuse tuvastust (kas anda luba frondi muutuse 
                    	tuvastamiseks või mitte). Kui Sisend1 väärtus on loogiline 1 ning 
                    	Sisend2 signaal muutus loogiliseks üheks (kõrgeks, 0→1) selles programmitsüklis, 
                    	siis muutuja Valjund1 väärtus muutub ka loogiliseks 1. Järgmise 
                    	programmitsükli ajal muudetakse muutuja Valjund1 tagasi loogilisesks 0.
                    
                    	Funktsiooni |P| paremaks mõistmiseks on täiendatud kahte eelmist näidis faili SET ja RESET funktsioonidega. SET funktsioon aktiveerub kui on tuvastatud positiivne signaalimuutus muutujas Sisend2 ja aktiveerib muutuja Valjund1. Valjund1 deaktiveerimiseks kasutatakse RESET funktsiooni ja vastavat nuppu animatsioonis. Järgmised failid saab laadida alla ja testida arvutis.
                    
- |P| kasutus koos SET ja RESET funktsioonidega FBD keeles
- |P| kasutus koos SET ja RESET funktsioonidega LD keeles
                    	|P| funktsiooni tekitamiseks kasutatakse FBD 
                    	keeles ikooni  ja LD keeles ikooni
 
                    	ja LD keeles ikooni 
                    	 . 
                    	Nende abil saab tuvastada positiivset fronti ka väljundi juures või kusagil programmi keskel nagu näidatud 
                    	joonisel 4.21.
. 
                    	Nende abil saab tuvastada positiivset fronti ka väljundi juures või kusagil programmi keskel nagu näidatud 
                    	joonisel 4.21.
                    
| LD | |
|---|---|
|  |  | 
| FBD | |
|  |  | 
                    	Joonisel 4.21  vasakul pool olevas programmis kasutatakse 
                    	 funktsiooni positiivse frondi tuvastamiseks. Kontrollitav signaal siseneb vasakult poolt mööda ühendusjoont   funktsiooni ja selle tulemus väljastatakse paremalt poolt ühendusjoone(te) abil.
 
                    	funktsiooni positiivse frondi tuvastamiseks. Kontrollitav signaal siseneb vasakult poolt mööda ühendusjoont   funktsiooni ja selle tulemus väljastatakse paremalt poolt ühendusjoone(te) abil.
                    
Negatiivne front
                    	Negatiivse frondi funktsioonid F_TRIG, |N| ja  toimivad sarnaselt ülalkirjeldatud positiivse frondi tuvastuse funktsioonidele selle vahega, et positiivse frondi 
                    	asemel tuvastatakse negatiivset (1→0). Joonisel 4.22 on esitatud negatiivse 
                    	frondi funktsioonid LD keeles.
 
                    	toimivad sarnaselt ülalkirjeldatud positiivse frondi tuvastuse funktsioonidele selle vahega, et positiivse frondi 
                    	asemel tuvastatakse negatiivset (1→0). Joonisel 4.22 on esitatud negatiivse 
                    	frondi funktsioonid LD keeles.
                    
|  |  | 
|  |  | 
Tabelis 4.3 on esitatud muutujad, mida kasutati eespool signaali muutuste tuvastamiseks frondi trigerite juures, koos andmetüüpidega ja kirjeldusega.
| Muutuja | Sisend/Väljund | Andmetüüp | Kommentaar | 
|---|---|---|---|
| Sisend1, Sisend2 | CLK | BOOL | Sisendoperand, mille signaali muutust kontrollitakse trigeriga | 
| POS1 | R_TRIG | Muutuja, kuhu salvestatakse positiivse frondi tuvastamiseks vajalikud väärtused | |
| NEG1 | F_TRIG | Muutuja, kuhu salvestatakse negatiivse frondi tuvastamiseks vajalikud väärtused | |
| Valjund1, Valjund2, | Q | BOOL | Väljundmuutuja, mis näitab kas sisendoperandi väärtus muutus või ei muutunud | 
Frondi tuvastus ST keeles
ST keeles on võimalik teha frondi tuvastamist ka IF tingimuslause abil nagu kujutatud joonisel 4.23. Selles esitatud viimane programmirida peab kindlasti olema IF tingimuslausest allpool. Kui see asub tingimuslause sees või sellest eespool, siis frondi tuvastamine ei tööta.
| Positiivne signaali tuvastus | 
|---|
| 
                                IF Sisend1 AND NOT(Sisend1_enne) THEN | 
| Negatiivne signaali tuvastus | 
| 
                                IF NOT(Sisend1) AND Sisend1_enne THEN | 
Järgnevalt on esitatud programmiosa ST keeles, kus positiivse frondi peale lülitatakse lampi sisse või välja.
                        IF nupp_1 AND NOT nupp_1_enne THEN
                          lamp_1 := NOT lamp_1;  //Muudame lambi oleku vastupidiseks
                        END_IF;
                        
                        //Selle tsükli ajal oleva sisendi oleku meelde jätmine järgmiseks tsükliks
                        //nupp_1_enne on muutuja, millesse paneme nupu hetkeoleku.
                        nupp_1_enne := nupp_1;
                    
                    
                    Järgnevalt on esitatud programmiosa LD keeles, kus positiivse frondi peale lülitatakse lampi sisse või välja.
| LAD | |
|---|---|
| Network 1: Muutuja nupp_1 positiivse frondi tuvastamine | |
|  | |
| Network 2: Muutuja lamp_1 oleku muutmine | |
|  | |
 
               	    
                    
                    
                    
                   








