Che materia stai cercando?

Anteprima

ESTRATTO DOCUMENTO

L’ambiente di sviluppo STEP 7

Una volta definito un tipo di dati con un UDT, questo può essere utilizzato all’interno di una

DB, oppure all’interno della sezione di dichiarazione variabili di un blocco di codice.

L’UDT1, per esempio, viene richiamato nella DB10 (vedi fig. 17).

Figura 17 - Track DB

Dalla dichiarazione si capisce che la DB10 contiene un array di 200 UDT1

(“TrackingPosUDT” è il nome simbolico che è stato associato all’UDT1). Se si seleziona

View Data View non verrà più visualizzata la struttura della DB, bensì i singoli dati accessibili:

Figura 18 - Data View

Questa modalità di visualizzazione è l’unica che può essere utilizzata quando si è on-line con

il controllore oppure con il simulatore; in questo caso nell’ultima colonna viene mostrato il valore

istantaneo dei dati. Per poter andare on-line è sufficiente premere il pulsante oppure

selezionare l’opzione Debug Monitor.

Con l’opzione Edit Initialize Data Block ( pulsante ), invece, è possibile forzare i

valori iniziali nelle singole variabili che costituiscono la DB. 17

L’ambiente di sviluppo STEP 7

3 – Linguaggi di programmazione S7

Ognuno dei blocchi di codice che abbiamo introdotto nel paragrafo precedente può contenere

istruzioni in diversi linguaggi di programmazione.

Il software di base di STEP 7 mette a disposizione tre linguaggi di programmazione:

• KOP o LAD (schema a contatti); è un linguaggio di programmazione grafico

che consente all’utente di seguire in modo semplice il flusso dei segnali tra le

sbarre collettrici, i contatti, gli elementi complessi e le bobine.

• FUP o FBD (schema funzionale); anche questo è un linguaggio grafico e

rappresenta la logica mediante i blocchi dell’algebra booleana. Esso consente,

inoltre, di rappresentare funzioni complesse (ad esempio funzioni matematiche)

direttamente connesse a i blocchi booleani.

• AWL o STL (lista di istruzioni); è un linguaggio di programmazione testuale

vicino al linguaggio macchina. Nella maggior parte dei casi, quindi, c’è una

corrispondenza uno ad uno tra le istruzioni AWL e le operazioni che la CPU del

controllore esegue.

Questi tre linguaggi sono, rispettivamente, la versione Siemens del linguaggio a contatti, del

diagramma a blocchi funzionali e della lista d’istruzioni specificati dallo standard IEC 61131.

AWL, KOP e FUP consentono di scrivere blocchi di codice direttamente caricabili nel

controllore, senza dover effettuare alcuna compilazione.

In STEP 7 viene messo a disposizione anche l’SCL. Questo è un linguaggio testuale messo a

disposizione come software opzionale; l’SCL ha espressioni linguistiche simili al Pascal e

corrisponde al Testo Strutturato dello standard IEC 61131.

A differenza dei linguaggi precedenti, i sorgenti SCL vanno compilati prima di poter essere

caricati nel controllore.

Solo per funzioni molto semplici, in cui si è voluta sfruttare l’immediatezza di un linguaggio

grafico, sono stati utilizzati il KOP oppure il FUP.

Qualsiasi sia il linguaggio utilizzato all’interno di un blocco di codice, è sempre possibile

richiamare, al suo interno, altri blocchi scritti in un linguaggio diverso.

Nelle pagine che seguono, presenteremo l’AWL, il KOP, il FUP e l’SCL; nella sezione

dedicata all’AWL faremo alcuni cenni sull’architettura interna delle CPU S7.

3.1 – AWL

Tra tutti i linguaggi di programmazione S7, l’AWL rappresenta quello più vicino al linguaggio

macchina MC7 delle CPU S7.

Per questa ragione il codice sviluppato in AWL risulterà ottimale sia per quanto riguarda

l’occupazione di memoria, sia per quanto riguarda il tempo di esecuzione.

Come tutti i linguaggi di tipo assemblativo, però, la leggibilità dei programmi risulta

