Sunteți pe pagina 1din 11

Limbajul IL

26.03.2016 16:37 1
Limbaje de programare

Limbaje de programare pentru AP


Limbajul IL (STL)
Limbajul ST(Structured Text)
Limbajul LAD (Ladder Diagram)
Limbajul FBD (Function Block Diagram)
Limbajul SFC (Sequential Function Chart)

26.03.2016 16:37 2
Limbajul IL (Instruction List)

Instruction List (IL) sau StaTement List (STL) este un limbaj de


nivel jos, definit ca parte a normei IEC 61131. El este utilizat
pentru realizarea aplicaţiilor mici sau pentru optimizarea codului
anumitor părţi ale unor aplicaţii. IL se bazează pe AWL
(AnWeisungsListe) elaborat de firma Siemens, care utilizează
modelul cu un singur acumulator. Limbajul IL este nivelul de bază
al limbajelor de programare pentru AP - toate celelalte limbaje de
programare putând fi convertite la programe IL. Conversia inversă,
adică din IL în alte limbaje de programare pentru AP, nu este
întotdeauna posibilă. Un program scris în limbaj de IL este o
secvenţă de mnemonici (nume simbolice) care va fi convertită în
cod executabil prin operaţii de asamblare şi editare de legături.

26.03.2016 16:37 3
Operatori în IL
Operatori de transfer (LD şi ST sau =). Datele pot fi transferate de la
memorie la acumulator şi invers;
Exemplu:
LD %I0.0 (*Încarca continutul intrarii I0.0 în acumulator*)
ST %Q1.0 (*Transfera la iesirea Q1.0 continutul acumulatorului*)
= %Q0.0 (*Transfera la iesirea Q0.0 continutul acumulatorului*)
Operatori de setare/resetare (S (Set) şi R (Reset)). Realizează setarea,
respectiv resetarea operanzilor;
Exemplu:
S %M0.0 (*Seteaza bitul M0.0*)
R %M0.1 (*Reseteaza bitul M0.1* )
Operatori logici (AND, OR, XOR). Realizează funcţii logice între conţinutul
PROCES
operandului şi acumulator;
Exemplu:
AND %M0.0 (*Realizeaza conjunctia logica intre acumulator si M0.0 *)
OR %M0.0 (*Realizeaza disjunctia logica intre acumulator si M0.0 *)
XOR %M0.0 (*Realizeaza SAU EXCLUSIV intre acumulator si M0.0 *)

26.03.2016 16:37 4
Operatori în IL
Operatori de transfer (MOV). Datele se transferă între o sursă şi o
destinaţie. Operatorul are o literă suplimentară pentru a specifica felul
datei: B, dacă este un transfer de octet, W, dacă este un transfer de
cuvânt sau DW, dacă este un transfer de dublu cuvânt. Instrucţiunea are
doi operanzi: sursa şi destinaţia.
Exemplu:
MOVB %MB0, %MB1 (*Realizeaza transferul din MB0 in MB1*)
MOVW %MW0, %MW1 (*Realizeaza transferul din MW0 in MW1*)
Operatori aritmetici (ADD, SUB, MUL, DIV). Realizează operaţiuni
aritmetice între operanzi.
Exemplu:
(*Programul realizeaza adunarea unor variabile*)
(*intregi si memoreaza rezultatul intr-o alta*)
PROCES
(*variabila intreaga*)
(*Variabilele a, b, c variabile simbolice de tip intreg*)
LD a (*Incaraca a in acumulator*)
ADD b (*Aduna cu b*)
ST c (*c=a+b*)
26.03.2016 16:37 5
Operatori în IL
Operatori relaţionali (GT, GE, EQ, NE, LE, LT). Compară operanzii şi
setează acumulatorul în funcţie de rezultatul comparaţiei.
Exemplu:
(* Programul seteaza doua variabile booleene în *)
(* functie de rezultatul comparatiei *)
(* Variabilele a, b, c sunt variabile simbolice *)
(* Variabilele bool1 si bool2 sunt variabile booleene *)
LD a (*Încarca a în acumulator*)
GT b (*Compara cu b*)
ST bool (*Memoreaza rezultatul comparatiei*)
LD b (*Încarca b în acumulator*)
GTPROCES
a (*Compara cu a*)
ST bool2 (*Memoreaza rezultatul comparatiei*)

