Šta je praktičnije: objektno-programiranje PLC-a ili ljestvica logika?

Aug 03, 2026 Ostavi poruku

U polju industrijske automatizacije, merdevina logika ostaje jedan od najčešće korišćenih programskih jezika; međutim, za složenije kontrolne objekte, objektno{0}}orijentisano programiranje je svakako vrlo efikasan pristup. Hajde da prvo razgovaramo o objektno-orijentisanom programiranju:


Objektno-programiranje je napredna paradigma programiranja na računarskim jezicima-visokog nivoa. Ova filozofija dizajna se takođe može primeniti na PLC programe u industrijskim kontrolnim sistemima. Iako ne možemo implementirati mnoge odlične karakteristike objektno-orijentisanog programiranja-kao što je "nasljeđivanje"-i PLC jezik možda čak i ne posjeduje karakteristike objektno-orijentisanog programskog jezika, osnovni koncepti objektno-orijentisanog programiranja su klase i instance klasa (tj. objekti). Trebamo samo koristiti ove koncepte. U kompjuterskom programiranju, moramo da apstrahujemo i generalizujemo određene entitete da bismo definisali klase. U industrijskim kontrolnim sistemima, međutim, kontrolni objekti kao što su motori i ventili su jasno definisane kontrolne kategorije; možemo direktno definisati klase za njih bez potrebe za apstrakcijom. Sljedeći odjeljci će koristiti Siemens-ov Step7 programski jezik i Schneiderov Unity programski jezik za objašnjenje objektno-programiranja za PLC-ove.


I. Metode implementacije


Objektno-programiranje u koraku 7 implementirano je korištenjem funkcionalnih blokova (FB). Kada se ova tema pojavi, ljudi često pomisle na modularni pristup programiranja koji je predložio Siemens. Zaista, ovo je isti koncept, ali termini kao što su "modularizacija", "blokovi podataka u pozadini" i "više pozadina" koje je uveo Siemens ne dozvoljavaju uvijek korisnicima da jasno razumiju i primjene ovu izvrsnu filozofiju dizajna.


Međutim, ako tome pristupite iz perspektive objektno{0}}orijentisanog programiranja, možete steći mnogo bolje razumijevanje ovog dizajna. "FB blok" se smatra "klasom"; može se posmatrati kao grupiranje koda za slične kontrolne objekte. Na primjer, za MM440 varijabilni -frekventni pogon, možete napisati FB blok pod nazivom "MtrMM440." U objektno-orijentisanom programiranju, ovo se zove "klasa". Kada trebate programirati kontrolu za određeni motor, možete mu dodijeliti pozadinski DB blok-u objektno-programiranju, to se zove implementacija klase (tj. kreiranje instance klase: objekt). Kada trebate kontrolirati više motora, ovom FB bloku možete dodijeliti različite pozadinske DB-ove, što je ekvivalentno kreiranju višestrukih instanci klase.


Korak 7 sadrži drugu vrstu programskog bloka: FC blok. Programiranje prvenstveno koristeći FC blokove se u Siemens sistemima naziva strukturiranim programiranjem, koje se može analogirati proceduralnim programiranjem u kompjuterskom programiranju-to jest, programiranje koje je isključivo zasnovano na funkciji-.


Programiranje sa Schneiderovim Unity softverom omogućava bolje razumijevanje objektno{0}}orijentisanog programiranja. Njegove DFB definicije uključuju ulazne/izlazne parametre, privatne/javne varijable i implementaciju koda-koji su upravo osnovni elementi "klase" u računarskom objektno-orijentisanom programiranju. Kreiranje instance klase (objekta) je jednostavno kao kreiranje regularne "Boolean" varijable; samo trebate definirati varijablu ove "klase" u "Funkcionim blokovima."


I Step7 i Unity podržavaju proceduralne i objektno{1}}orijentisane pristupe programiranja. Razlika između ova dva pristupa je slična razlici između programiranja u C i C++ u računarskim jezicima visokog-nivoa.


