structured text - politecnico di...

24
Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico di Milano P.zza Leonardo da Vinci, 32

Upload: others

Post on 26-Jul-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 1

Structured Text

Marco MauriPolitecnico di Milano

P.zza Leonardo da Vinci, 32

Page 2: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 2

Sommario

• La struttura del linguaggio

– Come assegnare un valore ad una variabile

– Come creare espressioni semplici e complesse

– L’uso degli operatori aritmetici, logici e di

comparazione

• Come chiamare Function e Function Block

• Uso dei costrutti del linguaggio

• Come creare costrutti annidati

Page 3: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 3

Struttura del linguaggio

• Linguaggio di alto livello con una sintassi simile a quella del

PASCAL, ma è stato sviluppato espressamente per applicazioni

di controllo

• Molto semplice da interpretare e leggere soprattutto da parte di

sviluppatori software.

• Particolarmente adatto per calcoli aritmetici anche complessi

• I programmi possono essere costruiti con molta libertà ed è

possibile inserire caratteri di tabulazione, spazi o commenti in

maniera analoga a quanto si fa per altri linguaggi di

programmazione,

Page 4: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 4

Istruzioni di assegnamento

• Una istruzione di assegnamento ha la forma generale:

X := Y

• Y rappresenta una espressione che produce un nuovo valore per la variabile X. L’espressione può essere molto semplice (ad esempio una costante) oppure molto complessa (ad esempio un invocazione a numerose espressioni annidate)

• X può essere una variabile semplice, un array o una struttura

Page 5: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 5

Istruzioni di assegnamentoTYPE Alarm

STRUCT

TimeOn : DATE_AND_TIME;

Duration : TIME;

END_STRUCT;

END_TYPE

VAR

Rate,A1 : REAL;

Count : INT;

Alarm : Alarm;

Alarm2 : Alarm;

Profile : ARRAY[1..10] OF REAL;

RTC1 : RTC (*Real Time Clock*)

END_VAR

Rate := 13.1; (* Espressione letterale , costante *)

Count := Count + 1; (* Semplice espressione *)

A1 := LOG(Rate) (* Valore da una funzione *)

Alarm1.TimeOn := RTC1.CDT(* Parametro di uscita di un FB *)

Alarm2 := Alarm1 (* Variabili multielemento *)

Profile[3] := 10.3 + SQRT(Rate +2.0) (*Espressione complessa *)

Page 6: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 6

Espressioni

• Vengono utilizzate per calcolare e valutare i valori derivati da altre costanti e variabili;

• Utilizzano una o più funzioni, variabili, operatori;

• Possono produrre tipi di dato elementare o derivati

• Possono essere create utilizzando espressioni più semplici annidate

10.3 + SQRT(LOG(Rate) +2.0)

Page 7: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 7

Operatori

Operatore Descrizione Precedenza

(…) Parentesi Alta

Function(..) Lista di parametri di una funzione, valutazione

di una funzione

** Elevamento a potenza

-

NOT

Negazione

Complemento booleano

*

/

MOD

Moltipicazione

Divisione

Divisione modulare

+

-

Addizione

Sottrazione

<,>,<=,>= Operatori di comparazione

Page 8: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 8

Operatori

Operatore Descrizione Precedenza

=

<>

Uguaglianza

Disuguaglianza

AND, & AND booleano

XOR OR esclusivo booleano

OR OR booleano Bassa

Area := PI * R *R

V := K ** (-W * T)

Volts := Amps * Ohm;

Start := Oilpress AND Steam AND Pump

Status := (Valve1 = Open) XOR (Valve1 = Shut)

Page 9: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 9

Valutazione di Espressioni

L’ordine di valutazione delle espressioni dipende dalla

precedenza degli operatori utilizzati

Rate := Speed1/10.0 + Speed2/20.0 - SQRT(Press+6.0);

Assumendo Speed1 = 50.0 , Speed2 = 60.0, Press = 30.0 abbiamo il

seguente ordine di valutazione:

Speed1/10.0 = 5.0

Speed2/20.0 = 3.0

Press+6.0 = 36.0

SQRT(Press+6.0)= 6.0

5.0 + 3.0 = 8.0

8.0 – 6.0 = 2.0

Page 10: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 10

Chiamata di un Function Blocks

• Una istanza ad un FB può essere invocata

chiamando il nome dell’istanza con i valori dei

parametri di ingresso. Se i valori dei parametri di

ingresso non sono forniti vengono posti ai valori di

deafult assegnati durante la definizione del Function

Block.

FunctionBlockInstance(

InputPar1 := Valore,

InputPar2 := Valore, …

)

Page 11: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 11

Chiamata di un Function Blocks

SimpleControlREAL

REAL

CONTROLMODE

PV

SP

Mode

OUT REAL

VAR

Loop1 : SimpleControl

END_VAR

(* Invocazione iniziale *)

Loop1(PV := Input1.Out + Offset, SP := 100.0);

… ecc

Loop1(PV:= Input1.Out, Mode := MANUAL)

FlowRate := Loop1.Out;

E’ possibile assegnare

direttamente una variabile al

valore di uscita usando

l’operatore => :

Loop1(PV: = %IW100, OUT => FlowRate);

Page 12: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 12

Istruzioni condizionali – IF...THEN

IF <espressione booleana> THEN

<istruzioni>

END_IF

IF <espressione booleana> THEN

<istruzioni>

ELSE

<istruzioni>

END_IF

IF <espressione booleana> THEN

<istruzioni>

