11.07.2015 Views

Materijal za drugo polugodište - "Mihajlo Pupin" Kula

Materijal za drugo polugodište - "Mihajlo Pupin" Kula

Materijal za drugo polugodište - "Mihajlo Pupin" Kula

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Zadaci <strong>za</strong> prvih pet vežbi :1. Napisati program <strong>za</strong> upravljanje rada semafora u programskom jeziku ST na sledeći način:Kreirati funkcijski blok Sem1, u programskom jeziku ST, koji ima 3 izlazne promenjive red, yellow, green . Uprogramu PLC_PRG realizovati primerak semafora koji se zove SemaforST i čiji rad <strong>za</strong>visi od upravljačkepromenjive start na sledeći način: ako je start=true vrši se normalno upravljanje radom semafora, a u suprotnom, nasemaforu će da se pojavljuje trepćuće žuto svetlo. U delu <strong>za</strong> vizuali<strong>za</strong>ciju izvesti taster <strong>za</strong> start i semafor.2. Zadatak rešiti u prog.jeziku FBD.3. Zadatak rešiti u prog.jeziku IL.4. Zadatak rešiti u prog.jeziku SFC. (PLC_PRG pisati u jednom od drugih prog.jezika.)5. Zadatak rešiti u prog.jeziku LD.********************************************************************************************Zadatak br.2 Semafor(ST)********************************************************************************************Novi tip podataka (enumeracija) <strong>za</strong> stanja semafora:TYPE stanje :(crveno, crvenozuto, zeleno, zzuto):=crveno;END_TYPE********************************************************************************************FUNKCIJSKI BLOK sem (upravljanje semaforom)********************************************************************************************FUNCTION_BLOCK semVAR_INPUTEND_VARVAR_OUTPUT (* izlazne promenjive *)Zut: BOOL; (* indikacija da li svetli ili ne svetli crveno svetlo *)Crv: BOOL; (* zuto svetlo semafora *)Zel: BOOL; (* zeleno svetlo *)END_VARVAR (* lokalne promenjive : ne vide se van funkcijskog bloka *)VremeCrvenogSvetla: TON; (* tajmer tipa TON : odredjuje koliko dugo ce da svetli samo crveno svetlo *)VremePrela<strong>za</strong>: TON;(* tajmer tipa TON : odredjuje koliko dugo ce da svetle istovremeno crveno i zutosvetlo *)VremeZelenogSvetla: TON; (* tajmer tipa TON : odredjuje koliko dugo ce da svetli zeleno svetlo *)VremeZutogSvetla: TON; (* tajmer tipa TON : odredjuje koliko dugo ce da svetli zuto svetlo *)stanje_semafora: stanje; (* stanje_semafora je promenjiva tipa stanje i inicijalno je stanje_semafora =crveno *)END_VAR-------------------------------------------------------------------------------------------------------------------------------------------CASE stanje_semafora OF (* ispituje se stanje semafora i u <strong>za</strong>visnosti od toga se vrsi upravljanje daljim radom *)(* redosled kako svetle svetla na semaforu : crveno, crveno i zuto, zeleno, zuto, crve... *)crveno: (* *)Zel:=FALSE;(* ako je stanje semafora = crveno: drzi se ukljuceno samo crveno svetlo, a zeleno i zutoiskljuceni *)Zut:=FALSE; (* *)Crv:=TRUE; (* *)VremeCrvenogSvetla(pt:=t#10s,in:=TRUE); (*ulaz IN tajmera postavlja se TRUE : na izlazu se nece pojaviti TRUE *)(* sve dok ne prodje PT(=t#10s) vremena *)IF VremeCrvenogSvetla.q=TRUE THEN (* kada se na izlazu Q tajmera pojavi TRUE *)(* tzn. da je proslo PT vremena *)VremeCrvenogSvetla(in:=FALSE); (* . ulaz tajmera IN postavljamo na FALSE, cime se na izlazu Q tajmera *)(*takodje pojavljuje FALSE... *)stanje_semafora:=crvenozuto; (* ... + menjamo stanje semafora NA SLEDECE -> crvenozuto *)END_IF;crvenozuto:(* ako je stanje semafora = crvenozuto svetle crveni i zuto svetlo; zeleno svetlo je i dalje iskljuceno *)Zel:=FALSE; (* *)Zut:=TRUE; (* *)Crv:=TRUE; (* *)VremePrela<strong>za</strong>(in:=TRUE,Pt:=t#2s);(*ulaz IN tajmera := TRUE -> na izlazu se nece pojaviti TRUE sve dok ne*)(*prodje PT(=t#2s) vremena *)IF VremePrela<strong>za</strong>.q THEN(* kada se na izlazu Q tajmera pojavi TRUE tzn. da je proslo PT vremena i tada ... *)108

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!