19
Gestione Progetto robertomana.it TIA PORTAL Programmazione pag 1 TIA Portal Programmazione Rev Digitale 1.0 del 01/09/2019 Introduzione ………………………………………………………………………………..…….…….. 2 Il blocco OB1 ………………………………………………………………………………..….…….. 2 I tipi di dati ………………………………………………………………………………....…….…….. 3 Le aree di memoria per la memorizzazione dei dati …………………………………………………… 3 Valori immediati ……………..…………………………………………………………....…….…….. 4 Ingressi e Uscite ……………..…………………………………………………………....…….…….. 4 Inserimento di nuovi blocchi all’interno di un progetto ……………………………………………… 4 OB ……………..…………………………………….…………………………………....…….…….. 5 DB ……………..…………………………………….…………………………………....…….…….. 6 FC ……………..…………………………………….…………………………………....…….…….. 9 FB ……………..…………………………………….…………………………………....…….…….. 11 Le principali istruzioni del linguaggio KOP ……………..…………………….…………………….. 13 VAT ……………..……………….………………….…………………………………....…….…….. 18 Diagnostica di un Fault ……………..…………………………………………..…………………….. 19

TIA Portal Programmazione - Roberto Manarobertomana.altervista.org/.../TIA-Portal-programmazione.pdf · 2019-08-03 · Gestione Progetto robertomana.it TIA PORTAL Programmazione pag

  • Upload
    others

  • View
    36

  • Download
    5

Embed Size (px)

Citation preview

Page 1: TIA Portal Programmazione - Roberto Manarobertomana.altervista.org/.../TIA-Portal-programmazione.pdf · 2019-08-03 · Gestione Progetto robertomana.it TIA PORTAL Programmazione pag

Gestione Progetto robertomana.it

TIA PORTAL Programmazione

pag 1

TIA Portal – Programmazione

Rev Digitale 1.0 del 01/09/2019

Introduzione ………………………………………………………………………………..…….…….. 2

Il blocco OB1 ………………………………………………………………………………..….…….. 2

I tipi di dati ………………………………………………………………………………....…….…….. 3

Le aree di memoria per la memorizzazione dei dati …………………………………………………… 3

Valori immediati ……………..…………………………………………………………....…….…….. 4

Ingressi e Uscite ……………..…………………………………………………………....…….…….. 4

Inserimento di nuovi blocchi all’interno di un progetto ……………………………………………… 4

OB ……………..…………………………………….…………………………………....…….…….. 5

DB ……………..…………………………………….…………………………………....…….…….. 6

FC ……………..…………………………………….…………………………………....…….…….. 9

FB ……………..…………………………………….…………………………………....…….…….. 11

Le principali istruzioni del linguaggio KOP ……………..…………………….…………………….. 13

VAT ……………..……………….………………….…………………………………....…….…….. 18

Diagnostica di un Fault ……………..…………………………………………..…………………….. 19

Page 2: TIA Portal Programmazione - Roberto Manarobertomana.altervista.org/.../TIA-Portal-programmazione.pdf · 2019-08-03 · Gestione Progetto robertomana.it TIA PORTAL Programmazione pag

Gestione Progetto robertomana.it

TIA PORTAL Programmazione

pag 2

Introduzione

Il programma di un PLC è costituito da

codice, che può essere scritto in forma testuale in uno pseudo assembler oppure in linguaggio ladder

variabili, che possono essere memorizzate all’interno di due diverse aree di memoria: i merker oppure le DB

Il codice viene compilato mediante il comando “compila” in un file eseguibili scaricabile su un dispositivo compatibile. Il codice eseguibile non è visibile al programmatore. All’interno del PLC il codice salvato all’interno della memory card che è una memoria flash,

dunque persistente, per cui il programma non viene mai perso.

La memory card, in caso di malfunzionamento, può essere riformattata tramite apposito comando presente sul tastierino del PLC (Format Card)

Nei PLC 200 l’intero codice veniva tradotto in awl (pseudo assembler) per cui, se si scriveva direttamente in awl, l’esecuzione era più veloce perchè non serviva la traduzione in awl. Nel nuovi PLC 1200 e 1500 questo non è più vero in quanto è il compilatore che si occupa di ottimizzare il codice, in qualunque modo esso sia scritto. Le variabili viceversa NON vengono salvate all’interno della memory card perché, a differenza del programma il cui accesso avviene in sola lettura, le variabili vengono riscritte molto frequentemente e questo porterebbe in brevissimo tempo all’usura della memoria flash medesima che supporta un numero massimo di scritture. Le variabili (merker e DB) vengono salvate in RAM oppure, nel caso di variabili ritentive, all’interno di una memoria ritentiva mantenuta tramite una batteria tampone oppure tramite un super capacitor (cioè un condensatore).

