Sunteți pe pagina 1din 13

Limbajul ST

04.04.2015 10:33 1
Limbajul ST sau SCL

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)

04.04.2015 10:33 2
Limbajul ST

Limbajul ST (Structured Text), care mai poart i


numele SCL (Structured Control Language), este un
limbaj de nivel înalt, cu o sintax asem toare
limbajului Pascal, destinat automatiz rii proceselor i
este utilizat pentru implementarea unor programe sau
proceduri complexe, care nu pot fi programate u or în
limbajele de nivel jos sau grafice.

04.04.2015 10:33 3
Operatori i expresii în ST
Operatorul Descrierea Preceden a

(….) Paranteza, expresia Cea mai înalt

Func ia (…) Lista parametrilor unei


func ii
** Ridicarea la putere
NOT Nega ia
*, /, DIV, MOD Înmul irea, împ irea,
modulo
+, - Adunarea, sc derea
<, >, <=, >=, =, <> Mai mic, mai mare, mai
mic sau egal, mai mare
sau egal, egal, diferit
PROCES
AND, & AND boolean
XOR XOR boolean
OR OR boolean Cea mai joas

04.04.2015 10:33 4
Instruc iunea de atribuire
Instruc iunea de atribuire are forma general :
<variabil >:=<expresie>
Prelucrarea descris de aceast instruc iune se realizeaz în
dou etape:
Calculul valorii expresiei din membrul drept;
Asocierea valorii astfel ob inute variabilei din membrul stâng.

PROCES

04.04.2015 10:33 5
Instruc
Sintaxa instruc iunii este:
iunea de decizie
IF <Expresie booleana> THEN
<Instruc iuni IF>
{ELSIF < Expresie booleana 1> THEN
<Instructiuni ELSIF1>
.
.
ELSIF <Expresie booleana n> THEN
<Instruc iuni ELSIF n>
ELSE
<Instruc iuni ELSE>}
END_IF;
Partea dintre paranteze {..} este op ional .
Instruc iunea IF se execut conform urm toarelor reguli:
Prima secven de instruc iuni (<Instruc iuni IF> ) se execut dac <Expresie booleana>
este adev rat . Restul secven elor de instruc iuni nu se execut ,în acest caz;
În cazul c <Expresie booleana> este fals se evalueaz expresiile booleene < Expresie
booleana 1> .. < Expresie booleana n> una dup alta pân când una din expresiile
booleene este adev rat . În acest caz se va executa i instruc iunea <Instruc iuni ELSIF i>
i va continua pân tot a a pân la ultimul ELSEIF;
Orice num r de instruc iuni ELSIF este permis;
Dac niciuna din instruc iunile ELSEIF nu are condi ia adev rat se execut secven a de
instruc iuni <Instruc iuni ELSE>;
Instruc iunea ELSE poate lipsi.
04.04.2015 10:33 6
Instruc iunea de decizie
VAR
N: INT;
SUM: INT;
OK: BOOL;
END_VAR
IF %I1.1 THEN
N:=0;
SUM:=0;
OK:=FALSE; // Setarea unui flag OK
ELSIF %I1.0=0 THEN
N:=N+1;
?PROCES SUM:=SUM+N;
ELSE
OK:=TRUE;
END_IF;

04.04.2015 10:33 7
Selec ia multipl
CASE <expresie> OF
<valoare 1>: <instructiuni 1>;
<valoare 2>: <instructiuni 2>;
..............
<valoare n>: <instructiuni n>;
{ELSE : <instructiuni ELSE>}
END_CASE;
Instruc iunea CASE se execut conform urm toarelor reguli:
Expresia de selec ie trebuie s întoarc o valoare întreag ;
Atunci când se execut o instruc iune CASE se evalueaz mai întâi expresia,
apoi se testeaz cu ce <valoare i> coincide. Dac se g se te aceast valoare
se execut grupul de instruc iuni corespunz tor valorii;
<valoare i> reprezint o constant întreag sau o lista de constante întregi
separate prin virgul sau o enumerare de forma <valoare i>. . <valoare f>,
ceea ce înseamn toate constantele întregi între <valoare i> i <valoare f>;
Dac nu se g se te nici o valoare egal cu <valoare i> se execut sec iunea
ELSE, dac exist sau nu se execut nici o instruc iune dac ELSE nu exist .

04.04.2015 10:33 8
Selec ia multipl
VAR
DISALAY: INT;
iVAL: INT;
VIT_MOTOR: INT;
TEMP_CUPTOR ARRAY[1..5] OF INT;
MASA_SAC ARRAY[1..20] OF INT;
END_VAR

CASE iVAL OF
1, 5: DISPLAY := TEMP_CUPTOR[iVAL];
2: DISPLAY := VIT_MOTOR;
PROCES
6..20: DISPLAY := MASA_SAC[iVAL];
ELSE
DISPLAY := 0;
iVAL_ERROR := 1;
END_CASE;

04.04.2015 10:33 9
Instruc iunea FOR
FOR <contor> := <valoare_initiala> TO <valoare_finala>
{BY <Pas>}
DO
<Instructiuni>
END_FOR;
Executarea instruc iunii se face conform cu urm toarele reguli:
La începutul buclei, variabila de control este setat cu valoarea ini ial i la
fiecare execu ie a buclei valoarea contorului este incrementat sau decrementat
pân se atinge valoarea final ;
Dac valoarea ini ial este peste valoarea final , instruc iunile corpului buclei nu
se execut .
Variabila de contor trebuie s fie de tip INT sau DINT;
Se poate omite cuvântul cheie BY (incrementul). Dac incrementul nu este
specificat atunci el este luat automat egal cu +1;
Ie irea dintr-o bucl FOR se poate face, înainte de îndeplinirea condi iilor de
ie ire de mai sus, utilizând instruc iunea EXIT;
Valoarea ini ial , valoarea final i expresia pentru increment se evalueaz odat
la începutul execu iei buclei FOR;
Alterarea valorii finale i a incrementului nu este permis în timpul execu iei
buclei.
04.04.2015 10:33 10
Instruc iunea REPEAT
REPEAT
<Instructiuni>
UNTIL <Expresie boolean >
END_REPEAT;

Executarea instruc iunii se face conform cu urm toarele reguli:


Se execut secven a de instruc iuni din corpul ciclului;
Dup prima execu ie se evalueaz expresia logic . Dac
condi ia este FALSE, se reia secven a de instruc iuni din corpul
ciclului, iar în caz contrar se întrerupe execu ia secven ei de
instruc iuni.

04.04.2015 10:33 11
Instruc iunea WHILE

WHILE <Expresie booleana > DO


<Instructiuni>
END_WHILE

Executarea instruc iunii se face conform cu urm toarele reguli:


Se evalueaz expresia logic ;
Dac condi ia este FALSE, se execut secven a de instruc iuni
din corpul ciclului, iar în caz contrar ciclul nu se execut .

04.04.2015 10:33 12
Instruc iuni de ie ire din cicluri

VAR
VAR
INDEX: INT;
INDEX: INT;
INDEX: INT; Var1 ARRAY[1..50] OF INT;
INDEX1: INT; INDEX: INT;
Var1 ARRAY[1..50] OF INT; END_VAR
END_VAR while INDEX <= 100 DO
FOR INDEX := 1 TO 50 BY 2 DO
INDEX := INDEX+1;
IF Var1[INDEX]>3 THEN
INDEX1 := INDEX; IF Var1[INDEX]= INDEX THEN
EXIT; CONTINUE;
END_IF; END_IF;
END_FOR; Var1[INDEX] :=0;
END_WHILE;
04.04.2015 10:33 13

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