Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà...

38
Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub- routine Difficoltà nel produrre software riutilizzabile Limiti nella definizione di strutture dati più complesse Difficoltà nel differenziare l'esecuzione di pezzi di uno stesso programma o di più programmi in base alle esigenze temporali Limiti della Programmazione Tradizionale dei PLC

Transcript of Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà...

Page 1: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Differenti linguaggi di programmazioneStessi linguaggi ma differenti implementazioni

Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software riutilizzabile Limiti nella definizione di strutture dati più

complesse Difficoltà nel differenziare l'esecuzione di pezzi di

uno stesso programma o di più programmi in base alle esigenze temporali

Limiti della Programmazione

Tradizionale dei PLC

Page 2: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Limiti dei linguaggi di programmazione tipo Ladder: per applicazioni di sequencing per eseguire funzioni più o meno complesse

(anche le semplici operazioni matematiche)

Limiti della Programmazione

Tradizionale dei PLC

Page 3: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

International Electro-technical Committee (IEC) Commissione Tecnica: TC65 "Industrial Process

Measurement and Control“Sottocommissione: SC65B "Devices“

Working Group: WG7 "Programmable Control Systems".

Soluzione ai limiti prima evidenziati:

Standard IEC 1131-3

Page 4: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

lo standard definisce 5 linguaggi: Ladder, Sequential Function Chart (SFC), Instruction List,

Function Block Diagram, Structured Text

lo standard permette approcci: top-down e bottom-up.

un programma può essere decomposto in Program Organisation Unit (POU)

lo standard permette il pieno controllo dell'esecuzione di ciascun "sotto-programma" tramite l'assegnazione a task

Caratteristiche principali

dello standard IEC 1131-3

Page 5: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

lo standard permette la definizione di strutture dati: record, vettori.

lo standard garantisce in teoria la portabilità del software.

lo standard permette lo sviluppo di programmi orientati al sequencing (ad esempio tramite il Sequential Function Chart - SFC)

lo standard è basato sulla programmazione grafica

Caratteristiche principali

dello standard IEC 1131-3

Page 6: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Modello Software dello standard IEC 1131-3

Access Path

ConfigurationResource Resource

Task Task Task Task

Program Program Program

FB FB

Program

Var GlobaleF

Page 7: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Corrispondenza tra il Modello Software

e i Sistemi Reali

Configuration

Resource

programPLC program

Se il processore non supporta il multi-tasking, il numero di programmi è unitario

Page 8: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Corrispondenza tra il Modello Software

e i Sistemi Reali

Configuration

Resource

programProcessore

Mu

lti-

pro

cess

or

PL

C

Processore

Processore

program

Resource

program program

Resource

program program

Page 9: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Corrispondenza tra il Modello Software

e i Sistemi Reali

PLC PLC PLC PLC

FieldBus

Configuration

Resource

programprogram

Resource

programprogram

Resource

programprogram

Page 10: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

POUs: program, function blocks, function La definizione di un POU permette il suo utilizzo un numero

di volte illimitato: chiamate di funzioni e istanze di Programma e Function Block

Ciascuna istanza di un Programma o di un Function Block condivide lo stesso codice, ma ha la sua area privata di memoria

Nell'ambito della stessa Configurazione è possibile utilizzare più istanze dello stesso programma in differenti Risorse

Nell'ambito dello stesso Programma è possibile utilizzare più istanze dello stesso Function Block

Non è ammessa alcuna ricorsione nelle POUs

Riusabilità del software:

Program Organisation Units (POUs)

Page 11: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Avviene tramite variabili globali definite a livello di: Configuration, Resource o di Program

E’ possibile l’uso dei parametri formali

Comunicazioni tra POUs

VAR_GLOBALx:REAL

VAR_EXTERNALx:REAL

Configuration

ResourceProgram X Program Y

VAR_EXTERNALx:REAL

Page 12: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Identificatori Un identificatore può essere costituito da una sequenza di lettere e numeri

purché siano soddisfatte le seguenti condizioni:il primo carattere non sia un numeronon ci siano più di due caratteri "_" consecutivinon vi siano spazi

Lo standard impone che almeno i primi 6 caratteri debbano differenziare due identificatori