La variabili vengono scaricate sul PLC insieme al programma, per cui possono essere uplodati / down lodati da qualsiasi postazione.

In TIA Portal l’intero programma deve essere indirizzato simbolicamente, cioè senza utilizzare gli indirizzi delle variabili ma assegnando a ciascuna variabile un nome simbolico. E’ raccomandato definire sempre le variabili prima del loro utilizzo Gli indirizzi fisici sono preceduti da un % davanti che fa capire al compilatore che si tratta di un indirizzo fisico e non di una variabile. Per modificare il nome del progetto è sufficiente modificare il nome del file con estensione .ap15

Il blocco OB1

Per default tutti i plc simatic richiamano a ciclo libero un blocco organizzativo specifico denominato OB1 (Organization Block 1). Il tempo di richiamo dipende dal numero di istruzioni inserite all'interno dell'OB1 medesimo. Il tempo di ciclo è molto importante e viene ottimizzato dal compilatore. Un nuovo progetto contiene soltanto il blocco OB1. Per aggiungere nuovi blocchi al programma utilizzare Blocchi di Programma/ Inserisci Nuovo Blocco.

Page 3: TIA Portal Programmazione - Roberto Manarobertomana.altervista.org/.../TIA-Portal-programmazione.pdf · 2019-08-03 · Gestione Progetto robertomana.it TIA PORTAL Programmazione pag

Gestione Progetto robertomana.it

TIA PORTAL Programmazione

pag 3

Tipi di Dati

Le variabili di un PLC possono essere definite come :

BIT

BYTE ( 0 – 255)

WORD (2 bytes) ( 0 – 65000 )

INT (word con segno, tra ±32000)

DWORD (4 bytes)

Timer T

Counter Z

Il tipo INT è sostanzialmente equivalente di WORD, con l’unica differenza che

WORD è unsigned (0 / 65.000)

INT è signed (± 32.000)

Bisogna fare attenzione al fatto che alcuni blocchi (ad esempio gli Operatori di Confronto e gli Operatori in Virgola Fissa) accettano in ingresso soltanto INT e non WORD. In TIA Portal sono disponibili anche gli Array:

Le Aree di Memoria per la memorizzazione dei dati

Le variabili possono essere memorizzate all’interno di 2 diverse aree di memoria :

merker, che è un’ area di memoria di ampiezza fissa già assegnata (fino ad un valor massimo dipendente dalle dimensioni della memoria del PLC). I merker hanno sempre visibilità globale

DB (Data Block) Aree di dimensione variabile definita dall’utente. Le DB devono prima essere create dal programmatore e definite per la lunghezza necessaria. Possono avere visibilità globale oppure locale ad una singola FB

Tutte le aree di memoria, nei PLC Siemens, sono sempre organizzate in bytes

numerati in modo crescente a partire dalla posizione 0, cioè l’offset è SEMPRE espresso in BYTE rispetto al Byte 0.

Page 4: TIA Portal Programmazione - Roberto Manarobertomana.altervista.org/.../TIA-Portal-programmazione.pdf · 2019-08-03 · Gestione Progetto robertomana.it TIA PORTAL Programmazione pag

Gestione Progetto robertomana.it

TIA PORTAL Programmazione

pag 4

Sintassi di Accesso ai Merker

M4.0 byte 4 bit 0 MB4 intero byte 4 MW4 bytes 4 e 5 MD4 bytes 4 5 6 e 7

Per accedere ad un merker come INT occorre assegnare un simbolo al merker. Nel momento in cui si assegna il simbolo al merker, Step 7 chiede all’utente di specificare un tipo per quel merker. Specificando INT il gioco è fatto

Sintassi di Accesso alle DB

DB12.DBX0.3 primo byte della DB12, bit n. 3 DB12.DBB0 intero primo byte della DB12 DB12.DBW0 prima word della DB12 (bytes 0 e 1) DB12.DBD0 prima double word della DB12 (bytes 0 1 2 e 3)

Valori immediati