U sljedećem objašnjenju, FB-ovi u koraku 7 i DFB-ovi u Unity-u će se nazivati ​​"klasama", dok će se kombinacija FB-a i pozadinskog DB-a u koraku 7, kao i instance DFB-a u Unity-u, nazivati ​​"objektima".


II. Objektno-Arhitektura orijentirana programiranja


Gornja diskusija pokriva detalje implementacije, ali filozofija programiranja je izgrađena na arhitekturi programa. Jednostavno korištenje objektno-orijentiranih metoda u određenom dijelu koda ne znači da je cijeli program objektno-orijentisan. Ova vrsta programiranja zahtijeva pristup zasnovan na sljedećim aspektima:


1. Dizajn strukturiranih kola.


Ovaj dio se prvenstveno fokusira na automatizirane proizvodne linije; za samostalne alatne mašine može se koristiti pojednostavljena struktura:


<1>Sloj automatizovane proizvodne linije: Ovo je najviši nivo, sa glavnim PLC-om koji kontroliše različite zone ispod njega.

<2>Sloj projekta: Ovaj sloj ima nezavisni sistem distribucije energije, ali nema PLC; sastoji se samo od distribuiranih modula koje kontroliše automatizovana proizvodna linija. Kao što naziv govori, poseduje visok stepen nezavisnosti i može se projektovati i proizvoditi kao poseban projekat. Kada je automatizovana proizvodna linija relativno mala, ovaj sloj se može izostaviti.

<3>,Funkcionalni nivo grupe: Na osnovu procesnih podjela, segmenti opreme koji obavljaju određenu procesnu funkciju grupišu se u funkcionalnu grupu. Ova grupa pripada inženjerskom nivou; kada je nivo inženjeringa izostavljen, on pripada nivou automatizovane proizvodne linije. Objektno-programiranje ne zahtijeva nužno korištenje gornje strukture, ali dobro-dizajnirana električna struktura je pogodnija za objektno-programiranje.


2. Sva logika za bilo koji kontrolni objekat implementirana je unutar "klase".


Da bi se to postiglo, potrebno je analizirati informacije vezane za kontrolni objekt. Na primjer, za motor se moraju uzeti u obzir sljedeće relevantne informacije:


Ulazne informacije:


<1>,Informacije o zaštiti strujnog kruga, kao što su prekidač motora i termalni relej.

<2>,Informacije o funkciji zaštite, kao što su granični prekidači za motore za kretanje, prekidači pritiska za ventilatore i prekidači nivoa ulja za uljne pumpe.

<3>Uvjeti pokretanja i zaustavljanja: Iako gore spomenuta zaštita strujnog kruga i funkcionalna zaštita mogu uzrokovati prestanak rada motora, a resetiranje može pokrenuti ponovno pokretanje, ovdje se spominju uvjeti za pokretanje i zaustavljanje tokom normalnog rada-kao što su koraci u procesu sekvencijalne kontrole.

<4>Načini upravljanja: kao što su ručni i automatski.

<5>Resetovanje greške: Ponovno pokretanje sistema putem signala za resetovanje.


Izlazne informacije:

<1>Kontrolni izlazi, kao što je glavni kontaktor koji kontrolira motor.

<2>Izlazi informacija o statusu

<3>Greška izlazi


Informacije o pohranjivanju statusa:


Međuvarijable koje se koriste za implementaciju koda, kao i statusne varijable koje može čitati HMI. Integrirajte sve gore navedene informacije u jednu klasu i standardizirajte parametre klase što je više moguće. Međutim, još uvijek postoje neke razlike u poređenju sa programskim jezicima-visokog nivoa. Za Korak 7, standard koji treba slijediti je: struktura programa se implementira pomoću FC-ova, a kontrola objekata se implementira korištenjem FB-ova, kao što je ilustrovano sljedećim strukturnim okvirom (čija je električna struktura zasnovana na uvodu iznad): Ovo je samo gruba PLC programska arhitektura; dobra arhitektura bi trebala biti sveobuhvatnija i naučnija.