ELSEIF <espressione booleana>

<istruzioni>

ELSE

<istruzioni>

END_IF

• Può essere aggiunto un

numero qualsiasi di ELSEIF

al costrutto IF…THEN

• E’ consentito l’annidamento

Page 13: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 13

Istruzioni condizionali – IF…THEN

IF Collision THEN

Speed := 0;

Brakes := ON;

END_IF;

IF (Gate = CLOSED) AND (Pump = ON) THEN

Control_State := Active;

ELSE

CONTROL_State := Hold

PumpSpeed := 10.0;

END_IF

Page 14: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 14

Istruzioni condizionali - CASE

• Consente di eseguire determinate istruzioni in funzione del

valore intero assunto da un’espressione.

• Possono essere usate anche variabili di tipo enumerativo

CASE < espressione intera > OF

<primo valore intero>: <istruzioni>

<secondo valore intero>: <istruzioni>

……

ELSE

<istruzioni>

END_CASE

Page 15: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 15

Istruzioni condizionali - CASE

CASE speed_setting OF

1: speed := 10.0;

2: speed := 20.4;

3: speed := 30.0; fan1 := ON

4,5: speed := 50.0; fan2 := ON;

6..10: speed := 60.0; water := ON;

ELSE

speed := 0; SpeedFault := TRUE;

END_CASE

Page 16: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 16

Istruzioni condizionali - CASE

TYPE

SPEED: (STOPPED, SLOW, MEDIUM, FAST);

END_TYPE

….

CASE PumpSpeed OF

STOPPED : rate := 0.0;

SLOW : rate = 20.4;

MEDIUM : rate = 30.0;

ELSE

rate:= 0

END_CASE

Page 17: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 17

Istruzioni iterative – FOR… DO

• Consente di ripetere una o più istruzioni un numero di

volte pari al valore di una particolare variabile

FOR <inizializzazione della variabile di iterazione>

TO <valore finale dell’espressione>

BY <espressione di incremento> DO

<istruzioni>

END_FOR;

Opzionale se omesso

è per default 1

Page 18: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 18

Istruzioni iterative – FOR… DO

FOR I := 100 TO 1 BY -1 DO

channel[I].status := ON;

END_FOR;

FOR T := FarmSize-1 TO TankMax*2 DO

tankNo := T; vessel(tank := T);

END_FOR

Lo standard definisce che la variabile utilizzata per il ciclo può

dipendere dalla piattaforma su cui è implementato il programma.

E’ quindi consigliabile non utilizzarla al di fuori del ciclo.

Page 19: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 19

Istruzioni iterative – WHILE… DO

• Consente di eseguire una o più istruzioni finché una espressione booleana resta vera

WHILE <espressione booleana> DO

<istruzioni>

END_WHILE

WHILE Value < (MaxValue - 10.0) DO

bridge1();

Value := Value + bridge1.Position;

END_WHILE

Page 20: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 20

Istruzioni iterative – REPEAT…UNTIL

• Consente di eseguire una o più istruzioni finché una

espressione booleana resta vera

REPEAT

<istruzioni>

UNTIL <espressione booleana>

END_REPEAT; Tries := 0;

REPEAT

tries := tries +1;

switchingear1(Mode := DISABLE);

UNTIL (switchgear1.State = OFF) OR (tries >4)

END_REPEAT

Page 21: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 21

Istruzioni iterative – EXIT

• Può essere utilizzato solo all’interno di istruzioni e consente di terminare cicli iterativi

• Dopo l’istruzione di EXIT l’esecuzione continua dalla fine delle istruzione di iterazione

Fault := FALSE;

FOR I:= 1 TO 20 DO

FOR J := 0 TO 9 DO

IF FaultList [I,J] THEN

FaultNo := I*10 + J;

Fault := TRUE; EXIT;

EN_IF;

END_FOR;

END_FOR;

Page 22: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 22

RETURN

• Può essere utilizzato all’interno di un function

block o di una funzione e consente di uscire

dal corpo di un’istruzione

• L’esecuzione continua dalla fine della

funzione o del function block

Page 23: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 23

RETURN

FUNCTION_BLOCK TEST_POWER

VAR_INPUT

CURRENT, VOLTS1, VOLTS2, VOLTS3 : REAL;

END_VAR

VAR_OUTPUT

OVERVOTS : BOOL;

END_VAR

IF VOLTS1*CURRENT > 100 THEN

OVERVOLTS := TRUE; RETURN;

END_IF;

IF VOLTS2*(CURRENT+10.0) > 100 THEN

OVERVOLTS := TRUE; RETURN;

ENF_IF;

IF VOLTS3*(CURRENT+20.0) > 100 THEN

OVERVOLTS := TRUE

ENF_IF;

END_FUCNTION_BLOCK

Page 24: Structured Text - Politecnico di Milanodocenti.etec.polimi.it/IND32/Didattica/AzionamentixAutomazione/file… · Structured Text 22-23 Maggio 2001 1 Structured Text Marco Mauri Politecnico

Structured Text

22-23 Maggio 2001 24

Conclusioni• ST è un linguaggio che può essere usato per

programmare un ampio spettro di applicazioni industriali

• E’ un linguaggio di alto livello fortemente tipizzato e con una sintassi formale

• Permette di assegnare variabili, calcolare espressioni complesse, ecc.

• ST fornisce il supporto per avere porzioni di codice ad esecuzione condizionale, ripetuta e per chiamare funzioni e function block

• ST può essere naturalmente usato per descrivere il comportamento delle POU.