You are on page 1of 26

Univerzitet u Kragujevcu

FAKULTET TEHNIČKIH NAUKA


ČAČAK

SEMINARSKI РАД

KREIRANJE MOZAIKA

Mentor Student

Miloš Božić, dipl. inž. el Lazar Popović 820/2016

U Čačku,
2017. godine
SADRŽAJ

Sadržaj.........................................................................................................................................2
1. Uvod........................................................................................................................................3
2. Idejno rešenje..........................................................................................................................5
2.1 Komponente....................................................................................................................................5
2.1.1 PLC kontroler........................................................................................................................6
2.1.2 Koračni motor........................................................................................................................8
2.2 Serijska komunikacija - RS232 protokol.......................................................................................10
3. aplikacija...............................................................................................................................15
3.1 Java Aplikacija..............................................................................................................................15
3.2 PLC Aplikacija..............................................................................................................................19
4. Zaključak...............................................................................................................................23
ЛИТЕРАТУРА.........................................................................................................................24

2
1. UVOD

Pod automatskim upravljanjem obično se podrazumeva upravljanje koje se ostvaruje


bez neposrednog u češća čoveka. Ovakvom definicijom, međutim, nije tačno objašnjen taj
termin. Pre svega, trebalo bi utvrditi šta se podrazumeva pod neposrednim učešćem. Jer, da bi
se upravljanje izvodilo u interesu čoveka, on mora da u čestvuje u upravljanju. Inače, ranije ili
kasnije, upravljani proces odstupa od, za čoveka željenog, karaktera svog toka. Kao uzroci
takvih odstupanja mogu biti: neminovno starenje i pohabanost elemenata sistema, promene
okolne sredine i promene ciljeva čoveka. Pri tome, učešće čoveka u upravljanju sistemima
koji rade u njegovom interesu je neizbežno. Sa usavršavanjem tehnike upravljanja, učešće
čoveka u upravljanju postajalo je sve manje neposredno. U početku, čovek se oslobađao
funkcije neposrednog delovanja na organe upravljanja, prenoseći je na tehnički izvršni uređaj,
na koji je čovek delovao odabirajući signale upravljanja. Zatim se čovek oslobađao funkcije
stvaranja signala upravljanja, prepuštajući je tehničkom upravljačkom uređaju, kome je,
međutim, on zadavao vrednosti upravljanih veličina. Dalji razvoj je stvorio mogućnost
oslobađanja čoveka i od funkcije određivanja zadatka. Tu funkciju može izvršavati tehnički
uređaj na osnovu cilja upravljanja koji je postavio čovek. Proces udaljavanja čoveka od
neposrednog delovanja na organe upravljanja i proširenja funkcija tehničkih uređaja
produžava se i produžavaće se u vezi sa razvojem tehnike upravljanja. Na taj način, stepen
učešća čoveka u upravljanju tehničkim sistemima postepeno se menja, njegove funkcije
postaju sve manje konkretne ali sadržajnije. Ne postoji oštra granica među sistemima, koja bi
omogućavala, da se izvrši njihova stroga klasifikacija prema stepenu učešća čoveka u
upravljanju.
Često je u raznim industrijskim aplikacijama potrebno izvršiti slaganje elemenata na
osnovu zadate slike i zadatih parametara.

3
Za to se koriste mašine za slaganje koje rade na različitim principima. U okviru ovog
projekta realizovano je idejno rešenje jedne takve mašine.
U drugom poglavlju je dat mogući izgled mašine i izvršen je odabir komponenti koje su
potrebne za realizaciju ove mašine.
U trećem poglavlju je prikazana je logika rada aplikacija koje vrši upravljanje ovim
sistemom. Takođe je prikazan izgled i opisana funkcija pojedinih delova aplikacije, i način na
koji se vrši upravljanje sistemom.

4
2. IDEJNO REŠENJE

Idejno rešenje mašine za slaganje mozaika može se podeliti na dve celine softversku i
hardversku. Softverska celina zasniva se na ideji da se obrada slika i parametrizacija panela
odrađuje u objektno orjentisanoj aplikaciji na bazi Java jezika koja će preko serijskog porta
RS232 slati podatke na PLC-u. Hardverska celina čini upravljanje motora i komponenata
pomoću PLC-a koji je obradio podatke sa serijskog porta RS232. Rešenje da se komunikacija
uradi preko serijskog porta nije bila najbolja, ali usled nedostatka drugih rešenja opredelili
smo se za ovu. Pomeranje objekata (pločica) omogućavaće dva koračna motora koji će
obezbeđivati kretanje u dve ose, sam nosač imaće vakum pumpu koja će omogućiti podizanje
i spuštanje objekta. U ovom seminarskom radu nećemo se baviti zadavanjem konstrukcionih
rešenja mašine (izgled mašine) nego kreiranje logike sistema, to jest kreiranje softvera.

