În domeniul automatizării industriale, logica ladder rămâne unul dintre cele mai frecvent utilizate limbaje de programare; cu toate acestea, pentru obiecte de control mai complexe, programarea{0}}orientată pe obiecte este cu siguranță o abordare extrem de eficientă. Să discutăm mai întâi despre programarea-orientată pe obiecte:
Programarea-orientată pe obiecte este o paradigmă de programare avansată în limbaje de-nivel înalt. Această filozofie de proiectare poate fi aplicată și programelor PLC din sistemele de control industrial. Deși nu putem implementa multe dintre caracteristicile excelente ale programării-orientate pe obiecte-cum ar fi „moștenirea”-și limbajul PLC poate să nu posede nici măcar caracteristicile unui limbaj de programare orientat-obiect, conceptele de bază ale programării-orientate pe obiecte sunt clase și instanțele de clasă (de exemplu, obiecte). Trebuie doar să folosim aceste concepte. În programarea computerelor, trebuie să abstragem și să generalizăm anumite entități pentru a defini clase. În sistemele de control industrial, totuși, obiectele de control precum motoarele și supapele sunt categorii de control clar definite; putem defini clase pentru ele direct, fără a fi nevoie de abstractizare. Următoarele secțiuni vor folosi limbajul de programare Step7 de la Siemens și limbajul de programare Unity de la Schneider pentru a explica programarea orientată obiect-pentru PLC-uri.
I. Metode de implementare
Programarea orientată{0}}obiect în Pasul 7 este implementată folosind blocuri funcționale (FB). Când apare acest subiect, oamenii se gândesc adesea la abordarea de programare modulară propusă de Siemens. Într-adevăr, acesta este același concept, dar termeni precum „modularizare”, „blocuri de date de fundal” și „fonduri multiple” introduși de Siemens nu permit întotdeauna utilizatorilor să înțeleagă și să aplice clar această filozofie de design excelentă.
Cu toate acestea, dacă o abordați din perspectiva programării-orientate pe obiecte, puteți obține o înțelegere mult mai bună a acestui model de design. Un „bloc FB” este privit ca o „clasă”; poate fi privit ca o grupare de cod pentru obiecte de control similare. De exemplu, pentru unitatea de frecvență variabilă-MM440, puteți scrie un bloc FB numit „MtrMM440”. În programarea-orientată pe obiecte, aceasta se numește „clasă”. Când trebuie să programați controlul pentru un anumit motor, îi puteți aloca un bloc DB de fundal-în programarea orientată pe obiect-, aceasta se numește implementarea clasei (adică, crearea unei instanțe a clasei: un obiect). Când trebuie să controlați mai multe motoare, puteți aloca diferite DB de fundal acestui bloc FB, ceea ce este echivalent cu crearea mai multor instanțe ale clasei.
Step7 are un alt tip de bloc de program: blocul FC. Programarea utilizând în principal blocuri FC este denumită programare structurată în sistemele Siemens, care poate fi analogizată cu programarea procedurală în programarea computerelor-adică programarea care se bazează exclusiv pe funcții-.
Programarea cu software-ul Unity de la Schneider oferă o mai bună înțelegere a programării-orientate pe obiecte. Definițiile sale DFB includ parametrii de intrare/ieșire, variabile private/publice și implementarea codului-care sunt exact elementele de bază ale unei „clase” în programarea orientată pe obiecte-computerelor. Crearea unei instanțe a unei clase (un obiect) este la fel de simplă ca și crearea unei variabile „booleene” obișnuite; trebuie doar să definiți o variabilă a acestei „clase” în „Blocuri funcționale”.
Atât Step7, cât și Unity acceptă atât abordări procedurale, cât și abordări de programare-orientate pe obiecte. Distincția dintre aceste două abordări este similară cu diferența dintre programarea în C și C++ în limbaje de computer-la nivel înalt.
În următoarea explicație, FB-urile din Pasul 7 și DFB-urile din Unity vor fi denumite „clase”, în timp ce combinația dintre un FB și un DB de fundal în Pasul 7, precum și instanțe de DFB-uri din Unity, vor fi denumite „obiecte”.
II. Arhitectură de programare-Orientată pe obiecte
Discuția de mai sus acoperă detalii de implementare, dar filozofia de programare este construită pe arhitectura programului. Simpla folosire a metodelor-orientate pe obiecte într-o anumită parte a codului nu înseamnă că întregul program este orientat- pe obiecte. Acest tip de programare necesită o abordare bazată pe următoarele aspecte:
1. Proiectarea circuitelor structurate.
Această secțiune se concentrează în primul rând pe liniile de producție automatizate; pentru mașini-unelte de sine stătătoare, poate fi utilizată o structură simplificată:
<1>Strat de linie de producție automatizată: Acesta este cel mai înalt nivel, având un PLC principal care controlează diferitele zone de sub acesta.
<2>Stratul de proiect: Acest strat are un sistem independent de distribuție a energiei, dar fără PLC; este format numai din module distribuite controlate de linia de producție automatizată. După cum sugerează și numele, posedă un grad ridicat de independență și poate fi proiectat și fabricat ca un proiect separat. Când linia de producție automată este relativ mică, acest strat poate fi omis.
<3>,Nivel de grup funcțional: Pe baza diviziunilor de proces, segmentele de echipamente care îndeplinesc o anumită funcție de proces sunt grupate într-un grup funcțional. Acest grup aparține Nivelului Inginerie; când este omis nivelul de inginerie, acesta aparține nivelului de linie de producție automată. Programarea orientată-obiect nu necesită neapărat utilizarea structurii de mai sus, dar o structură electrică bine-proiectată este mai propice pentru programarea-orientată pe obiecte.
2. Toată logica pentru orice obiect de control este implementată într-o „clasă”.
Pentru a realiza acest lucru, este necesară analizarea informațiilor legate de obiectul de control. De exemplu, pentru un motor, trebuie luate în considerare următoarele informații relevante:
Informații de intrare:
<1>,Informații despre protecția circuitelor, cum ar fi întrerupătorul motorului și releul termic.
<2>,Informații de protecție funcțională, cum ar fi întrerupătoarele de limită pentru motoarele de mișcare, presostatoarele pentru ventilatoare și comutatoarele de nivel de ulei pentru pompele de ulei.
<3>Condiții de pornire și oprire: deși protecția circuitului și protecția funcțională menționate mai sus pot determina oprirea funcționării motorului, iar o resetare poate declanșa o repornire, condițiile la care se face referire aici sunt cele pentru pornirea și oprirea în timpul funcționării normale-cum ar fi pașii unui proces de control secvenţial.
<4>Moduri de control: cum ar fi manual și automat.
<5>Resetare eroare: Repornirea sistemului prin semnale de resetare.
Informații de ieșire:
<1>Ieșiri de control, cum ar fi contactorul principal care controlează motorul.
<2>Ieșiri de informații de stare
<3>Ieșiri de eroare
Informații de stocare de stare:
Variabilele intermediare utilizate pentru implementarea codului, precum și variabilele de stare care pot fi citite de HMI. Integrați toate informațiile de mai sus într-o singură clasă și standardizați cât mai mult posibil parametrii clasei. Cu toate acestea, există încă unele diferențe în comparație cu limbajele de programare de-nivel înalt. Pentru Pasul 7, standardul de urmat este: structura programului este implementată folosind FC-uri, iar controlul obiectelor este implementat folosind FB-uri, așa cum este ilustrat de următorul cadru structural (a cărui structură electrică se bazează pe introducerea de mai sus): Aceasta este doar o arhitectură brută a programului PLC; o arhitectură bună ar trebui să fie mai cuprinzătoare și științifică.
3. Planificați cu atenție structurile de date
Definirea structurilor de date este crucială și ar trebui să vă străduiți să unificați aceste structuri cât mai mult posibil, fără să vă faceți griji cu privire la spațiul de stocare; memoria PLC modernă este suficientă pentru a găzdui cantități mari de date. Este demn de remarcat faptul că, în Pasul 7, ar trebui să evitați definirea tipurilor definite de utilizator-(UDT) în afara claselor ori de câte ori este posibil; în schimb, definiți-le în cadrul claselor. Deși acest lucru poate duce la definiții duplicate ale aceleiași structuri în clase diferite, sporește independența claselor.
În următoarele secțiuni, vom compara aceste două abordări de programare:
Avantajele programării orientate pe obiect-Comparativ cu logica în scară, programarea orientată-obiect oferă următoarele avantaje:
• Codul este portabil și ușor de reutilizat;
• Este ușor de utilizat funcții matematice, bucle și alte constructe;
• Programarea-orientată pe obiecte este predată practic în fiecare curs de programare a computerelor;
• Codul poate rula pe diverse platforme hardware.
Pentru a stăpâni programarea-orientată pe obiecte, trebuie mai întâi să înțelegeți conceptul de obiecte și cum să le utilizați. Odată ce un obiect sau o clasă este scris, acesta poate fi reutilizat cu ușurință prin apeluri multiple. De exemplu, creați un obiect pentru a controla un motor, care se ocupă de toate intrările, ieșirile și defecțiunile. Când este necesar, mai multe motoare pot fi controlate prin instanțierea acestui singur obiect de control de mai multe ori. Aceasta este cunoscută sub numele de-instanțiere la cerere. Atunci când mai multe motoare trebuie controlate, acest singur obiect poate fi folosit în mod repetat. Este apelat atunci când este necesar, iar instanțele sunt create pe măsură ce sunt utilizate.
Fiecare instanță a fiecărui motor are propriile sale caracteristici, cum ar fi oprirea motorului, funcționarea motorului, viteza motorului și suprasarcina motorului. Cea mai mare parte a activității de programare este finalizată atunci când obiectul este creat pentru prima dată. Acesta este un mod diferit de a gândi față de logica scară și este mai puternic, deoarece odată ce un obiect este construit, este ușor de utilizat și reutilizat. Programarea orientată pe obiect-ușorează efectuarea de funcții matematice complexe, calcule în buclă, matrice și subrutine imbricate. Practic, fiecare curs de programare a computerelor-fie la liceu, la facultate sau tutoriale online-învață acest concept. Codul creat este portabil și poate rula pe diverse platforme hardware.
„Logica pe scară urmează formatul diagramelor electrice pe scară utilizate în sistemele de control cu relee și majoritatea oamenilor o pot învăța și stăpâni rapid.”
Cu toate acestea, în comparație cu logica ladder, programarea-orientată pe obiecte are următoarele dezavantaje:
• Cost mai mare;
• O curbă de învățare mai abruptă;
• Depanarea nu este deosebit de ușoară pentru personalul de întreținere;
• Compilarea este de obicei necesară înainte de a încărca codul sursă pe procesor.
În comparație cu logica ladder, programarea orientată{0}}obiect necesită adesea mai multă memorie și o putere de procesare mai mare, ceea ce duce la costuri mai mari. Învățarea unui limbaj de programare-orientat pe obiecte poate dura mai mult. Este probabil necesară instruirea la clasă, iar stăpânirea conceptelor de bază necesită timp, practică, testare și aplicare semnificativă. Programatorii trebuie să studieze frecvent programarea-orientată pe obiecte pentru a folosi trasoare pentru a urmări codul sau depanatoare pentru a depana logica. Cu acest tip de programare-la nivel înalt, poate fi dificil să implementați capabilități de monitorizare online-în timp real.
Înainte de a descărca codul sursă în controler, acesta trebuie compilat. De obicei, codul sursă nu este stocat în memoria procesorului. Aceasta înseamnă că trebuie avut grijă să faceți copii de rezervă ale codului sursă, deoarece codul compilat nu este de obicei editabil. Cu programarea orientată pe obiect-, fișierele bibliotecii trebuie să fie legate cu alte resurse utilizate în timpul procesului de compilare. Fără înțelegerea legăturilor și a resurselor, va fi dificil să rulați programul.
Avantajele Ladder Logic:
Logica ladder este o metodă de codare simplă și{0}}autodocumentată-unii chiar se întreabă dacă se califică drept limbaj de programare. Urmează formatul diagramelor cu scară utilizate în sistemele de control cu relee și majoritatea oamenilor îl pot învăța și stăpâni rapid. A fost singurul limbaj de programare utilizat pe scară largă în domeniul automatizării mașinilor timp de decenii și va rămâne unul dintre limbajele de programare principale din industria de automatizare în viitorul apropiat.
De-a lungul timpului, pe măsură ce oameni din diverse medii și domenii au intrat în industrie, diverse limbaje de programare au fost introduse în setul de instrumente de automatizare industrială. Acestea includ programarea blocurilor funcționale, textul structurat, programarea stărilor și diagramele de funcții secvențiale. Aceste patru limbaje de programare, împreună cu logica ladder, constituie limbaje de programare standard definite de standardul IEC 61131-3 al Comisiei Electrotehnice Internaționale (IEC).
Logica din spatele IEC 61131 este că, dacă fiecare furnizor aderă la acest standard, atunci-cel puțin într-o oarecare măsură-o persoană ar trebui să învețe doar aceste cinci limbaje de programare pentru a comuta cu ușurință între platformele oferite de diferiți furnizori. Cu toate acestea, acesta nu este cazul.
Același lucru este valabil și pentru logica scară de bază (cum ar fi utilizarea contactelor releului și a bobinelor); cu toate acestea, atunci când programați, trebuie să învățați sintaxa și experiența utilizatorului fiecărui furnizor, precum și specificul modului de utilizare a platformei de programare. În ciuda lipsei de standardizare, logica ladder oferă următoarele avantaje față de programarea orientată pe obiect-:
• Este bine-potrivit pentru controlul mașinii și al procesului;
• Este mai ușor de înțeles deoarece se documentează în mod inerent-;
• Facilitează depanarea sistemului controlat;
• Este ușor de depanat;
• Codul sursă poate fi de obicei stocat în procesor.
Logica ladder este bine-potrivită pentru controlul mașinilor și proceselor, în special pentru sistemele de automatizare cu un număr mare de intrări și ieșiri discrete (I/O). De-a lungul anilor, logica ladder a fost, de asemenea, îmbunătățită continuu pentru a gestiona I/O analogic, făcând-o mai potrivită pentru o gamă largă de aplicații de control al procesului.
În comparație cu aplicațiile de control al mașinilor, aplicațiile de proces au de obicei o proporție mai mare de I/O analogică.
Deoarece logica ladder este mai ușor de utilizat decât programarea-orientată pe obiecte, mulți tehnicieni și ingineri calificați o pot învăța rapid. Logica este extrem de sistematică și organizată, iar natura sa de auto-documentare o face mai ușor de înțeles și de stăpânit. Înainte ca un dispozitiv să fie activat, fiecare linie de cod trebuie să fie evaluată la adevărat. Dacă există cinci motoare de controlat, sunt necesare cel puțin cinci linii de cod, ceea ce simplifică foarte mult procesul.
„Codul sursă și descriptorii logici ladder sunt de obicei stocați în controler, eliminând necesitatea de a accesa codul sursă și, prin urmare, eliminând frustrarea pe care o întâmpină adesea programatorii atunci când încearcă să înțeleagă programele compilate.”
Pentru inginerii electricieni și personalul de întreținere, logica pe scară este foarte intuitivă. Deși logica în scări necesită o mentalitate diferită de programarea orientată pe obiect-, aceasta poate fi stăpânită rapid prin studiu și este nevoie de mai puțin timp pentru a înțelege codul scris de alții. Este clar ca cristalul când logica este adevărată și când este falsă. Chiar și cei cu experiență limitată în programare pot înțelege cu ușurință concepte precum stările pornit/oprit, energizarea bobinei, variabilele de comparație și funcțiile matematice comune.