Keywords Lo standard definisce un set di keywords (ad esempio VAR,

VAR_EXTERNAL, VAR_ACCESS). Si deve evitare l'uso di identificatori uguali alle keywords.

Commenti Vengono messi tra (* *)

Tipi di dati predefiniti: Interi, Reali, Time, Date, String, Boolean 

Elementi in Comune tra i 5 linguaggi IEC 1131-3

Page 13: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Tipi Interi

IEC Data Type Description Bits Range

SINT short integer 8 -128,+127

INT integer 16 -32768, 32767

DINT double integer 32 -231, +231-1

LINT long integer 64 -263, 263-1

USINT unsigned short int 8 0, 255

UINT unsigned int 16 0, 216-1

UDINT unsigned double int 32 0, 232-1

ULINT unsigned long int 64 0, 264-1

Valori e/o Costanti: espresse dal numero decimale in base differente da quella decimale, preceduta dal prefisso

base# Esempi:

122#11111111 o 2#1111_1111 (255)8#377 (255)16#FF (255)

Variabili:

Page 14: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Tipi Reali

Valori e/o Costanti: espresse dal numero reale espresse tramite notazione scientifica (E o e) Esempi:

10.12310_234.54-1.65E-100.237e+14

Variabili:IEC data type description bits range

REAL real 32 1038

LREAL long real 64 10308

Page 15: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Tipo Duration (Time)

Valori e/o Costanti:

tramite gli operatori d, h, m, s, ms preceduti dall'operatore T# o TIME#

Esempi:

T#12d3h2s

T#3s56ms

TIME#6d_10m

TIME#16d5h3m4s

Variabili:

IEC data type Description bits

TIME time duration implementation dependent

Page 16: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Tipi DATES and TIMES of DAY

Valori e/o Costanti: DATE: formato anno-mese-giorno preceduti dall'operatore D# o DATE#

TOD:formato ora:minuti:secondi.decimi preceduti dall'operatore TOD# o TIME_OF_DAY#

DT: formato anno-mese-giorno-ora:minuti:secondi.decimi preceduti dall' operatore DT# o DATE_AND_TIME#

Esempi: D#1994-06-10 o DATE#1994-06-10

TOD#23:59:34.56 o TIME_OF_DAY#23:59:34.56

DT#1993-04-12-15:36:55.40 o DATE_AND_TIME#1993-04-12-15:36:55.40

Variabili:IEC data type description bits

DATE calendar date implementation dependent

TIME_OF_DAY o TOD time of day implementation dependent

DATE_AND_TIME o DT date and time of day implementation dependent

Page 17: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Tipo String

Valori e/o Costanti:

i caratteri vengono inseriti tra ‘ ‘

è possibile inserire caratteri di controllo: $N (new line), $P (new page), $R (carriage return), $T (tabulation), $’ (carattere ‘), $$ (carattere $)

Esempi:

‘questa e$’ una prova $N’

Variabili:IEC data type Description Bits

STRING character string Implementation dependent

Page 18: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Tipi String of Bit

Valori e/o Costanti:

FALSE, TRUE

Variabili:IEC data type description bits

BYTE bit string 8 bits 8

WORD bit string 16 bits 16

DWORD bit string 32 bits 32

LWORD bit string 64 bits 64

     

IEC data type Description

BOOL Boolean

Tipo Boolean Variabili:

Page 19: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Valori Iniziali di Default per ciascun tipo di dato

Interi: 0

Reali: 0.0

Time:0d0h0m0s

Date:0001-01-01

Stringhe: ‘’

Boolean: FALSE

Nota Bene: quando viene definita una variabile di un certo tipo, il suo valore iniziale può essere ridefinito

Page 20: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

ANY

ANY_NUM

ANY_REAL

LREAL, REAL

ANY_INT

SINT, INT, DINT, LINT, USINT, UINT, ULINT, UDINT

ANY_BIT

BOOL, BYTE, WORD, DWORD, LWORD

STRING

ANY_DATE

DATE_AND_TIME, DATE, TIME_OF_DAY

TIME

Tipi di dato generici

(Overloading)

Page 21: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Record TYPE