I valori immediati possono essere utilizzati :

Come valori iniziali in fase di configurazione della DB

Come valori diretti nelle istruzioni come MOVE o COMPARE

I valori immediati devono essere scritti in modo diverso a seconda del tipo di dato:

BYTE B#16#0A Il 16 indica che il valore è espresso in formato esadecimale WORD W#16#CC0A Il 16 indica che il valore è espresso in formato esadecimale DWORD DW#16#0 Il 16 indica che il valore è espresso in formato esadecimale

INT 0 Normale numero decimale DINT L#0 Long Int

Per i timer si usano valori nel seguente formato: S5T#5S ( 5 sec ). In TIA Portal si utilizza solo più T# (non c’è più S5 davanti) Il valore S5T#10MS significa 10 msec (intervallo minimo di conteggio).

Per i counter si usano valori nel seguente formato C#5 ( conta fino a 5)

Ingressi e Uscite

Configurazione Dispositivi / Selezionare il modulo DI/DO desiderato / Proprietà / Variabili IO

Consente di visualizzare l’elenco degli Ingressi oppure delle uscite e di assegnare a ciascun elemento un nome simbolico (ad esempio Tag_1).

I = ingressi da I0.0 fino a I3.7

Q = uscite da Q0.0 fino a Q3.7

Come per tutte le aree di memoria, anche l’indirizzamento di ingressi e uscite è riferito al byte (partendo da 0). Cioè l’offset è SEMPRE espresso in BYTE rispetto al Byte 0 I0.5 significa byte 0, quinto bit (cioè il sesto ingresso) I3.7 significa byte 3, settimo bit (cioè il 32° ingresso)

Page 5: TIA Portal Programmazione - Roberto Manarobertomana.altervista.org/.../TIA-Portal-programmazione.pdf · 2019-08-03 · Gestione Progetto robertomana.it TIA PORTAL Programmazione pag

Gestione Progetto robertomana.it

TIA PORTAL Programmazione

pag 5

Inserimento di nuovi Blocchi all’interno di un progetto

Blocchi di Programma/ Inserisci Nuovo Blocco.

Blocco Organizzativo OB (organization block : funzioni di sistema)

Blocco Funzionale FB (function block – funzioni utente parametrizzate)

Funzione FC (funzioni utente prive di parametri)

Blocco Dati DB (blocchi dati)

Tipo di Dati UDT Si tratta sempre di files dati in cui però è possibile definire delle strutture, utilizzabili ad esempio per creare un protocollo di comunicazione personalizzato con un PC.

Tabella delle Variabili VAT Tabelle che consentono di monitorare Run Time ed eventualmente forzare. E’ possibile anche monitorare si Ingressi che uscite. NON è possibile forzare gli ingressi.

OB

Blocchi Organizzativi di sistema già scritti che effettuano operazioni particolari. OB1 rappresenta il Programma Principale automaticamente richiamato dal SO

OB100 - startup viene eseguita una sola volta ad ogni riavvio del PLC

OB30 - OB38 cyclic interrupt

Sono OB richiamate ciclicamente a intervalli regolari sulla base di un orologio hw. Con queste OB si ha la garanzia che il codice venga eseguito esattamente nel tempo impostato. Il tempo può essere impostato liberamente nella finestra di destra al momento della creazione In questi OB si programmano istruzioni che hanno bisogno di essere eseguite ad intervalli regolari, non influenzati dai tempi di scansione.

Allo scadere del tempo impostato, viene interrotta l'esecuzione di OB1, viene avviato l'OB a tempo e, alla fine dell'esecuzione delle istruzioni contenute nell'OB a tempo, si torna all'esecuzione del programma normale, dal punto in cui era stato interrotto. Generalmente si cerca di programmare in questi OB il minimo indispensabile.

Su cpu di livello inferiore, è disponibile solo OB35 che, di default, è configurato per l'avvio ciclico ogni 100ms. Nella configurazione hardware della cpu si può modificare questo parametro fino ad un minimo di 10 msec. La configurazione può essere fatta dalle Proprietà della CPU.

Se si imposta un tempo troppo basso, che non si riesce a rispettare, viene avviato l'OB82. Se l'OB82 non esiste, la cpu va in stop.

Page 6: TIA Portal Programmazione - Roberto Manarobertomana.altervista.org/.../TIA-Portal-programmazione.pdf · 2019-08-03 · Gestione Progetto robertomana.it TIA PORTAL Programmazione pag