Slika 2.1. Idejno rešenje

2.1 Komponente

Za realizaciju ovog projekta korišćene su sledeće komponente:


- PLC kontroler „Schneider Electric“ serija M238 tip TM238LFDC24DT
- Koračni motor SB57B003, q=2; 3,5 A; 2,5 Nm
- Drajver za koračni motor SD4350
- Vakum pumpa

5
Slika 2.1.1. Izgled PLC-kontrolera M238

Slika 2.1.2 Izgled drajvera za koračni motor

Слика 2.1.3. Изглед корачног мотора SB57B003

6
Слика 2.1.4. Изглед vakum pumpe

2.1.1 PLC kontroler


Programabilni logički kontroler (PLC) je elektronski uređaj koji koristi programabilnu
memoriju za pamćenje naredbi, kojima se zahteva izvođenje specifičnih funkcija, kao što su
logičke funkcije, sekvenciranje, prebrojavanje, merenje vremena, izračunavanje, u cilju
upravljanja različitim tipovima mašina i procesa preko digitalnih i analognih ulazno-izlaznih
modula. PLC kao industrijski računar samim svojim dizajnom predviđen je za primenu u
neposrednom okruženju procesa sa kojim upravlja. Otporan je na razne nepovoljne uticaje kao
što su prašina, vlaga, visoka temperatura, vibracije i elektromagnetne smetnje, tako da se
obično primenjuje za rešavanje decentralizovanih upravljačkih zadataka, na samom mestu
upravljanja, gde se povezuje preko ulaza i izlaza sa uređajima kao što su operatorski paneli,
motori, senzori, prekidači, ventili i sl. PLC kao i svaki računar ima operativni sistem, koji
svakako ima mnogo manje mogućnosti od operativnih sistema opšte namene, ali u današnje
vreme opšte potrebe za komunikacijama, može u potpunosti da ih podrži. Stoga je moguće
izvesti povezivanje programabilnih logičkih kontrolera (PLC-a) i eventualno centralnog
računara ili drugih računara, radi rešavanja složenijih upravljačkih zadataka ili jednostavne
akvizicije podataka i upravljanja sa daljine. Mogućnosti komunikacije među PLC uređajima
su tako velike da omogućavaju visok stepen iskorišćenja i koordinacije procesa, kao i veliku
fleksibilnost u realizaciji upravljačkog procesa, tako da mogućnost komunikacije kao i
fleksibilnost predstavljaju glavne prednosti primene rešenja sa PLC uređajima.
PLC kontroler je elemenat automatizovanog sistema, koji na osnovu prihvaćenih
ulaznih signala sa ulaznih uređaja, po određenom programu, formira izlazne signale sa kojima
upravlja izlaznim uređajima. U automatizovanom sistemu, PLC kontroler je obično centar
upravljanja. Izvršavanjem programa smeštenog u programskoj memoriji, PLC neprekidno
posmatra stanje sistema preko ulaznih uređaja. Na osnovu logike implementirane u programu,