nome:

STRUCT

nome_campo_1: tipo;

nome_campo_2: tipo;

  …………..

nome_campo_n: tipo;

END_STRUCT;

END_TYPE;

EnumerativiTYPE

nome:(VALORE_1, VALORE_2, ..., VALORE_n);

END_TYPE;

Tipi di dato derivato

Page 22: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

 Range TYPE TYPE

nome: tipo(range); volts:int(-6..+12)

END_TYPE; END_TYPE;

VettoreTYPE

nome: ARRAY[inf..sup, inf..sup] OF tipo;

END_TYPE;

Tipi di dato derivato

Page 23: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Variabili Locali: dichiarate in un POU (programma, function block, funzione)

Variabili Globali : dichiarate in un Program, Resource e in una Configuration

Variabili Esterne: devono corrispondere a variabili globali

Variabili di Ingresso, Uscita, Ingresso/Uscita di un POU: programma, function block, funzione

Variabili con Riferimento Diretto

Definizione di Variabili

Page 24: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Variabili LocaliPossono essere definite solo in POU (program, function

block e funzioni) e hanno validità solo all'interno di tali POU

VAR

nome: tipo;

nome:tipo;

END_VAR;

Definizione di Variabili

Page 25: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Variabili globaliPossono essere definite solo nei Program, Resource e

Configuration. Esse hanno validità (dunque possono essere lette e scritte)

all'interno di tutti i POU esistenti dentro il Programma, Resource e Configuration, in cui la variabile globale è dichiarata come esterna (VAR_EXTERNAL).

  VAR_GLOBAL

nome: tipo;

nome:tipo;

END_VAR; 

Definizione di Variabili

Page 26: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Variabili esternePossono essere definite solo nei POUPermettono l'accesso a variabili globali definite nel

Program, Resource e Configuration, contenente il POU.

VAR_EXTERNAL

nome: tipo;

nome:tipo;

END_VAR;

Definizione di Variabili

Page 27: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Variabili InputPermettono ad un POU (Program, Function block,

Function) di ricevere dati dall'esterno.

VAR_INPUT

nome: tipo;

nome:tipo;

END_VAR;

Definizione di Variabili

Page 28: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Variabili OutputPermettono ad un POU di fornire dati all'esterno.

VAR_OUTPUT

nome: tipo;

nome:tipo;

END_VAR;

Variabili Input/OutputPermettono ad un POU di ricevere dati dall'esterno, e

consentono al POU di modificare tali dati.VAR_IN_OUT

nome: tipo;

nome: tipo;

END_VAR;

Definizione di Variabili

Page 29: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Variabili con riferimento direttoE' possibile non utilizzare simboli di variabile, ma fare

riferimento diretto a locazioni di memoria, ingressi e uscite.

Nota: Possono essere definite solo in un Program e NON in Function Blocks e Function (per la riusabilità del software)

Definizione di Variabili

Page 30: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Variabili con riferimento direttoAree in cui è divisa la memoria:

Input memory location. E' relativa alla memoria in cui vengono copiati gli ingressi relativi a ciascun canale di ingresso. Ogni indirizzo della memoria corrisponde ad un particolare canale di ingresso.

Output memory location. E' relativa alla memoria in cui vengono copiate le uscite relative a ciascun canale di uscita. Ogni indirizzo della memoria corrisponde ad un particolare canale di uscita.

Internal memory location. E' relativa alla memoria in cui vengono memorizzati i risultati intermedi della computazione (Registri, Flags).

Definizione di Variabili

Page 31: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Variabili con riferimento direttoSintassi per la definizione di variabili con riferimento

diretto:simbolo %uno tra i simboli: I (Input memory location), Q (Output memory

location), M (Internal memory location)uno tra i simboli: X (bit), B (byte), W (word 16 bit), D (Double

Word 32 bit), L (Long word 64 bit)indirizzo di memoria:

Ingressi/Uscite: numero rack oppure numero rack.numero ingressoMemoria interna: numero intero o numero intero.indice (ad esempio byte.bit)

Esempi:%IX0.0, %QX3.2, %IB0.0, %IB1, %QW0, %MW132 %MB20.1