Gestione Progetto robertomana.it

TIA PORTAL Programmazione

pag 6

OB40 – OB48 hardware interrupt Richiamate in corrispondenza di un evento hardware. Nei PLC 300 se l'OB non c'era la cpu andava in stop

OB 80 time error interrupt

watch dog Richiamata quando viene superato un tempo max di esecuzione liberamente impostato. Va bene anche vuota, purchè esista. Nei PLC 300 se l'OB80 non esisteva, in caso di superamento del tempo max, la cpu andava in stop.

DB

Ogni DB è come se fosse una struttura dati. Può ospitare al suo interno dati di tipo differente Le DB possono essere dichiarate come:

DB globali

DB di istanza di una specifica FB (con una struttura dati predefinita)

Le DB globali sono visibili a tutti. Contrariamente alle apparenze, anche le DB di istanza sono globali, cioè sono sempre accessibili a tutti i blocchi funzionali presenti all’interno del programma.

La differenza sta nel fatto che le DB di istanza hanno una struttura rigida, definita dalla FB alla quale sono associate, struttura che non può in nessun modo essere modificata. Editing delle DB

Alla DB si può associare un SIMBOLO ed una DESCRIZIONE.

Ogni variabile interna alla DB a sua volta deve avere un nome un tipo ed un valore iniziale che però è un valore offline, che non ha nessunissima importanza.

All’interno di una DB è possibile definire dati di tipo diverso, anche non omogenei fra loro, nel senso che i primi 8 byte possono essere gestiti come bit, ed i successivi come word.

Le variabili all’interno della DB devono essere dichiarate in modo continuativo, nel senso che se voglio utilizzare il byte 20, devo prima definire con un apposito nome tutte le variabili precedenti.

Per vedere il valore attuale della variabile della DB, occorre aprire la DB online ed attivare la modalità test (occhialini). Viene mostrata una colonna aggiuntiva che visualizza il valore corrente di tutte le variabili della DB.

Con doppio click è possibile anche modificare il valore della variabile. Accesso alle variabili della DB tramite indirizzo

Le DB per default sono ottimizzate, cioè di default non è possibile accedere alle variabili di una tramite indirizzo ma solo ed esclusivamente tramite il simbolico. Spesso però, soprattutto quando si deve comunicare con sistemi di terze parti come hmi, c#, etc, occorre abilitare l’indirizzamento assoluto sulle variabili della db per il fatto che le applicazioni esterne NON comunicano attraverso il simbolico, ma solo attraverso l’indirizzamento assoluto.

Page 7: TIA Portal Programmazione - Roberto Manarobertomana.altervista.org/.../TIA-Portal-programmazione.pdf · 2019-08-03 · Gestione Progetto robertomana.it TIA PORTAL Programmazione pag

Gestione Progetto robertomana.it

TIA PORTAL Programmazione

pag 7

Per poter utilizzare gli indirizzi delle variabili occorre : selezionare la DB / / tasto destro / Proprietà / Attributi (seconda colonna) / Deselezionare il check “Accesso ottimizzato al blocco”. Quindi ricompilare il progetto. In questo modo compare una colonna aggiuntiva denominata offset in cui viene visualizzato l’indirizzamento assoluto di ogni variabile contenuta all’interno della DB. La compilazione (fattibile anche con tasto destro / Compila) deve essere ripetuta dopo ogni modifica. Visibilità della DB da un OPC-UA client

Nella stessa finestra precedente attenzione anche alla spunta “DB accessibile da OPC UA” senza la quale nessuna variabile della DB sarà visibile da un eventuale client OPC-UA.

Per consentire la comunicazione tramite le DLL microsoft occorre ancora selezionare la CPU / Protezione e Security / Livello di Accesso :

Selezionare la prima voce Full Access

Connection Mecanism: permit PUT/GET

Page 8: TIA Portal Programmazione - Roberto Manarobertomana.altervista.org/.../TIA-Portal-programmazione.pdf · 2019-08-03 · Gestione Progetto robertomana.it TIA PORTAL Programmazione pag

Gestione Progetto robertomana.it

TIA PORTAL Programmazione

pag 8

Opzioni aggiuntive disponibili sulle singole variabili