difficoltosa, sebbene l’editor AWL consenta di inserire vari tipi di commento nel codice.

A questo riguardo, si ricordi che l’unica vera istruzione disponibile in AWL per il controllo del

flusso di programma è il salto, ed è con il salto che il programmatore deve implementare le

scelte ed i cicli. 18

L’ambiente di sviluppo STEP 7

Cenni sull’architettura interna delle CPU della serie S7

Accumulatori

L’architettura delle CPU S7 è basata su una struttura a doppio accumulatore.

I due accumulatori ACCU1 ed ACCU2 sono i due registri operando dell’ALU e consentono di

lavorare con byte, word e double word. In essi si possono caricare costanti oppure valori di

memoria, eseguire delle operazioni aritmetico/logiche e trasferirne il contenuto in un’area di

memoria. ACCU1 ACCU2

ALU

Figura 19 - ALU e Accumulatori

In fig. 20 è riportata la struttura di un accumulatore.

Figura 20 - Struttura di un accumulatore

Il meccanismo di gestione degli accumulatori è il seguente:

• un’operazione di caricamento, per esempio L (load), trasferisce il contenuto di

ACCU1 in ACCU2 e carica l’operando desiderato in ACCU1;

• un’operazione di trasferimento, per esempio T (transfer), non modifica il

contenuto degli accumulatori (ad eccezione delle istruzioni TAR1 e TAR2);

• l’operazione TAK scambia tra loro i contenuti degli accumulatori.

Registro di stato

Il registro di stato è una word di cui vengono utilizzati solo i primi 9 bit; la struttura è mostrata

in fig. 21. Figura 21 - Registro di stato delle CPU S7 19

L’ambiente di sviluppo STEP 7

L’utente può accedere ad alcuni di questi bit come operandi per le operazioni logiche.

Prima di illustrare il significato dei singoli bit della word di stato, descriviamo come, le CPU

S7, effettuano le operazioni logiche su bit.

Una catena di istruzioni logico/combinatorie in successione viene chiamata stringa logica;

ogni istruzione di una stringa interroga lo stato dell’operando e lo combina con il contenuto del

bit 1 della word di stato (risultato logico combinatorio - RLC). Il risultato dell’operazione viene

memorizzato ancora nel bit RLC.

Quando una stringa logica termina, ad esempio con un’istruzione di assegnazione, il valore il

bit RLC conterrà il risultato di tutte le istruzioni.

L’unica eccezione a questa modalità di funzionamento riguarda la prima istruzione di una

stringa logica. In questo caso lo stato dell’operando viene trasferito direttamente nell’RLC.

Il bit 0 (/ER) della word di stato viene chiamato bit di prima interrogazione e indica l’inizio di

una stringa logica; il suo funzionamento è in logica negata. È questo bit che permette di

riconoscere la prima istruzione di una stringa logica.

Se /ER vale 0 l’operando indirizzato in un’istruzione logico/combinatoria viene memorizzato

nel bit RLC, dopodicchè il valore di /ER viene impostato ad 1.

Quando /ER vale 1 un’operazione logico/combinatoria combina il proprio operando con l’RLC;

il risultato viene memorizzato nell’RLC stesso.

/ER viene rimesso a 0 alla fine di una stringa logica, cioè dopo un’istruzione di assegnazione,

oppure dopo un’istruzione di salto correlata al risultato logico della stringa, oppure con

un’espressione di annidamento.

Come abbiamo già visto il bit 1, che viene chiamato risultato logico combinatorio, memorizza

il risultato di un’operazione logica o di confronto.

In fig. 22 è mostrato il comportamento dei bit /ER ed RLC quando viene valutata

un’espressione logica. Figura 22 - /EO ed RLC 20

L’ambiente di sviluppo STEP 7

L’RLC può essere settato incodizionatamente ad 1 oppure a 0 adoperando, rispettivamente,

l’istruzione AWL SET oppure CLR.

In base al valore dell’RLC si possono eseguire o meno operazioni di salto, utilizzando le

istruzioni di salto condizionato SPB e SPBN.

Il bit 2 della word di stato, STA - bit di stato, memorizza il valore di un bit a cui viene fatto

