Na področju industrijske avtomatizacije ostaja lestvična logika eden najpogosteje uporabljenih programskih jezikov; vendar pa je za bolj zapletene nadzorne objekte objektno{0}}usmerjeno programiranje vsekakor zelo učinkovit pristop. Najprej se pogovorimo o objektno{2}}orientiranem programiranju:
Objektno-usmerjeno programiranje je napredna programska paradigma v-računalniških jezikih visoke ravni. To oblikovalsko filozofijo je mogoče uporabiti tudi za programe PLC v industrijskih nadzornih sistemih. Čeprav ne moremo implementirati mnogih odličnih lastnosti objektno-usmerjenega programiranja-kot je "dedovanje"-in jezik PLC morda sploh nima značilnosti objektno-orientiranega programskega jezika, so osnovni koncepti objektno-orientiranega programiranja razredi in primerki razredov (tj. objekti). Samo te koncepte moramo uporabiti. V računalniškem programiranju moramo nekatere entitete abstrahirati in posplošiti, da lahko definiramo razrede. V industrijskih krmilnih sistemih pa so krmilni objekti, kot so motorji in ventili, jasno opredeljene krmilne kategorije; zanje lahko definiramo razrede neposredno brez potrebe po abstrahiranju. V naslednjih razdelkih bosta uporabljena Siemensov programski jezik Step7 in Schneiderjev programski jezik Unity za razlago objektno{16}}usmerjenega programiranja za PLC-je.
I. Metode izvajanja
Objektno-usmerjeno programiranje v 7. koraku je implementirano z uporabo funkcijskih blokov (FB). Ko pride do te teme, ljudje pogosto pomislijo na modularno programiranje, ki ga predlaga Siemens. Dejansko gre za isti koncept, vendar izrazi, kot so "modularizacija", "podatkovni bloki v ozadju" in "več ozadij", ki jih je predstavil Siemens, uporabnikom ne omogočajo vedno jasnega razumevanja in uporabe te odlične oblikovalske filozofije.
Če pa k temu pristopite z vidika objektno-usmerjenega programiranja, lahko pridobite veliko boljše razumevanje tega oblikovalskega vzorca. "FB blok" se obravnava kot "razred"; nanj lahko gledamo kot na skupino kode za podobne nadzorne objekte. Na primer, za variabilni{4}}frekvenčni pogon MM440 lahko napišete blok FB z imenom "MtrMM440." V objektno-orientiranem programiranju se to imenuje "razred." Ko morate programirati krmiljenje za določen motor, mu lahko dodelite blok DB v ozadju-v objektno-usmerjenem programiranju, to se imenuje implementacija razreda (tj. ustvarjanje primerka razreda: objekt). Ko morate nadzorovati več motorjev, lahko temu bloku FB dodelite različne baze podatkov v ozadju, kar je enakovredno ustvarjanju več primerkov razreda.
Step7 vsebuje še eno vrsto programskega bloka: blok FC. Programiranje, ki primarno uporablja bloke FC, se v sistemih Siemens imenuje strukturirano programiranje, ki ga lahko primerjamo s proceduralnim programiranjem v računalniškem programiranju, -to je programiranje, ki temelji izključno na funkcijah-.
Programiranje s Schneiderjevo programsko opremo Unity omogoča boljše razumevanje objektno{0}}usmerjenega programiranja. Njegove definicije DFB vključujejo vhodne/izhodne parametre, zasebne/javne spremenljivke in implementacijo kode-, ki so natanko osnovni elementi »razreda« v računalniškem objektno-orientiranem programiranju. Ustvarjanje primerka razreda (objekta) je tako preprosto kot ustvarjanje navadne "logične" spremenljivke; le definirati morate spremenljivko tega "razreda" v "Funkcijskih blokih."
Tako Step7 kot Unity podpirata postopkovne in objektno-orientirane programske pristope; razlika med tema dvema pristopoma je podobna razliki med programiranjem v C in C++ v visoko{3}}računalniških jezikih.
V naslednji razlagi bodo FB-ji v koraku 7 in DFB-ji v Unity imenovani "razredi", medtem ko bodo FB-ji v kombinaciji z bazami podatkov v ozadju v koraku 7 in primerki DFB-jev v Unity imenovani "objekti".
II. Objektno{1}}orientirana programska arhitektura
Zgornja razprava zajema podrobnosti izvedbe, vendar programska filozofija temelji na programski arhitekturi. Preprosta uporaba objektno-orientiranih metod v določenem delu kode ne pomeni, da je celoten program-orientiran. Ta vrsta programiranja zahteva pristop, ki temelji na naslednjih vidikih:
1. Oblikovanje strukturiranega vezja.
Ta razdelek se osredotoča predvsem na avtomatizirane proizvodne linije; za samostojna strojna orodja se lahko uporabi poenostavljena struktura:
<1>Plast avtomatizirane proizvodne linije: To je najvišja raven, ki vključuje glavni PLC, ki nadzoruje različna območja pod njim.
<2>Projektna plast: Ta plast ima neodvisen sistem za distribucijo električne energije, vendar nima PLC-ja; sestavljen je samo iz porazdeljenih modulov, ki jih krmili avtomatizirana proizvodna linija. Kot pove že ime, ima visoko stopnjo neodvisnosti in se lahko načrtuje in izdeluje kot ločen projekt. Če je avtomatizirana proizvodna linija razmeroma majhna, se ta plast lahko izpusti.
<3>Raven funkcionalne skupine: Na podlagi procesnih zahtev so segmenti opreme, ki izvajajo določeno procesno funkcijo, združeni v funkcionalno skupino. Ta skupina spada v inženirsko raven; če je inženirska raven izpuščena, pripada ravni avtomatizirane proizvodne linije. Objektno-orientirano programiranje ne zahteva nujno uporabe zgornje strukture, vendar je dobro-načrtovana električna struktura bolj ugodna za objektno-orientirano programiranje.
2. Vsa logika nadzornega objekta je implementirana znotraj "razredov"
Da bi to dosegli, je potrebno analizirati informacije, povezane z nadzornim objektom. Na primer, za motor je treba upoštevati naslednje pomembne informacije:
Vhodne informacije:
<1>,Informacije o zaščiti tokokroga, kot sta odklopnik in termični rele motorja.
<2>,Informacije o funkcionalni zaščiti, kot so mejna stikala za motorje, tlačna stikala za ventilatorje in stikala za nivo olja za oljne črpalke.
<3>Pogoji za zagon in zaustavitev: Medtem ko zgoraj omenjena zaščita tokokroga in funkcionalna zaščita lahko povzročita zaustavitev motorja in ponastavitev lahko sproži ponovni zagon, se tukaj omenjeni pogoji nanašajo na pogoje za zagon in zaustavitev med običajnim delovanjem-, kot so koraki v zaporednem krmilnem procesu.
<4>Načini krmiljenja: ročni in samodejni.
<5>Ponastavitev napake: Ponovni zagon sistema prek signalov za ponastavitev.
Izhodne informacije:
<1>, Krmilni izhodi, kot je glavni kontaktor, ki krmili motor.
<2>,Izhodi informacij o stanju
<3>,Izhodi napak
Informacije o shranjevanju stanja:
Vmesne spremenljivke, ki se uporabljajo za implementacijo kode, kot tudi statusne spremenljivke, ki jih lahko bere HMI. Vse zgornje informacije integrirajte v en sam razred in čim bolj standardizirajte parametre razreda. Vendar pa je še vedno nekaj razlik v primerjavi s-programskimi jeziki na visoki ravni. Za 7. korak je standard, ki mu je treba slediti: programska struktura je implementirana z uporabo FC-jev, nadzor objektov pa je implementiran z uporabo FB-jev, kot je prikazano v naslednjem strukturnem ogrodju (katerega električna struktura temelji na zgornjem uvodu): To je zgolj groba arhitektura programa PLC; dobra arhitektura bi morala biti bolj celovita in znanstvena.
3. Previdno načrtujte podatkovne strukture
Definiranje podatkovnih struktur je ključnega pomena in prizadevati si morate čim bolj poenotiti te strukture, ne da bi pri tem skrbeli za prostor za shranjevanje; Sodobni PLC pomnilnik zadošča za velike količine podatkov. Omeniti velja, da se morate v koraku 7 izogibati definiranju uporabni-definiranih tipov (UDT-jev) zunaj razredov, kadar koli je to mogoče; namesto tega jih definirajte znotraj razredov. Čeprav lahko to povzroči podvojene definicije iste strukture v različnih razredih, povečuje neodvisnost razredov.
V naslednjih razdelkih bomo primerjali ta dva programska pristopa:
Prednosti objektno-orientiranega programiranja Objektno-orientirano programiranje ponuja naslednje prednosti v primerjavi z lestvično logiko:
• Prenosljivost kode in enostavnost ponovne uporabe;
• enostavnost uporabe matematičnih funkcij, zank in drugih konstruktov;
• Objektno{0}}usmerjeno programiranje se poučuje v skoraj vseh tečajih računalniškega programiranja;
• Koda se lahko izvaja na različnih platformah strojne opreme.
Če želite obvladati objektno{0}}usmerjeno programiranje, morate najprej razumeti koncept objektov in kako jih uporabljati. Ko je predmet ali razred enkrat napisan, ga je mogoče preprosto znova uporabiti z več klici. Ustvarite na primer objekt za nadzor motorja, ki obravnava vse vhode, izhode in napake. Po potrebi je mogoče krmiliti več motorjev tako, da večkrat ustvarite ta posamezen nadzorni objekt. To je znano kot instanciranje na-na zahtevo. Ko je treba krmiliti več motorjev, je mogoče ta posamezen predmet uporabiti večkrat. Pokliče se, ko je to potrebno, primerki pa se ustvarijo, ko se uporabljajo.
Vsak primerek vsakega motorja ima svoje značilnosti, kot so zaustavitev motorja, delovanje motorja, hitrost motorja in preobremenitev motorja. Večina programskega dela je končana, ko je objekt prvič ustvarjen. To je drugačen način razmišljanja od lestvične logike in je močnejši, ker ko je objekt zgrajen, ga je enostavno uporabiti in ponovno uporabiti. Objektno -usmerjeno programiranje olajša izvajanje zapletenih matematičnih funkcij, izračunov zank, nizov in ugnezdenih podprogramov. Skoraj vsak tečaj računalniškega programiranja-bodisi v srednji šoli, na fakulteti ali na spletnih vajah-poučuje ta koncept. Ustvarjena koda je prenosljiva in se lahko izvaja na različnih platformah strojne opreme.
"Lestvična logika sledi formatu električnih lestvičnih diagramov, ki se uporabljajo v relejnih krmilnih sistemih, in večina ljudi se je lahko hitro nauči in obvlada."
Vendar ima objektno{0}}usmerjeno programiranje v primerjavi z lestvično logiko naslednje pomanjkljivosti:
• višji stroški;
• Strmejša krivulja učenja;
• Odpravljanje težav ni posebej preprosto za vzdrževalno osebje;
• Prevajanje je običajno potrebno pred nalaganjem izvorne kode v procesor.
V primerjavi z lestvičasto logiko objektno{0}}orientirano programiranje pogosto zahteva več pomnilnika in večjo procesorsko moč, kar povzroči višje stroške. Učenje objektno{2}}usmerjenega programskega jezika lahko traja dlje. Verjetno je potrebno poučevanje v razredu, obvladovanje temeljnih konceptov pa zahteva veliko časa, prakse, testiranja in uporabe. Programerji morajo pogosto preučevati objektno-usmerjeno programiranje, da uporabljajo sledilnike za sledenje kodi ali razhroščevalnike za odpravljanje napak v logiki. S to vrsto visoko-nivojskega programiranja je lahko težko implementirati-zmožnosti spletnega spremljanja v realnem času.
Preden lahko izvorno kodo prenesete v krmilnik, jo je treba prevesti. Običajno izvorna koda ni shranjena v pomnilniku procesorja. To pomeni, da je treba skrbno kopirati izvorno kodo, saj prevedene kode običajno ni mogoče urejati. Pri objektno-orientiranem programiranju morajo biti knjižnične datoteke povezane z drugimi viri, uporabljenimi med postopkom prevajanja. Brez razumevanja povezovanja in virov bo program težko zagnati.
Prednosti lestvene logike:
Lestvična logika je preprosta in-samodokumentirana metoda kodiranja-nekateri se celo sprašujejo, ali je kvalificirana kot programski jezik. Sledi formatu električnih lestvičnih diagramov, ki se uporabljajo v relejnih krmilnih sistemih, in večina ljudi se ga lahko hitro nauči in obvlada. Že desetletja je edini programski jezik, ki se pogosto uporablja na področju avtomatizacije strojev, in bo ostal eden od primarnih programskih jezikov v industriji avtomatizacije v bližnji prihodnosti.
Sčasoma, ko so v industrijo vstopili ljudje iz različnih okolij in področij, so bili v komplet orodij za industrijsko avtomatizacijo uvedeni različni programski jeziki. Ti vključujejo programiranje funkcijskih blokov, strukturirano besedilo, programiranje stanj in zaporedne funkcijske diagrame. Ti štirje programski jeziki skupaj z lestvično logiko sestavljajo standardne programske jezike, ki jih določa standard IEC 61131-3 Mednarodne elektrotehnične komisije (IEC).
Logika v ozadju IEC 61131 je, da če se vsak prodajalec drži tega standarda, potem-vsaj do neke mere-bi se morala oseba naučiti le teh pet programskih jezikov za preprosto preklapljanje med platformami, ki jih ponujajo različni prodajalci. Vendar temu ni tako.
Osnovna lestvična logika (kot je uporaba relejskih kontaktov in tuljav) deluje na enak način; pri programiranju pa se je treba naučiti sintakse in uporabniške izkušnje vsakega prodajalca, pa tudi posebnosti uporabe programske platforme. Kljub pomanjkanju standardizacije ponuja lestvična logika naslednje prednosti pred objektno-usmerjenim programiranjem:
• Je zelo-primeren za krmiljenje strojev in procesov;
• Lažje ga je razumeti, ker je sam-dokumentiran;
• olajša odpravljanje težav nadzorovanega sistema;
• Odpravljanje napak je enostavno;
• Izvorno kodo je običajno mogoče shraniti v procesor.
Lestvična logika je -primerna za krmiljenje strojev in procesov, zlasti za sisteme avtomatizacije z velikim številom ločenih vhodov in izhodov (V/I). Skozi leta se je lestvična logika nenehno izboljševala za upravljanje z analognimi V/I, zaradi česar je primernejša za številne aplikacije za nadzor procesov.
V primerjavi z aplikacijami za krmiljenje strojev imajo procesne aplikacije pogosto večji delež analognih V/I.
Ker je lestvična logika enostavnejša za uporabo kot objektno-usmerjeno programiranje, se je lahko številni usposobljeni tehniki in inženirji hitro naučijo. Logika je zelo sistematična in organizirana, njena samo-dokumentirajoča narava pa olajša razumevanje in obvladovanje. Vsaka vrstica kode mora biti ovrednotena kot true, preden je mogoče napravo aktivirati. Če je za krmiljenje pet motorjev, je potrebnih vsaj pet vrstic kode, kar močno poenostavi postopek.
"Izvorna koda lestvične logike in deskriptorji so običajno shranjeni v krmilniku, kar odpravlja potrebo po dostopu do izvorne kode-, kar odpravlja frustracije, ki jih programerji pogosto doživljajo, ko poskušajo razumeti prevedene programe."
Za inženirje elektrotehnike in vzdrževalno osebje je lestvena logika zelo intuitivna. Čeprav lestvična logika zahteva drugačen način razmišljanja kot objektno-orientirano programiranje, jo je mogoče hitro obvladati z nekaj študije in potrebuje manj časa za razumevanje kode, ki so jo napisali drugi. Kristalno jasno je, kdaj je logična izjava resnična in kdaj napačna. Tudi tisti z omejenimi programerskimi izkušnjami lahko zlahka dojamejo koncepte, kot so vklop/izklop, napajanje tuljave, primerjalne spremenljivke in običajne matematične funkcije.