7
PLC određuje koje akcije trebaju da se izvrše na izlaznim uređajima. Za upravljanje složenim
procesima moguće je povezati više PLC kontrolera među sobom ili sa centralnim računarom.
Ulazni uređaji čije signale prihvata PLC, mogu biti vrlo različiti. Po tipu signala koji
daju na svom izlazu mogu se podeliti na digitalne (kontaktne prirode ON / OFF) i analogne.
Karakteristični digitalni ulazni uređaji su tasteri, prekidači, krajnji prekidači, fotoćelije,
presostati, termostati i dr. Karakteristični analogni ulazni uređaji su termoelementi, otpornički
termometri i drugi pretvarači električnih i neelektričnih veličina u standardne strujne i
naponske signale. Ulazni signali pri tome se moraju prilagoditi sa odgovarajućim PLC
ulaznim modulima. Ulazni moduli konstruišu se za prihvatanje jednosmernih i naizmeničnih
električnih signala naponskih nivoa od 10 do 250V, strujnih nivoa od 0(4) do 20mA, signala
na TTL nivou, impulsnih ulaza sa brojačkim ili interapt prihvatom i slično.
Izlazni uređaji kojima upravlja PLC na osnovu programa i stanja na ulazima mogu biti
releji, kontaktori, elektromagnetni ventili, elektromotori, step motori, pneumatski cilindri i
drugi slični uređaji. Takođe kao ulazni uređaji mogu se podeliti na digitalne i analogne, pri
čemu se izlazi PLC kontrolera moraju prilagoditi potrebnim naponskim i strujnim nivoima.
Digitalni izlazi PLC kontrolera su obično galvansko izolovani kontaktni, ili bez povećane
galvanske izolovanosti sa trijakom ili tranzistorom sa otvorenim kolektorom ili TTL izlazom.
Prihvat ulaza, obrada i ispis izlaza se ponavlja u skladu sa unesenim programom,
određene dužine trajanja, zavisne od broja ulaza i izlaza i složenosti algoritma i vrste
primenjenog procesora. Programski ciklus se sastoji od četiri faze. Pri inicijalizaciji, pri
uključenju, PLC prvo proverava moguće greške u svom hardveru i softveru. Ako ih ne
pronađe, preuzima stanja ulaza (iz registara ulaza) i kopira njihove vrednosti u memoriju na
zato predviđene lokacije. Taj postupak se naziva ulazni sken a podaci u memoriji se nazivaju
slika ulaza. Koristeći ulazne podatke, odnosno njihovu sliku, procesor izvršava programske
naredbe kojima su definisane odgovarajuće aritmetičko-logičke funkcije u fazi koja se naziva
programski sken. Pri tom se rezultati obrade smeštaju u zato predviđeno memorijsko područje
nazvano slika izlaza. Po završetku programskog skena u fazi nazvanoj izlazni sken podaci iz
slike izlaza prenose se na izlaze (registre izlaza). PLC nakon izlaznog skena pokreće nanovo
čitav ciklus, proverava greške itd. Provera da li se programski ciklus izvodi pravilno, izvodi se
uz pomoć hardverskog „watchdog“ tajmera, koji se proziva u svakom skenu i predstavlja
osnovnu garanciju sigurnog rada. Ako se tone dogodi signalizira se greška u samom programu
ili kvar na opremi kontrolera. Na taj način štiti se sistem upravljanja, na primer od ulaska u
beskonačnu petlju. U zavisnosti od primenjenog tipa procesora u PLC-u, ulazni i izlazni sken
izvršavaju se u vremenu reda milisekundi (0.1 do 3ms), tako da se ciklus obrade ponavlja 10

8
do 100 puta u sekundi. Trajanje skena ciklusa obrade, posebno programskog dela zavisi od
veličine programa.

9
2.1.2 Koračni motor
Motor ostvaruje diskretne, odnosno koračne mehaničke pomeraje, zato su dobili naziv
koračni motori. Osnovna karakteristika koračnih motora je koračni način okretanja osovine
motora. Jedan obrt osovine motora sastoji se od tačno određenog broja uglovnih koraka koji
opet zavise od konstrukcije motora. Pod pojmom koraka podrazumeva se pomeraj pri kome se
osovina motora zaokrene za jedan koračni ugao. Koračni motori su u suštini elektromehanički
pretvarači energije, koji impulsnu (koračnu) električnu pobudu pretvaraju u koračni
mehanički pomeraj. Za koračne motore se takođe koristi i naziv step motori. Oni spadaju u
sinhrone mašine čija se brzina kontroliše učestanošću impulsa, a pozicija tj. pomeraj sa
brojem impulsa koji se dovode na statorske namotaje. S obzirom na svoje konstruktivne
osobine, koračni motori su naročito pogodni za start-stop kretanja gde se zahteva naglo
ubrzanje. U osnovi koračni motori se mogu koristiti kao:
- Jednosmerni motori sa elektronskom komutacijom, sinhroni motori, digitalno
upravljani motori, servo motori bez povratne veze, inkrementalni motori, motori sa
promenljivom frekvencijom i brzinom, digitalno-analogni konvertori,brojači impulsa.
Osim toga koriste se još i za/u:
- Štampače, uređajima za pogon memorijskih diskova, X-Y plotere, obrtnim stolovima,
uređajima za pozicioniranje, hidrauličnim uređajima kao pilot motori, mašinama za
namotavanje, brojačima, tahometrima, robotici i tako dalje.