26.03.2016 16:37 6
Operatori în IL
Operatori de salt (JMP, CALL, RET)
Exemplu:
(* Programul memoreaza în c rezultatul operatiei*)
(* a-b daca a este mai mare ca b sau rezultatul *)
(* operatiei b-a daca b este mai mare ca a *)
(* Variabilele a, b şi c sunt variabile simbolice de tip întreg *)
LD a
GE b
JMPC ET1
LD b
SUB a
ST c
PROCES
JMP ETEND
ET1: LD a
SUB b
ST c
ETEND:
26.03.2016 16:37 7
Modificatori
Modificatorul este un caracter, care este ataşat operatorului şi poate
realiza:
n Negarea booleană a operatorului. De obicei acest operator este

caracterul N;
n Întârzierea operaţiei. De obicei acest operator este caracterul (;

n Realizarea unei operaţii condiţionate. Atunci când limbajul

permite, acest operator este caracterul C.


Exemplu:
ANDN %I0.0
realizează o operaţie logică AND între conţinutul acumulatorului sau
stivei şi negarea intrării I0.0 a unui automat, iar rezultatul este reţinut
în acumulator sau stivă.
Instrucţiunile:
AND( %I0.0
OR %I0.1
)

26.03.2016 16:37 8
Lucrul cu stiva în STL
În STL trebuie utilizate instrucţiuni speciale pentru controlul stivei.
Aceste instrucţiuni sunt OLD şi ALD, care execută operaţii de OR şi AND
între componentele din capul stivei.
LD %I0.0 LD %I0.1 LD %I0.2 AND %I0.3
%I0.0 %I0.1 %I0.2 E
%I0.0 %I0.1 %I0.1
LD %I0.0 Stiva
%I0.0 %I0.0
LD %I0.1
LD %I0.2
AND %I0.3
E=%I0.3 AND %I0.2
OLD OLD ALD
ALDPROCES E1 E2
= %Q0.0 %I0.0

E1=E OR %I0.1 E2=E1 AND %I0.1


26.03.2016 16:37 9
Studiu de caz
Să se dezvolte un program care să controleze un motor de curent alternativ trifazat care este
acţionat într-un singur sens prin intermediul unui contactor a cărei bobină este alimentată la
24 V CC. Programul trebuie să realizeze pornirea/oprirea locală de la un set de butoane L1,
pentru pornire şi LS pentru oprire. De asemenea programul trebuie să permită pornirea
controlată prin program prin setarea timp de 2 secunde a unor variabile interne RUN_P, pentru
pornire şi STOP_P pentru oprire. Motorul se consideră indisponibil dacă schema nu are
asigurată alimentarea în curent continuu. Se va seta o variabilă de avarie a motorului dacă s-a
dat o comandă de pornire prin program a motorului şi contactorul nu şi-a închis contactele în 2
secunde. Ieşirea din starea de avarie se va face numai prin apăsarea unui buton de resetare a
avariei.
Soluţie: Se va utiliza un automat S7 214 al firmei SIEMENS. Intrările şi ieşirile utilizate sunt:
I0.0 (nume simbolic L1) – pentru butonul de pornire locală L1 (contact normal deschis);
I0.1 (nume simbolic LS) – pentru butonul de oprire locală LS (contact normal închis);
I0.2 (nume simbolic B1) – pentru contactul normal deschis al contactorului de pornire al
motorului;
I0.3 (nume simbolic R_AV) – pentru butonul de resetare a avariei (contact normal deschis);
I0.4 (nume simbolic AV) – pentru contactul normal deschis al contactorului care leagă schema
la sursa de curent continuu, indicând disponibilitatea motorului;
I0.5 (nume simbolic LP) – pentru validarea comenzii de la panoul local (1, pentru pornire
locală 0, pentru pornire prin program);
Q0.0 (nume simbolic C1) – ieşire pentru alimentarea bobinei contactorului de legare la barele
de curent alternativ a motorului.

26.03.2016 16:37 10
Network 1
// Pornirea automata
LD RUN_P
O C1 // Autoretinere
AN LP // Este pozitionat pe pornire automata?
AN STOP_P // S-a generat un semnal de oprire?
A AV // Motorul este disponibil?
AN AVARIE // Nu a apărut o avarie
// Pornirea manuala
LD L1 // S-a apasat butonul de pornire?
O C1 // Autoretinere
A LP // Este pozitionat pe pornire locla?
A LS // Butonul de oprire locala este apasat?
A AV // Motorul este disponibil?
AN AVARIE // Nu a apărut o avarie
// Testul conditiei de pornire automata sau manuala
OLD
= C1
Network 2
// Testul inchiderii contactorului in 2 s
LD C1
AN B1
TON T37, 20
Network 3
// Generarea si resetarea semnalului de avarie
LD T37
O AVARIE
AN R_AV
= AVARIE
26.03.2016 16:37 11

S-ar putea să vă placă și