Definizione di Variabili

Page 32: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

RETAIN. Tale attributo permette alla variabile di riassumere il valore precedente ad una interruzione, quando il PLC viene nuovamente fatto ripartire (WARM Start-Partenza a Caldo)

VAR RETAIN

Speed: REAL;

END_VAR;

Attributi di Variabili

Page 33: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

CONSTANT. L'attributo specifica che il valore attribuito alla variabile non può essere modificato. Questo attributo non può essere usato per variabili esterne.

VAR CONSTANT

Speed: REAL:=12.3;

END_VAR;

AT. Permette di attribuire ad una variabile simbolica, un indirizzo di memoria (I,Q,M) determinato.

VAR

Status AT %IX0.0: BOOL;

END_VAR;

Attributi di Variabili

Page 34: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

COLD (Freddo) Durante una partenza COLD tutte le variabili sono

inizializzate a valori di default o a quelli ridefiniti dall’utente

WARM (Caldo) Durante una partenza WARM solo le variabili (compresi

timers e contatori) NON-RETENTIVE (attributo RETAIN non presente) sono inizializzate ai valori di default o a quelli ridefiniti dall’utente.

Le variabili (compresi timers e contatori) con attributo RETAIN non vengono inizializzate ma continuano ad assumere l’ultimo valore precedente alla WARM start

HOT Durante una partenza HOT nessuna variabile viene

inizializzata

Partenze (Start) di un PLC

Page 35: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Concetti fondamentali della schedulazione di processi:Un processo può trovarsi nello stato di pronto, di attesa o

di esecuzioneUn processo nello stato di pronto viene posto in

esecuzione in base alla politica di scheduling del S.O.E’ possibile assegnare una priorità ai processi in modo da

aiutare il S.O. nella scelta del processo da porre in esecuzione tra i processi pronti

Task nello standard IEC 1131-3: Ha il compito di “risvegliare un processo” ponendolo

nello stato di prontoPermette di assegnare differenti controlli sulla esecuzione

di Programmi o di Function Blocks appartenenti alla stessa Resource

Task

Page 36: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

Ad ogni Program e Function Block viene associato un task.

Esistono tre tipi di tasks: Cyclic tasks: sono attivati ad intervalli temporali e il

programma è eseguito periodicamente (o ciclicamente) System (or Error) tasks: sono attivati se un evento di

sistema (errore di sistema) avviene durante l’esecuzione di un programma, ad esempio stack overflow

Event (or Interrupt) tasks: sono attivati all’occorrenza di certi eventi, ad esempio se una variabile ha raggiunto un certo valore o al sopraggiungere di un interrupt

Un programma senza task associato ha la più bassa priorità e viene posto in stato di pronto appena termina.

Task

Page 37: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

La dichiarazione dei task è caratterizzata dai seguenti parametri: Task Sistema/Interrupt

Definizione dell'evento (strettamente legato al PLC)

Task Cyclic Definizione dell'intervallo. Si noti che il task può essere eseguito

anche dopo intervalli superiori all'intervallo specificato, in dipendenza del S.O.

WatchDog Time. Specifica l’intervallo temporale dopo il quale viene controllato se l’intervallo Periodico è stato superato o no. Si sceglie generalmente inferiore o uguale alla durata dell'intervallo.

Priorità. Viene assegnata una priorità al task, generalmente in ordine

decrescente (0 la più alta). Si usa nella scelta tra processi pronti.

Task

Page 38: Differenti linguaggi di programmazione Stessi linguaggi ma differenti implementazioni Difficoltà nell'utilizzo di sub-routine Difficoltà nel produrre software.

I Task sono degli strumenti per controllare l'esecuzione dei processi, ma l'esecuzione dipende dal Sistema Operativo (preemptive, non-preemptive)

Esempio: tre tasks: Task A, Cyclic, Interval 100ms, priorità 0, durata 10 Task B, Cyclic, Interval 200ms, priorità 1, durata 90 Task C, Cyclic, Interval 300ms, priorità 2, durata 120  

Non-preemptive schedule

Preemptive schedule

Task

100 200 300 400 500 600

100 200 300 400 500 600

A

BC