Slika 2.1.2. Izgled koračnog motora

Osnovna svojstva koračnih motora su:


- Rezolucija predstavlja količnik ugla od 2π i broja koraka po obrtaju.

Često se u katalozima za ovaj podatak kaže samo korak. Na primer, korak je 1,8°.

10
- Odziv kraka govori o tačnosti i oscilatornosti koračnog motora. Snima se
karakteristika jednog koraka koja je prikazana na slici 2.1.3. Sa slike se izvode
zaključci o prethodno pomenutim karakteristikama. Greška pozicije je od 1 do 5%.
Ova greška se javlja usled nesavršenosti konstrukcije motora i često se u katalozima
daje kao odstupanje koraka. Na primer, odstupanje koraka ±5%.

Slika 2.1.3. Karakterisitka koraka

- Statički moment motora, moment držanja (holding torque), uvek se daje u katalozima
jer predstavlja jednu od osnovnih karakteristika motora. Ovaj moment zavisi od snage
koračnog motora i obično se kreće od 0.1 Nm do 20 Nm.
- Dinamički moment motora (pull out torque) je moment koji zavisi od brzine obrtanja
motora tj. od frekvencije i ne daje se kao kataloški podatak.
Prednosti koračnih motora su:
- Niska cena.
- Male dimenzije i masa.
- Često se isporučuju sa upravljačkom elektronikom.
- Jednostavno upravljanje i velika funkcionalnost.
- Ne akumulira se greška položaja.
- Mogućnost regulacije u otvorenoj petlji.
- Ne zahteva se održavanje.
- Stabilan rad pri malim brzinama.
Nedostaci koračnih motora su:
- Fiksni korak.
- Mala efikasnost.
- Opterećenja sa velikim momentom inercije prave probleme pri zaustavljanju.
- Teško upravljanje na velikim brzinama.

11
2.2 Serijska komunikacija - RS232 protokol

RS232 standard potpuno definiše jednu vrstu asinhrone serijske komunikacije. Standard
prvo definiše tip, strukturu i moguće brzine prenosa serijske poruke bitova. Zatim, pošto je u
pitanju asinhrona komunikacije i poruka može krenuti u bilo kom vremenskom trenutku,
definisani su i načini detekcije starta i kraja poruke, kao i sinhronizovano čitanje poslate
poruke od strane prijemnika.

Slika 2.1. RS232 kabal preko koga računar šalje podatke PLC-u

Standard takođe definiše fizički nivo prenosa poruke. Definisani su naponski nivoi na
liniji u toku prenosa poruke kao i hardver potreban za predaju i prijem poruke po RS232
standardu, čemu moraju da se pridržavaju svi RS232 primopredajnici.
Po RS232 standardu informacija se šalje u vidu niza bitova na fizičkoj liniji veze. Ovi
bitovi informacije su grupisana u vidu digitalnih reči. RS232 standard dozvoljava promenjivu
dužinu reči, od 5 and 8 bitova. Ovo je broj bitova koji nose informaciju u jednoj RS232
poruci ili paketu. Vazno je da se i prijemnik i predajnik podese na jednaki broj bitova koji
nose informaciju, inače dolazi do lošeg prenosa poruke. Za potpun prenos standard definiše
dodatne bitove za sinhronizaciju i detekciju greške. Prisustvom ovih dodatnih
sinhronizacionih bitova u poruci se gubi na vremenu i smanjuje se propusni opseg. Nadalje,
pogrešno sinhronizovani prijemnik može u pogrešno vreme početi čitati poruku i dolazi do
greške. Tada je potrebno ponovo uspostaviti sinhronizaciju i dodatno se gubi na vremenu.
Asinhroni prenos se i dalje najviše koristi jer je jeftiniji (nema clock liniju) i otporniji je na
šum, ali za veoma brze prenose se i dalje koristi sinhrona komunikacija.
Standard takođe definiše predefinisanu frekvenciju prenosa, broj bita poslatih u sekundi,
koja se naziva baud rate. Kada predajnik prepozna start bit, on računa u kojim sledećim