3. Pažljivo planirajte strukture podataka


Definiranje struktura podataka je ključno i trebali biste nastojati da objedinite ove strukture što je više moguće bez brige o prostoru za pohranu; Moderna PLC memorija je dovoljna za smeštaj velikih količina podataka. Vrijedi napomenuti da u koraku 7 trebate izbjegavati definiranje korisnički-definiranih tipova (UDT) izvan klasa kad god je to moguće; umjesto toga, definirajte ih unutar klasa. Iako ovo može rezultirati dupliranjem definicija iste strukture u različitim klasama, to povećava neovisnost klasa.


U sljedećim odjeljcima uporedićemo ova dva programska pristupa:


Prednosti objektno{0}}orijentisanog programiranja U poređenju sa lestvičastom logikom, objektno{1}}orijentisano programiranje nudi sledeće prednosti:

• Kod je prenosiv i lak za ponovnu upotrebu;

• Lako je koristiti matematičke funkcije, petlje i druge konstrukcije;

• Objektno-programiranje se predaje na gotovo svakom kursu kompjuterskog programiranja;

• Kod može raditi na različitim hardverskim platformama.


Da biste savladali objektno{0}}programiranje, prvo morate razumjeti koncept objekata i kako ih koristiti. Jednom kada je objekat ili klasa napisana, može se lako ponovo koristiti kroz više poziva. Na primjer, kreirajte objekt za kontrolu motora, koji upravlja svim ulazima, izlazima i greškama. Kada je potrebno, više motora se može kontrolirati instanciranjem ovog pojedinačnog kontrolnog objekta više puta. Ovo je poznato kao-instanciranje na zahtjev. Kada je potrebno kontrolisati više motora, ovaj pojedinačni objekt se može koristiti više puta. Poziva se kada je potrebno, a instance se kreiraju kako se koriste.


Svaka instanca svakog motora ima svoje karakteristike, kao što su zaustavljanje motora, rad motora, brzina motora i preopterećenje motora. Većina programiranja je završena kada je objekat prvi put kreiran. Ovo je drugačiji način razmišljanja od merdevine logike, i moćniji je jer jednom kada je objekat izgrađen, lak je za korišćenje i ponovnu upotrebu. Objektno-programiranje olakšava izvođenje složenih matematičkih funkcija, izračunavanja petlje, nizova i ugniježđenih potprograma. Praktično svaki kurs kompjuterskog programiranja-bilo u srednjoj školi, fakultetu ili online tutorijali-podučava ovaj koncept. Kreirani kod je prenosiv i može se izvoditi na različitim hardverskim platformama.


„Ledder logika prati format električnih merdevina dijagrama koji se koriste u sistemima upravljanja relejom, i većina ljudi može brzo da je nauči i savlada.“


Međutim, u poređenju sa lestvičastom logikom, objektno-orijentisano programiranje ima sledeće nedostatke:


• Veći trošak;

• Strmija kriva učenja;

• Otklanjanje kvarova nije posebno lako za osoblje za održavanje;

• Kompilacija je obično potrebna prije učitavanja izvornog koda u procesor.


U poređenju sa ljestvenom logikom, objektno-orijentirano programiranje često zahtijeva više memorije i veću procesorsku snagu, što rezultira većim troškovima. Učenje objektno{2}}orijentisanog programskog jezika može potrajati duže. Vjerovatno je potrebna nastava u učionici, a savladavanje osnovnih koncepata zahtijeva značajno vrijeme, praksu, testiranje i primjenu. Programeri moraju često proučavati objektno{5}}orijentisano programiranje da bi koristili tracere za praćenje koda ili debuggere za otklanjanje grešaka logike. Sa ovom vrstom-programiranja visokog nivoa, može biti teško implementirati-mogućnosti online praćenja u stvarnom vremenu.