riferimento in una determinata istruzione.

Nel caso di istruzioni logico/combinatorie che accedono alla memoria in lettura, il bit STA è

uguale al valore del bit a cui si accede.

Per le istruzioni logico/combinatorie che accedono alla memoria in scrittura, il valore di STA è

uguale al valore scritto oppure, nel caso in cui la scrittura non abbia luogo, al valore

dell’operando a cui l’istruzione si riferisce.

Il bit di stato non ha significato per le operazioni logico/combinatorie che non accedono in

memoria.

Il bit 3 viene chiamato bit OR.

Questo bit ha un significato solo nelle stringhe logiche in cui siano presenti operazioni di AND

prima di operazioni di OR. In questo caso il bit di OR indica se una funzione AND, eseguita

prima di una OR, ha fornito valore 1, anticipando così il risultato dell’operazione di OR.

Il 5° bit della word di stato è il bit di overflow (OV) e indica un errore. OV viene messo a 1

dopo che si è verificato un errore in un’operazione matematica oppure in un’operazione di

confronto in virgola mobile.

Il bit successivo è il bit di overflow con memoria (OS); questo bit viene messo a 1 assieme a

OV quando si verifica un errore.

Mentre OV viene resettato quando si effettua una nuova operazione, OS rimane ad 1 anche

dopo il verificarsi dell’errore, quindi mantiene memoria del verificarsi di un errore in una delle

operazioni precedenti.

Il comando AWL SPS (salta se OS=1) e i comandi di richiamo blocco e di fine blocco

resettano a 0 il valore di OS.

I bit 6 e 7 della word di stato vengono chiamati bit di visualizzazione A0 e A1 e forniscono

informazioni sull’esito di alcune operazioni. Per esempio, in base al valore di questi due bit si

può conoscere se il risultato di un’operazione matematica è minore, maggiore oppure uguale a

zero, oppure si può risalire al valore del bit traslato in un’operazione di shift.

L’ultimo bit della word di stato a cui è associato un significato è il bit di risultato binario (BIE).

Il bit BIE rappresenta un merker interno alla macchina, in cui viene salvato l’RLC prima di

un’operazione che ne modifichi il valore (per esempio un’espressione annidata). Dopo

l’operazione, grazie a BIE, è possibile ripristinare il valore dell’RLC e continuare la stringa logica

interrotta.

Registri indirizzo

Nei controllori della serie S7 sono presenti due registri indirizzo AR1 e AR2, che vengono

utilizzati delle operazioni di indirizzamento indiretto dei dati. 21

L’ambiente di sviluppo STEP 7

Figura 23 - Formato puntatore

In questi registri è contenuto un dato di tipo puntatore il cui formato è illustrato in fig. 23. Una

costante di tipo puntatore si specifica con il prefisso P#.

Un esempio di utilizzo dei registri AR1 e AR2 per un puntamento indiretto è l’istruzione L