12
trenucima stižu ostali bitovi poruke. Za taj račun se koristi unapred definisana baud rate, koja
u prijemniku i predajniku mora biti isto podešena, inače dolazi do greške.
RS232 standard dozvoljava samo dva fizička stanja na liniji za prenos. Prvi naponski
nivo je -12V na liniji koji predstavlja ON stanje ili broj 1 ili marker. Drugi naponski nivo je
+12V na liniji koji predstavlja OFF ili broj 0 ili prazno mesto. Kada nema transfera poruke,
linija je na -12V što predstavlja stanje logičke 1 ili binarni broj 1. Za razliku od neaktivnih
-12V, prvi bit u poruci je START bit i uvek je naponskog nivoa +12V, time signalizira
početka poruke.

Slika 2.32 Logički i naponski nivoi tipičnog RS232 paketa bitova. Prikazani paket prenosi 8
bitova (jedan 8 bitni karakter, 0xA6), kao primer je uzet bit parnosti 1, koriščen je samo
jedan STOP bit

Start bit. Bit služi da prijemnik detektuje start, koji može početi u bilo kom momentu.
START bit ima logički nivo 0, koji se razliku je od logičke 1 tokom neaktivne linije i njime
uvek počinje RS232 poruka. Taj bit se često naziva i ATTENTION bit (pažnja!). Na RS232
liniji to je +12V koji se lako može razlikovati u odnosu na neaktivnih -12V.
Data bitovi. Bitovi idu redom nakon START bita. Bit 1 dovodi do -12V, bit 0 do +12V
na RS232 liniji. Bit najmanjeg značaja (LSB – the least significant bit) je uvek prvi za slanje.
Parity bit. Bit parnosti služi za eventualnu detekciju greške i može se ugraditi u RS232
poruku, nakon zadnjeg MSB bita poruke a pre STOP bita. Ovaj bit postavlja predajnik tako
što unapred proveri broj jedinica u poruci. Primljene bitove prebrojava i prijemnik i vrši
poređenje svog rezultata parnosti sa primljenim bitom parnosti. Bit parnosti se postavlja na 1
ako je broj jedinica u informacionog delu poruke (bez START i STOP) paran, i na 0 ako je
broj jedinica neparan. Ovo važi ako je RS232 veza u even parity modu koji zahteva da ukupan

13
broj jedinica u poruci (bez STOP) bude neparan. Za slučaj odd parity logika je obrnuta. Za
pravilan rad veze neophodno je da i prijemnik i predajnik imaju podešen isti tip parnosti. Ovo
nije savršen način za detekciju greške pošto prijemnik dobija isti bit parnosti u slučaju parnog
broja grešaka na prijemu. Korišćenje bita parnosti je uobičajeno nedovoljna provera tačnosti
prenosa, pogotovo u šumom zagaženoj sredini. Zato se često koriste razne CRC i LRC
metode kojima se proverava tačnost celokupne RS232 poruke, koji se računaju i porede nakon
što su svi RS232 paketi primljeni. Drugi način je primena protokola visokog nivoa, koji u sebi
ima ugrañene mehanizme za detekciju greške u poruci. Stop bits STOP bit zatvara okvir
poruke. U slučaju da je prijemnik pogrešio u sinhronizaciji.
STOP bit. Bit daje novu šansu za resinhronizaciju. Ako prijemnik detektuje logičku 0 na
mestu STOP bita, (do ovog mesta je došao korišćenjem unapred definisane baud rate) on
uočava grešku i prekida prijem poruke. Ovo se zove framing error, greška okvira. Ovim se
ispostavilo da bitovi informacije nisu unutar definisano okvira, t.j. okruženi START i STOP
bitovi, koji se moraju pojaviti u preko baud rate jasno definisanom vremenskom okviru.
Resinhronizacija se radi tako što prijemnik opet prati okvir poruke, i očekuje START i STOP
bit u jasno definisanom razmaku. Time je prijemnik sposoban i da prepozna baud rate
pristigle poruke i da se nakon određenog vremena sinhronizuje na tu novu brzinu transfera.
Procedure za baud rate sinhronizaciju dva primopredajnika uvek izbegavaju slanje svih 0 u
informacionom delu paketa jer prijemnik može da ih pomeša sa STOP bitom. Po RS232
standardu, STOP bit može imati više bitski dužina. Ako je STOP bit duži od ostalih , to
ustvari definiše minimalno vreme u toku koga linija mora biti u idle state, t.j. neaktivna. Ovaj
deo standarda je podrška sporim ureñajima. Obično se STOP bit postavlja trajanja 1, 1.5 or 2
bita.
RS232 standard ima posebne linije za prijem i predaju tako da dva primopredajnika
mogu istovremeno da šalju i primaju podatke. Nije važno ni ko je prvi ni kada počeo, dve
linije su potpuno nezavisne. Ukoliko se to programski i ostvari onda dobijamo full duplex
vezu. U ovoj varijanti veze oba primopredajnika su jednakog značaja. Neki primopredajnici
i/ili linijski driveri ne mogu istovremeno da primaju i šalju podatke. U tom slučaju se
projektuje half duplex veza. Ovo znači da je komunikacija dvosmerna ali nije potpuna
dvosmerna jer se odgovor šalje tek nakon prijema pitanja. U ovim sistemi uglavnom postoji
jedan gazda na liniji (master) koji započinje komunikaciju i čeka odgovor od svoga
podređenog (slave).