Prije preuzimanja izvornog koda u kontroler, on se mora kompajlirati. Tipično, izvorni kod nije pohranjen u memoriji procesora. To znači da se mora voditi računa o izradi sigurnosne kopije izvornog koda, jer se kompajlirani kod obično ne može uređivati. Kod objektno-orijentisanog programiranja, fajlovi biblioteke moraju biti povezani sa drugim resursima koji se koriste tokom procesa kompilacije. Bez razumijevanja povezivanja i resursa, biće teško pokrenuti program.


Prednosti Ladder Logic:


Ladder logika je jednostavna i samo-dokumentirajuća metoda kodiranja-neki čak postavljaju pitanje da li se kvalifikuje kao programski jezik. Slijedi format ljestvica dijagrama koji se koriste u sistemima upravljanja relejem i većina ljudi ga može brzo naučiti i savladati. To je bio jedini programski jezik koji se naširoko koristi u oblasti automatizacije mašina već decenijama, i ostaće jedan od primarnih programskih jezika u industriji automatizacije u doglednoj budućnosti.


Vremenom, kako su ljudi iz različitih sredina i polja ušli u industriju, različiti programski jezici su uvedeni u komplet alata za industrijsku automatizaciju. To uključuje programiranje funkcijskih blokova, strukturirani tekst, programiranje stanja i sekvencijalne funkcionalne grafikone. Ova četiri programska jezika, zajedno sa lestvičastom logikom, čine standardne programske jezike definisane standardom Međunarodne elektrotehničke komisije (IEC) IEC 61131-3.


Logika koja stoji iza IEC 61131 je da ako se svaki dobavljač pridržava ovog standarda, tada bi-barem u određenoj mjeri-osoba trebala naučiti samo ovih pet programskih jezika kako bi se lako prebacivala između platformi koje nude različiti dobavljači. Međutim, to nije slučaj.


Isto se odnosi i na osnovnu merdevinastu logiku (kao što je upotreba relejnih kontakata i zavojnica); međutim, kada se programira, mora se naučiti sintaksa i korisničko iskustvo svakog dobavljača, kao i specifičnosti korištenja njihove platforme za programiranje. Uprkos nedostatku standardizacije, ljestvica logika nudi sljedeće prednosti u odnosu na objektno{1}}orijentirano programiranje:


• Pogodan je-za kontrolu mašina i procesa;

• Lakše je razumjeti jer se sam{0}}dokumentuje;

• Olakšava otklanjanje kvarova u kontrolisanom sistemu;

• Lako je otkloniti greške;

• Izvorni kod se obično može pohraniti u procesor.


Lader logika je dobro-prikladna za kontrolu mašina i procesa, posebno za automatske sisteme sa velikim brojem diskretnih ulaza i izlaza (I/O). Tokom godina, lestvičasta logika se takođe kontinuirano poboljšavala za rukovanje analognim I/O, čineći je pogodnijom za širok spektar aplikacija za kontrolu procesa.

 

U poređenju sa aplikacijama za kontrolu mašina, procesne aplikacije obično imaju veći udio analognih I/O.

Budući da je ljestvica logika lakša za korištenje od objektno-programiranja, mnogi vješti tehničari i inženjeri je mogu brzo naučiti. Logika je veoma sistematična i organizovana, a njena priroda-samodokumentovanja olakšava razumevanje i savladavanje. Prije nego što se uređaj aktivira, svaki red koda mora biti istinit. Ako postoji pet motora za upravljanje, potrebno je najmanje pet linija koda, što uvelike pojednostavljuje proces.

"Izvorni kod i deskriptori ljestvice se obično pohranjuju unutar kontrolera, eliminirajući potrebu za pristupom izvornom kodu i na taj način uklanjajući frustraciju koju programeri često doživljavaju kada pokušavaju razumjeti kompajlirane programe."