Este simplu și ușor de utilizat, simplificând depanarea și depanarea. La monitorizarea logicii, este ușor de înțeles condițiile actuale de funcționare. Nu sunt necesare diplome de software sau abilități avansate de programare. Cu logica pe scară, personalul de întreținere și inginerie poate urmări cu ușurință procesul și poate înțelege ce se întâmplă. Logica ladder poate fi gândită ca un tabel de adevăr: dacă logica din stânga este adevărată, logica din dreapta este activată.
Codul sursă logic ladder și descriptorii sunt de obicei stocați în controler. Acest lucru elimină frustrarea pe care o întâmpină adesea programatorii când încearcă să înțeleagă codul compilat fără acces la codul sursă-o problemă comună și în programarea orientată pe obiect-.
Cu toate acestea, în comparație cu programarea-orientată pe obiecte, logica în scară are și următoarele dezavantaje:
• Programatorii de calculatoare și profesioniștii IT nu sunt familiarizați cu logica ladder;
• Este dificil să se realizeze funcții matematice, procesarea textului și prelucrarea datelor;
• Se bazează pe timpul de scanare;
• Este nevoie de hardware specializat pentru a fi executat, cum ar fi un controler logic programabil (PLC).
Logica pe scară este un limbaj simbolic cu care programatorii de computere și profesioniștii IT nu sunt familiarizați, deoarece nu îl învață la școală. Gestionarea funcțiilor matematice, a șirurilor de text și a datelor în logica ladder poate fi dificilă, în primul rând pentru că logica ladder nu a fost concepută inițial pentru a gestiona aceste funcții.
Logica pe scară depinde și de timpul de scanare. Programele mai mari necesită mai mult timp pentru a scana și procesa logica. La executarea logicii ladder, sistemul citește intrările, scanează logica, actualizează tabelele de date și ieșirile, realizează comunicarea și apoi repetă ciclul. Caracteristici precum întreruperile și alte tehnici de programare pot fi implementate pentru a asigura o execuție mai rapidă a anumitor logici.
Deși PLC-urile bazate pe software-configurate cu logica ladder pot rula pe un PC, hardware-ul (cum ar fi un PLC) trebuie de obicei să fie compatibil cu software-ul de programare și cel mai bine este să le achiziționați pe ambele de la același furnizor. Acest lucru asigură compatibilitatea, dar nu este deosebit de convenabil dacă doriți să schimbați furnizorul.
Pe lângă compararea avantajelor și dezavantajelor logicii în scară și ale programării orientate{0}}obiect, utilizatorii ar trebui să evalueze și modul în care aceste limbaje de programare vor fi utilizate în mediul în care vor fi implementate. Dacă o fabrică sau o unitate a standardizat deja logica ladder, înlocuirea acesteia cu programare orientată pe obiect-nu este încurajată, chiar dacă aceasta din urmă este mai potrivită pentru aplicație. Pe măsură ce utilizarea programării orientate pe obiecte-continuă să crească, se așteaptă ca aceasta să coexiste cu logica ladder în deceniile următoare. Un profesionist-perspectiv în automatizare ar fi bine-să stăpânească ambele limbi.