14
Prvobitna verzija RS232 standarda dozvoljava brzine prenosa do 20kb/s i uvodi limite
naponskih signala koji su odgovarali opremi u to vreme. Sada su te granice malo pomerene i
nove verzije standarda dozvoljavaju veće brzine prenosa i veće promene naponskih nivoa.
Logička jedinica je definisana sa negativnim naponom -12V, dok je logička nula
definisana sa pozitivnim naponom +12V. Limiti su prikazani u sledećoj tabeli.

Tabela 1. Limiti napona na predajniku i prijemniku

Na osnovu tabele se vidi da pojedini uređaji mogu dati i -9V, ili -5V za stanje logičke 1, bitno
je da je napon u okvirima definisanim standardom. Naravno, na mali nivo napona lako utiče
šum tako da su ±12V i dalje optimalni naponski nivoi koji sa jedne strane daju robusnu
komunikaciju otpornu na šum, dok sa druge strane nisu blizu maksimalnim vrednostima na
prijemnoj strani.

RS232 standard ima jasan odgovor na ovo pitanje, dužina kabla je ne veća od 15.24
metara (50 feet) ili kapacitansa kabla ne sme biti veća od 2500 pF. Manja kapacitivnost kabla
dozvoljava i duže daljine. Ovo važi za baud rate od 20kb/s, dozvoljena dužina kabla se
umnogome uvećava kada se smanji brzina prenosa, kao što je prikazano u sledećoj tabeli.

Tabela 2. Maksimalna dužina kabla u zavisnosti od brzine prenosa

15
3. APLIKACIJA

Kao što smo ranije napomenili sama aplikacija se sastoji iz dva dela, aplikativnog i
upravljačkog. U Java okruženju napravili smo aplikaciju koja će parametarizovati datu sliki
kao i dati neki uvid modela mozaika kako će izgledati. U aplikaciji za programiranje PLC,
Somachine dato je upravljanje koračnih motora u zavisnosti prijemnih podatka koji su
obrađeni od stane Java aplikacije koji su primljeni preko serijskog protokola RS232.

3.1 Java Aplikacija

Na slici 3.1 prikazan je GUI aplikacije koja je izradjena obradu slika, samo korišćenje
aplikacije je veoma jednostavno. Naravno moramo uzeti da sa pogleda dizajnera može se
daleko bolje unaprediti ali u ovom projektu naše glavni fokus je bila funkcionalnos pre
dizajna.

Slika 3.1. GUI Jave aplikacije

16
U sledećim rečenicama prikazaćemo samu logiku biranja boja u odnosu na zadate boje i
biranje dominatne boje u blokovima i deljenje slike u manje isečke.
Funkcija koja bira dominatnu boju bira tako sto izabere srednju boju datog bloka to jest
isečka slike, tako što broji piksele i sabira njihove koeficijente R,G i B.

private Color DominantnaBoja(BufferedImage image)


{
// funkcija daje srednju boju slike tako sto svaki piksel sabira u jednu boju
// pa je podeli sa brojem piksela
// Dobija se srednja boja koja je u osnovi najzastupljenija nijansa boje u slici
int r=0,g=0,b=0,k=0,x,y;// pocetni koeficijenti
for(x=0;x<image.getWidth();x++)
for(y=0;y<image.getHeight();k++)
{ // uzima boju sa slika sa kordinate x,y
Color c=new Color(image.getRGB(x,y++));
//saberi koeficijenti sa prethodnim
r+=c.getRed();
g+=c.getGreen();
b+=c.getBlue();
}
Color boja= new Color(r/k, g/k, b/k); // vrati srednju boju
}