Je preprost in enostaven za uporabo ter poenostavlja odpravljanje težav in razhroščevanje. Pri spremljanju logike je enostavno razumeti trenutne pogoje delovanja. Ni potrebna diploma o programski opremi ali napredno znanje programiranja. Z lestvično logiko lahko vzdrževalno in inženirsko osebje enostavno sledi procesu in razume, kaj se dogaja. Lestvičasto logiko si lahko predstavljamo kot tabelo resnic: če je logika na levi resnična, se aktivira logika na desni.
Izvorna koda lestvične logike in deskriptorji so običajno shranjeni v krmilniku. To odpravi frustracije, ki jih programerji pogosto doživljajo, ko poskušajo razumeti prevedeno kodo brez dostopa do izvorne kode-težava, ki je pogosta tudi pri objektno-orientiranem programiranju.
Vendar pa ima lestvična logika v primerjavi z-orientiranim programiranjem naslednje pomanjkljivosti:
• Računalniški programerji in IT strokovnjaki ne poznajo lestvične logike;
• Težko je izvajati matematične funkcije, obdelavo besedila in obdelavo podatkov;
• Zanaša se na čas skeniranja;
• Za izvajanje potrebuje specializirano strojno opremo, kot je programabilni logični krmilnik (PLC).
Lestvična logika je simbolni jezik, ki ga računalniški programerji in IT strokovnjaki ne poznajo, saj se ga ne učijo v šoli. Ravnanje z matematičnimi funkcijami, besedilnimi nizi in podatki v lestvični logiki je lahko težavno predvsem zato, ker lestvena logika prvotno ni bila zasnovana za obravnavanje teh funkcij.
Logika lestvice je odvisna tudi od časa skeniranja. Večji programi zahtevajo več časa za skeniranje in obdelavo logike. Pri izvajanju lestvične logike sistem prebere vhode, pregleda logiko, posodobi podatkovne tabele in izhode, izvede komunikacijo in nato ponovi cikel. Funkcije, kot so prekinitve in druge tehnike programiranja, je mogoče implementirati, da se zagotovi hitrejše izvajanje določene logike.
Čeprav lahko programsko{0}}temelji PLC-ji, konfigurirani z lestvičasto logiko, delujejo na osebnem računalniku, mora biti strojna oprema (kot je PLC) običajno združljiva s programsko opremo za programiranje, zato je najbolje, da oba kupite pri istem prodajalcu. To zagotavlja združljivost, vendar ni posebej priročno, če želite zamenjati prodajalca.
Poleg primerjave prednosti in slabosti lestvične logike in objektno-usmerjenega programiranja bi morali uporabniki oceniti tudi, kako se bodo ti programski jeziki uporabljali v okolju, kjer bodo uvedeni. Če je tovarna ali obrat že standardiziral lestvično logiko, njena zamenjava z objektno-usmerjenim programiranjem ni priporočljiva, tudi če je slednje bolj primerno za aplikacijo. Ker uporaba objektno-usmerjenega programiranja še naprej narašča, se pričakuje, da bo v prihodnjih desetletjih obstajalo skupaj z lestvično logiko. Napredno{6}}strokovnjaku za avtomatizacijo bi bilo dobro-svetovati, da obvlada oba jezika.




