Professional Documents
Culture Documents
Projekat Lifta
Projekat Lifta
ZADATAK Napraviti pragram za PLC koji e animirati rad lifta u stambenoj zgradi. Pri izradi programa uzeti u obzir sledee pretpostavke: Zgrada je visoka 10 spratova plus prizemlje. Na svakom spratu postoji poziv lifta za gore i dole, osim na 10 spratu gde postoji poziv samo za dole i u prizemlju gde postoji poziv samo za gore. U liftu postoje komande za svaki sprat, komanda za stop, indikacija preoptereenja, komande za otvaranje i zatvaranje vrata na spratu te pokazivanje trenutnog poloaja lifta na displeju. Pri radu lifta prioritet imaju komande zadate iz kabine, a komande poziva izvana se izvravaju u zavisnosti od smijera kretanja lifta, dok lift ide prema gore onda staje na sve pozive na koje usput naie prema gore, a isto tako i prema dole. Kod odluivanja gdje da lift krene uzeti u obzir najkrai potreban put da lift obavi zadane radnje. IZRADA: Za uspenu izradu programa moramo se drati odreenog redosleda radnji i postupaka koji e nas dovesti do konanog cilja zadatka. Kao prvi korak moramo odrediti ukupan broj i vrstu ulaza i izlaza u na upravljaki sistem. Za na konkretni sluaj to iznosi: ULAZI: -Poziv za gore na svakom spratu osim na 10 -Poziv za dole na svakom spratu osim u prizemlju -Otvaranje i zatvaranje vrata kabine -STOP i Preoptereeno -Poziv unutar lifta za svaki sprat IZLAZI: -Komanda za motor ukljuen-iskljuen -Komanda za smer gore - dole motora -Indikatori poloaja kabine -Komande za otvaranje vrata po spratovima 9+Pr=10 BOOL ulaza 10=10 BOOL ulaza 1+1=2 BOOL ulaza 1+1=2 BOOL ulaza 10+Pr=11 BOOL ulaza 1=1 BOOL izlaz 1+1=2 BOOL izlaza 10+Pr=11 BOOL izlaza 10+Pr=11 BOOL izlaza
UNUTARNJE VARIJABLE: -One e biti definirane tokom procesa izrade programa. Sledei korak bi bio da pokrenemo CodeSys program i da u njegovom okruenju iscrtamo grafiki dio koji e nam biti potreban za animaciju. On u konkretnom sluaju moe da izgleda ovako, a stvar je ukusa i stila kako e on biti u konkretnoj situaciji prikazan. Pri tome treba teiti pojednostavljenju pri emu se ne smije zanemariti prikaz to je mogue vjernijih komandi i kretanja koja se mogu deavati u stvarnoj situaciji. 1
Sl.1 Predloeni grafiki izgled lifta Kada smo uradili ovaj dio posla, tada prelazimo na sam proces programiranja koji zahtijeva dosta snalaljivosti i detaljnog poznavanja procesa koji treba opisati. Da bi to sebi olakali posao potrebno je prethodno uraditi algoritam rada lifta, pa onda na osnovu algoritma pisati program, a u toku pisanja programa ili po njegovom zavretko potrebno je pojedine promjenjljive vezivati za pripadajue grafie objekte, te emo na taj nain dobiti i vizuelni prikaz rada samog programa. Time se posao raslanjuje na tri operacije, te se tako na laki i pregledniji nain dolazi do konanog reenja. ALGORITAM RADA LIFTA 2
Pri emu su: D do D10 .. komande za poziv ka dole G0 do G9.. komande za poziv ka gore S0 do S10..komande za poziv na eljeni sprat Za rjeenje problema kretanja same kabine lifta kao prvi uslov moramo definisati nain na koji e se donijeti odluka na koju stranu e krenuti kabina lifta. Za to nam je potrebna informacija o najmanjoj udaljenosti poziva, bilo izvana ili iznutra, za lift od njegovog stvarnog trenutnog poloaja. Nazovimo te promjenjljive sa: RASTS- Najmanja udaljenost poziva za sprat od poloaja kabine RASTPG- Najmanja udaljenost poziva za gore od poloaja kabine RASTPD- Najmanja udaljenost poziva za dole od poloaja kabine Sada moemo definirati algoritam za iznalaenje najmanje mogue udaljenosti poziva za lift od njegovog stvarnog poloaja. Za pozive lifta ka gore izvana algoritam izgleda: 3
START
IF G0= 1
DA
DA RASTPG:= POL - 0
IF G1= 1
DA
DA RASTPG:= POL - 1
Sl.2 Algoritam za RASTPG Na taj nain e mo kao rezultat ove i narednih petlji (za svaki sprat po 1 s tim to se indeks mijenja) dobiti promjenjljivu RASTPG . Programski to izgleda ovako: izraunavanje vrednosti RASTPG,
IF (G0=TRUE AND (ABS(POL -0))<(ABS(RASTPG))) THEN RASTPG:=(POL-0); END_IF; IF (G1=TRUE AND (ABS(POL -1))<(ABS(RASTPG))) THEN RASTPG:=(POL-1); END_IF;................
Na slian nain i po slinim algoritmima proraunavaju se i vrijednosti za RASTS i RASTPD. Ovdje e mo prikazati samo po jedan red petlje, a ona se nastavlja za svaki sprat kao to je i dato na kraju ovog rada.
IF D1= 1
DA
IF [POL-1] <[RASTPD]
DA RASTPD:= POL - 1
Sl.3 Algoritam za RASTPD Programski algoritam za RASTPD (za dva sprata) izgleda ovako:
IF(D1=TRUE AND ( ABS(POL -1))<(ABS(RASTPD))) THEN RASTPD:=(POL-1); END_IF; IF (D2=TRUE AND (ABS(POL -2))<(ABS(RASTPD))) THEN RASTPD:=(POL-2); END_IF;
DA RASTS:= POL - 0
IF [POL-0] <[RASTS]
DA
IF S0= 1
Sl.4 Algoritam za RASTS Programski algoritam za RASTS (za dva sprata) izgleda ovako:
IF (S0=TRUE AND (ABS(POL -0))<(ABS(RASTS))) THEN RASTS:=(POL-0); END_IF; IF (S1=TRUE AND (ABS(POL -1))<(ABS(RASTS))) THEN RASTS:=(POL-1); END_IF;
Kada smo odredili vrednosti promjenljivih za RASTS, RASTPG i RASTPD tada imamo: 1.Ako je RASTS 0 i RASTS 12 tada imamo situaciju da imamo poziv unutar kabine za neki od spratova, i samim tim dajemo prioritet kretanju kabine na osnovu komandi iz kabine. Odluku da li e lift ii gore ili dole se donosi na osnovu predznaka promjenjljive RASTS, ako je on pozitivan lift ide ka dole, a ako je negativan onda lift ide prema gore. Sada dolazimo ponovo u situaciju da odluujemo i to:
IF RASTS <0
DA
IF RASTPG= 0
DA
IF RASTS> 0
DA
IF RASTPG= 0
DA
NE
IF RASTS= 12
DA
IF (RASTS<0) AND RASTPG=0 THEN MOTOR:=FALSE; GORE:=FALSE; DOLE:=FALSE;MOTOR1:=FALSE; END_IF; IF RASTS<0 AND RASTPG<>0 THEN MOTOR:=TRUE; GORE:=TRUE; DOLE:=FALSE; END_IF; IF (RASTS>0) AND RASTPD=0
2. Ako nam je RASTS=12, to znai da nemamo nikakvih poziva iz kabine lifta i u tom sluaju ponovo imamo tri novonastale situacije a) RASTPG>RASTPD, to znai da poziv koji poziva lift u smjeru ka dole ima prioritet i lift treba prvo njega da izvrava. b) RASTPG<RASPD, to znai da poziv koji poziva lift u smeru ka gore ima prioritet i lift treba prvo njega da izvrava c) RASTPG=0 ili RASPD=0, to znai da je lift stigao do eljenog poziva i da mora stati. Program za sluaj pod (a) izgleda ovako:
IF (ABS(RASTPG)>ABS(RASTPD)) AND RASTS=12 THEN IF (RASTPD=0) THEN MOTOR:=FALSE; GORE:=FALSE; DOLE:=FALSE;MOTOR1:=FALSE; ELSIF (RASTPD<>0) THEN IF (RASTPD>0) THEN MOTOR:=TRUE; GORE:=FALSE; DOLE:=TRUE; ELSIF (RASTPD<0) THEN MOTOR:=TRUE; GORE:=TRUE; DOLE:=FALSE; END_IF; END_IF;
NE
IF RASTS= 12
NE
DA
IF RASTPD= 0
DA
NE MOTOR= TRUE GORE= TRUE DOLE= FALSE MOTOR= TRUE GORE= FALSE DOLE= TRUE
NE
IF RASTPD> 0
DA
IF RASTPG= 12 V IF RASTPD= 12
NE
DA
STOP
NE
IF RASTS= 12
DA
IF RASTPG= 0
NE
NE MOTOR= TRUE GORE= FALSE DOLE= TRUE NE MOTOR= TRUE GORE= TRUE DOLE= FALSE
DA
IF RASTPG> 0
IF RASTPG= 12 V IF RASTPD= 12
DA
STOP
Animiranje otvaranja i zatvaranja vrata na spratovima izgleda ovako za svaki sprat samo se promjenjljive mijenjaju a za sprat br 1 izgleda ovko: (*animiranje otvaranje i zatvaranje vrata na kabini br 1*)
IF (MOTOR=FALSE AND POL=1 AND POLVL1>-15) THEN POLVL1:=POLVL1-0.5; POLVD1:=-POLVL1; END_IF; (*kada su vrata otvorena cekamo 5 sekundi i zatvaramo ih*) IF (POLVL1=-15) THEN sat.IN:=TRUE; S1:=FALSE; G1:=FALSE; D1:=FALSE; END_IF; IF sat.Q=TRUE AND POLVL1<0 AND POLVKL=0 THEN POLVL1:=POLVL1+0.5; POLVD1:=-POLVL1; sat.IN:=FALSE;RASTS:=12; RASTPG:=12; RASTPD:=12; END_IF;
Kao to se vidi, problem rada lifta je rijeen u programskom jeziku ST, pomou programskog paketa CodeSys, i njego itav kod je naveden dole, izvorno kako je i napisan. ZAKLJUAK: Kroz primer ovog zadatka dat je saet prikaz postupka reavanja sloenijih problema koji se na relativno jednostavan i lak nain rjeavaju primenom PLC_a, to donosi znaajne utede kako u vremenu samog projektovanja, tako i u ukupnoj cijeni konanog proizvoda. Kada bi se uzele u obzir i mogue modifikacije koje na veoma lak i pristupaan nain moemo izvriti mijenjanjem samo programa onda se tek dolazi do pravih prednosti koritenja PLC u industrijskom upravljanju.
PROGRAM PLC_PRG
10
11
12
13
14
15
16
17
Koritena literatura: 1. S.Odri, M.Hajdukovi;Programski jezici za programabilne kontrolere, NEURON, Tehnika serija, N.Sad, 1999. 2. Goran Milii, PROGRAMABILNI LOGIKI KONTROLERI, skripta FSB Zagreb,2000
18