Funkcija koja bira koju će boju iz palete izabrati rešava na način poređenja
koeficijenata R,G i B.
private int RGBDifferenceSquaredInteger(int r1, int g1, int b1, int r2, int g2,
int b2) {
int deltaR = r1-r2;
int deltaG = g1-g2;
int deltaB = b1-b2;
return deltaR*deltaR + deltaG*deltaG + deltaB*deltaB;
}

private int BojaIzPalete (ArrayList<Color>colorTable,Color pixel)


{

// kreiranje pocetnih koeficijenata


int r = pixel.getRed();
int g = pixel.getGreen();
int b = pixel.getBlue();
Color tableColor = colorTable.get(0);
int r1 = tableColor.getRed();
int g1 = tableColor.getGreen();
int b1= tableColor.getBlue();
// dodeljivanje pocetne vrednosti za minimalnu razliku boje
float minDst =RGBDifferenceSquaredInteger(r, g, b, r1, g1, b1);
int minIndex = 0;
// ispitaj iz tabele kojoj boji je najpriblizniji
for(int i = 1; i < colorTable.size(); ++i) {
tableColor = colorTable.get(i);
int r2 = tableColor.getRed();
int g2 = tableColor.getGreen();
int b2= tableColor.getBlue();
float dst =RGBDifferenceSquaredInteger(r, g, b, r2, g2, b2);
if(dst < minDst) {
17
minDst = dst;
minIndex = i;
}
}

return minIndex; // vrati index boje koja je najpribliznija


}

Funkcija koja deli sliku u blokove.

private void delitiSliku ( int rows, int cows, BufferedImage image )


{
// inicijalizacija pocetnih vrednosti
int chunkWidth = image.getWidth() / cows;
int chunkHeight = image.getHeight() / rows;
// kreiranje slike tipa RGB formata
finalImg = new BufferedImage(chunkWidth*cows, chunkHeight*rows,
BufferedImage.TYPE_INT_RGB);
int count=0;
for (int x = 0; x < rows; x++) {
for (int y = 0; y < cows; y++) {
// kreiraj blok slike
BufferedImage bf = new BufferedImage(chunkWidth,
chunkHeight, image.getType());

// crtaj sliku virtualno


try {
Graphics2D gr = bf.createGraphics();
gr.drawImage(image, 0, 0, chunkWidth, chunkHeight,
chunkWidth * y, chunkHeight * x, chunkWidth * y + chunkWidth, chunkHeight * x +
chunkHeight, null);
gr.dispose();
// sledi red koda koja ispituje dominatne boje i njihove kordinate u mozaiku
Color boja= DominantnaBoja(bf);
int boja_paleta=BojaIzPalete(colorTable, boja);
KordinateBoja temp= new KordinateBoja(x, y,
boja_paleta);
KB.add(temp);
/////
BufferedImage bi = new BufferedImage(chunkWidth,
chunkHeight, BufferedImage.TYPE_INT_RGB);
Graphics2D ig2 = bi.createGraphics();

ig2.setBackground(colorTable.get(boja_paleta));
ig2.clearRect(0, 0, chunkWidth, chunkHeight);

finalImg.createGraphics().drawImage(bi, chunkWidth
* y, chunkHeight *x , null);

////

} catch (Exception e) {
18
System.out.println("EROR");
// TODO: handle exception
}

}
}}

19
Važna napomena jeste podešavanje serijskog porta sa strane Java aplikacije preko koga
šalje podatke u vidu niza karaktera. Prikaz podešavanja serijskog porta.

chosenPort = SerialPort.getCommPort(portList.getSelectedItem().toString());

chosenPort.setComPortTimeouts(SerialPort.TIMEOUT_SCANNER,0,0);

chosenPort.setComPortParameters(9600,8, 1, SerialPort.EVEN_PARITY);
Podešavanje porta mora biti isto kao i na strani PLC.

Slika 3.2. Podešavanje porta na strain PLC-a

20
3.2 PLC Aplikacija

Na slici 3.2 prikazana je Index strana koja poziva funkcije i zaokružuje jednu celinu
slaganja mozaika.