A ritenzione Le variabili marcate come ritenzione, quando il PLC si spegne, vengono salvate all’interno di una area di memoria ritentiva in modo che alla successiva riaccensione il valore sia mantenuto. Altrimenti ad ogni riaccensione riprende il valore di avvio che può essere impostato manualmente dal programmatore. Utile ad esempio nel caso di un contatore. Accessibile da HMI/OPC Variabile accessibile in lettura da un OPC-UA client Scrivibile da HMI/OPC Variabile accessibile in scrittura da un OPC-UA client Visibile in HMI Engineering ?? Valore di impostazione Valore assunto dalle variabili non ritentive in fase di riavvio del PLC

Page 9: TIA Portal Programmazione - Roberto Manarobertomana.altervista.org/.../TIA-Portal-programmazione.pdf · 2019-08-03 · Gestione Progetto robertomana.it TIA PORTAL Programmazione pag

Gestione Progetto robertomana.it

TIA PORTAL Programmazione

pag 9

FC

FunCtion. E’ il blocco più semplice. E’ una subroutine richiamabile dal programma principale (oppure da un’altra funzione) che :

Può ricevere uno o più parametri dal chiamante

Può restituire uno o più risultati al chiamante, impostati durante l’esecuzione della FC medesima

Può accedere alle variabili globali definite all’interno di una DB globale o di un merker

non ha variabili interne, cioè non ha blocchi dati di istanza, non ha memoria. Ogni volta reinizializza tutte le variabili.

Il passaggio di parametri ad una FC

Per ogni FC si possono definire dei parametri:

in Ingresso (cioè che compariranno sul lato sinistro del blocchetto), a cui il chiamante potrà passare dei valori

in Uscita (cioè che compariranno sul lato destro del blocchetto) dai quali il chiamante potrà leggere i risultati di eventuali elaborazioni eseguite dalla funzione

in Ingresso_Uscita (cioè che compariranno sia sul lato sinistro del blocchetto sia sul lato destro). E’ l’equivalente del passaggio di un parametro per riferimento, in cui il chiamato può elaborare il dato ricevuto e restituirlo come parametro al chiamante

di tipo Temp, cioè sostanzialmente variabili locali alla funzione Tutti questi parametri vengono salvati in un’area di memoria di sistema non accessibile al programmatore.

Page 10: TIA Portal Programmazione - Roberto Manarobertomana.altervista.org/.../TIA-Portal-programmazione.pdf · 2019-08-03 · Gestione Progetto robertomana.it TIA PORTAL Programmazione pag

Gestione Progetto robertomana.it

TIA PORTAL Programmazione

pag 10

Esempio

FC con due ingressi(emergenza e relèTermico) e due uscite (consensoOk e allarme) settate dalle istruzioni interne alla FC medesima :

Notare come tutti i parametri sia di ingresso (emergenza e releTermico) che di uscita (consensoOk e allarme) vengano visualizzati con davanti un cancelletto che indica appunto che si tratta di una variabile locale. Inoltre non hanno l’icona viola Richiamo di una FC

Per richiamare una FC è sufficiente trascinarla all’interno di un segmento vuoto

Page 11: TIA Portal Programmazione - Roberto Manarobertomana.altervista.org/.../TIA-Portal-programmazione.pdf · 2019-08-03 · Gestione Progetto robertomana.it TIA PORTAL Programmazione pag

Gestione Progetto robertomana.it

TIA PORTAL Programmazione

pag 11

FB

Functional Block. Blocchi funzionali. FB è una FC con memoria. Cioè gestisce delle variabili statiche interne ad una apposita DB in cui si salva lo stato della FB stessa. Questa DB viene passata come parametro aggiuntivo al momento della chiamata. L’aspetto interessante è che chiamate differenti possono passare alla FB una DB differente, facendo il modo che la FB operi su DB diverse a secondo dei contesti.

In altre parole la FB ha un suo blocco dati di istanza, che serve solo per quella singola istanza. Invece di usare 2 o 3 FC identiche che agiscono su dati diversi, si può fare una unica FB a cui vengono passati dei dati differenti. In figura è riportata la FC precedente trasformata in una FB in cui emergenza e releTermico non vengono passati come parametro ma vengono lette come variabili statiche dalla DB di istanza (denominata sicurezze_zona1) che verrà passata in fase di chiamata

Richiamo di una FB

La chiamata assumerà ora il seguente aspetto:

Page 12: TIA Portal Programmazione - Roberto Manarobertomana.altervista.org/.../TIA-Portal-programmazione.pdf · 2019-08-03 · Gestione Progetto robertomana.it TIA PORTAL Programmazione pag

Gestione Progetto robertomana.it

TIA PORTAL Programmazione

pag 12

emergenza e releTermico non vengono più passati come parametro ma verranno letti dalla FB all’interno della DB11 denominata “sicurezze_zona 1”. Qualcuno ovviamente dovrà andare a settare questi valori all’interno della DB11. La DB di istanza (DB11), viene creata automaticamente da TIA Portal al momento della scrittura della riga di richiamo della FB2 ed avrà la stessa struttura della FB, struttura che NON può essere in alcun modo modificata:

cioè contiene

le variabili emergenza e releTermico le quali, mentre prima erano variabili di input, ora sono diventate variabili statiche interne alla DB11

gli eventuali parametri di ingresso e gli eventuali parametri di uscita che vengono anch’essi salvati all’interno della DB di stato corrente e dunque, a differenza delle FC, - mantengono il valore tra una chiamata e l’altra - risultano accessibili dall’esterno anche dopo l’esecuzione della FB stessa (accedendo come DB11.nomeDellaVariabile).

Un’ultima differenza tra le FB e le FC è che quando si richiama una FC occorre necessariamente passare tutti i parametri richiesti, mentre questo non è obbligatorio nel caso delle FB, in quanto il valore del parametro di ingesso può essere inizializzato all’interno della FB medesima, senza obbligare il chiamante a passare un valore.

Page 13: TIA Portal Programmazione - Roberto Manarobertomana.altervista.org/.../TIA-Portal-programmazione.pdf · 2019-08-03 · Gestione Progetto robertomana.it TIA PORTAL Programmazione pag

Gestione Progetto robertomana.it

TIA PORTAL Programmazione

pag 13

I linguaggi di programmazione

AWL vecchio linguaggio pseudo-assembler

KOP (ladder)

SCL (Structured Control Language) è un Linguaggio testuale strutturato in cui sono disponibili le tipiche istruzioni informatiche: IF; FOR, WHILE, DO WHILE, SWITCH. Ottimo per elaborazioni più complesse come cicli, calcoli matematici, elaborazione di stringhe.

Quando si crea una nuova FC è possibile scegliere il linguaggio da utilizzare,. Anche su una FC esistente è possibile eseguire tasto destro / commuta linguaggio di programmazione /SCL

Le principali istruzioni del linguaggio KOP Bobina ( )

Viene portata ad 1 quando le condizioni di ingresso sono vere e ritorna a 0 quando le condizioni ritornano ad essere false. Può essere richiamata in un unico punto del programma. Se fosse richiamata in più punti, l’ultimo richiamo maschererebbe i precedenti, che dunque non avrebbero più nessun effetto.

Le istruzioni SET (S) e RESET (R)

SET Consente di attivare una bobina autoritentiva che rimane attiva anche quando le condizioni di ingresso ritornano ad essere false.

Detto anche Latch

RESET Consente di spegnere una bobina autoritentiva

Detto anche Unlatch

Timer TON e TOF

TON Timer On Delay. Nel momento in cui le condizioni di ingresso diventano vere inizia il conteggio. Se le condizioni rimangono vere per tutto il tempo di conteggio, al termine del conteggio viene generato il DONE, che rimane ad uno fino a che le condizioni di ingresso rimangono vere. Se le condizioni di ingresso diventano false durante il conteggio, il tempo viene riazzerato ed il DONE non viene generato In pratica genera un Done con un certo ritardo rispetto al verificarsi delle condizioni TONR è un temporizzatore con memoria (ton ritentivo). Se le condizioni di ingresso diventano false il timer NON si resetta e, quando le condizioni ritorneranno vere, il timer riprenderà il conteggio dal valore a cui era arrivato. TOF Timer Off Delay genera immediatamente il DONE quando le condizioni di ingresso vanno a 1. Quando le condizioni di ingresso diventano false, mantiene l’uscita attiva per il tempo indicato e poi torna a 0. Es: Dopo che il motore si è spento la ventola continua a girare per 20 sec

Page 14: TIA Portal Programmazione - Roberto Manarobertomana.altervista.org/.../TIA-Portal-programmazione.pdf · 2019-08-03 · Gestione Progetto robertomana.it TIA PORTAL Programmazione pag