Za elektroinženjere i osoblje za održavanje, merdevina logika je veoma intuitivna. Iako ljestvica logika zahtijeva drugačiji način razmišljanja od objektno-orijentisanog programiranja, može se brzo savladati kroz učenje i potrebno je manje vremena za razumijevanje koda koji su napisali drugi. Kristalno je jasno kada je logika istinita, a kada lažna. Čak i oni sa ograničenim iskustvom u programiranju mogu lako shvatiti koncepte kao što su stanja uključeno/isključeno, napajanje zavojnice, varijable poređenja i uobičajene matematičke funkcije.
 

81e77660-9f31-11ed-bfe3-dac502259ad0.jpg

Jednostavan je i lak za korištenje, pojednostavljuje rješavanje problema i otklanjanje grešaka. Kada se prati logika, lako je razumjeti trenutne radne uvjete. Nije potrebna diploma softvera ili napredne vještine programiranja. Pomoću merdevine, osoblje za održavanje i inženjering može lako da prati proces i razume šta se dešava. Lader logika se može zamisliti kao tabela istinitosti: ako je logika na lijevoj strani istinita, logika s desne strane se aktivira.


Izvorni kod ljestvice i deskriptori se obično pohranjuju u kontroleru. Ovo eliminiše frustraciju koju programeri često doživljavaju kada pokušavaju razumjeti kompajlirani kod bez pristupa izvornom kodu-problem koji je također uobičajen u objektno-programiranju.


Međutim, u poređenju sa objektno{0}}orijentisanim programiranjem, merdevina logika takođe ima sledeće nedostatke:


• Računarski programeri i IT profesionalci nisu upoznati sa logikom ljestvice;

• Teško je obavljati matematičke funkcije, obradu teksta i obradu podataka;

• Oslanja se na vrijeme skeniranja;

• Zahteva specijalizovani hardver za izvršavanje, kao što je programibilni logički kontroler (PLC).


Ledder logika je simbolički jezik koji kompjuterski programeri i IT profesionalci nisu upoznati, jer ga ne uče u školi. Rukovanje matematičkim funkcijama, tekstualnim nizovima i podacima u ljestvenoj logici može biti teško, prvenstveno zato što ljestvica logika nije izvorno dizajnirana za rukovanje ovim funkcijama.


Lader logika također ovisi o vremenu skeniranja. Većim programima je potrebno više vremena za skeniranje i obradu logike. Prilikom izvršavanja lestvičaste logike, sistem čita ulaze, skenira logiku, ažurira tabele i izlaze podataka, obavlja komunikaciju, a zatim ponavlja ciklus. Karakteristike kao što su prekidi i druge tehnike programiranja mogu se implementirati kako bi se osiguralo brže izvršavanje određene logike.


Iako softverski{0}}bazirani PLC-ovi konfigurisani sa ljestvice logikom mogu raditi na PC-u, hardver (kao što je PLC) obično mora biti kompatibilan sa softverom za programiranje i najbolje je kupiti oba od istog dobavljača. Ovo osigurava kompatibilnost, ali nije posebno zgodno ako želite promijeniti dobavljača.


Pored poređenja prednosti i nedostataka ljestvice logike i objektno{0}}orijentisanog programiranja, korisnici bi također trebali procijeniti kako će se ovi programski jezici koristiti u okruženju u kojem će biti raspoređeni. Ako je fabrika ili postrojenje već standardizirano na ljestvenoj logici, zamjena sa objektno-orijentisanim programiranjem se ne preporučuje, čak i ako je ovo drugo pogodnije za aplikaciju. Kako upotreba objektno-orijentisanog programiranja nastavlja da raste, očekuje se da će koegzistirati sa ljestvice logikom u narednim decenijama. Profesionalcu za automatizaciju koji-budno razmišlja- bi bilo dobro da savlada oba jezika.

 

Pošaljite upit

whatsapp

Telefon

E-pošte

Upit