Conţinut
- Despre Ladder Logic
- Mediu de programare
- Exemplu de flux
- Blocuri funcționale și funcții
- Împachetând totul
10+ ani în automatizare, PLC și HMI. Colaborarea cu majoritatea furnizorilor principali de automatizare și instrumentare
Despre Ladder Logic
Logica Ladder, denumită de obicei „Ladder”, este cel mai comun limbaj utilizat în programarea unui PLC (Programmable Logic Controller). A fost folosit de zeci de ani, iar fundamentele nu s-au schimbat atât de mult de-a lungul timpului.
Motivul pentru care este atât de popular este că se citește ca o schemă, de la stânga la dreapta, de sus în jos. A fost și este încă relativ ușor pentru inginerii electricieni să obțină o copie a software-ului și să citească logica.
În acest articol introductiv, ne vom uita la Ladder folosind CoDeSys 3.5 (care este gratuit, puteți găsi un link de descărcare în centrul de descărcare CoDeSys 3.5). Dacă aveți nevoie de asistență cu CoDeSys 3.5, există o mulțime de ajutor online. Pot chiar să scriu un articol sau două despre începerea utilizării CoDeSys în viitor, anunțați-mă în comentarii ce lipsește și voi actualiza articolul
Mediu de programare
Fiecare editor este diferit (Allen Bradley, Mitsubishi, CoDeSys, Siemens de exemplu); cu toate acestea, toți respectă aceleași linii directoare de bază.
Mediul Ladder este alcătuit din rețele (sau Rungs) și elemente logice care stau în rețea de la stânga la dreapta. Logica „curge” de la stânga la dreapta până când treapta este completă și apoi se deplasează în jos la treapta următoare.
Luați în considerare acest exemplu:
Prima rețea constă dintr-un contact, urmat de un contact negat și în cele din urmă o bobină (sau Flag / Output - Nu trebuie confundat cu o ieșire fizică)
A doua rețea constă dintr-un contact și o altă bobină.
În Ladder, numele contactului, bobinei sau altor elemente este variabila atribuită sau „Etichetă” la care se face referire. Deci, „Coil” apare de două ori, o dată ca o bobină și o dată ca un contact. Dacă o bobină este setată la True, un contact cu același nume va fi, de asemenea, adevărat.
Pentru ca o bobină să fie adevărată, tot ceea ce este în stânga bobinei trebuie să fie, de asemenea, într-o stare adevărată. Gândiți-vă la acest lucru ca la un circuit electric, unde V-Supply este șina verticală din stânga și în dreapta este solul dvs., o bobină este un dispozitiv care necesită alimentare și contactele sunt relee. Unele medii prezintă de fapt și o șină laterală dreaptă.
! IMPORTANT !
Amintiți-vă că fluxul logic este peste și apoi în jos. Dacă o bobină din rețeaua 5 este setată la Adevărat și un contact cu același nume este în rețeaua 3 și 7, doar 7 va fi Adevărat până când programul va reveni la vârf.
Exemplu de flux
Imaginea de mai sus arată „fluxul logic” când PLC-ul este în modul de rulare. Contactele / bobinele care sunt albastre sunt ADEVĂRATE, dacă nu sunt albastre, sunt FALSE.
(Toate variabilele sunt setate la false în imaginea de mai sus, rețineți că contactul negat este albastru)
Pentru a seta o bobină la TRUE (albastru), toate contactele și condițiile din stânga bobinei trebuie să fie și TRUE, permițând căii albastre să ajungă la bobină:
În logica de mai sus, „Contact” (primul element din rețeaua 1) a fost setat la TRUE. Deoarece „Contact negat” este un contact negat, FALS = ADEVĂRAT. Deoarece ambele condiții sunt îndeplinite în stânga „Coil”, Coil este acum setat la TRUE.
Cel de-al doilea contact de rețea „Coil” este acum adevărat. Deoarece toate condițiile din stânga Coil_2 sunt acum ADEVĂRATE, Coil_2 este setată la ADEVĂRAT.
Blocuri funcționale și funcții
Logica Ladder folosește pe larg blocurile funcționale și funcțiile, în scopul acestei introduceri vom presupune că toate blocurile funcționale și funcțiile sunt construite folosind Ladder.
Deci, care este diferența dintre o funcție și un bloc funcțional? Se reduce la „Instanțe”. O Funcție este pur și simplu o funcție, intrările sunt transmise și o ieșire este dată, nimic nu este ținut în memorie. Cu toate acestea, un bloc funcțional este definit în logica programului, i se dă o instanță, iar memoria este alocată blocului respectiv.
Luați în considerare că doriți să faceți următorul calcul matematic:
X + Y = Z
A Funcţie ar oferi mijloacele pentru a trece valoarea X și Y și a returna valoarea Z.
Să presupunem că doriți să faceți următorul calcul matematic:
X + Y + Z = Z
A Bloc funcțional ar permite Z să fie definit ca o ieșire, dar pentru că blocului i se dă o instanță, valoarea lui Z este stocat în interiorul blocului, deci NU trebuie să fie trecut din nou pentru a fi utilizat în calcul. Un bloc funcțional primește o instanță denumindu-l în același mod în care se numește un contact sau o bobină:
În exemplul de mai sus, a Bloc funcțional a fost plasat în rețea. Blocul funcțional a fost definit ca un TONĂ (Timer On Delay) și i s-a dat numele Timer_1. Acum i s-a alocat memorie, Timer_1 este o instanță a TON. Acest lucru permite Timer_1 să utilizeze funcțiile pe care le oferă TON, ținând în același timp evidența Timer_1 în propria instanță, indiferent de orice alte blocuri funcționale TON.
Aceasta este doar o scurtă introducere a blocurilor funcționale, sunt foarte puternice și au nevoie de explicații suplimentare pentru a înțelege utilizarea lor completă.
Împachetând totul
Ladder Logic este un limbaj simplu, curat și eficient pentru a programa sisteme de control simple și complexe cu. De asemenea, este ușor de citit, tipărit și urmărit. Părerea mea, în opinia mea, este că este foarte tentant să pur și simplu adăugați la sfârșitul unui fișier POU sau scară, creând cod lung și dificil de urmat.
Cea mai bună utilizare a scării este pentru logică dreaptă, cartografiere de bază și blocuri funcționale mici.
Acest articol este corect și fidel, după cunoștințele autorului. Conținutul are doar scop informativ sau de divertisment și nu înlocuiește consilierea personală sau sfatul profesional în probleme de afaceri, financiare, juridice sau tehnice.