Gestione Progetto robertomana.it

TIA PORTAL Programmazione

pag 14

TP Timer Pulse nel momento in cui le condizioni di ingresso diventano vere da istantaneamente l’impulso di uscita che mantiene attivo per il tempo stabilito Tutti questi temporizzatori sono dei veri e propri oggetti il cui nome (es timer1) non va più definito nella tabella dei simboli ma, al momento della definizione, gli viene automaticamente assegnata una intera DB (la prima libera) completamente riservata per memorizzare le informazioni del temporizzatore stesso. Questa DB funge in pratica da blocco dati di istanza per ogni istanza di un qualsiasi temporizzatore. La DB viene inserita all’interno dei Blocchi di sistema Tutti i timer presentano i seguenti 4 campi:

IN condizioni di ingresso per l’avvio del timer PT tempo di conteggio Q tipico DONE attivato al termine del conteggio ET valore istantaneo del conteggio All’interno della sottocartella Legacy sono ancora disponibili i vecchi timer s5Time (SE, SS, etc) che erano dei timer hardware, con un numero max di timer utilizzabili pari a 256 ed un tempo massimo di conteggio pari a 299 minuti I TON / TOF etc possono invece essere utilizzati in numero illimitato e contano sia in positivo che in negativo fino a 24 giorni Funzionamento del timer TON

( equivalente al vecchio SE):

quando l’ingresso IN va a 1 comincia a contare il tempo indicato all’interno di PT e si resetta se IN ritorna a 0.

PT è una variabile di tipo TIME che può essere memorizzata all’interno di un merker o di una DB (es DB_parametri.myTimerValue) oppure può anche essere scritta in modo diretto in formato T#1s500ms

Nel momento in cui termina il conteggio attiva l’uscita Q (done) che rimane attiva fino a quando IN non ritorna a 0.

Il campo ET restituisce una variabile sempre di tipo TIME contenente il valore attuale di conteggio

Page 15: TIA Portal Programmazione - Roberto Manarobertomana.altervista.org/.../TIA-Portal-programmazione.pdf · 2019-08-03 · Gestione Progetto robertomana.it TIA PORTAL Programmazione pag

Gestione Progetto robertomana.it

TIA PORTAL Programmazione

pag 15

Timer di sistema

Dalla finestra Configurazione Dispositivi / Generale / Merker di Sistema e di Clock È possibile definire un merker (ad esempio merker 100) come merker di clock. Gli 8 bit del merker produrranno ognuno una onda quadra 0 / 1 con la frequenza indicata:

bit 0 10 Hz 100 ms (50 ms spento, 50 ms acceso) bit 1 5 Hz 200 ms bit 2 2,5 Hz 400 ms bit 3 2 Hz 500ms bit 4 1,25 Hz 800ms bit 5 1 Hz 1 sec bit 6 0,625 Hz 1,6 s bit 7 0,5 Hz 2 s

L’istruzione MOVE

Consente di copiare un byte (o word o double word o float) da una certa posizione di

memoria ad un’altra. E’ esattamente analoga alla move dei linguaggi assembly

Operatori Aritmetici

somma, sottrazione, moltiplicazione, divisione, confronto. Questi comandi NON lavorano soltanto sul fronte, nel senso che l’azione viene eseguita ad ogni scansione in cui la condizione antecedente risulta vera. Per cui se vuole eseguire l’azione UNA VOLTA SOLA occorre necessariamente creare un fronte.

I Contatori

Incrementano di 1 il conteggio ogni volta che la condizione a monte è vera. Raggiunto un certo valore attivano un bit di “Done”. Devono essere riazzerati manualmente.

Page 16: TIA Portal Programmazione - Roberto Manarobertomana.altervista.org/.../TIA-Portal-programmazione.pdf · 2019-08-03 · Gestione Progetto robertomana.it TIA PORTAL Programmazione pag

Gestione Progetto robertomana.it

TIA PORTAL Programmazione

pag 16

L’istruzione ONE SHOT

Talvolta in un programma risulta necessario creare di fronti di salita, cioè fare in modo che l’uscita venga attivata per una singola scansione nel momento in cui le condizioni di ingresso diventano vere e poi ritorni immediatamente a zero (ad esempio nel momento in cui si deve incrementare di 1 una variabile intera oppure un counter) A tale fine sono disponibili le istruzioni |P| (fronte di salita) e |N| (fronte di discesa) L’istruzione |P| deve essere applicata ad una specifica variabile di tipo bit e chiude il contatto per una singola scansione nel momento in cui il valore della variabile passa da 0 a 1