EB[AR1,P#100.0], che carica in ACCU1 il byte d’ingresso il cui indirizzo si ottiene sommando

100 byte al contenuto di AR1.

Registri blocco dati

Quando si utilizzano operandi contenuti in un blocco di dati, il numero della DB a cui si

accede viene memorizzato nel registro interno DB1.

Quando si vuole accedere a più dati all’interno di una stessa DB, si può specificare solo

l’indirizzo interno al blocco utilizzando il comando AWL AUF che carica in DB1 il numero della

DB da aprire.

Esiste anche un secondo registro DB2 in cui viene memorizzato il numero della DB di istanza

alla quale si sta accedendo.

Istruzioni AWL e sorgenti

L’AWL di STEP 7 mette a disposizione un ampio set di istruzioni; abbiamo:

• operazioni logico/combinatorie su bit, su word e doppie word;

• timer e contatori;

• operazioni di caricamento e trasferimento;

• operazioni matematiche su numeri interi ed in virgola mobile;

• operazioni di confronto;

• operazioni di conversione tra tipi diversi;

• operazioni di scorrimento;

• operazioni per la manipolazione delle DB;

• operazioni di salto;

• altre operazioni per il controllo del flusso di programma (per esempio chiamata

condizionata di un FC/FB, MCR)

Tutte le istruzioni AWL possono essere suddivise in due gruppi: istruzioni senza operando ed

istruzioni a singolo operando.

L’operando può essere una costante, oppure un indirizzo in cui l’istruzione trova un valore.

L’operando, inoltre, può essere specificato sia attraverso l’indirizzo, sia attraverso il nome

simbolico. 22

L’ambiente di sviluppo STEP 7

Per poter editare il codice AWL in un blocco di programma, bisogna aprire il blocco ed

assicurarsi che il codice scritto venga visualizzato in AWL (selezionare View STL nell’editor

KOP/FUP/AWL).

STEP 7 consente di convertire il codice scritto da un linguaggio ad un altro, semplicemente

selezionando il linguaggio di visualizzazione nel menù View.

Questa conversione è sempre possibile se si vuole passare da KOP ad AWL o FUP, oppure

da FUP ad AWL o KOP.

La conversione da AWL a KOP o FUP, invece, non è sempre possibile: l’editor riesce

nell’operazione solo per segmenti di codice semplici.

Con l’editor AWL, KOP e FUP, selezionando l’opzione File Generate Source…, è possibile

generare i sorgenti dei blocchi scritti in uno di questi tre linguaggi. Bisogna notare che qualsiasi

sia il linguaggio di partenza, si ottiene sempre un sorgente AWL.

Un sorgente è un documento in formato testo che può essere salvato in un file esterno al

progetto (Edit Export Source…). È possibile, quindi, creare una libreria di funzioni da

riutilizzare in progetti diversi. Figura 24 - Esportare un sorgente

Per poter inserire un sorgente esterno all’interno di un progetto è sufficiente aprire la cartella

Sources del programma S7 e selezionare Insert External Source…. Una volta importato il

blocco sorgente questo va compilato per ottenere il blocco eseguibile, selezionando

Edit Compile in SIMATIC Manager oppure File Compile nel menù dell’editor.

3.2 – KOP e FUP

Il linguaggio a contatti (KOP) e quello a blocchi funzionali (FUP) sono i due linguaggi grafici

integrati nel software di base di STEP 7. 23

L’ambiente di sviluppo STEP 7

Nel KOP le funzioni booleane vengono rappresentate attraverso la logica a relè, mentre il

FUP mette a disposizione direttamente dei box che effettuano le operazioni logiche.

Entrambi i linguaggi permettono di realizzare anche operazioni complesse come le

operazioni matematiche, le chiamate di FC e l’utilizzo di temporizzatori e contatori.

In questo modo l’utente KOP/FUP ha a disposizione tutti gli elementi necessari per creare un

programma completo.

Solo per quanto riguarda il KOP, l’editor prevede una limitazione: ogni rung deve essere

scritto in un segmento di codice (network) diverso .

Nelle figure 25 e 26 vengono mostrati due esempi di codice KOP e FUP.

Figura 25 – Segmento di codice FUP

3.3 – SCL

L’SCL è un linguaggio testuale di alto livello per la programmazione dei sistemi di controllo

S7.

Le espressioni linguistiche e la sintassi dell’SCL sono simili a quelle del linguaggio Pascal.

Con l’SCL si possono creare OB, FC, FB, DB e UDT. 24

L’ambiente di sviluppo STEP 7

Figura 26 - Rung in linguaggio KOP

Per poter inserire in un programma un sorgente SCL, bisogna aprire la cartella Sources in

SIMATIC Manager e selezionare l’opzione Insert S7 Software 5 SCL Source.

A questo punto comparirà, nella parte destra di SIMATIC Manager, l’icona del blocco inserito;

aprendo questo blocco viene richiamato l’editor SCL.

Questo editor permette di inserire i template dei vari blocchi di programma (OB, FC, DB, ecc.)

mediante il menù Insert Block Template. Per esempio, se si inserisce la maschera per un

FC, l’editor provvede a scrivere automaticamente le intestazioni delle varie parti del blocco

(dichiarazione della variabili, blocco istruzioni), così come mostrato in fig. 27.

Per default, l’editor inserisce una funzione che restituisce un intero e prevede solo il blocco

per i parametri temporanei. Se si vogliono inserire anche i parametri di I/O o le costanti basta

selezionare rispettivamente Insert Block Template Parameter oppure Insert Block

Template Constant.

Una volta completato un blocco in SCL, questo va compilato per poter generare il blocco

eseguibile.

Nella maggior parte dei casi, quando si compila un blocco SCL, il codice eseguibile ottenuto

occuperà uno spazio maggiore di memoria rispetto ad un blocco AWL che realizza le stessa

funzione.

A volte, per codici molto complessi, questa differenza può raggiungere anche un fattore dieci.

25

L’ambiente di sviluppo STEP 7

Figura 27 - Blocco FC in SCL

Va detto, però, che, per funzioni molto complesse, anche un programmatore esperto di AWL

spesso giunge ad una soluzione poco leggibile e, quindi, di difficile interpretazione da parte di

un altro programmatore.

Quando si compila un sorgente SCL bisogna assicurarsi di aver già compilato tutti i blocchi,

sia codice che dati, richiamati al suo interno, altrimenti il compilatore darà un errore.

Il Make File può essere utilizzato per facilitare la compilazione di più blocchi SCL. Per inserire

SCL compile

questo file nella cartella Sources basta selezionare Insert S7 Software 6

control file. Figura 28 - Make File

Il Make File è un file testo in cui vengono scritti i nomi dei vari sorgenti SCL da compilare. La

successione con la quale avviene la compilazione è quella in cui vengono scritti i nomi dei

blocchi. Per evitare errori di compilazione, allora, è conveniente strutturare il Make File nel

modo seguente:

1. compilazione degli UDT;

2. compilazione delle DB che utilizzano UDT;

3. compilazione delle DB globali; 26

L’ambiente di sviluppo STEP 7

4. compilazione di FC ed FB, facendo attenzione alla successione in con cui

queste vengono compilate (se FC1 viene richiamato in FC2 va compilato prima

FC1 e poi FC2) ;

5. compilazione delle DB di istanza;

6. compilazione degli OB.

Se si desidera, si possono inserire più blocchi di programma S7 nello stesso sorgente SCL.

La sequenza con la quale i vari blocchi vanno scritti deve rispecchiare le stesse regole con le

quali avviene la compilazione dei sorgenti.

Con le istruzioni messe a disposizione dall’SCL si possono valutare in maniera agevole

espressioni aritmetiche e logiche anche molto complesse.

Le istruzioni di controllo sono quelle tipiche del Pascal, cioè la scelta (IF, THEN, ELSE e

CASE), i cicli (FOR, WHILE e REPEAT) e il salto (GOTO).

L’utente ha a disposizione anche istruzioni particolari, tipiche dei linguaggi per i controllori, per

la gestione dei temporizzatori e dei contatori.

In maniera analoga a quanto visto per i sorgenti AWL, è possibile esportare ed importare da

file esterni anche i sorgenti SCL.

3.4 – Indirizzi e nomi simbolici

Con STEP 7 è possibile assegnare dei nomi simbolici ai vari blocchi di programma ed agli

operandi in memoria; in questo modo si aumenta notevolmente la leggibilità del codice prodotto

e viene facilitato il debug.

All’interno di un blocco S7 è possibile riferirsi ad un altro blocco o ad un operando sia con

l’indirizzo assoluto, sia con il simbolo.

Con l’editor AWL, KOP e FUP, l’utente può scegliere se visualizzare gli indirizzi assoluti

oppure i simboli, selezionando l’opzione View Display with Symbolic Rapresentation o

agendo sul pulsante .

In un sorgente SCL, invece, possono essere visualizzati contemporaneamente sia

gli indirizzi che i simboli, così come vengono digitati dal programmatore.

Per poter fare l’assegnazione indirizzo simbolo, bisogna aprire l’oggetto Symbols nella

cartella Programma S7: Figura 29 – Symbols

SIMATIC Manager richiama l’editor dei simboli, un’applicazione simile ad un foglio di calcolo:

nella prima colonna bisogna inserire il simbolo, nella seconda l’indirizzo assoluto al quale il

27

L’ambiente di sviluppo STEP 7

simbolo si riferisce, nella terza il tipo dell’operando o del blocco e nella quarta colonna si può

inserire un commento. Figura 30 - Symbol Editor

STEP 7 permette anche di editare i simboli utilizzando Excel, salvando il file in formato .dif;

per poter importare il file con l’editor dei simboli basta selezionare l’opzione Symbol

Table Import…. In maniera analoga, con Symbol Table Export…, è possibile salvare in

un file esterno al progetto, i simboli utilizzati.

Anche con l’editor AWL, KOP e FUP si può assegnare un simbolo ad un indirizzo assoluto,

selezionandolo e utilizzando l’opzione Edit Symbols….

Vediamo, ora, cosa succede in un programma S7 quando si cambiano alcuni nomi simbolici.

28

L’ambiente di sviluppo STEP 7

Supponiamo di effettuare i seguenti cambiamenti:

Prima Dopo

Nome Simbolico Indirizzo Assoluto Nome Simbolico Indirizzo Assoluto

B23 E0.0 B45 E0.0

B45 E0.1 B23 E0.1

Se in un segmento di codice AWL, per esempio, è presente l’istruzione:

U “B23”

quando si effettua il cambio del nome simbolico possono succedere due cose:

1. l’editor assegna una priorità maggiore all’indirizzo assoluto, quindi nel codice

troveremo l’istruzione U “B45”, perché si farà sempre riferimento all’ingresso

E0.0.

2. L’editor assegna una priorità maggiore al nome simbolico, quindi nel codice

l’istruzione rimarrà U “B23”, ma in questo caso viene fatto riferimento

all’ingresso con indirizzo E0.1.

Figura 31 – Blocks Object Properties

È possibile scegliere se dare una priorità maggiore ai nomi simbolici oppure agli indirizzi

assoluti selezionando la cartella Blocks e l’opzione Edit Object Properties… (vedi fig. 31).

3.5 – Il simulatore di controllori S7-PLCSIM e le tabelle di variabili (VAT)

Il simulatore di PLC permette di testare i programmi scritti anche quando non è disponibile un

controllore reale da collegare al PC.

È possibile avviare S7-PLCSIM dalla cartella Simatic STEP 7 del menù avvio, oppure

premendo il pulsante in SIMATIC Manager. 29

L’ambiente di sviluppo STEP 7

Una volta avviata l’applicazione si ha a disposizione un vero e proprio PLC Siemens:

Figura 32 – S7-PLCSIM

Per poter testare il codice, quindi, questo deve essere prima caricato nel controllore

selezionando la cartella Blocks e l’opzione PLC Download oppure il tasto .

Una volta mandato in run il PLC è possibile visualizzare i blocchi di programma S7 in

modalità on-line.

È in questo modalità che è possibile vedere i valori attuali dei parametri all’interno delle DB.

Per i blocchi di codice, la modalità on-line permette di visualizzare il valore contenuto nei

registri interni del processore in corrispondenza di ogni istruzione eseguita:

Figura 33 - FC on-line

RLO è il bit RLC del registro di stato, mentre STANDARD è ACCU1. 30


PAGINE

33

PESO

1.77 MB

AUTORE

Sara F

PUBBLICATO

+1 anno fa


DETTAGLI
Corso di laurea: Corso di laurea in ingegneria informatica
SSD:
A.A.: 2013-2014

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Sara F di informazioni apprese con la frequenza delle lezioni di Tecnologie Sistemi Automazione e Controllo e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Napoli Federico II - Unina o del prof Pironti Alfredo.

Acquista con carta o conto PayPal

Scarica il file tutte le volte che vuoi

Paga con un conto PayPal per usufruire della garanzia Soddisfatto o rimborsato

Recensioni
Ti è piaciuto questo appunto? Valutalo!

Altri appunti di Tecnologie sistemi automazione e controllo

Tecnologie Sistemi Automazione e Controllo – PLC
Dispensa
Sensori e Trasduttori
Appunto
Sistemi di controllo industriale
Appunto
Tecnologie Sistemi Automazione e Controllo – PLC
Dispensa