Documente Academic
Documente Profesional
Documente Cultură
1. Scurt istoric
2. Structura PLC-urilor
3. Unitatea centrală
4. Interfețe de intrare/ieșire
7
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
1. Scurt istoric
La sfârșitul anilor ’60, în contextul fiabilității problematice a circuitelor de
control pe bază de relee, Compania General Motors (prin Divizia Hydramatic,
1968) a elaborat specificația de proiectare pentru un sistem electronic
programabil (Standard Machine Controller, 1968), vizat ca înlocuitor al sistemelor
de control pe bază de relee. Noul sistem de control trebuia să ofere o modalitate
simplă și rapidă de programare, trebuia să poată opera în mediile industriale, să
fie ușor de întreținut și de reparat, modificările de program să nu presupună
modificări structurale, să aibă dimensiuni reduse și să consume mai puțin ca
releele, siguranță în funcționare și costuri de întreținere reduse [7,24]. Solicitarea
pentru un astfel de prototip a fost trimisă la patru companii: Allen-Bradley, Digital
Equipment Corporation, Century Detroit și Bedford Associates [29].
Propunerea venită din partea Bedford Associates (Modicon1), care lucra
deja la un asemenea controler, a fost considerată câștigătoare (1969), iar numele
dat acestor sisteme a fost Programmable Controllers, cu abrevierea PC. Odată cu
apariția și dezvoltarea fulminantă a sistemelor de calcul (Personal Computer, PC),
pentru a evita confuziile între cele două abrevieri s-a procedat la referirea acestor
sisteme de control industrial prin acronimul PLC (Programmable Logic Controller),
marcă înregistrată Allen Bradley (1971) pentru această gamă de produse [24,29].
În limba română, pentru referirea acestor sisteme de control industrial se
utilizează formularea automat programabil, preluată din limba franceză
(Automates programmables), și controler logic programabil sau controler
programabil, formulări preluate din limba engleză [30].
Primele PLC-uri operau cu intrări și ieșiri logice, bobine și contacte logice
interne, cu temporizatoare și numărătoare [35]. Treptat acestea au evoluat,
capacitatea de procesare a crescut și noi funcții au fost asimilate: procesarea
semnalelor analogice, realizarea operațiilor matematice în virgulă mobilă,
controlul în buclă închisă. În timp, evoluția tehnologiei în domeniu a făcut posibilă
monitorizarea și controlul parametrilor proceselor prin interfețe om-mașină
(HMI), comunicarea prin rețele standardizate (Modbus, RS-485, CAN, DeviceNet,
Profibus, EtherNet), accesarea aplicațiilor de la distanță etc.
1
Compania Modicon (MOdular DIgital CONtroller) a fost inființată de Bedford Associates pentru a
gestiona realizarea acestor noi produse. În 1977 a fost preluată de Gould Electronics, apoi de
compania germană AEG, astăzi fiind deținută de compania franceză Schneider Electric.
8
Cap.1 Automate programabile – Structura și modul de funcționare
2. Structura PLC-urilor
Termenul de PLC (Programmable Logic Controller) este definit prin
IEC61131-1: ,,Un sistem electronic digital, proiectat pentru utilizarea în mediul
industrial, care folosește o memorie programabilă pentru stocarea internă a
instrucțiunilor necesare implementării unor funcții specifice (logice, secvențiale,
temporizare, contorizare, calcul matematic), pentru a controla prin intrările și
ieșirile digitale și analogice diferite tipuri de mașini sau procese” [30].
Astăzi, PLC-urile au o arhitectură internă similară cu a sistemelor de calcul,
însă sunt concepute pentru funcționarea în mediul industrial, fiind rezistente la
vibrații, la perturbații electromagnetice, la variația temperaturii și umidității
mediului ambiant.
Dispozitiv de
programare Sursa
alimentare
Semnale
Semnale
electrice
electrice CPU
digitale/
digitale/ Unitatea centrala
analogice
analogice Interfata
Interfata catre
de la senzori, Iesire
Intrare relee,
butoane de
elemente de
comanda
Memorie actionare,
etc
lampi, etc
Din punct de vedere funcțional (Fig.1.1), în structura unui PLC se disting trei
elemente cu roluri bine definite:
Interfața de intrare (modulele de intrare) – preia semnale din sistemul
controlat prin intermediul senzorilor și le convertește în semnale numerice
pentru a putea fi prelucrate de unitatea centrală (CPU);
Unitatea de prelucrare centrală (CPU) – este creierul sistemului, pe baza
instrucțiunilor unui program procesează semnalele primite, efectuează
calcule aritmetice, prelucrări numerice ale variabilelor de intrare, ia decizii
9
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
a b
Fig.1.2 PLC-uri : a) structură monobloc (Mitsubishi), b) structură modulară(Siemens)
10
Cap.1 Automate programabile – Structura și modul de funcționare
3. Unitatea centrală
Unitatea de prelucrare centrală (CPU) procesează semnalele primite de la
interfața de intrare pe baza instrucțiunilor unui program, ia decizii și emite
semnale numerice pe modulele de ieșire.
Funcționarea unității centrale (CPU) este controlată de un sistem de operare
care trebuie să asigure următoarele funcții de bază:
funcția de start (inițierea);
procesarea ciclică și actualizarea imaginii de proces;
apelarea și rularea programului utilizator;
gestionarea întreruperilor;
gestionarea erorilor;
managementul memoriei;
comunicarea cu dispozitivul de programare și alte structuri de control.
Programul utilizator este conceput în general pe un dispozitiv de
programare extern, se încărcă pe CPU și trebuie să permită:
specificarea condițiilor de inițializare a aplicației;
procesarea datelor și instrucțiunilor;
11
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
procesarea întreruperilor;
gestionarea erorilor.
Așadar, în unitatea centrală (CPU) rulează două aplicații: sistemul de
operare și programul utilizator. Se disting două noțiuni specifice care
caracterizează funcționarea acesteia: procesarea ciclică și imaginea de proces.
RUN / STOP
PROGRAM
CICLU PRINCIPAL
(MAIN)
Operatii
specifice
Sistem
operare
12
Cap.1 Automate programabile – Structura și modul de funcționare
RUN / STOP
PROGRAM
INTRARI Actualizare CICLU PRINCIPAL
Imagine de proces (MAIN)
INTRARI
Program
INTRERUPERE INTRERUPERE intrerupere
Tratare
Alte operatii INTRERUPERE INTRERUPERE eroare
Actualizare
Imagine de proces
IESIRI
IESIRI
13
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
4. Interfețe de intrare/ieșire
Comunicarea unui PLC cu procesul controlat se realizează prin intermediul
interfețelor de intrare și ieșire. Ansamblul componentelor electronice amplasate
între bornele de intrare ale PLC-ului și magistrala internă constituie interfața de
intrare. Componentele electronice amplasate între magistrala internă și bornele
de ieșire ale PLC-ului constituie interfața de ieșire.
Fiecărei interfețe îi corespunde un număr de intrări sau ieșiri la care se pot
conecta senzori și butoane de comandă, respectiv elemente de acționare, de
semnalizare etc. Fiecărei intrări sau ieșiri (canal de intrare sau de ieșire) îi
corespunde un circuit electronic intern care convertește semnalele de câmp în
semnale numerice, în cazul modulelor de intrare, sau convertește semnale
numerice interne în semnale de câmp specifice aparaturii controlate, în cazul
modulelor de ieșire. Fiecare intrare sau ieșire este reprezentată în memoria
PLC-ului și i se alocă o adresă internă absolută.
Interfețele care operează cu intrări și/sau ieșiri logice (on/off) poartă
numele de interfețe/module digitale, iar cele care operează cu intrări și/sau ieșiri
analogice poartă numele de interfețe/module analogice. Există și o a treia
categorie de interfețe, specializate pe anumite funcții (contorizare procese rapide,
control mișcare etc) și care poartă numele de interfețe/module specializate.
Interfețele digitale sunt totuși cele mai utilizate interfețe în procesele industriale.
În general, interfețele de intrare/ieșire izolează unitatea centrală de
aparatura externă prin intermediul optocuploarelor (OC), respectiv nu trebuie să
alimenteze aparatura de câmp (senzori, elemente de acționare etc).
Funcția principală impusă interfețelor de intrare digitale este de aceea de a
identifica o valoare prag aferentă semnalului de intrare peste care valoarea
acestuia se asociază intern cu 1 logic, respectiv valoarea semnalului de intrare
sub care acesta se asociază intern cu 0 logic.
Blocurile electronice principale specifice unei interfețe de intrare digitale
sunt detaliate în figura 1.5. Blocul de redresare se utilizează doar în cazul intrărilor
în curent alternativ.
14
Cap.1 Automate programabile – Structura și modul de funcționare
R3
R1 P
Intrare TTL catre
C.C.
C magistrala
interna a
D3 T
PLC-ului
D1
OC
COM
R1 R3 D5
+5V
R5
D1 D4 P
Intrare TTL
catre
c.a. C R4 magistrala
D6 T interna a
PLC-ului
D2 D3
OC
R2
15
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
Izolare Semnal
CPU Comutare iesire
optica
TTL +V
de la
magistrala R
interna a
PLC-ului T2
Iesire
C.C.
D T1
OC
16
Cap.1 Automate programabile – Structura și modul de funcționare
TTL
de la R1 F
magistrala
interna a D T C Tr
PLC-ului V Iesire
c.a.
OC
R2
R3
+V
Releu F
TTL
de la
magistrala
interna a
PLC-ului
D T
OC
17
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
B1 R1 R3 D5
0 +5V
1
R5
Intrare D1 D4 P
2
C.A. TTL
3 C R4
B2 Catre
4
D6 T CPU
5 D2 D3
6 OC
7
SURSA L
24V c.a. R2
N COM
18
Cap.1 Automate programabile – Structura și modul de funcționare
SURSA
Circuit intern aferent canalului (1 ) de iesire Modul Iesire 24V C.C.
24V c.c
24V 0V
de la CPU +V +V
TTL
R
T2
0 Releu
1
L SURSA
D T1 2
Iesire 220V c.a.
K N
C.C. 3
OC
4
5 Motor c.a.
6
L
7
19
Cap.2 Elemente de logică booleană
1. Funcții logice
2. Forme canonice
3. Diagrame Karnaugh
4. Minimizarea funcțiilor logice
5. Sisteme logice combinaționale
20
Cap.2 Elemente de logică booleană
1. Funcții logice
Obiectul de studiu al logicii sunt propozițiile și compunerile lor. Enunțul A se
numește propoziție dacă A exprimă un fapt. Propozițiile în logica booleană1 pot
avea numai două valori: adevărat sau fals. Compunerea a două sau mai multe
propoziții logice se numește funcție logică și rezultatul acesteia este 0 sau 1 (fals
sau adevărat). Toate funcțiile logice sunt formate cu ajutorul a trei operatori care
formează mulțimea operatorilor algebrei booleene, Mop = {NU, ȘI, SAU}.
1
George Boole (02.11.1815 – 08.12.1864) matematician și filosof englez, considerat unul din
fondatorii informaticii. A pus bazele algebrei booleene, domeniu care stă la baza funcționării
calculatoarelor.
21
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
22
Cap.2 Elemente de logică booleană
x 1 + x2 = x2 + x 1
3. Asociativitatea
În cazul funcțiilor (expresiilor logice) cu un sigur operator, ȘI sau SAU, nu
contează ordinea de evaluare a termenilor:
x1 + (x2 + x3) = (x1 + x2) + x3
x1 (x2 x3) = (x1 x2) x3
4. Distributivitatea
Cele două operații, ȘI și SAU, sunt distributive una față de cealaltă:
x1 + (x2 x3) = (x1 + x2) (x1 + x3)
x1 (x2 + x3) = (x1 x2) + (x1 x3)
5. Element neutru
Elementul neutru al unei variabile booleene este elementul pentru care
funcția devine egală cu valoarea variabilei: fȘI(x1, 1) = x1 , fSAU(x1, 0) = x1.
x1 1 = x1, pentru funcția ȘI elementul neutru este 1.
x1 + 0 = x1, pentru funcția SAU element neutru este 0.
6. Element invers:
Elementul invers al unei variabile booleene este elementul negat:
𝑓𝑆𝐼 (𝑥1 , 𝑥1 ) = 0 , 𝑓𝑆𝐴𝑈 (𝑥1 , 𝑥1 ) = 1
𝑥1 𝑥1 = 0
𝑥1 + 𝑥1 = 1
1
În cadrul acestei lucrări folosirea simbolurilor „+”, „ ” pentru reprezentarea operatorilor SAU și ŞI
conduce implicit la preluarea regulilor privind ordinea de efectuare a operațiilor. Astfel, în lipsa
parantezelor, care specifică clar ordinea efectuării operațiilor, se subînțelege că operația de înmulțire
(operator ŞI) este prioritară operației de adunare (operator SAU).
23
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
1
Teorema poartă numele celui care a descoperit-o, Augustus De Morgan (1806-1871), matematician
și logician englez.
24
Cap.2 Elemente de logică booleană
Altfel spus, un tabel de adevăr specifică valorile unei funcții logice pentru
orice situație posibilă determinată de valorile variabilelor.
2. Forme canonice
Formele canonice asigură scrierea structurată a funcțiilor (expresiilor) logice
și servesc pentru obținerea de reprezentări care permit reducerea numărului de
operatori prin aplicarea unor tehnici specifice. Orice expresie logică poate fi adusă
la o formă canonică. Pentru reprezentarea unei funcții logice în formă canonică
există două opțiuni echivalente: reprezentarea în formă canonică disjunctivă și în
formă canonică conjunctivă.
25
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
FFCD (x1, x2, x3) = (F0P0) + (F1P1) + (F2P2) + (F3P3) + (F4P4) + (F5P5) + (F6P6) + (F7P7)
FFCC (x1, x2, x3) = (F0+S0) (F1+S1) (F2+S2) (F3+S3) (F4+S4) (F5+S5) (F6+S6) (F7+S7)
26
Cap.2 Elemente de logică booleană
O funcție logică de trei variabile, pentru care se cunosc valorile (Fk) aferente
fiecărei configurații posibile a variabilelor, se exprimă în forma canonică
disjunctivă (FCD), astfel:
FFCD(x1, x2, x3)=(F0P0)+(F1P1)+(F2P2)+(F3P3)+(F4P4)+(F5P5)+(F6P6)+(F7P7)
Pentru construirea termenilor de tip produs (Pk), aferenți unei funcții logice
exprimate în formă canonică disjunctivă (FCD), variabilele care au valoarea 0
(zero) se vor considera negate, iar variabilele care au valoarea 1 (unu) se
consideră ne-negate (Tabelul 2.2).
Exemplu: pentru configurația (0,0,1) a variabilelor de intrare (x1,x2,x3), termenul
standard de tip produs este P1, adică: 𝑥1 ∙ 𝑥2 ∙ 𝑥3 .
Scrierea unei funcții logice în formă canonică disjunctivă permite
simplificarea imediată, pe baza următoarelor proprietăți:
Pk 0 = 0, 0+1=1, 0+0=0.
Adică, oricare ar fi valoarea logică a termenului Pk, dacă Fk=0, rezultatul
expresiilor următoare nu depinde de Pk :
Pk Fk + 1 = Pk 0 + 1 = 1;
Pk Fk + 0 = Pk 0 + 0 = 0.
Așadar, în cazul utilizării formelor canonice disjunctive pentru exprimarea
funcțiilor logice, au importanță doar termenii care includ valori ale lui Fk diferite
de 0 (zero).
De reținut: În cazul exprimării funcțiilor logice prin intermediul FCD, se vor
considera doar termenii dezvoltării pentru care Fk este egal cu 1 (unu).
Exemplu: Fie funcția F(x1, x2 , x3 ) B2, x1 , x2, x3 B2, unde B2 = {0, 1}. Dacă
valorile funcției F sunt: F0=1,F1=0,F2=1,F3=0,F4=1,F5=0,F6=0,F7=1,atunci:
FFCD(x1,x2,x3)=(F0P0)+(F1P1)+(F2P2)+(F3P3)+(F4P4)+(F5P5)+(F6P6)+(F7P7)
=(1 P0)+(0 P1)+(1 P2)+(0 P3)+(1 P4)+(0 P5)+(0 P6)+(1 P7)
=(1 P0)+ 0 +(1 P2) + 0 +(1 P4)+ 0 + 0 +(1 P7)
=(1 P0)+(1 P2)+(1 P4)+(1 P7)= P0+P2+P4+P7
= 𝑥1 ∙ 𝑥2 ∙ 𝑥3 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3
= 𝑥2 ∙ 𝑥3 ∙ (𝑥1 +𝑥1 ) + 𝑥2 ∙ (𝑥1 ∙ 𝑥3 + 𝑥1 ∙ 𝑥3 )
= 𝑥2 ∙ 𝑥3 + 𝑥2 ∙ (𝑥1 ∙ 𝑥3 + 𝑥1 ∙ 𝑥3 )
27
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
O funcție logică de trei variabile, pentru care se cunosc valorile (Fk) aferente
fiecărei configurații posibile a variabilelor, se exprimă în forma canonică
conjunctivă (FCC), astfel:
FFCC(x1, x2, x3) =(F0+S0) (F1+S1) (F2+S2) (F3+S3) (F4+S4) (F5+S5) (F6+S6) (F7+S7)
Pentru construirea termenilor de tip sumă (Sk), aferenți unei funcții logice
exprimate în formă canonică conjunctivă (FCC), variabilele care au valoarea 0
(zero) se vor considera ne-negate, iar variabilele care au valoarea 1 (unu) se
consideră negate (Tabelul 2.2).
Exemplu: pentru configurația (0,1,1) a variabilelor de intrare (x1,x2,x3), termenul
standard de tip sumă este S3, adică: 𝑥1 + 𝑥2 + 𝑥3 .
Scrierea unei funcții logice în formă canonică conjunctivă permite
simplificarea imediată, în bază următoarelor proprietăți:
Sk+1= 1, 1 0 = 0, 1 1=1
Adică, oricare ar fi valoarea logică a termenului Sk, dacă Fk=1, rezultatul
expresiilor următoare nu depinde de Sk :
(Sk+ Fk ) 1 = (Sk+1) 1 = 1;
(Sk+ Fk ) 0 = (Sk+1 ) 0 = 0.
Așadar, în cazul utilizării formelor canonice conjunctive pentru exprimarea
funcțiilor logice, au importanță doar termenii care includ valori ale lui Fk diferite
de 1 (unu).
De reținut: În cazul exprimării funcțiilor logice prin intermediul FCC, se vor
considera doar termenii dezvoltării pentru care Fk este egal cu 0 (zero).
Exemplu: Fie funcția F(x1, x2 , x3 ) B2, x1 , x2, x3 B2, unde B2 = {0, 1}. Dacă
valorile funcției F sunt: F0=0,F1=1,F2=1,F3=0,F4=1,F5=1,F6=1,F7=0,atunci:
FFCC(x1,x2,x3)= (F0+S0) (F1+S1) (F2+S2) (F3+S3) (F4+S4) (F5+S5) (F6+S6) (F7+S7)
=(0+ S0) (1+ S1) (1+ S2) (0+ S3) (1+ S4) (1+ S5) (1+ S6) (0+S7)
=(0+ S0) 1 1 (0+ S3) 1 1 1 (0+S7)
= (0+ S0) (0+ S3) (0+ S7) = S0 S3 S7
= (𝑥1 + 𝑥2 + 𝑥3 ) ∙ (𝑥1 + 𝑥2 + 𝑥3 ) ∙ (𝑥1 + 𝑥2 + 𝑥3 )
28
Cap.2 Elemente de logică booleană
3. Diagrame Karnaugh
Diagramele Karnaugh1 sunt forme sintetice ale tabelelor de adevăr, care se
constituie în instrumente pentru minimizarea funcțiilor logice complexe.
Problema care trebuie să o rezolve o diagramă Karnaugh este următoarea: se
cunoaște rezultatul funcției și se cere determinarea acesteia în formă minimală.
O diagramă Karnaugh aferentă unei funcții booleene de n variabile se
reprezintă sub forma unui pătrat sau dreptunghi împărțit în 2n câmpuri. Fiecare
câmp este rezervat unui termen din reprezentarea funcției în formă canonică (fie
prin produse Pk , fie prin sume, Sk, unde k=0,1,2,..., 2n-1).
O diagramă Karnaugh este astfel dezvoltată încât oricare două câmpuri
(pătrate) vecine, pe linie sau pe coloană, diferă printr-o singură cifră binară. Două
câmpuri vecine ale căror termeni canonici diferă printr-o singură variabilă, se
numesc adiacente. Această proprietate trebuie să o aibă toate câmpurile
diagramei, inclusiv câmpurile extreme. Proprietatea de adiacență este foarte
importantă, ea condiționând minimizarea funcțiilor logice prin intermediul
diagramelor Karnaugh. Pentru interpretarea corectă a acestei proprietăți a
diagramelor Karnaugh se consideră că toate câmpurile aparțin unei suprafețe
închise. Astfel, câmpurile extreme vor fi vecine, două câte două, după coloanele
sau liniile diagramei.
1 Ele mai sunt denumite și diagrame Karnaugh–Veitch. Au fost descoperite în 1952 de Edward W.
Veitch și dezvoltate în 1953 de Maurice Karnaugh, fizician american, pentru simplificarea circuitelor
electronice.
29
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
x1
F(x1, x2)
𝑥1 = 0 𝑥1 = 1
0 2
𝑥2 = 0
P0(0,0) P2(1,0)
x2 1 3
𝑥2 = 1
P1(0,1) P3(1,1)
x1 x2
F(x1, x2, x3)
00 01 11 10
0 2 6 4
0
P0(0,0,0) P2(0,1,0) P6(1,1,0) P4(1,0,0)
x3
1 3 7 5
1
P1(0,0,1) P3(0,1,1) P7(1,1,1) P5(1,0,1)
30
Cap.2 Elemente de logică booleană
x1 x2
F(x1, x2, x3, x4)
00 01 11 10
0 4 12 8
00
P0(0,0,0,0) P4(0,1,0,0) P12(1,1,0,0) P8(1,0,0,0)
1 5 13 9
01
P1(0,0,0,1) P5(0,1,0,1) P13(1,1,0,1) P9(1,0,0,1)
x3 x4
3 7 15 11
11
P3(0,0,1,1) P7(0,1,1,1) P15(1,1,1,1) P11(1,0,1,1)
2 6 14 10
10
P2(0,0,1,0) P6(0,1,1,0) P14(1,1,1,0) P10(1,0,1,0)
31
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
x1 x2 x1
x3 00 01 11 10 x2 0 1
0 0 1 1 1 0 1 1
1 0 0 0 0 1 0 0
GREŞIT CORECT
1 0 0 0 1 1 1 1
GREŞIT CORECT
1 1 1 1 1
GREŞIT CORECT
32
Cap.2 Elemente de logică booleană
x1 x1
x2 0 1 x2 0 1
0 0 0 0 0 1
1 1 1 1 1 1
GREŞIT CORECT
grupurile se constituie astfel încât fiecare dintre ele să includă un număr cât
mai mare de câmpuri și, simultan, să se obțină un număr cât mai mic de
grupuri, respectându-se toate regulile enunțate; unele câmpuri pot să facă
parte din mai multe grupuri, dacă acest lucru conduce la obținerea celui mai
mic număr de grupuri și/sau la constituirea unor grupuri mai mari (Fig.2.10);
x1 x2 x1 x2
x3 00 01 11 10 x3 00 01 11 10
0 1 1 1 1 0 1 1 1 1
1 0 0 1 1 1 0 0 1 1
GREŞIT CORECT
0 1 1 1 1
1 1 1 1
CORECT
33
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
34
Cap.2 Elemente de logică booleană
𝑭𝒂 (𝒙𝟏 , 𝒙𝟐 , 𝒙𝟑 , 𝒙𝟒 ) = 𝑷𝟎 + 𝑷𝟒 = 𝒙𝟏 ∙ 𝒙𝟑 ∙ 𝒙𝟒
𝐹𝑎 (𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 ) = 𝑥
⏟1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 = 𝑥1 ∙ 𝑥3 ∙ 𝑥4 ∙ (𝑥2 + 𝑥2 )
𝑠𝑒 𝑎𝑝𝑙𝑖𝑐ă 𝑡𝑒𝑜𝑟𝑒𝑚𝑎 𝑑𝑒 𝑎𝑑𝑖𝑎𝑐𝑒𝑛ță
= 𝑥1 ∙ 𝑥3 ∙ 𝑥4
𝑭𝒃 (𝒙𝟏 , 𝒙𝟐 , 𝒙𝟑 , 𝒙𝟒 ) = 𝑷𝟑 + 𝑷𝟏𝟏 = 𝒙𝟐 ∙ 𝒙𝟑 ∙ 𝒙𝟒
𝐹𝑏 (𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 ) = 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 = 𝑥2 ∙ 𝑥3 ∙ 𝑥4
a b c
Fig.2.12 Formarea subcuburilor de ordinul 1
Considerând cazul simplu al diagramelor Karnaugh care includ un singur
grup (subcub de ordinul 2), funcțiile 𝐹(𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 ) aferente diagramelor din
figura 2.13 (a, b și c), determinate în baza regulilor expuse mai sus, sunt:
𝑭𝒂 (𝒙𝟏 , 𝒙𝟐 , 𝒙𝟑 , 𝒙𝟒 ) = 𝑷𝟎 + 𝑷𝟏 + 𝑷𝟒 + 𝑷𝟓 = 𝒙𝟏 ∙ 𝒙𝟑
𝐹𝑎 = ⏟
𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + ⏟
𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4
𝑠𝑒 𝑎𝑝𝑙𝑖𝑐ă 𝑡𝑒𝑜𝑟𝑒𝑚𝑎 𝑑𝑒 𝑎𝑑𝑖𝑎𝑐𝑒𝑛ță 𝑠𝑒 𝑎𝑝𝑙𝑖𝑐ă 𝑡𝑒𝑜𝑟𝑒𝑚𝑎 𝑑𝑒 𝑎𝑑𝑖𝑎𝑐𝑒𝑛ță
= 𝑥
⏟1 ∙ 𝑥2 ∙ 𝑥3 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 = 𝑥1 ∙ 𝑥3
𝑠𝑒 𝑎𝑝𝑙𝑖𝑐ă 𝑡𝑒𝑜𝑟𝑒𝑚𝑎 𝑑𝑒 𝑎𝑑𝑖𝑎𝑐𝑒𝑛ță
35
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
= 𝑥1 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥3 ∙ 𝑥4 = 𝑥3 ∙ 𝑥4
𝑭𝒄 (𝒙𝟏 , 𝒙𝟐 , 𝒙𝟑 , 𝒙𝟒 ) = 𝑷𝟎 + 𝑷𝟒 + 𝑷𝟐 + 𝑷𝟔 = 𝒙𝟏 ∙ 𝒙𝟒
𝐹𝑐 = 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4
= 𝑥1 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥3 ∙ 𝑥4 = 𝑥1 ∙ 𝑥4
a b c
Fig.2.13 Formarea subcuburilor de ordinul 2
36
Cap.2 Elemente de logică booleană
(în acest caz) se reduce la un produs de două variabile, variabilele comune tuturor
câmpurilor subcubului.
Considerând cazul diagramelor Karnaugh care includ un singur grup (subcub
de ordinul 3), funcția 𝐹(𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 ) aferente diagramelor din figura 2.15 (a și b),
determinate în baza regulilor expuse mai sus, sunt:
x1x2 00 01 11 10 x1x2 00 01 11 10
x3x4 x3x4
0 4 12 8 0 4 12 8
00 0 0 0 0 00 0 0 1 1
1 5 13 9 1 5 13 9
01 1 1 1 1 01 0 0 1 1
3 7 15 11 3 7 15 11
11 1 1 1 1 11 0 0 1 1
2 6 14 10 2 6 14 10
10 0 0 0 0 10 0 0 1 1
a b
Fig.2.15 Formarea subcuburilor de ordinul 3
= 𝑥1 ∙ 𝑥2 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥4
= 𝑥1 ∙ 𝑥4 + 𝑥1 ∙ 𝑥4 = 𝑥4
+⏟
𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + ⏟
𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 =
= 𝑥1 ∙ 𝑥2 ∙ 𝑥3 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3
= 𝑥1 ∙ 𝑥2 + 𝑥1 ∙ 𝑥2 = 𝑥1
37
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
x1x3x4 x2x3x4
38
Cap.2 Elemente de logică booleană
39
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
x1x2 00 01 11 10 x1x2 00 01 11 10
x3x4 x3x4
0 4 12 8 0 4 12 8
00 0 1 1 0 x2x3 00 1 1 0 1 x2
1 5 13 9 1 5 13 9
01 1 1 1 1 01 1 0 0 1
3 7 15 11 x4 3 7 15 11
11 1 1 1 1 11 1 0 1 1
2 6 14 10 2 6 14 10
10 0 1 0 0 10 1 1 0 1
x1x2 x1x4 x1x3x4
a b
Fig.2.18 Identificarea grafică a subcuburilor și a termenilor funcțiilor logice
Funcțiile logice în formă minimizată, asociate diagramelor din figura 2.18,
sunt:
𝐹𝑎 (𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 ) = 𝑥2 ∙ 𝑥3 + 𝑥4 + 𝑥1 ∙ 𝑥2
𝐹𝑏 (𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 ) = 𝑥2 + 𝑥1 ∙ 𝑥4 + 𝑥1 ∙ 𝑥3 ∙ 𝑥4
Orice alte soluții de grupare a câmpurilor diagramelor din figura 2.18 ar
conduce la obținerea unor funcții logice echivalente, însă exprimate într-o formă
mai complexă în comparație cu funcțiile Fa și Fb .
Folosirea diagramelor Karnaugh pentru funcții cu mai mult de 4 variabile,
necesită construirea de diagrame suplimentare, respectiv definirea de reguli de
corespondență între diagrame pentru constituirea subcuburilor: pentru 5 variabile
de intrare sunt necesare două diagrame Karnaugh, fiecare cu 16 câmpuri; pentru
6 variabile sunt necesare 4 diagrame, fiecare cu câte 16 câmpuri.
Diagramele Karnaugh pot fi reprezentate și prin intermediul termenilor
funcțiilor canonice conjunctive (FCC). În această situație procedura de extragere a
funcției minimizate este similară, cu observația că subcuburile se vor constitui pe
baza zerourilor din diagrame.
40
Cap.2 Elemente de logică booleană
Aplicația 2.1
Sistemul de alimentare cu piese al unei instalații trebuie să funcționeze în
următoarele condiții:
să nu pornească dacă presiunea în sistem este mai mare decât cea
prestabilită (P = 1);
să pornească dacă senzorii S1 și S2 sunt activi (S1=1; S2=1);
să pornească dacă numărătorul N a numărat 10 piese (N=1).
41
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
42
Cap.2 Elemente de logică booleană
FFCD = (F0P0) + (F1P1) + (F2P2) + (F3P3) + (F4P4) + (F5P5) + (F6P6) + (F7P7) + (F8P8)+
(F9P9) + (F10P10) + (F11P11) + (F12P12) + (F13P13) + (F14P14) + (F15P15)
= (0P0) + (1P1) + (0P2) + (0P3) + (0P4) + (1P5) + (0P6) + (0P7) + (0P8)+
(1P9) + (0P10) + (0P11) + (1P12) + (1P13) + (0P14) + (0P15)
= P1 + P5 +P9 + P12 + P13
= 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 +
𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4
= 𝑥1 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 = 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3
= 𝑥3 (𝑥4 + 𝑥1 ∙ 𝑥2 )
43
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
S1S2 S1N
00 01 11 10 00 01 11 10
PN S2P
0 4 12 8 0 4 12 8
00 0 0 1 0 00 0 1 1 0
PS1S2 PN
1 5 13 9 1 5 13 9
01 1 1 1 1 01 0 0 0 0
PN
3 7 15 11 3 7 15 11
11 0 0 0 0 11 0 0 0 0
2 6 14 10 2 6 14 10
10 0 0 0 0 10 0 1 1 1
PS1S2
a b
Fig.2.19 Aplicația 2.1. Determinarea grafică a termenilor funcției FSTART
pentru diferite moduri de construire a diagramei Karnaugh
44
Cap.2 Elemente de logică booleană
45
Curs 2 – Sisteme Logice Elementare
1
NOŢIUNI TEORETICE FUNDAMENTALE
1. Funcția identitate
Descrierea problemei
Soluția
Variabile
2
2. Funcția NOT (negarea)
Descrierea problemei
Soluția
Variabile
3
3. Funcția OR (SAU logic)
Descrierea problemei
Fiecare din cele două intrări ale unui depozit sunt prevăzute cu buton
pentru soneria din camera portarului. Acesta trebuie să sune la
apăsarea independentă a oricăruia din cele două butoane.
Soluția
Variabile
4
4. Funcția AND (ŞI logic)
Descrierea problemei
Soluția
5
Diagrama Ladder
Variabile
Descrierea problemei
6
Soluția
Diagrama Ladder
Variabile
7
Cap.2 Elemente de logică booleană
1. Funcții logice
2. Forme canonice
3. Diagrame Karnaugh
4. Minimizarea funcțiilor logice
5. Sisteme logice combinaționale
20
Cap.2 Elemente de logică booleană
1. Funcții logice
Obiectul de studiu al logicii sunt propozițiile și compunerile lor. Enunțul A se
numește propoziție dacă A exprimă un fapt. Propozițiile în logica booleană1 pot
avea numai două valori: adevărat sau fals. Compunerea a două sau mai multe
propoziții logice se numește funcție logică și rezultatul acesteia este 0 sau 1 (fals
sau adevărat). Toate funcțiile logice sunt formate cu ajutorul a trei operatori care
formează mulțimea operatorilor algebrei booleene, Mop = {NU, ȘI, SAU}.
1
George Boole (02.11.1815 – 08.12.1864) matematician și filosof englez, considerat unul din
fondatorii informaticii. A pus bazele algebrei booleene, domeniu care stă la baza funcționării
calculatoarelor.
21
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
22
Cap.2 Elemente de logică booleană
x 1 + x2 = x2 + x 1
3. Asociativitatea
În cazul funcțiilor (expresiilor logice) cu un sigur operator, ȘI sau SAU, nu
contează ordinea de evaluare a termenilor:
x1 + (x2 + x3) = (x1 + x2) + x3
x1 (x2 x3) = (x1 x2) x3
4. Distributivitatea
Cele două operații, ȘI și SAU, sunt distributive una față de cealaltă:
x1 + (x2 x3) = (x1 + x2) (x1 + x3)
x1 (x2 + x3) = (x1 x2) + (x1 x3)
5. Element neutru
Elementul neutru al unei variabile booleene este elementul pentru care
funcția devine egală cu valoarea variabilei: fȘI(x1, 1) = x1 , fSAU(x1, 0) = x1.
x1 1 = x1, pentru funcția ȘI elementul neutru este 1.
x1 + 0 = x1, pentru funcția SAU element neutru este 0.
6. Element invers:
Elementul invers al unei variabile booleene este elementul negat:
𝑓𝑆𝐼 (𝑥1 , 𝑥1 ) = 0 , 𝑓𝑆𝐴𝑈 (𝑥1 , 𝑥1 ) = 1
𝑥1 𝑥1 = 0
𝑥1 + 𝑥1 = 1
1
În cadrul acestei lucrări folosirea simbolurilor „+”, „ ” pentru reprezentarea operatorilor SAU și ŞI
conduce implicit la preluarea regulilor privind ordinea de efectuare a operațiilor. Astfel, în lipsa
parantezelor, care specifică clar ordinea efectuării operațiilor, se subînțelege că operația de înmulțire
(operator ŞI) este prioritară operației de adunare (operator SAU).
23
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
1
Teorema poartă numele celui care a descoperit-o, Augustus De Morgan (1806-1871), matematician
și logician englez.
24
Cap.2 Elemente de logică booleană
Altfel spus, un tabel de adevăr specifică valorile unei funcții logice pentru
orice situație posibilă determinată de valorile variabilelor.
2. Forme canonice
Formele canonice asigură scrierea structurată a funcțiilor (expresiilor) logice
și servesc pentru obținerea de reprezentări care permit reducerea numărului de
operatori prin aplicarea unor tehnici specifice. Orice expresie logică poate fi adusă
la o formă canonică. Pentru reprezentarea unei funcții logice în formă canonică
există două opțiuni echivalente: reprezentarea în formă canonică disjunctivă și în
formă canonică conjunctivă.
25
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
FFCD (x1, x2, x3) = (F0P0) + (F1P1) + (F2P2) + (F3P3) + (F4P4) + (F5P5) + (F6P6) + (F7P7)
FFCC (x1, x2, x3) = (F0+S0) (F1+S1) (F2+S2) (F3+S3) (F4+S4) (F5+S5) (F6+S6) (F7+S7)
26
Cap.2 Elemente de logică booleană
O funcție logică de trei variabile, pentru care se cunosc valorile (Fk) aferente
fiecărei configurații posibile a variabilelor, se exprimă în forma canonică
disjunctivă (FCD), astfel:
FFCD(x1, x2, x3)=(F0P0)+(F1P1)+(F2P2)+(F3P3)+(F4P4)+(F5P5)+(F6P6)+(F7P7)
Pentru construirea termenilor de tip produs (Pk), aferenți unei funcții logice
exprimate în formă canonică disjunctivă (FCD), variabilele care au valoarea 0
(zero) se vor considera negate, iar variabilele care au valoarea 1 (unu) se
consideră ne-negate (Tabelul 2.2).
Exemplu: pentru configurația (0,0,1) a variabilelor de intrare (x1,x2,x3), termenul
standard de tip produs este P1, adică: 𝑥1 ∙ 𝑥2 ∙ 𝑥3 .
Scrierea unei funcții logice în formă canonică disjunctivă permite
simplificarea imediată, pe baza următoarelor proprietăți:
Pk 0 = 0, 0+1=1, 0+0=0.
Adică, oricare ar fi valoarea logică a termenului Pk, dacă Fk=0, rezultatul
expresiilor următoare nu depinde de Pk :
Pk Fk + 1 = Pk 0 + 1 = 1;
Pk Fk + 0 = Pk 0 + 0 = 0.
Așadar, în cazul utilizării formelor canonice disjunctive pentru exprimarea
funcțiilor logice, au importanță doar termenii care includ valori ale lui Fk diferite
de 0 (zero).
De reținut: În cazul exprimării funcțiilor logice prin intermediul FCD, se vor
considera doar termenii dezvoltării pentru care Fk este egal cu 1 (unu).
Exemplu: Fie funcția F(x1, x2 , x3 ) B2, x1 , x2, x3 B2, unde B2 = {0, 1}. Dacă
valorile funcției F sunt: F0=1,F1=0,F2=1,F3=0,F4=1,F5=0,F6=0,F7=1,atunci:
FFCD(x1,x2,x3)=(F0P0)+(F1P1)+(F2P2)+(F3P3)+(F4P4)+(F5P5)+(F6P6)+(F7P7)
=(1 P0)+(0 P1)+(1 P2)+(0 P3)+(1 P4)+(0 P5)+(0 P6)+(1 P7)
=(1 P0)+ 0 +(1 P2) + 0 +(1 P4)+ 0 + 0 +(1 P7)
=(1 P0)+(1 P2)+(1 P4)+(1 P7)= P0+P2+P4+P7
= 𝑥1 ∙ 𝑥2 ∙ 𝑥3 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3
= 𝑥2 ∙ 𝑥3 ∙ (𝑥1 +𝑥1 ) + 𝑥2 ∙ (𝑥1 ∙ 𝑥3 + 𝑥1 ∙ 𝑥3 )
= 𝑥2 ∙ 𝑥3 + 𝑥2 ∙ (𝑥1 ∙ 𝑥3 + 𝑥1 ∙ 𝑥3 )
27
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
O funcție logică de trei variabile, pentru care se cunosc valorile (Fk) aferente
fiecărei configurații posibile a variabilelor, se exprimă în forma canonică
conjunctivă (FCC), astfel:
FFCC(x1, x2, x3) =(F0+S0) (F1+S1) (F2+S2) (F3+S3) (F4+S4) (F5+S5) (F6+S6) (F7+S7)
Pentru construirea termenilor de tip sumă (Sk), aferenți unei funcții logice
exprimate în formă canonică conjunctivă (FCC), variabilele care au valoarea 0
(zero) se vor considera ne-negate, iar variabilele care au valoarea 1 (unu) se
consideră negate (Tabelul 2.2).
Exemplu: pentru configurația (0,1,1) a variabilelor de intrare (x1,x2,x3), termenul
standard de tip sumă este S3, adică: 𝑥1 + 𝑥2 + 𝑥3 .
Scrierea unei funcții logice în formă canonică conjunctivă permite
simplificarea imediată, în bază următoarelor proprietăți:
Sk+1= 1, 1 0 = 0, 1 1=1
Adică, oricare ar fi valoarea logică a termenului Sk, dacă Fk=1, rezultatul
expresiilor următoare nu depinde de Sk :
(Sk+ Fk ) 1 = (Sk+1) 1 = 1;
(Sk+ Fk ) 0 = (Sk+1 ) 0 = 0.
Așadar, în cazul utilizării formelor canonice conjunctive pentru exprimarea
funcțiilor logice, au importanță doar termenii care includ valori ale lui Fk diferite
de 1 (unu).
De reținut: În cazul exprimării funcțiilor logice prin intermediul FCC, se vor
considera doar termenii dezvoltării pentru care Fk este egal cu 0 (zero).
Exemplu: Fie funcția F(x1, x2 , x3 ) B2, x1 , x2, x3 B2, unde B2 = {0, 1}. Dacă
valorile funcției F sunt: F0=0,F1=1,F2=1,F3=0,F4=1,F5=1,F6=1,F7=0,atunci:
FFCC(x1,x2,x3)= (F0+S0) (F1+S1) (F2+S2) (F3+S3) (F4+S4) (F5+S5) (F6+S6) (F7+S7)
=(0+ S0) (1+ S1) (1+ S2) (0+ S3) (1+ S4) (1+ S5) (1+ S6) (0+S7)
=(0+ S0) 1 1 (0+ S3) 1 1 1 (0+S7)
= (0+ S0) (0+ S3) (0+ S7) = S0 S3 S7
= (𝑥1 + 𝑥2 + 𝑥3 ) ∙ (𝑥1 + 𝑥2 + 𝑥3 ) ∙ (𝑥1 + 𝑥2 + 𝑥3 )
28
Cap.2 Elemente de logică booleană
3. Diagrame Karnaugh
Diagramele Karnaugh1 sunt forme sintetice ale tabelelor de adevăr, care se
constituie în instrumente pentru minimizarea funcțiilor logice complexe.
Problema care trebuie să o rezolve o diagramă Karnaugh este următoarea: se
cunoaște rezultatul funcției și se cere determinarea acesteia în formă minimală.
O diagramă Karnaugh aferentă unei funcții booleene de n variabile se
reprezintă sub forma unui pătrat sau dreptunghi împărțit în 2n câmpuri. Fiecare
câmp este rezervat unui termen din reprezentarea funcției în formă canonică (fie
prin produse Pk , fie prin sume, Sk, unde k=0,1,2,..., 2n-1).
O diagramă Karnaugh este astfel dezvoltată încât oricare două câmpuri
(pătrate) vecine, pe linie sau pe coloană, diferă printr-o singură cifră binară. Două
câmpuri vecine ale căror termeni canonici diferă printr-o singură variabilă, se
numesc adiacente. Această proprietate trebuie să o aibă toate câmpurile
diagramei, inclusiv câmpurile extreme. Proprietatea de adiacență este foarte
importantă, ea condiționând minimizarea funcțiilor logice prin intermediul
diagramelor Karnaugh. Pentru interpretarea corectă a acestei proprietăți a
diagramelor Karnaugh se consideră că toate câmpurile aparțin unei suprafețe
închise. Astfel, câmpurile extreme vor fi vecine, două câte două, după coloanele
sau liniile diagramei.
1 Ele mai sunt denumite și diagrame Karnaugh–Veitch. Au fost descoperite în 1952 de Edward W.
Veitch și dezvoltate în 1953 de Maurice Karnaugh, fizician american, pentru simplificarea circuitelor
electronice.
29
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
x1
F(x1, x2)
𝑥1 = 0 𝑥1 = 1
0 2
𝑥2 = 0
P0(0,0) P2(1,0)
x2 1 3
𝑥2 = 1
P1(0,1) P3(1,1)
x1 x2
F(x1, x2, x3)
00 01 11 10
0 2 6 4
0
P0(0,0,0) P2(0,1,0) P6(1,1,0) P4(1,0,0)
x3
1 3 7 5
1
P1(0,0,1) P3(0,1,1) P7(1,1,1) P5(1,0,1)
30
Cap.2 Elemente de logică booleană
x1 x2
F(x1, x2, x3, x4)
00 01 11 10
0 4 12 8
00
P0(0,0,0,0) P4(0,1,0,0) P12(1,1,0,0) P8(1,0,0,0)
1 5 13 9
01
P1(0,0,0,1) P5(0,1,0,1) P13(1,1,0,1) P9(1,0,0,1)
x3 x4
3 7 15 11
11
P3(0,0,1,1) P7(0,1,1,1) P15(1,1,1,1) P11(1,0,1,1)
2 6 14 10
10
P2(0,0,1,0) P6(0,1,1,0) P14(1,1,1,0) P10(1,0,1,0)
31
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
x1 x2 x1
x3 00 01 11 10 x2 0 1
0 0 1 1 1 0 1 1
1 0 0 0 0 1 0 0
GREŞIT CORECT
1 0 0 0 1 1 1 1
GREŞIT CORECT
1 1 1 1 1
GREŞIT CORECT
32
Cap.2 Elemente de logică booleană
x1 x1
x2 0 1 x2 0 1
0 0 0 0 0 1
1 1 1 1 1 1
GREŞIT CORECT
grupurile se constituie astfel încât fiecare dintre ele să includă un număr cât
mai mare de câmpuri și, simultan, să se obțină un număr cât mai mic de
grupuri, respectându-se toate regulile enunțate; unele câmpuri pot să facă
parte din mai multe grupuri, dacă acest lucru conduce la obținerea celui mai
mic număr de grupuri și/sau la constituirea unor grupuri mai mari (Fig.2.10);
x1 x2 x1 x2
x3 00 01 11 10 x3 00 01 11 10
0 1 1 1 1 0 1 1 1 1
1 0 0 1 1 1 0 0 1 1
GREŞIT CORECT
0 1 1 1 1
1 1 1 1
CORECT
33
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
34
Cap.2 Elemente de logică booleană
𝑭𝒂 (𝒙𝟏 , 𝒙𝟐 , 𝒙𝟑 , 𝒙𝟒 ) = 𝑷𝟎 + 𝑷𝟒 = 𝒙𝟏 ∙ 𝒙𝟑 ∙ 𝒙𝟒
𝐹𝑎 (𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 ) = 𝑥
⏟1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 = 𝑥1 ∙ 𝑥3 ∙ 𝑥4 ∙ (𝑥2 + 𝑥2 )
𝑠𝑒 𝑎𝑝𝑙𝑖𝑐ă 𝑡𝑒𝑜𝑟𝑒𝑚𝑎 𝑑𝑒 𝑎𝑑𝑖𝑎𝑐𝑒𝑛ță
= 𝑥1 ∙ 𝑥3 ∙ 𝑥4
𝑭𝒃 (𝒙𝟏 , 𝒙𝟐 , 𝒙𝟑 , 𝒙𝟒 ) = 𝑷𝟑 + 𝑷𝟏𝟏 = 𝒙𝟐 ∙ 𝒙𝟑 ∙ 𝒙𝟒
𝐹𝑏 (𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 ) = 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 = 𝑥2 ∙ 𝑥3 ∙ 𝑥4
a b c
Fig.2.12 Formarea subcuburilor de ordinul 1
Considerând cazul simplu al diagramelor Karnaugh care includ un singur
grup (subcub de ordinul 2), funcțiile 𝐹(𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 ) aferente diagramelor din
figura 2.13 (a, b și c), determinate în baza regulilor expuse mai sus, sunt:
𝑭𝒂 (𝒙𝟏 , 𝒙𝟐 , 𝒙𝟑 , 𝒙𝟒 ) = 𝑷𝟎 + 𝑷𝟏 + 𝑷𝟒 + 𝑷𝟓 = 𝒙𝟏 ∙ 𝒙𝟑
𝐹𝑎 = ⏟
𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + ⏟
𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4
𝑠𝑒 𝑎𝑝𝑙𝑖𝑐ă 𝑡𝑒𝑜𝑟𝑒𝑚𝑎 𝑑𝑒 𝑎𝑑𝑖𝑎𝑐𝑒𝑛ță 𝑠𝑒 𝑎𝑝𝑙𝑖𝑐ă 𝑡𝑒𝑜𝑟𝑒𝑚𝑎 𝑑𝑒 𝑎𝑑𝑖𝑎𝑐𝑒𝑛ță
= 𝑥
⏟1 ∙ 𝑥2 ∙ 𝑥3 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 = 𝑥1 ∙ 𝑥3
𝑠𝑒 𝑎𝑝𝑙𝑖𝑐ă 𝑡𝑒𝑜𝑟𝑒𝑚𝑎 𝑑𝑒 𝑎𝑑𝑖𝑎𝑐𝑒𝑛ță
35
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
= 𝑥1 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥3 ∙ 𝑥4 = 𝑥3 ∙ 𝑥4
𝑭𝒄 (𝒙𝟏 , 𝒙𝟐 , 𝒙𝟑 , 𝒙𝟒 ) = 𝑷𝟎 + 𝑷𝟒 + 𝑷𝟐 + 𝑷𝟔 = 𝒙𝟏 ∙ 𝒙𝟒
𝐹𝑐 = 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4
= 𝑥1 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥3 ∙ 𝑥4 = 𝑥1 ∙ 𝑥4
a b c
Fig.2.13 Formarea subcuburilor de ordinul 2
36
Cap.2 Elemente de logică booleană
(în acest caz) se reduce la un produs de două variabile, variabilele comune tuturor
câmpurilor subcubului.
Considerând cazul diagramelor Karnaugh care includ un singur grup (subcub
de ordinul 3), funcția 𝐹(𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 ) aferente diagramelor din figura 2.15 (a și b),
determinate în baza regulilor expuse mai sus, sunt:
x1x2 00 01 11 10 x1x2 00 01 11 10
x3x4 x3x4
0 4 12 8 0 4 12 8
00 0 0 0 0 00 0 0 1 1
1 5 13 9 1 5 13 9
01 1 1 1 1 01 0 0 1 1
3 7 15 11 3 7 15 11
11 1 1 1 1 11 0 0 1 1
2 6 14 10 2 6 14 10
10 0 0 0 0 10 0 0 1 1
a b
Fig.2.15 Formarea subcuburilor de ordinul 3
= 𝑥1 ∙ 𝑥2 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥4
= 𝑥1 ∙ 𝑥4 + 𝑥1 ∙ 𝑥4 = 𝑥4
+⏟
𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + ⏟
𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 =
= 𝑥1 ∙ 𝑥2 ∙ 𝑥3 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3
= 𝑥1 ∙ 𝑥2 + 𝑥1 ∙ 𝑥2 = 𝑥1
37
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
x1x3x4 x2x3x4
38
Cap.2 Elemente de logică booleană
39
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
x1x2 00 01 11 10 x1x2 00 01 11 10
x3x4 x3x4
0 4 12 8 0 4 12 8
00 0 1 1 0 x2x3 00 1 1 0 1 x2
1 5 13 9 1 5 13 9
01 1 1 1 1 01 1 0 0 1
3 7 15 11 x4 3 7 15 11
11 1 1 1 1 11 1 0 1 1
2 6 14 10 2 6 14 10
10 0 1 0 0 10 1 1 0 1
x1x2 x1x4 x1x3x4
a b
Fig.2.18 Identificarea grafică a subcuburilor și a termenilor funcțiilor logice
Funcțiile logice în formă minimizată, asociate diagramelor din figura 2.18,
sunt:
𝐹𝑎 (𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 ) = 𝑥2 ∙ 𝑥3 + 𝑥4 + 𝑥1 ∙ 𝑥2
𝐹𝑏 (𝑥1 , 𝑥2 , 𝑥3 , 𝑥4 ) = 𝑥2 + 𝑥1 ∙ 𝑥4 + 𝑥1 ∙ 𝑥3 ∙ 𝑥4
Orice alte soluții de grupare a câmpurilor diagramelor din figura 2.18 ar
conduce la obținerea unor funcții logice echivalente, însă exprimate într-o formă
mai complexă în comparație cu funcțiile Fa și Fb .
Folosirea diagramelor Karnaugh pentru funcții cu mai mult de 4 variabile,
necesită construirea de diagrame suplimentare, respectiv definirea de reguli de
corespondență între diagrame pentru constituirea subcuburilor: pentru 5 variabile
de intrare sunt necesare două diagrame Karnaugh, fiecare cu 16 câmpuri; pentru
6 variabile sunt necesare 4 diagrame, fiecare cu câte 16 câmpuri.
Diagramele Karnaugh pot fi reprezentate și prin intermediul termenilor
funcțiilor canonice conjunctive (FCC). În această situație procedura de extragere a
funcției minimizate este similară, cu observația că subcuburile se vor constitui pe
baza zerourilor din diagrame.
40
Cap.2 Elemente de logică booleană
Aplicația 2.1
Sistemul de alimentare cu piese al unei instalații trebuie să funcționeze în
următoarele condiții:
să nu pornească dacă presiunea în sistem este mai mare decât cea
prestabilită (P = 1);
să pornească dacă senzorii S1 și S2 sunt activi (S1=1; S2=1);
să pornească dacă numărătorul N a numărat 10 piese (N=1).
41
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
42
Cap.2 Elemente de logică booleană
FFCD = (F0P0) + (F1P1) + (F2P2) + (F3P3) + (F4P4) + (F5P5) + (F6P6) + (F7P7) + (F8P8)+
(F9P9) + (F10P10) + (F11P11) + (F12P12) + (F13P13) + (F14P14) + (F15P15)
= (0P0) + (1P1) + (0P2) + (0P3) + (0P4) + (1P5) + (0P6) + (0P7) + (0P8)+
(1P9) + (0P10) + (0P11) + (1P12) + (1P13) + (0P14) + (0P15)
= P1 + P5 +P9 + P12 + P13
= 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4 +
𝑥1 ∙ 𝑥2 ∙ 𝑥3 ∙ 𝑥4
= 𝑥1 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3 = 𝑥3 ∙ 𝑥4 + 𝑥1 ∙ 𝑥2 ∙ 𝑥3
= 𝑥3 (𝑥4 + 𝑥1 ∙ 𝑥2 )
43
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
S1S2 S1N
00 01 11 10 00 01 11 10
PN S2P
0 4 12 8 0 4 12 8
00 0 0 1 0 00 0 1 1 0
PS1S2 PN
1 5 13 9 1 5 13 9
01 1 1 1 1 01 0 0 0 0
PN
3 7 15 11 3 7 15 11
11 0 0 0 0 11 0 0 0 0
2 6 14 10 2 6 14 10
10 0 0 0 0 10 0 1 1 1
PS1S2
a b
Fig.2.19 Aplicația 2.1. Determinarea grafică a termenilor funcției FSTART
pentru diferite moduri de construire a diagramei Karnaugh
44
Cap.2 Elemente de logică booleană
45
Cap.3 Elemente de programare a
controlerelor industriale
46
Cap.3 Elemente de programare a controlerelor industriale
1
Pentru aplicațiile industriale rapide și ultrarapide frecvența ciclului de procesare trebuie mărită, fie
prin utilizarea unei tehnologii de control mai rapide (ex. Simotion versus Simatic), fie prin rularea
aplicației la frecvențe diferite: funcțiile aferente componentei rapide a unui proces sunt procesate la
o frecvență mai mare decât frecvența la care rulează programul principal (funcția main).
47
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
actualizează ieșirile fizice cu semnalele aferente valorilor extrase din memorie (din
zona aferentă imaginii de proces a ieșirilor). Acest mod de lucru asigură citirea
ciclică și simultană a semnalelor de intrare, actualizarea ciclică și simultană a
ieșirilor PLC-ului, totul la o frecvență fixă, prestabilită.
Declararea variabilelor. Înainte de scrierea programului trebuie definite
variabilele. Acest proces diferă funcție de implementare și de limbajul utilizat, însă
orice variabilă trebuie să fie identificabilă (direct sau simbolic), respectiv trebuie
să aibă un tip de dată asociat. Într-un limbaj textual, în conformitate cu
specificațiile IEC61131-3, definirea unei variabile implică următoarea structură
declarativă:
Tipul variabilei
Atributul variabilei
Identificator (nume)
48
Cap.3 Elemente de programare a controlerelor industriale
49
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
50
Cap.3 Elemente de programare a controlerelor industriale
51
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
52
Cap.3 Elemente de programare a controlerelor industriale
PLC
Modul Modul
intrare PROGRAM iesire
24V 8DI I0.1 Q0.6 8DO 0V
B 0 0
1 1
Memorie – Imagine
2 de proces Intrari 2
7 6 5 4 3 2 1 0
3 0 0 0 0 0 0 1 0 IB0 3
0 0 0 0 0 0 0 0 IB1
4 4
5 Memorie – Imagine 5
de proces Iesiri L
6 7 6 5 4 3 2 1 0 6
0 1 0 0 0 0 0 0 QB0
7 0 0 0 0 0 0 0 0 QB1 7
53
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
7 6 5 4 3 2 1 0
MB0 1 1 1 0 0 0 0 0
7 6 5 4 3 2 1 0 MW0 (MB0,MB1)
MB1 0 0 0 0 0 1 0 1
7 6 5 4 3 2 1 0 MD0 (MB0,MB1,MB2,MB3)
MB2 0 1 1 0 0 0 0 0
7 6 5 4 3 2 1 0 MW2 (MB2,MB3)
MB3 0 0 0 0 1 1 1 0
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MW0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1
MB0 MB1
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MW1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0
MB1 MB2
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MW2 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0
MB2 MB3
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MD0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0
54
Cap.3 Elemente de programare a controlerelor industriale
55
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
3. Structura programelor
Potrivit IEC 61131-3, din punct de vedere al programării unui PLC, unitățile
structurale elementare ale unui program utilizator (proiect) sunt: programele,
funcțiile, funcțiile bloc și clasele. Rolul acestor entități este de a structura și
modulariza1 aplicațiile. Fiecare entitate de acest fel este prevăzută cu o interfață
intrări/ieșiri, respectiv poate fi apelată și executată.
La nivelul unei unități centrale (CPU) pot rula mai multe programe care pot
avea diferite priorități: pot fi executate ciclic/periodic sau pe bază de întreruperi.
Programele apelează funcții, funcții bloc și clase. Conceptul de clasă, introdus de
IEC 61131-3 în 2013, este un pas către un alt nivel al programării PLC-urilor, un
nivel care permite trecerea la programarea orientată obiectual, dar care nu face
obiectul prezentului demers.
În arhitectura oricărui program, funcție sau funcție bloc (Fig.3.4) pot fi
identificate două zone distincte:
Partea declarativă – unde sunt definite variabile de interfață, utilizate
pentru schimbul de informații cu alte entități externe, respectiv variabilele
locale, utilizate intern pentru diferite operații.
1
Prin modularizare o sarcină complexă este descompusă în sarcini simple și relativ independente.
Pentru fiecare sarcină simplă se scrie un modul de program corespunzător. Modulele comunică între
ele sau cu alte entități prin interfețe.
56
Cap.3 Elemente de programare a controlerelor industriale
Instrucțiunile aferente unui program, funcție sau funcție bloc sunt editate
într-un limbaj de programare. IEC 61131-3 precizează elementele de limbaj și
regulile de utilizare a acestora pentru patru limbaje de programare standardizate:
- limbaje grafice: Ladder Diagram (LD), Function Block Diagram (FBD);
- limbaje textuale: Instruction List (IL), Structured Text (ST).
Același standard descrie și un al cincilea „limbaj”, Sequential Function Chart
(SFC), destinat structurării aplicațiilor (programelor). Aici, prin structurarea unei
aplicații se înțelege reprezentarea acesteia printr-o rețea de elemente conectate
în serie și paralel, fiecare element având execuția condiționată. Acest mod de
structurare are utilitate în proiectarea aplicațiilor, având un rol asemănător cu
schemele logice din programare (informatică). În unele implementări acest mod
de structurare a devenit limbaj de programare (exemplu: S7 Graph, Siemens).
Toate precizările standardelor au caracter de recomandare și nu reprezintă
o obligativitate pentru producători. Astfel, există și alte limbaje de programare a
PLC-urilor care nu sunt standardizate dar care sunt utilizate totuși în practică. De
asemenea, chiar și limbajele standardizate pot fi regăsite în implementările
curente în formă ușor modificată.
Pentru asigurarea funcționalității unei aplicații, toate aceste entități - chiar
dacă sunt definite independent - trebuie să poată fi apelate și executate. Regulile
de apelare a acestora sunt următoarele (Fig.3.5):
- programele pot apela funcții și funcții bloc,
- funcțiile pot apela doar funcții,
- funcțiile bloc pot apela funcții și funcții bloc,
- aceeași entitate nu poate să se apeleze pe ea însăși.
57
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
PROGRAM
Partea declarativa
FUNCTIE BLOC
Partea executiva FUNCTIE BLOC
FUNCTIE
FUNCTIE FUNCTIE
58
Cap.3 Elemente de programare a controlerelor industriale
Acest tip de funcții bloc permit controlul unei variabile de booleene asociate
ieșirii Q a blocului bistabil (Fig.3.6), respectiv permit implementarea software a
metodei tradiționale de automenținere, specifice circuitelor pe bază de relee.
SR RS
BOOL BOOL BOOL BOOL
S1 Q S Q
BOOL BOOL
R R1
a b
Fig. 3.6 Blocuri bistabile IEC 61131-3: a) cu setare dominantă; b) cu resetare dominantă
59
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
Fig. 3.7 Funcții detectoare de front (IEC61131-3): a) front crescător; b) front descrescător
Descrierile în limbaj ST a celor două funcții bloc din figura 3.7 permit
înțelegerea modului de operare al acestora.
60
Cap.3 Elemente de programare a controlerelor industriale
4.3 Temporizatoare
unde:
*** IN – variabilă de intrare (INput)
PT – variabilă de intrare (Preset Time)
BOOL BOOL Q – variabilă de ieșire (Out)
IN Q ET – variabilă de ieșire (Elapsed Time)
TIME TIME
TP (Pulse Timer)
PT ET *** TON (Timer ON delay)
TOF (Timer OFF delay)
Fig. 3.8 Temporizatoare standardizate (IEC 61131-3): reprezentare grafică, intrări, ieșiri
61
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
1
IN
0
1
Q
0
PT PT PT
PT
ET
0
t0 t1 t2 t3 t4 t5 t6 t7
1
IN
0
1
Q
0
PT PT
PT
ET
0
t0 t1 t2 t3 t4 t5 t6 t7
62
Cap.3 Elemente de programare a controlerelor industriale
egală cu PT (după expirarea timpului predefinit PT, ET=PS) ieșirea Q devine 1 logic
(Q=1). Apariția unui front descrescător la intrarea IN conduce la resetarea
variabilei ET (ET=0), respectiv a ieșirii Q (Q=0).
1
IN
0
1
Q
0
PT PT
PT
ET
0
t0 t1 t2 t3 t4 t5 t6 t7
63
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
Soluția 2:
Temporizator TON
- utilizare naturală a
temporizatorului TON
pentru rezolvarea sarcinii
(logică simplă)
Soluția 3:
Temporizator TOF
- utilizare improprie a
temporizatorului TOF
pentru rezolvarea sarcinii
(logică complicată)
- necesită introducerea unei
variabile suplimentare M0.0
- utilizare improprie a
temporizatorului TP pentru
rezolvarea sarcinii
(logică complicată)
- necesită introducerea unei
variabile suplimentare M0.0
64
Cap.3 Elemente de programare a controlerelor industriale
Soluția 2:
Temporizator TON
- utilizare improprie a
temporizatorului TON
pentru rezolvarea sarcinii
(logică complicată)
- necesită introducerea unei
variabile suplimentare M0.0
Soluția 3:
Temporizator TOF
- utilizare naturală a
temporizatorului TOF
pentru rezolvarea sarcinii
- utilizare naturală a
temporizatorului TP pentru
rezolvarea sarcinii
(logică simplă)
Soluția 2:
Temporizator TON
- utilizare improprie a
temporizatorului TON
pentru rezolvarea sarcinii
(logică complicată)
- necesită introducerea unei
variabile suplimentare M0.0
65
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
4.4 Numărătoare
66
Cap.3 Elemente de programare a controlerelor industriale
FUNCTION_BLOCK CTU
VAR_INPUT CU: BOOL R_EDGE;
CTU R:BOOL; PV:INT; END_VAR
VAR_OUTPUT Q: BOOL; CV:INT; END_VAR
BOOL BOOL IF R
CU Q
THEN CV:= 0;
BOOL
R ELSIF CU AND (CV < PVmax)
THEN CV:= CV+1;
END_IF;
INT INT
PV CV Q:= (CV >= PV);
END_FUNCTION_BLOCK
FUNCTION_BLOCK CTD
VAR_INPUT CD: BOOL R_EDGE;
CTD LD:BOOL; PV:INT; END_VAR
VAR_OUTPUT Q: BOOL; CV:INT; END_VAR
BOOL BOOL
CD Q IF LD
THEN CV:= PV;
BOOL
LD ELSIF CD AND (CV > PVmin)
THEN CV:= CV-1;
INT
PV CV INT END_IF;
Q:= (CV <= 0);
END_FUNCTION_BLOCK
FUNCTION_BLOCK CTUD
VAR_INPUT CU: BOOL R_EDGE; ...
. . . . . . . . . . . . .............................................................................................................. . .
CTUD IF R
BOOL BOOL THEN CV:= 0;
CD QU ELSIF LD
BOOL BOOL
LD QD THEN CV:= PV;
BOOL ELSE
R IF NOT (CU AND CD)
BOOL
LD THEN
INT
PV CV INT IF CU AND (CV < PVmax)
THEN CV:= CV+1;
ELSIF CD AND (CV > PVmin)
THEN CV:= CV-1;
END_IF;
END_IF;
END_IF;
QU:= (CV >= PV);
QD:= (CV <= 0);
END_FUNCTION_BLOCK
Fig. 3.12 Numărătoare standardizate (IEC 61131-3): reprezentare grafică, cod sursă
67
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
Soluție 2:
Numărător decremental
68
Cap.3 Elemente de programare a controlerelor industriale
S1 – senzor intrare
S2 – senzor ieșire
L1 – lumină verde
L2 – lumină roșie
M0.0 – memorie auxiliară
69
Cap.3 Elemente de programare a
controlerelor industriale
46
Cap.3 Elemente de programare a controlerelor industriale
1
Pentru aplicațiile industriale rapide și ultrarapide frecvența ciclului de procesare trebuie mărită, fie
prin utilizarea unei tehnologii de control mai rapide (ex. Simotion versus Simatic), fie prin rularea
aplicației la frecvențe diferite: funcțiile aferente componentei rapide a unui proces sunt procesate la
o frecvență mai mare decât frecvența la care rulează programul principal (funcția main).
47
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
actualizează ieșirile fizice cu semnalele aferente valorilor extrase din memorie (din
zona aferentă imaginii de proces a ieșirilor). Acest mod de lucru asigură citirea
ciclică și simultană a semnalelor de intrare, actualizarea ciclică și simultană a
ieșirilor PLC-ului, totul la o frecvență fixă, prestabilită.
Declararea variabilelor. Înainte de scrierea programului trebuie definite
variabilele. Acest proces diferă funcție de implementare și de limbajul utilizat, însă
orice variabilă trebuie să fie identificabilă (direct sau simbolic), respectiv trebuie
să aibă un tip de dată asociat. Într-un limbaj textual, în conformitate cu
specificațiile IEC61131-3, definirea unei variabile implică următoarea structură
declarativă:
Tipul variabilei
Atributul variabilei
Identificator (nume)
48
Cap.3 Elemente de programare a controlerelor industriale
49
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
50
Cap.3 Elemente de programare a controlerelor industriale
51
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
52
Cap.3 Elemente de programare a controlerelor industriale
PLC
Modul Modul
intrare PROGRAM iesire
24V 8DI I0.1 Q0.6 8DO 0V
B 0 0
1 1
Memorie – Imagine
2 de proces Intrari 2
7 6 5 4 3 2 1 0
3 0 0 0 0 0 0 1 0 IB0 3
0 0 0 0 0 0 0 0 IB1
4 4
5 Memorie – Imagine 5
de proces Iesiri L
6 7 6 5 4 3 2 1 0 6
0 1 0 0 0 0 0 0 QB0
7 0 0 0 0 0 0 0 0 QB1 7
53
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
7 6 5 4 3 2 1 0
MB0 1 1 1 0 0 0 0 0
7 6 5 4 3 2 1 0 MW0 (MB0,MB1)
MB1 0 0 0 0 0 1 0 1
7 6 5 4 3 2 1 0 MD0 (MB0,MB1,MB2,MB3)
MB2 0 1 1 0 0 0 0 0
7 6 5 4 3 2 1 0 MW2 (MB2,MB3)
MB3 0 0 0 0 1 1 1 0
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MW0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1
MB0 MB1
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MW1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0
MB1 MB2
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MW2 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0
MB2 MB3
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
MD0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 1 0
54
Cap.3 Elemente de programare a controlerelor industriale
55
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
3. Structura programelor
Potrivit IEC 61131-3, din punct de vedere al programării unui PLC, unitățile
structurale elementare ale unui program utilizator (proiect) sunt: programele,
funcțiile, funcțiile bloc și clasele. Rolul acestor entități este de a structura și
modulariza1 aplicațiile. Fiecare entitate de acest fel este prevăzută cu o interfață
intrări/ieșiri, respectiv poate fi apelată și executată.
La nivelul unei unități centrale (CPU) pot rula mai multe programe care pot
avea diferite priorități: pot fi executate ciclic/periodic sau pe bază de întreruperi.
Programele apelează funcții, funcții bloc și clase. Conceptul de clasă, introdus de
IEC 61131-3 în 2013, este un pas către un alt nivel al programării PLC-urilor, un
nivel care permite trecerea la programarea orientată obiectual, dar care nu face
obiectul prezentului demers.
În arhitectura oricărui program, funcție sau funcție bloc (Fig.3.4) pot fi
identificate două zone distincte:
Partea declarativă – unde sunt definite variabile de interfață, utilizate
pentru schimbul de informații cu alte entități externe, respectiv variabilele
locale, utilizate intern pentru diferite operații.
1
Prin modularizare o sarcină complexă este descompusă în sarcini simple și relativ independente.
Pentru fiecare sarcină simplă se scrie un modul de program corespunzător. Modulele comunică între
ele sau cu alte entități prin interfețe.
56
Cap.3 Elemente de programare a controlerelor industriale
Instrucțiunile aferente unui program, funcție sau funcție bloc sunt editate
într-un limbaj de programare. IEC 61131-3 precizează elementele de limbaj și
regulile de utilizare a acestora pentru patru limbaje de programare standardizate:
- limbaje grafice: Ladder Diagram (LD), Function Block Diagram (FBD);
- limbaje textuale: Instruction List (IL), Structured Text (ST).
Același standard descrie și un al cincilea „limbaj”, Sequential Function Chart
(SFC), destinat structurării aplicațiilor (programelor). Aici, prin structurarea unei
aplicații se înțelege reprezentarea acesteia printr-o rețea de elemente conectate
în serie și paralel, fiecare element având execuția condiționată. Acest mod de
structurare are utilitate în proiectarea aplicațiilor, având un rol asemănător cu
schemele logice din programare (informatică). În unele implementări acest mod
de structurare a devenit limbaj de programare (exemplu: S7 Graph, Siemens).
Toate precizările standardelor au caracter de recomandare și nu reprezintă
o obligativitate pentru producători. Astfel, există și alte limbaje de programare a
PLC-urilor care nu sunt standardizate dar care sunt utilizate totuși în practică. De
asemenea, chiar și limbajele standardizate pot fi regăsite în implementările
curente în formă ușor modificată.
Pentru asigurarea funcționalității unei aplicații, toate aceste entități - chiar
dacă sunt definite independent - trebuie să poată fi apelate și executate. Regulile
de apelare a acestora sunt următoarele (Fig.3.5):
- programele pot apela funcții și funcții bloc,
- funcțiile pot apela doar funcții,
- funcțiile bloc pot apela funcții și funcții bloc,
- aceeași entitate nu poate să se apeleze pe ea însăși.
57
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
PROGRAM
Partea declarativa
FUNCTIE BLOC
Partea executiva FUNCTIE BLOC
FUNCTIE
FUNCTIE FUNCTIE
58
Cap.3 Elemente de programare a controlerelor industriale
Acest tip de funcții bloc permit controlul unei variabile de booleene asociate
ieșirii Q a blocului bistabil (Fig.3.6), respectiv permit implementarea software a
metodei tradiționale de automenținere, specifice circuitelor pe bază de relee.
SR RS
BOOL BOOL BOOL BOOL
S1 Q S Q
BOOL BOOL
R R1
a b
Fig. 3.6 Blocuri bistabile IEC 61131-3: a) cu setare dominantă; b) cu resetare dominantă
59
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
Fig. 3.7 Funcții detectoare de front (IEC61131-3): a) front crescător; b) front descrescător
Descrierile în limbaj ST a celor două funcții bloc din figura 3.7 permit
înțelegerea modului de operare al acestora.
60
Cap.3 Elemente de programare a controlerelor industriale
4.3 Temporizatoare
unde:
*** IN – variabilă de intrare (INput)
PT – variabilă de intrare (Preset Time)
BOOL BOOL Q – variabilă de ieșire (Out)
IN Q ET – variabilă de ieșire (Elapsed Time)
TIME TIME
TP (Pulse Timer)
PT ET *** TON (Timer ON delay)
TOF (Timer OFF delay)
Fig. 3.8 Temporizatoare standardizate (IEC 61131-3): reprezentare grafică, intrări, ieșiri
61
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
1
IN
0
1
Q
0
PT PT PT
PT
ET
0
t0 t1 t2 t3 t4 t5 t6 t7
1
IN
0
1
Q
0
PT PT
PT
ET
0
t0 t1 t2 t3 t4 t5 t6 t7
62
Cap.3 Elemente de programare a controlerelor industriale
egală cu PT (după expirarea timpului predefinit PT, ET=PS) ieșirea Q devine 1 logic
(Q=1). Apariția unui front descrescător la intrarea IN conduce la resetarea
variabilei ET (ET=0), respectiv a ieșirii Q (Q=0).
1
IN
0
1
Q
0
PT PT
PT
ET
0
t0 t1 t2 t3 t4 t5 t6 t7
63
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
Soluția 2:
Temporizator TON
- utilizare naturală a
temporizatorului TON
pentru rezolvarea sarcinii
(logică simplă)
Soluția 3:
Temporizator TOF
- utilizare improprie a
temporizatorului TOF
pentru rezolvarea sarcinii
(logică complicată)
- necesită introducerea unei
variabile suplimentare M0.0
- utilizare improprie a
temporizatorului TP pentru
rezolvarea sarcinii
(logică complicată)
- necesită introducerea unei
variabile suplimentare M0.0
64
Cap.3 Elemente de programare a controlerelor industriale
Soluția 2:
Temporizator TON
- utilizare improprie a
temporizatorului TON
pentru rezolvarea sarcinii
(logică complicată)
- necesită introducerea unei
variabile suplimentare M0.0
Soluția 3:
Temporizator TOF
- utilizare naturală a
temporizatorului TOF
pentru rezolvarea sarcinii
- utilizare naturală a
temporizatorului TP pentru
rezolvarea sarcinii
(logică simplă)
Soluția 2:
Temporizator TON
- utilizare improprie a
temporizatorului TON
pentru rezolvarea sarcinii
(logică complicată)
- necesită introducerea unei
variabile suplimentare M0.0
65
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
4.4 Numărătoare
66
Cap.3 Elemente de programare a controlerelor industriale
FUNCTION_BLOCK CTU
VAR_INPUT CU: BOOL R_EDGE;
CTU R:BOOL; PV:INT; END_VAR
VAR_OUTPUT Q: BOOL; CV:INT; END_VAR
BOOL BOOL IF R
CU Q
THEN CV:= 0;
BOOL
R ELSIF CU AND (CV < PVmax)
THEN CV:= CV+1;
END_IF;
INT INT
PV CV Q:= (CV >= PV);
END_FUNCTION_BLOCK
FUNCTION_BLOCK CTD
VAR_INPUT CD: BOOL R_EDGE;
CTD LD:BOOL; PV:INT; END_VAR
VAR_OUTPUT Q: BOOL; CV:INT; END_VAR
BOOL BOOL
CD Q IF LD
THEN CV:= PV;
BOOL
LD ELSIF CD AND (CV > PVmin)
THEN CV:= CV-1;
INT
PV CV INT END_IF;
Q:= (CV <= 0);
END_FUNCTION_BLOCK
FUNCTION_BLOCK CTUD
VAR_INPUT CU: BOOL R_EDGE; ...
. . . . . . . . . . . . .............................................................................................................. . .
CTUD IF R
BOOL BOOL THEN CV:= 0;
CD QU ELSIF LD
BOOL BOOL
LD QD THEN CV:= PV;
BOOL ELSE
R IF NOT (CU AND CD)
BOOL
LD THEN
INT
PV CV INT IF CU AND (CV < PVmax)
THEN CV:= CV+1;
ELSIF CD AND (CV > PVmin)
THEN CV:= CV-1;
END_IF;
END_IF;
END_IF;
QU:= (CV >= PV);
QD:= (CV <= 0);
END_FUNCTION_BLOCK
Fig. 3.12 Numărătoare standardizate (IEC 61131-3): reprezentare grafică, cod sursă
67
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
Soluție 2:
Numărător decremental
68
Cap.3 Elemente de programare a controlerelor industriale
S1 – senzor intrare
S2 – senzor ieșire
L1 – lumină verde
L2 – lumină roșie
M0.0 – memorie auxiliară
69
Cap.4 Limbaje de programare (IEC 61131-3)
70
Cap.4 Limbaje de programare
R1 Conditie C1 Executie E1
R2 Conditie C2 Executie E2
Rn Conditia Cn Executie E3
71
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
Cn En IF Cn THEN En
Rn
a b
Fig.4.2 a) Structura unei aplicații în limbajul LD
b) Instrucțiuni echivalente în limbaj textual
Pentru fiecare ramură (R1,...,Rn) a aplicației dezvoltate în LD se poate scrie
o structură elementară de program, de forma:
> IF (condiție) THEN (execuție)
Adică, operațiile aferente părții de execuție se efectuează doar dacă funcția
logică aferentă părții condiționale are valoarea 1 logic. Unele operații produc
efecte doar atât timp cât partea condițională se menține în 1 logic, alte tipuri de
operații produc efecte și după trecerea în 0 logic a părții condiționale.
Contacte și bobine. Modalitățile de evaluare și operare a operanzilor, la
nivel de contact și bobină, sunt descrise în tabelul 4.1, în conformitate cu
IEC 61131-3. În mediile de implementare producătorii pun la dispoziția
utilizatorilor și alte tipuri de contacte și bobine cu proprietăți extinse.
72
Cap.4 Limbaje de programare
73
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
PROGRAM
ACTUALIZARE INTRARI
R1 Citeste intrarile si stocheaza
valoarea lor in memorie.
R2
PROCESARE INTRUCTIUNI PROGRAM
Se proceseaza programul linie cu linie,
de sus in jos si de la stanga la dreapta:
R3 se citesc toate variabilele din memorie,
se realizeaza operatiile specifice iar
rezultatele obtinute se salveaza tot in
R4 memorie pe masura ce se parcurge
programul.
Rn
ACTUALIZARE IESIRI
Citeste din memorie si
END_PROGRAM actualizeaza iesirile fizice.
1
Pentru înțelegerea în detaliu a modului în care se realizează procesarea unui program trebuie
aprofundate două noțiuni elementare: procesarea ciclică și imaginea de proces (vezi Cap.1, pag.6 și
Cap.3, pag.47).
74
Cap.4 Limbaje de programare
1 1
I0.1 I0.1
0 0
timp timp
1 1
Q2.1 Q2.1
0 0
timp timp
a b
Fig.4.4 Structură LD elementară:
a) utilizare bobină simplă, b) utilizare bobină negată
1 1
I0.1 I0.1
0 0
timp timp
1 1
Q2.1 Q2.1
0 0
timp timp
a b
Fig.4.5 Structură LD elementară:
a) utilizare bobină SET, b) utilizare bobină RESET
75
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
1 1
I0.1 I0.1
0 0
timp timp
1 1
Q2.1 Q2.1
0 0
timp timp
1 1
M0.0 M0.0
0 0
timp timp
a b
76
Cap.4 Limbaje de programare
Funcția SAU
I0.0 Q2.1
Variabila de ieșire Q2.1 primește
valoarea 1 logic dacă cel puțin una din
I0.1 variabilele de intrare (I0.0 sau I0.1) are
valoarea 1 logic.
77
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
Funcția de transfer
I0.0 LOAD
BOOL BOOL Permite încărcarea unei variabile cu o
EN ENO anumită valoare, specificată sau
Var_1 adresată la intrarea IN a funcției.
100 IN OUT MW1 Identificatorul funcției ține de
implementare: LOAD, MOVE etc.
Funcții aritmetice
I0.0 ADD
BOOL BOOL Realizează operații aritmetice de bază
EN ENO (adunare, scădere, înmulțire și
împărțire) cu variabilele multibit
var1 IN1 OUT var3 precizate la intrările funcției (IN1 și
IN2), respectiv depune rezultatul la
var2 IN2
ieșire (OUT). Variabilele trebuie să aibă
asociate aceleași tipuri de date (INT,
DINT, REAL etc).
78
Cap.4 Limbaje de programare
Funcții de comparare
MW4 var_1 Q2.1
> = Compară (<, ≤, >, ≥, =, <>) două
MW6 var_2 variabile multibit și rezultatul (0 sau 1
logic) este transmis mai departe.
IF (MW4>MW6 AND var_1=var_2) Variabilele trebuie să aibă asociate
THEN Q2.1 = 1 aceleași tipuri de date (INT, DINT, REAL
etc).
ROR (ROL) - rotirea biților cu o unitate spre dreapta (sau spre stânga);
SHR (SHL) - translatarea tuturor biților spre dreapta (sau spre stânga);
BID - conversia unui număr din reprezentare binară în reprezentare
BCD (Binar Codat Decimal);
DEB - conversia unui număr din BCD în reprezentare binară;
SWAP - schimbarea între ei a octeților MSB și LSB ai unei variabile
multibit (16 biți);
CPL - complementul în baza doi al unei variabile multibit;
INV - inversul, bit cu bit, al unei variabile multibit.
79
CURS 7
• Realizarea documentației tehnice. Se referă la realizarea unor specificații tehnice din care
utilizatorul să poată să înțeleagă care este comportamentul sistemului automat în fiecare fază a
sa de funcționare. Specificațiile pot fi sub formă de diagrame GRAFCET sau descrieri în detaliu a
fiecărei unități de program aferent aplicației, în limbajul în care au fost realizate. Standardul IEC
60848 stabilește GRAFCET-ul ca principal mijloc de comunicare între proiectanți și utilizatorii de
sisteme automate.
Structurarea unei aplicații implică divizarea procesului (fluxului de prelucrare a datelor aferent
procesului controlat) în etape (steps) care sunt interconectate prin legături orientate, trecerile între etape
fiind condiționate prin tranziții. Fiecărei etape îi corespunde un set de acțiuni corespunzătoare cu
prelucrările specifice etapei. Structurarea îmbracă forme diferite pentru fiecare aplicație în parte și se
reprezintă grafic sub forma unor diagrame (graf de implementare) care combină etapele în diverse moduri
prin utilizarea a cinci elemente structurale: secvențe liniare (seriale), divergențe ȘI, divergențe SAU,
convergențe ȘI, convergențe SAU.
În figura 1 se reprezintă o diagramă secvențială (graf de implementare) care utilizează elementele
structurale fundamentale într-o aplicație virtuală. Pentru referirea etapelor s-au utilizat nume simbolice
S0-S10. Tranzițiile (T0-T10) și acțiunile (A1-A10) sunt reprezentate de asemenea simbolic. În această
aplicație, numerotarea etapelor, tranzițiilor și acțiunilor s-a efectuat după regulile de notare ale
elementelor matricelor (după linii și coloane). În diagramele reale atât tranzițiile cât și acțiunile se
reprezintă în formă detaliată.
Prin combinarea structurilor elementare se pot obține secțiuni liniare, alternative sau repetitive
care, în baza teoriei programării structurate [27], sunt suficiente pentru realizarea oricărui program.
S0
T0
S1 A1 Secvenţă liniară
T1
S2 A2
T2
Divergenţă ŞI (AND)
S31 A31 S32 A32
T32
S42 A42
Convergenţă ŞI (AND)
T4
Convergenţă SAU (OR)
S5 A5
S9 A9
T91 T92
Divergenţă SAU (OR)
S10 A10
T10
Fig.1 Structurarea unei aplicații pe baza reglementărilor SFC, IEC 61131-3. Etapele de funcționare ale unui sistem
automat sunt reprezentate și organizate utilizând elemente structurale standardizate: secvențe liniare, divergențe
ȘI/SAU și convergențe ȘI/SAU. Elementele structurale la rândul lor pot fi combinate în diverse structuri, în funcție de
complexitatea aplicației.
Etapele. În general, aplicațiile industriale sunt aplicații secvențiale caracterizate prin etape sau faze care
se declanșează și succed în anumite condiții. Divizarea procesului (programului) în etape funcționale se
face pe cale logică, fiecărei etape fiindu-i asociate un set de acțiuni (prelucrări specifice) care se efectuează
atunci când etapa respectivă este activă. Fiecare etapă este caracterizată printr-un nume unic într-un
program.
Etapele sunt de două tipuri:
• Etapa simplă – reprezentată printr-un dreptunghi simplu în care se trece numele etapei.
• Etapa de inițiere (de intrare) – reprezentată printr-un dreptunghi dublu în interiorul căruia se trece
numele etapei. Fiecare diagramă trebuie să aibă o singură etapă inițială care se activează prima
atunci când este apelată diagrama (unitatea de program).
Tranzițiile. Trecerile de la o etapă la alta se fac condiționat prin intermediul tranzițiilor. Din punct de
vedere tehnic, tranziția este o expresie booleană care se evaluează (1 logic sau 0 logic) și valoarea ei
condiționează activarea etapei următoare și dezactivarea etapei curente. O tranziție se reprezintă printr-
o bară orizontală poziționată pe legătura dintre etape și însoțită de o expresie booleană. Reprezentarea
expresiei booleene aferentă unei tranziții se face utilizând elemente de limbaj ST, IL, LD sau FBD.
Reguli de evoluție. Execuția oricărui program se bazează pe o anumită logică și pe o anumită ordine de
efectuare a operațiilor și a prelucrărilor specifice. La nivelul programatorului cea mai simplă logică de
planificare (programare) a acestor prelucrări este cea secvențială, inspirată din modul de funcționare al
unui sistem industrial. Diagramele SFC imită aceste procese și permit organizarea programului în etape
care se activează și execută în anumite condiții.
Regulile care descriu condițiile de activare și dezactivare ale etapelor și care reglementează evoluția
prelucrărilor într-o diagramă SFC (IEC 61131-3) sunt:
• Întotdeauna, prima etapă care se activează și execută este etapa de inițiere, reprezentată grafic
printr-un dreptunghi cu conturul dublat.
• Într-o diagramă SFC alternanța etapă -> tranziție, respectiv tranziție -> etapă, trebuie asigurată
întotdeauna. Adică:
- două etape nu pot fi legate direct, ele trebuie separate printr-o tranziție;
- două tranziții nu pot fi legate direct, ele trebuie separate printr-o etapă.
• Activarea unei etape presupune implicit execuția acțiunilor specifice etapei.
• Activarea unei etape (Sn) se produce atunci când sunt îndeplinite simultan două condiții:
a. Etapa sau etapele precedente1 etapei (Sn) sunt active;
b. Tranziția sau tranzițiile precedente etapei (Sn) sunt evaluate ca 1 logic.
• Activarea unei etape conduce implicit la dezactivarea etapelor precedente.
• Durata de activare a unei etape poate fi oricât de mică dar niciodată zero.
Etapele pot fi interconectate în următoarele structuri (elemente structurale fundamentale): structuri
liniare (seriale), structuri divergente simultane (ȘI/AND), structuri convergente simultane (ȘI/AND),
structuri divergente alternative (SAU/OR) și structuri convergente alternative (SAU/OR).
1
Prin etape/tranziții precedente se înțeleg acele etape/tranziții care sunt situate în amonte de etapa curentă și care sunt legate
direct la etapa curentă fără intermediari de același tip.
3. IMPLEMENTAREA
S1
Funcţia de activare, dezactivare şi
automenţinere a stării etapei S1
S2
Funcţia de activare, dezactivare şi
automenţinere a stării etapei S2
...
Sn
Funcţia de activare, dezactivare şi
automenţinere a stării etapei Sn
Implementarea acţiunilor
S1
Acţiuni aferente
etapei S1
S2
Acţiuni aferente
etapei S2
...
Sn
Acţiuni aferente
etapei Sn
Logica de procesare
• Comutarea variabilelor de stare aferente etapelor
• Implementarea acţiunilor
Module funcţionale
Modul 1
EN ENO
IN 1 Out 1
IN 2 Out 2
... ...
Modul 2
EN ENO
IN 1 Out 1
IN 2 Out 2
... ...
...
Modul k
EN ENO
IN 1 Out 1
IN 2 Out 2
... ...
Într-o manieră similară, programul poate fi organizat pe ieșiri, astfel încât fiecare ieșire să apară o
singură dată în programul principal și pe o rețea (ramură) distinctă. Astfel structura din Fig.5.16, organizată
pe etape, evoluează într-o structură organizată pe ieșiri, Fig.5.18.
Logica de procesare
• Comutarea variabilelor de stare aferente etapelor
• Implementarea acţiunilor care nu vizează ieşiri
Activare ieşiri
...
Condiţie de activare şi Outn
automenţinere a stării
ieşirii Outn
Indiferent de modul de organizare al programului LD/FBD (pe etape funcționale, pe ieșiri fizice
sau pe module funcționale), partea de comutare a variabilelor de stare aferente etapelor trebuie
elaborată. Comutarea stării acestor variabile se face în acord cu diagrama funcțională (SFC) asociată
procesului/sistemului automatizat. În orice diagramă SFC putem identifica cinci structuri elementare care
stau la baza tuturor diagramelor (grafurilor) realizate conform IEC 61131-3: secvențe liniare, divergențe
simultane (AND) și convergențe simultane (AND), respectiv divergențe alternative (OR) și convergențe
alternative (OR). Transpunerea acestor structuri elementare în limbaj LD/FBD rezolvă problema activării
și dezactivării etapelor funcționale, respectiv a variabilelor de stare aferente (Sn).
Cap.5 Programarea structurată a aplicațiilor industriale
101
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
S0
T0
S1 A1 Secvenţă liniară
T1
S2 A2
T2
Divergenţă ŞI (AND)
S31 A31 S32 A32
T32
S42 A42
Convergenţă ŞI (AND)
T4
Convergenţă SAU (OR)
S5 A5
S9 A9
T91 T92
Divergenţă SAU (OR)
S10 A10
T10
Fig.5.1 Structurarea unei aplicații pe baza reglementărilor SFC, IEC 61131-3. Etapele de
funcționare ale unui sistem automat sunt reprezentate și organizate utilizând elemente
structurale standardizate: secvențe liniare, divergențe ȘI/SAU și convergențe ȘI/SAU.
Elementele structurale la rândul lor pot fi combinate în diverse structuri, în funcție de
complexitatea aplicației.
102
Cap.5 Programarea structurată a aplicațiilor industriale
Conform IEC 61131-3 fiecare etapă are asociate două variabile care
furnizează informații asupra stării etapei. Considerând că o etapă oarecare are
numele Sn, atunci:
Sn.X – este o variabilă booleană asociată etapei Sn, care are valoarea 1 logic
atunci când etapa este activă, respectiv 0 logic, atunci când etapa este
inactivă.
103
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
104
Cap.5 Programarea structurată a aplicațiilor industriale
S2
S2
105
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
Într-o diagramă SFC alternanța etapă -> tranziție, respectiv tranziție ->
etapă, trebuie asigurată întotdeauna. Adică:
- două etape nu pot fi legate direct, ele trebuie separate printr-o tranziție;
- două tranziții nu pot fi legate direct, ele trebuie separate printr-o etapă.
Activarea unei etape presupune implicit execuția acțiunilor specifice etapei.
Activarea unei etape (Sn) se produce atunci când sunt îndeplinite simultan
două condiții:
a. Etapa sau etapele precedente1 etapei (Sn) sunt active;
b. Tranziția sau tranzițiile precedente etapei (Sn) sunt evaluate ca 1 logic.
Activarea unei etape conduce implicit la dezactivarea etapelor precedente.
Durata de activare a unei etape poate fi oricât de mică dar niciodată zero.
Etapele pot fi interconectate în următoarele structuri (elemente structurale
fundamentale): structuri liniare (seriale), structuri divergente simultane
(ȘI/AND), structuri convergente simultane (ȘI/AND), structuri divergente
alternative (SAU/OR) și structuri convergente alternative (SAU/OR).
1
Prin etape/tranziții precedente se înțeleg acele etape/tranziții care sunt situate în amonte de etapa
curentă și care sunt legate direct la etapa curentă fără intermediari de același tip.
106
Cap.5 Programarea structurată a aplicațiilor industriale
107
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
S8
a b c a – tipul acţiunii
b – numele acţiunii
d
c – indicator acţiune
d – acţiunea
108
Cap.5 Programarea structurată a aplicațiilor industriale
109
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
110
Cap.5 Programarea structurată a aplicațiilor industriale
var2
t
T2
t
b)
Fig.5.4 Acțiunea Reset: a) exemplificare,
b) variația în timp a variabilelor.
T3
t
b)
111
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
112
Cap.5 Programarea structurată a aplicațiilor industriale
T7
Fig.5.8.2 Acțiunea întârziată și memorată:
a) exemplificare, 1 2 3 4 5 t(s)
b) variația în timp a variabilelor. b)
113
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
Acțiunile Puls P1 și P0
În cazul acțiunii P1 variabila operată S9 P1 var9.1
trece în 1 logic odată cu activarea P0 var9.2
etapei (la apariția frontului crescător) T9 S9.T>T#3s
și își menține starea pe perioada unui a)
singur ciclu de procesare.
În cazul acțiunii P0 variabila operată S9.X
trece în 1 logic odată cu dezactivarea t
etapei (la front descrescător) și își
menține starea pe perioada unui singur var9.1
ciclu de procesare. t
var9.2
114
Cap.5 Programarea structurată a aplicațiilor industriale
a) b)
Fig.5.11 a) Schema circuitului de acționare pneumatică, b) Schema circuitului electric.
Circuitele sunt realizate în aplicația FluidSIM-P, Festo. Elementele circuitului pneumatic
sunt conectate virtual la circuitul electric prin intermediul identificatorilor. Circuitul electric
este conectat la un PLC simulat prin intrările și ieșirile binare EB0 și AB0 (IB0 și QB0).
115
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
116
Cap.5 Programarea structurată a aplicațiilor industriale
S1
auto
S2 START STOP auto
/
auto
Select(1) Select(2)
Select(1) S11 T31
/
S31 N L1 S32 N L2 auto
N Motor(M1) N Motor(M2) /
Select(2) S21 T32
T31 T32 /
auto
/
a) b)
117
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
Implementare
118
Cap.5 Programarea structurată a aplicațiilor industriale
Funcția bloc „Motor” este apelată atât pentru realizarea sarcinii motorului
M1 cât și pentru a lui M2, însă cu parametri diferiți. Cele două sarcini diferă prin
cursele motoarelor (capetele de cursă sunt specificate prin intrările S1 și S2) și
vitezele de lucru (reglate la nivelul fiecărui motor prin intermediul droselelor). În
figura 5.15 se detaliază o versiune a funcției bloc „Motor” elaborată în limbajul LD
(Ladder Diagram), respectiv lista variabilelor specifice funcției.
119
CURS 9
În baza logicii de parcurgere a unei diagrame SFC, respectiv a regulilor de evoluție, rezultă că orice
etapă a procesului este activată în anumite condiții, își menține (memorează) starea o anumită perioadă
și apoi este dezactivată când sunt îndeplinite condițiile de trecere la o altă etapă (etape). Dacă transpunem
în termeni matematici acest mod de lucru obținem o funcție logică F de trei variabile booleene care
caracterizează starea unei etape oarecare (Sn), adică:
Sn=F(A,M,D), unde A - este condiția de activare a etapei Sn,
M - condiția de automenținere a etapei Sn,
D - condiția de dezactivare a etapei Sn.
Determinarea funcție logice minimale F(A,M,D) care îndeplinește condițiile impuse poate fi
realizată prin intermediul diagramei Karnaugh (vezi Cap.2), deoarece cunoaștem valorile ei în toate
situațiile posibile (Fig.5.19).
A, M
F(A,M,D)
00 01 11 10
0 2 6 4
0 0 1 1 1
D 1 3 7 5
1 0 0 1 1
Astfel, funcția logică minimală care caracterizează starea unei etape, în funcție de condițiile de
activare, menținere și dezactivare ale acesteia, este:
F(A,M,D)= A+M* D
Dacă rezultatul acestei funcții este atribuit variabilei de stare Sn a etapei, obținem ecuația
aferentă stării etapei:
Sn = An+Mn* Dn
Ecuația permite determinarea stării a unei etape oarecare (activată sau neactivată), respectiv
permite implementarea stării etapelor prin diverse metode grafice. Ea este formulată în termeni generali
și trebuie particularizată pentru fiecare element structural în parte.
Succesiunea liniară
Structura (Fig.5.20) este caracterizată prin înserierea etapelor și activarea succesivă a acestora în baza
regulilor de evoluție într-un graf SFC.
Sj = Sj-1*Tj-1 + Sj*Sk Sk
Tk
Sk = Si*Ti + Sj*Tj + Sk*Sk+1 Sk+1
Fig.5.24 Convergența OR
Cele cinci cazuri descrise mai sus acoperă toate situațiile în care se poate afla o etapă într-o diagramă SFC.
Aceste ecuații permit implementarea funcțiilor de activare, menținere și dezactivare a stării etapelor,
F(A,M,D), aferente figurilor 5.16, 5.17 și 5.18. Exemplificare:
Sk-1 Tk-1 Sk
Sk = Sk-1*Tk-1 + Sk*Sk+1
Sk Sk+1
/
Fk(A,M,D)
Si-1 Ti-1 Si
Si = Si-1*Ti-1 + Si*Sj + Si*Sk
Si Sj
/
Fi(A,M,D)
Si Sj
/
Si-1 Ti-1 Si
Si = Si-1*Ti-1 + Si*Sj*Sk
Si Sj Sk
/ /
Fi(A,M,D)
În exemplele anterioare variabilele asociate etapelor SFC au fost implementate prin intermediul
funcțiilor logice Fn(A,M,D). Fiecare funcție Fn este evaluată iar rezultatul ei este transferat variabilelor Sn
(Fig.5.25):
Fn(A,M,D)
Fn(A,M,D) = An+Mn* Dn => Sn Sn
An
Dn Mn
Aceeași funcție logică Fn(A,M,D) își poate transfera valoarea ei (1 logic sau 0 logic) către o variabilă
booleană Sn prin intermediul funcțiilor bloc de tipul bistabil R-S. Dacă aceste funcții sunt disponibile atunci
condițiile de activare și de dezactivare An și Dn sunt suficiente pentru activarea și dezactivarea etapei Sn.
RS
Fig.5.26 Implementarea LD a funcției de An S Q Sn
activare și dezactivare a stării etapei Sn
prin intermediul funcțiilor bloc de tipul
bistabil R-S. Dn R1
Funcția logică Fn(A,M,D) își poate transfera valoarea ei (1 logic sau 0 logic) către o variabilă
booleană Sn prin intermediul instrucțiunilor de tipul Set și Reset. Dacă aceste instrucțiuni sunt disponibile
atunci condițiile de activare și de dezactivare An și Dn sunt suficiente pentru activarea și dezactivarea
etapei Sn.
Sn
Fig.5.27 Implementarea LD a funcției de activare și
An S
dezactivare a stării etapei Sn prin intermediul
instrucțiunilor Set și Reset Sn
Dn R
Pe de altă parte, condiția de activare aferentă etapei Sn este și condiție de dezactivare pentru
etapa Sn-1. În general pentru o etapă Sn sunt valabile asocierile: An=Dn-1 și Dn=An+1. În aceste condiții
implementarea LD a funcției logice care permite comutarea etapelor SFC pentru o structura liniară are
următoarea formă: Fig.5.28, Fig.5.29.
... ...
Sn-2 Sn-2
Sn-2
Dn-2=An-1 R An-1 R
Sn-1 Sn-1
An-1 S S
Sn-1 Sn-1 Sn-1
Dn-1=An R An R
An
Sn
S
ó Sn
S
Sn Sn Sn
Dn=An+1 R An+1 R
Sn+1 Sn+1
An+1 S S
Sn+1
... ...
a) b)
S5 T51 S5
Divergența selectivă (OR) R
S61
S
S5 T52 S5
S5 R
S62
T51 T52 T53 S
S61 S62 S63 S5 T53 S5
T61 T62 T63 R
S71 S72 S73 S63
S
T71 T72 T73
S61 T61 S61
R
S8
S71
S
S62 T62 S62
Fig.5.32 Implementarea LD R
a unei structuri divergente OR S72
utilizând instrucțiunile Set și Reset S
... (vezi Fig.5.33)
Convergența selectivă (OR) ... (vezi Fig.5.32)
S63 T63 S63
R
S5 S73
S
T51 T52 T53 S71 T71 S71
S61 S62 S63 R
T61 T62 T63 S8
S
S71 S72 S73
S72 T72 S72
T71 T72 T73
R
S8
S8 S
S73 T73 S73
R
Fig.5.33 Implementarea LD S8
a unei structuri convergente OR S
utilizând instrucțiunile Set și Reset
Acționarea ieșirilor fizice se face însă cu respectarea anumitor reguli determinate de practica
industrială vizând siguranța în exploatare, mentenanța sistemului automat, extinderea aplicației etc.
Standardul IEC 60848 surprinde această problematică, respectiv clasifică acțiunile și aduce în atenție
recomandări privind acționarea ieșirilor. În conformitate cu IEC 60848, acțiunile sunt de două tipuri:
continue (nememorate) și memorate.
Acțiunea memorată. Fiecare variabilă specificată în acest tip de acțiune este operată printr-o
anumită instrucțiune: își modifică valoarea și și-o menține modificată până la apariția unei alte instrucțiuni
care modifică din nou valoarea variabilei.
Sk Out.k
S
...
Sk+3 Out.k
R
d. Atribuirea conflictuală
• În modul continuu orice conflict de atribuire simultană a mai multor valori pentru aceeași ieșire este
evitat, pentru că o ieșire apare o singură dată într-un program.
• În modul memorat este favorizată apariția conflictelor privind alocarea simultană de valori diferite
pentru aceeași ieșire. O ieșire este apelată de fiecare dată când se dorește modificarea valorii ei.
Recomandările IEC 60848 precizează că o ieșire poate fi acționată ori în modul continuu, ori în
modul memorat, dar nicidecum în ambele forme. Totuși, practicile industriale curente recomandă
folosirea modului memorat doar pentru operarea variabilelor interne și modul continuu pentru operarea
variabilelor de ieșire aferente ieșirilor fizice.
În consens cu precizările anterioare, variabilele aferente ieșirilor fizice pot fi grupate pe module
funcționale și acționate prin intermediul acestora. Fiecare modul funcțional poate fi asociat unui element
de acționare sau unui subsistem, respectiv poate include anumite funcții cu utilitate industrială: pornit,
oprit, manual, automat, raportare erori/defecțiuni, alarme, proceduri de siguranță, opriri de urgență etc.
Limbajele textuale definite prin IEC 61131-3 sunt Instruction List (IL) și Structured Text (ST). Primul
(IL) este un limbaj de nivel scăzut, mai sărac în instrucțiuni, apropiat de mașină, iar al doilea (ST) este unul
de nivel înalt, prevăzut cu instrucțiuni mai puternice care permit structurarea programelor, fiind
asemănător cu Pascalul. Transpunerea diagramei SFC se realizează tot prin implementarea ecuațiilor ce
descriu starea etapelor, respectiv a acțiunilor aferente lor, utilizând instrucțiunile specifice celor două
limbaje textuale. Implementarea comportă totuși anumite particularități:
- Un program elaborat în limbajul IL este organizat în grupuri de instrucțiuni elementare care vizează
apelarea unei funcții, implementarea unei tranziții, etape, acțiuni, transferarea rezultatelor operațiilor
executate către o variabilă etc.
- În limbajul IL implementarea fiecărei ecuații se face printr-o serie (listă) de instrucțiuni, respectiv
manipulări elementare (LD, AND, OR, NOT, R, S etc), care se finalizează cu stocarea conținutului
acumulatorului în variabila aferentă acelei etape.
- În limbajul IL implementarea fiecărei acțiuni se face printr-o serie (listă) de instrucțiuni, respectiv
manipulări elementare (LD, AND, OR, NOT, R, S etc), care se finalizează cu stocarea conținutului
acumulatorului în variabila aferentă unei ieșiri fizice.
- Limbajul IL nu are instrucțiuni de structurare a programelor de tipul celor specifice limbajelor
structurate (instrucțiuni alternative sau repetitive) și ca atare logica de procesare nu este vizibilă, este
inclusă în ecuațiile care descriu etapele procesului.
- Limbajul ST permite implementarea simplă a etapelor și acțiunilor prin introducerea ecuațiilor ce
descriu starea etapelor, respectiv prin definirea acțiunilor. Suplimentar, structurarea programului poate
fi realizată în formă explicită prin utilizarea instrucțiunilor de selecție simplă (IF), multiplă (CASE) și
repetitive (FOR, WHILE, REPEAT).
A1. Presa pneumatică Dificultate:
165
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
166
Cap.7 Aplicații industriale conduse de PLC-uri
Se cer:
167
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
168
Cap.7 Aplicații industriale conduse de PLC-uri
169
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
S0 N Y11 Avans M1
N Y22 Retragere M2
N Y32 Retragere M3
T0 s12 AND s31
Apeleaza functia
S1 N Blinking bloc “Blinking”
N LightOn Aprinde L1si L2
T1 B1 AND B2
S2 N Y12 Retragere M1
T2 s11
S3 N Y31 Avans M3
T3 s32
S4 N Y21 S6 N BlinkOn
N TON.DB3 N Blinking
T4 DB3.Q Blinking
S5 N Y22
N TON.DB4
T5=T6 DB4.Q
S7 N Y32 Retragere M3
T7 s31
170
Cap.7 Aplicații industriale conduse de PLC-uri
S5 = S4·T4 + S5· S7
S6 = S3·T3 + S6· S7
S7 = S5·S6·T6· + S3· S0
171
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
N1
N2
N3
N4
N5
172
Cap.7 Aplicații industriale conduse de PLC-uri
N6
N7
N8
N9
N10
N11
N12
N13
N14
N15
N16
N17
173
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
N1
N2
N3
N4
N5
N6
N7
N8
N9
N1
N2
174
Cap.7 Aplicații industriale conduse de PLC-uri
175
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
176
Cap.7 Aplicații industriale conduse de PLC-uri
ORGANIZATION_BLOCK OB1
VAR_TEMP //declarare variabile
info : ARRAY[0..19] OF BYTE;
T:ARRAY[0..10] OF BOOL;
S:ARRAY[0..10] OF BOOL;
END_VAR
BEGIN
IF initiere THEN S[0]:=true; initiere:= false; END_IF; //Inițiere
//Definire temporizatoare și modul funcțional „Blinking”
TON.DB3(IN:=S[4], PT:=T#7s);
TON.DB4(IN:=S[5], PT:=T#4s);
Blinking(EN:=true, Blink:=BlinkON, PTime:=T#1s, Light:=LightON,
OutB1=>L1, OutB2=>L2);
//Tranziții
T[0]:=S12 AND S31;
T[1]:=B1 AND B2;
T[2]:=S11;
T[3]:=S32;
T[4]:=DB3.Q; //OutTON1
T[6]:=DB4.Q; //OutTON2
T[7]:=S31;
//Logica de procesare (comutarea variabilelor ce descriu starea etapelor)
IF S[0] AND T[0] THEN S[1]:=TRUE;S[0]:=false;END_IF;
IF S[1] AND T[1] THEN S[2]:=TRUE;S[1]:=false;END_IF;
IF S[2] AND T[2] THEN S[3]:=TRUE;S[2]:=false;END_IF;
IF S[3] AND T[3] THEN S[4]:=TRUE;S[6]:=TRUE;S[3]:=false;END_IF;
IF S[4] AND T[4] THEN S[5]:=TRUE;S[4]:=false;END_IF;
IF S[5] AND S[6] AND T[6] THEN S[7]:=TRUE;S[5]:=false;S[6]:=false;END_IF;
IF S[7] AND T[7] THEN S[0]:=TRUE;S[7]:=false;END_IF;
//Acțiuni
Y11:= S[0];
Y12:= S[2];
Y21:= S[4];
Y22:= S[0] OR S[5];
Y31:= S[3];
Y32:= S[0] OR S[7];
BlinkON:= S[6];
LightON:= S[1];
END_ORGANIZATION_BLOCK
Fig.1.8 Aplicația A1. Programul principal OB1 (limbaj ST), implementare Step7-SCL, unde
programul OB100 (LD) și funcția „Blinking” (LD) sunt descrise în figurile 1.7 și 1.4.
177
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
178
Cap.7 Aplicații industriale conduse de PLC-uri
179
Controlere logice programabile: programarea și dezvoltarea aplicațiilor industriale
Etape de lucru:
1) În mediul FluidSIM-P se realizează procesul în conformitate cu figura 1.2;
2) Se configurează interfețele de comunicație FluidSIM-In și FluidSIM-Out în
conformitate cu tabelul 1.1.
3) Se lansează procesul în simulare: FluidSIM/Execute/Start
4) Dacă este cazul se va configura și aplicația EzOPC astfel încât procesul
simulat în FluidSIM să fie conectat prin Controlerul Virtual la S7-PLCSim
(fereastra Overview).
5) În mediul Simatic Step7 se elaborează programul de conducere și control
urmând pașii descriși în Anexa 3, Anexa 5 și Anexa 6: creare proiect, editare
listă de simboluri conform tabel 1.3, editare program.
6) Se lansează aplicația S7-PLCSim (Simatic Manager/Options/Simulate
Modules) și se comută CPU-ul pe poziția STOP.
7) Se încarcă proiectul (programul) în PLC-ul simulat (S7-PLCSim): se selectează
toate componentele proiectului (toate obiectele din Blocks) și apoi din
meniu se alege opțiunea PLC/Download.
8) În fereastra S7-PLCSim se comută CPU-ul simulat pe RUN sau RUN-P și se
testează modul de funcționare.
180
Cap.7 Aplicații industriale conduse de PLC-uri
FESTO
1 Sursă de laborator de 24V DC, 4.5A
162416
FESTO
2 Programator SIEMENS (port USB)
539006
3 Cabluri de alimentare -
FESTO
4 PLC S7-300 EduTrainer
535255
181
CURS 11-12 : STUDIU DE CAZ
1
NOŢIUNI TEORETICE FUNDAMENTALE
Manipulator electropneumatic
Descrierea problemei
M2
B21
Se consideră sistemul pick & place din figura alăturată
utilizat pentru manipularea pieselor cilindrice din
B12 B11
punctul A în punctul B, având descrierea tehnică
cunoscută. Se cere elaborarea în limbaj LD a aplicației M1
a. Modul de funcționare 1
- La apăsarea butonului START, dacă există piesă în punctul A se operează manipularea acesteia, din A în punctul B.
Procesul continuă ciclic/automat atâta vreme cât există piesă în punctul A; dacă nu există piesă în punctul A sistemul
intră în așteptare în poziția HOME.
- La apăsarea butonului STOP sistemul continuă ciclul de funcționare curent și se oprește în poziția HOME.
2
b. Modul de funcționare 2
Suplimentar fată de Modul 1, operațiile de prindere și desprindere a pieselor se vor face prin introducerea unor timpi
de prindere/desprindere de 2s. Se asigură astfel prinderea sigură a gripper-ului, respectiv desprinderea
corespunzătoare a pieselor în punctul B.
c. Modul de funcționare 3
Suplimentar fată de Modul 2, se cere introducerea unei funcții de numărare (Counter) a pieselor manipulate care să
permită ca la fiecare apăsare a butonului START să se execute trei cicluri de manipulare A->B. La finalul celor trei
cicluri sistemul se oprește în poziția HOME.
d. Modul de funcționare 4
Suplimentar fată de Modul 3, se cere introducerea unei funcții de semnalizare care să lucreze în modul următor:
atunci când se identifică faptul că nu există piesă în punctul A (verificarea se face la începutul sau sfârșitul ciclului de
manipulare, poziția HOME), se va semnaliza situația prin aprinderea intermitentă a lămpii L, cu frecvența de 1Hz.
Semnalizarea încetează odată cu remedierea situației (piesă în A), respectiv procesul de manipulare continuă.
e. Modul de funcționare 5
Suplimentar fată de Modul 4, se cere introducerea unei funcții de resetare a sistemului care să lucreze astfel: dacă la
inițierea funcționării (RUN PLC) se identifică o poziționare a sistemului de manipulare diferită de poziția HOME, atunci
se va aprinde lampa (L ), respectiv sistemul va putea fi readus în poziția HOME prin apăsarea butonului START timp de
trei secunde. Odată sistemul readus în poziția HOME poate intra în funcționarea normală la apăsarea simplă a
butonului START.
OBS: pentru simularea acestei situații se va inversa conexiunea pneumatică a motorului M1.
3
Resurse disponibile:
- Modelul sistemului controlat: Manipulator.ct (FluidSIM),
- Lista de variabile globale (GVL),
- Program VAR_DEF (preia variabile din FluidSIM)
VAR_GLOBAL VAR_DEF
--------------------------------------------------------------------
(*variabile de intrare si de ieșire - conexiune OPC *)
VAR
Input: BYTE;
END_VAR
Output: BYTE;
(*Variabile de intrare booleene - aferente Input*) (*Preluare valoare de la intrari <- Input*)
Start: BOOL;
Start:=Input.0;
Stop: BOOL;
Stop:=Input.1;
B11: BOOL;
B11:=Input.2;
B12: BOOL;
B12:=Input.3;
B21: BOOL;
B21:=Input.4;
B22: BOOL;
B22:=Input.5;
B3: BOOL;
B3:=Input.6;
PartAv: BOOL;
PartAv:=Input.7;
(*Variabile de iesire booleene - aferente Output*)
Y11: BOOL; (*Transfer valoare catre iesiri -> Output*)
Y12: BOOL;
Output.0:=Y11;
Y2: BOOL;
Output.1:=Y12;
Y3: BOOL;
Output.2:=Y2;
L: BOOL;
Output.3:=Y3;
Output.4:=L;
(*Tranzitii*)
T0,T1,T2,T3,T4,T5,T6,T7,T8:BOOL;
(*Etape*)
S0,S1,S2,S3,S4,S5,S6,S7,S8:BOOL;
END_VAR
Bibliografie: Hancu O., Rad C.R., Controlere Logice Programabile, UT Press, 2017.
4
Soluție: a. Modul de funcționare 1
5
Implementare LD: LD_PRG Structura Proiectului
VAR_DEF:
(*Preluare valoare de la intrarile Input*)
Start:=Input.0;
Stop:=Input.1;
B11:=Input.2;
B12:=Input.3;
B21:=Input.4;
B22:=Input.5;
B3:=Input.6;
PartAv:=Input.7;
6
CURS 13-14 : STUDIU DE CAZ
1
NOŢIUNI TEORETICE FUNDAMENTALE
Presa electropneumatică
Descrierea problemei
2
În starea inițială (HOME) ușa glisantă și pistonul presei sunt ridicate, motorul sistemului de alimentare este în poziție
avansat (gata pentru preluare piesă), iar lampa de semnalizare L1 este aprinsă.
a. Modul de funcționare 1
- Presupunând că presa se află în starea inițială (HOME), la apăsarea butonului START se declanșează procesul de
presare (vezi descrierea de mai jos). Procesul rulează ciclic (automat) și poate fi oprit prin apăsarea butonului STOP. La
apăsarea butonului STOP sistemul continuă ciclul de funcționare curent și se oprește în poziția HOME.
- Procesul de presare decurge în modul următor:
• La apăsarea butonului START, lampa L1 se stinge, sistemul de alimentare introduce piesa în camera de
presare (pistonul motorului M1 se retrage complet), apoi coboară ușa glisantă (M3 avans).
• După ce camera de presare este securizată (ușa glisantă este închisă complet), pistonul motorului M2
coboară și comprimă piesa timp de t secunde, apoi se ridică în poziția de siguranță (motor M2 retras). Dacă
piesa este din material plastic (P=1) atunci t = 3 secunde, iar dacă piesa este din material metalic (P=0) atunci
t = 5 secunde.
• Operația de presare (derulată pe parcursul a t secunde) este semnalizată optic prin intermediul lămpii L2 care
trebuie să lumineze intermitent cu frecvența de 1 Hz.
• La finalizarea operației de presare, lampa de semnalizare L2 se stinge și ușa glisantă este ridicată. Odată ce
ușa este ridicată complet, sistemul de alimentare evacuează piesa, apoi se aprinde lampa L1 și se păstrează
această stare (HOME) timp de o (una) secundă, după care se reia ciclul.
b. Modul de funcționare 2
Suplimentar fată de Modul 1, se cere introducerea unei funcții de numărare (Counter) care să permită ca la fiecare
apăsare a butonului START să se execute trei cicluri de presare (trei piese). La finalul celor trei cicluri sistemul se
oprește în poziția HOME.
c. Modul de funcționare 3
Suplimentar fată de Modul 2, se cere modificarea funcției de semnalizare astfel: atunci când se operează cu piese din
material plastic se va semnaliza situația prin aprinderea intermitentă a lămpii L2 cu frecvența de 1Hz, iar când se
operează cu piese din material metalic se va semnaliza prin aprinderea intermitentă a lămpii L2 cu frecvența de 0.5Hz.
d. Modul de funcționare 4
Suplimentar fată de Modul 3 se cere introducerea unei funcții de resetare a sistemului care să lucreze astfel: dacă la
inițierea funcționării (RUN PLC) se identifică o poziționare a sistemului de manipulare diferită de poziția HOME, atunci
se va aprinde lampa (L1 ), respectiv sistemul va putea fi readus în poziția HOME prin apăsarea butonului START timp
de trei secunde. Odată sistemul readus în poziția HOME poate intra în funcționarea normală la apăsarea simplă a
butonului START.
OBS: pentru simularea acestei situații se va inversa conexiunea pneumatică a motorului M1.
3
Mod de lucru: Detaliere
1. Realizarea (simularea) circuitului de acționare După schemă conform Fig.2 (FluidSIM)
3. Elaborarea grafului de implementare Elaborare graf după reguli GRACET/SFC (vezi curs CLP)
Determinarea/extragerea variabilelor asociate tranzițiilor,
etapelor și reprezentarea acțiunilor
4
Resurse disponibile:
- Modelul sistemului controlat: Presa2.ct (FluidSIM),
- Lista de variabile globale (GVL),
- Program VAR_DEF (preia variabile din FluidSIM)
VAR_GLOBAL VAR_DEF
--------------------------------------------------------------------
(*variabile de intrare si de ieșire - conexiune OPC *)
VAR
Input: BYTE;
END_VAR
Output: BYTE;
(*Variabile de intrare booleene - aferente Input*) (*Preluare valoare de la intrari <- Input*)
Start: BOOL;
Start:=Input.0;
Stop: BOOL;
Stop:=Input.1;
B11: BOOL;
B11:=Input.2;
B12: BOOL;
B12:=Input.3;
B31: BOOL;
B31:=Input.4;
B32: BOOL;
B32:=Input.5;
P: BOOL;
P:=Input.6;
(*Etape*)
S0,S1,S2,S3,S4,S5,S6,S7,S8,..... BOOL;
END_VAR
Bibliografie: Hancu O., Rad C.R., Controlere Logice Programabile, UT Press, 2017.