L’istruzione |N| deve essere applicata ad una specifica variabile di tipo bit e chiude il contatto per una singola scansione nel momento in cui il valore della variabile passa da 1 a 0 Entrambe queste istruzioni hanno bisogno di un bit di appoggio (nell’esempio Tag_M) in cui in pratica salvano il valore del bit d controllare. Ad ogni scansione confrontano il valore corrente del bit con il valore salvato nella variabile di appoggio, riuscendo in questo modo ad individuare i fronti.

NB: Ogni variabile di appoggio dei one shot può essere utilizzata UNA SOLA VOLTA all’interno del programma Nota Sempre riguardo al one shot sono anche disponibili due istruzioni di uscita (P) e (N) le quali sono sostanzialmente delle semplici bobine che vengono chiuse per una singola scansione nel momento in cui tutte le condizioni antecedenti diventano vere.

Vanno bene nel caso in cui un segnale digitale debba essere attivato per una singola scansione.

Come primo parametro (sopra) si mette l’uscita digitale da controllare

Come secondo parametro (sotto) si mette un bit di appoggio utilizzato per salvare lo stato complessivo delle condizioni antecedenti

Page 17: TIA Portal Programmazione - Roberto Manarobertomana.altervista.org/.../TIA-Portal-programmazione.pdf · 2019-08-03 · Gestione Progetto robertomana.it TIA PORTAL Programmazione pag

Gestione Progetto robertomana.it

TIA PORTAL Programmazione

pag 17

L’istruzione MOV_BLK

L’istruzione MOV_BLK consente di copiare blocchi di dati. E’ utilizzabile solo ed esclusivamente su singole variabili di tipo Array.

Page 18: TIA Portal Programmazione - Roberto Manarobertomana.altervista.org/.../TIA-Portal-programmazione.pdf · 2019-08-03 · Gestione Progetto robertomana.it TIA PORTAL Programmazione pag

Gestione Progetto robertomana.it

TIA PORTAL Programmazione

pag 18

VAT

La VAT è una tabella che contente di monitorare qualsiasi variabile del PLC. Consente di monitorate :

Ingressi Uscite Merker Qualsiasi variabile di qualsiasi DB

Notare che la VAT NON viene inviata al PLC ma rimane residente sul PC con lo scopo di monitorare le variabili del PLC. Per creare una VAT andare su Tabelle di controllo e di forzamento / Aggiungi nuova tabella di controllo

Molto comodo il 5° pulsantino : nascondi tutte le colonne di comando che danno solo fastidio

Penultimo pulsantino: controlla tutto. La finestra va online e consente di controllare tutte le variabili presenti all’interno della VAT

Ricerche

Quando si è all’interno del codice, per vedere rapidamente un elenco di tutti i punti in cui viene utilizzata una variabile, è sufficiente .

Selezionare la variabile

Tasto destro / vai al punto di applicazione Per avere invece la Lista completa degli utilizzi di un indirizzo occorre invece utilizzare :

Strumenti / Dati Riferimento / Filtra consente di impostare un Filtro di Ricerca. Ad esempio una singola DB. Volendo ricercare gli utilizzi della DB 10 selezionar DB ed impostare 10 Strumenti / Dati Riferimento / Visualizza / Riferimenti Incrociati vengono mostrati gli utilizzi di tutte le variabili impostate mediante il filtro precedente.

Page 19: TIA Portal Programmazione - Roberto Manarobertomana.altervista.org/.../TIA-Portal-programmazione.pdf · 2019-08-03 · Gestione Progetto robertomana.it TIA PORTAL Programmazione pag

Gestione Progetto robertomana.it

TIA PORTAL Programmazione

pag 19

Archiviazione di un progetto

Progetto / Archivia Progetto / Disarchivia

Note sulla simbologia (codifica IEC)

H sono i segnalatori Emergenza è un pulsante a fungo Normalmente Chiuso

Diagnostica di un Fault

Quando il PLC va in fault, per vedere la causa occorre :

andare sulla Configurazione Hardware del PLC

selezionare il PLC / tasto destro

stato dell’unità

diagnostica.

Viene mostrato un messaggio abbastanza dettagliato sul motivo che ha mandato il PLC in fault.