Slika 3.2. Prikaz Index stranje

Glavna funkcije to jest blokovi su POU_SLAGANJE_PLOCICA i


POU_PRIMANJE_PODATAKA_PORT. POU_SLAGANJE_PLOCICA ima za sebe zadatak

21
da na osnovu dobijenih parametara slaže određene boje pločica na date koordinate . Podatke
na osnovu koje dobija obrađuju se u bloku POU_PRIMANJE_PODATAKA_PORT. Dati
blok prima podatke preko serijskog porta preko koga Java aplikacija šalje dva niza podata.
Prvi niz podataka daje konfiguraciju mozaika i dužinu drugog niza. Drugi niz daje redosled
datih boja koji će se slagati na datim koordinatama.

Slika 3.3. POU_PRIMANJE_PODATAKA_PORT

Funkcija POU_SLAGANJE_PLOCICA, izgled.


// pomeri motore na prvu paletu
IF tempx=FALSE AND tempy=FALSE AND exe = TRUE THEN

tempx:=POU_Upravljanje_X_motora(TRUE,1000,INT_TO_DWORD(plocica/2),PTO_POSI
TIVE);

22
tempy:=POU_Upravljanje_Y_motora(TRUE,1000,INT_TO_DWORD(plocica/2),PTO_POSI
TIVE);
END_IF
// uzmi prvu boju iz palete
IF tempx=TRUE AND tempy=TRUE THEN

temp1:=POU_Upravljanje_Y_motora(TRUE,1000,INT_TO_DWORD(niz_vr_polja[p]*1*plo
cica),PTO_POSITIVE);
Xt:=0;
Yt:=niz_vr_polja[p]+1;
p:=p+1;
END_IF
IF temp1=TRUE THEN
i:=1;
j:=1;
WHILE i <= x DO

WHILE j <=y DO
tempexe:=TRUE;
temp:= POU_Racunaj_put(tempexe,i,j,Xt,Yt);// prebaci plocicu
na date kordinate
WHILE temp=FALSE DO
// petlja- nedozvoljava programu da krene dalje sve dok motori
ne zavrse kretanje

END_WHILE
Xt:=i;
Yt:=j;
IF temp= TRUE THEN
tempexe:=FALSE;
tempexe3:=TRUE;
temp:=FALSE;
23
END_IF
IF(i<=x AND j<y) THEN
temp3:=POU_Racunaj_put(tempexe3,0,niz_vr_polja[p]
+1,Xt,Yt); // idi do date plocice sa palete
WHILE temp3=FALSE DO
// petlja- nedozvoljava programu da krene dalje sve dok
motori ne zavrse kretanje

END_WHILE
temp3:=FALSE;
tempexe:=FALSE;
Xt:=0;
Yt:=niz_vr_polja[p]+1;
END_IF

j:=j+1;
END_WHILE
j:=1;
i:=i+1;

END_WHILE
done:=TRUE; // kada je zavrsio slaganje salji signal
END_IF
IF done= TRUE THEN // resetuj pocetne vrednosti
exe:=FALSE;
tempx:=FALSE;
tempy:=FALSE;
temp1:=FALSE;
p:=1;
END_IF

24
4. ZAKLJUČAK

Sam projekat nije u celosti uradjen, samo je kroz niz simulacija ispitano korišćenje
funkcija i funkcionalnih blokova koji su davali na kraju pozitivne rezultate. Preostalo je da se
isprojektuje fizička konstrukcija . U ovom seminarskom radu samo smo dali idejno i
softversko rešenje . U daljem planu je konačna realizacija projekta. Kroz samu softversku
realizaciju projekta upoznali smo se kroz različite načine obrade slika, kretanja objekta kroz
zamišljenu matricu i načine komunikacije izmeđju računarske aplikacije i PLC-a. Naravno,
ovo je samo jedna od funkcionalnosti koje se može ostvariti povezivanjem neke objektno
orjentisane aplikacije sa PLC-om. Samo stvaranje ovog projekta otvara prozor u nove projekte
koje će naredne generacije studenata kreirati.

25
ЛИТЕРАТУРА

[1] https://www.automatika.rs
[2] Programmable Logic Controller, InTech, 2010
[3] Schnider Electric, Modicon M238 Logic Controler, Programing Guid 10/2010
[4] http://www.otpornik.com

26

You might also like