Programmazione PLC

Esempio corso PLC prof Gottardo. (clicca per vedere il video su youtube)

Esempio cancello a scorrimento degli allievi.

Esempio di lezione su SCADA

Libro di testo copertina morbida A4      Prezzo www.lulu.com: € 38,50

Let’s program a PLC!!! (edizione 2016)

ISBN

Edizione
Terza edizione
Pubblicato
01 Gennaio 2016  (anteprima Agosto 2015)
Italiano
412
1,13Kg
Il libro di testo destinato ad essere il riferimento per  gli ITIS,  IPSIA e l’università’.E’ il più completo e nello stesso tempo semplice ed efficace disponibile nel mercato.

Questo libro, edito nel 2016, è l’evoluzione verso le nuove piattaforme software e nuove tecnologie delle reti di PLC. Introduce TIA Portal V12,Simatic Step 7 V.5.5, il MicroWin e il WinCC. Concentra la ventennale esperienza nel campo maturata dall’autore e sostituisce la precedente edizione già molto nota e apprezzata dal pubblico. Una nuova impaginazione e la successione con cui si presentano gli argomenti sono ottimali sia per l’apprendimento scolastico sia per autodidatta portando le conoscenze a livello professionale. L’impiego di sistemi HMI programmati tramite WinCC connessi in Profibus completa la preparazione del tecnico. Ogni argomento è corredato di numerosi esercizi sia completamente svolti che proposti. Nella sezione programmazione avanzata si interfaccia un motore asincrono trifase a un convertitore statico, inverter, aprendo la strada a tutte le applicazioni reali. Fondamentale il capitolo sulla normalizzazione dei segnali analogici.

New from autumn 2017: PLC programming for foreigners in Italy. Lectures aimed at preparing specialized programmers operating all over the world.

PLC international lesson G-Tronic Italy GottardoPractical and theoretical contents. Many laboratory tests on Siemens systems. A certificate of attendance will be issued in English. Italian graduate, doctorates and postdoc will also admitted to participate.   Video demo


Cambio pagina dinamico della KTP-400

Nella lezione del week end, 23 e 24 settembre 2017 si è affrontato il problema del cambio di pagina visualizzata nell’HMI su evento.  L’esempio più chiaro è quello della visualizzazione della posizione della cabina in un ascensore a 3 piani. Si tratta in realtà di commutare tre pagine diverse con il disegno della cabina nelle tre posizione diverse. L’evento che scatena il cambio pagina è l’itercetta della fotocellule di piano.

KTP_400_cambio_pagina_dinamico.

La presenza del campo numerico sotto alle pilot light sul lato sinistro gioco un ruolo essenziale. scarica l’articolo ->guida cambio pagina ktp

Scarica il progetto per S7-1200 con variabile di conteggio ASCENSORE_S71200

E’ consigliato gestire il cambio pagine usando i puntatori  ASCENSORE_S71200_PUNTATORE

Scarica i progetti completi per S7-1200 1212C AC/DC/RE – KTP400 basic con gestione del cambio pagina dinamico che mostra la posizione della cabina sul pannello operatore.


Cancello con animazione in KTP400 30 settembre 2017.

Nella lezione di sabato 30 settembre 2017 è stato implementato un programma che oltre alla classica gestione del cancello a scorrimento, pietra miliare dei corsi che si tengono a Padova, è stata introdotta l’animazione del movimento del cancello sul KTP400. IL problema è stato risulto utilizzando i puntatori ad area. Il progetto completo è scaricabile dal pacchetto sottostante, e contiene anche il video dimostrativo.

CANCELLO_S71200 con animazione apertura su KTP400


Corso PLC edizione febbraio 2017.

Esempio di lettura simultanea di una termocoppia J e una PT100 con PLC S7-1200 modello 1214C DC/DC/relè in TIA Portal V13.

Valigetta PLC S71200 Michele Pirolo

ETK_convertitori_analogici

Descrizione del blocco FC1 che esegue l’acquisizione e la normalizzazione delle temperature da  PTC 100 TC tipo J


SCADA

Esempio di programmazione SCADA nelle lezioni di PLC, corso avanzato.  Nota Bene: da settembre 2016 le lezioni non si svolgono più nella sede indicata nel video, ma nella nuova sede della G-Tronic Robotics Didactis division di Via Austria 19b, 35127, Zona industriale Padova.

Scada-Movicom

Vedi filmato su youtube: Collegamento S71200 a supervisione SCADA

Programma di esempio con collegamento a S71200 SCADA_moviconTest1

Per collegare un PLC Siemens S7-1200 con la versione 11.5 di movicom potrebbe esserci qualche ambiguità nell’uso dei driver di comunicazione e nel loro setup. Seguire le indicazioni riportate nelle immagini. Cominciamo selezionando tra le varie marche il Siemens.

scada_movicom_siemens

scada_movicom_siemens

Aggiungiamo i driver di comunicazione, In questa versione si è costretti a aggiungere i driver per S7-300/400 benché siano presenti quelli per S7-1200 i quali a volte presentano difficoltà di utilizzo.  Probabilmente il problema non sussiste nel Movicom Next:

scada_movicom_siemens_300_for_1200

Dovremmo premere avanti per alcune volte arrivando alla seguente situazione:

scada_add_station

Oro effettuiamo il setup della stazione a cui ci si vuole collegare:

scada_TCP_IP

Fissiamo l’indirizzo IP

Scada_server_address

scada_station_properties

Lasciamo impostato il default:

scada_S7_TCP

Ora possiamo testare la comunicazione.

Scada_TCP-test


Esercizio: Concetti sui blocchi Funzionali FB e i DB di istanza.

Nel file scaricabile da questo link troviamo la relazione svolta dall’allievo Lucas Sperduto sulle esperienze fatte durante la lezione del week end del 15/07/2017.

Blocchi Funzionali e Multistanza

Funzionali somme doppia istanza


Collegamento inverter.

In questo video vedrete una spiegazione semplificata ma comunque dettagliata sul funzionamento di un piccolo inverter monofase/trifase di tipo a controllo unipolare in tensione proporzionale alla frequenza generata.  IL sistema si interfaccia a un PLC S7-300 con CPU 314 IFM, la cui uscita analogica genera via software il segnale proporzionale di comando. Il motore collegato è da 1KW nominale. I collegamenti delle fasi cono fissi a stella. Si è ammessi a questo livello del corso dopo avere ottenuto l’attestato G-Tronic Robotics di primo livello oppure se si è in possesso di laurea in ingegneria delle automazioni  (non da diritto all’accesso diretto altri ti di ingegneria o altri tipi di laurea).

Altivar-motore

Vedi il filmato su youtube: Collegamento inverter Altivar 11.

Controllo inverter Altivar ta HMI TP170 controlla Motore via inverter

English version on foreigners lectures in Padova: Altivar connection


Acquisizione encoder modello E620 2000 10 24 R8 PP2 con S7-1200.

Questo programma è stato sviluppato al corso di programmazione avanzata dei PLC Siemens tenuto a Padova. Fa parte di un contesto più grande che è stato tolto per focalizzare l’attenzione sull’attivazione dell’HSC.

La piattaforma software è il TIA Portal V14 basic, ovvero i CD contenuti nello starter KIT distribuito da Siemens con la CPU S7-1200 modello 1212C-AC/DC/Relè. L’esatta versione firmware è visualizzabile nella configurazione hardware.

Encoder_HSC

Il DB di istanza contiene le seguenti variabili:

tag

Il programma funziona solo se sono state effettuate le corrette configurazioni hardware degli HSC. Queste saranno:  L’abilitazione mettendo lo spunto su HSC1 (o gli altri canali) nel menu, sotto a generale (della CPU), HSC1 ..”attiva questo contatore veloce”.  A seguire, sulla voce funzione, impostare come da immagine sottostante:

funzione

Alla voce “Resetta i valori iniziali” come da immagine:

resetta valori

la voce configurazione evento, al momento la lasciamo libera. Alla voce ingressi Hardware impostiamo gli ingressi fissi come da immagine:

Indirizzi preinpostati

Impostare gli indirizzi di I/O come da immagine:

indirizziID

scarica il programma di esempio. encoder

Scarica versione del programma con pannello operatore KTP400 e contatore A/B. Questo programma è stato sviluppato nella lezione del 18/06/2017. Si vuole controllare un asse lineare progettato con una barra filettata che per ogni giro avanza di 1,25mm, ovvero ogni 2000 impulsi dell’encoder utilizzato. Nel touch viene richiesta la quota di posizionamento dell’asse in mm con due decimali dopo la virgola, ad esempio la quota 5,65 mm viene prima moltiplicata per 100 (allo scopo di togliere la virgola) e poi convertita dal formato Real to Double Int. Viene spatata in un merker Double. Viene convertita dalla funzione calcolate in 9040 impulsi.

Immagine_calculate

touch_quote_encoder

Il comparatore della quota inserita è impostato nell’FC1, e si tratta di un esercizio.

Nella realtà la comparazione di quota è effettuata tramite interrupt nell’HSC modificando le sue proprietà nell’hardware. -> Encoder con Touch e quota stop su IP ciclico.

scarica il databook dell’encoder Encoder_databook


Programmazione di allarmi su interrupt con CPU S7-1200.

Questo programma è un esempio di come si gestiscono gli allarmi e interrupt con OB40 e OB41. Nel sistema sono presenti due PLC e il pannello operatore TP400k color in rete profinet. L’interrupt che evoca il OB40 è generato da un comparatore di soglia sul segnale analogico. Gli OB40 e 41 contengono solo la reazione a questo interrupt ovvero il set e il reset della spia luminosa ALLARME visualizzata nell’HMI. Il software è scaricabile dal link: Allarmi


Programmazione di multiistanze.

In data 15/07/2017, presso la sede della G-Tronic di Via Austria 19/b a Padova abbiamo realizzato un un programma per meglio comprendere  come creare e utilizzare i blocchi funzionali: il programma consisteva nel realizzare la somma di due differenti coppie di addendi alla chiusura  del contatto E124.0. Nel procedimento testato abbiamo visto come per ogni operazione necessitiamo di un corrispondente DB, ossia volendo eseguire tramite lo stesso FB1 (“Somma”) più addizioni dobbiamo associare a ciascuna di esse un diverso DB di istanza. Per ridurre il numero dei blocchi dati (che con tale procedura sarebbero tanti quante le istanze create) occorre ricorrere alla multiistanza.

multiistanza

continua scaricando il file doc dell’allievo Lucas Sperduto -> Blocchi Funzionali e Multistanza


ServoStepper

Questo programma posiziona l’angolo di uno stepper motor bipolare a 4 fili in funzione di un angolo impostato tramite un Encoder (vedi databook del progetto precedente) a 2000 impulsi al giro. Si consideri uno stepper motor con caratteristiche elettriche 5V DC per bobina, corrente <=2A, numero impulsi al giro 200, gradi a impulso 1,8°.

Matrice full step, numero di matrici per fare un giro 50.

Il rapporto giro encoder/giro stepper è 1/10, quindi nel programma viene eseguita una divisione per 10.

Immagine_divisone_per_10

Per il funzionamento è necessario impostare un canale di interrupt in OB40 per reagire al fine conteggio e altri stimoli provenienti dal contatore veloce.

Immagine_OB_interrupt

L’interfaccia di controllo dello stepper si trova descritta sul libro di testo

advanced PLC programming Gottardo

Advanced PLC Programming ing. Marco Gottardo

Il programma è stato testato alla lezione di programmazione avanzata del 18 giugno 2017.  Chi volesse partecipare a questi corsi nella formula week end o serale può scrivere una mail a ad.noctis@gmail.com

Scarica il programma per CPU 1212C AC/DC/Re    Servo_stepper


Comunicazione PROFINET tra due PLC S7-1200.

Alla lezione del week end 18/19 febbraio 2017, dedicata ai fuori sede, abbiamo collegato  un PLC S7 1200 mod. 1212c AC/DC/RLY XX31 con id PLC_1 ad un PLC  con id PLC_2 mod 1212c AC/DC/RLY XX31

Lo scopo è quello di trasferire 4 interi, ovvero 8 byte di dati da un PLC a un altro usando i DB dei partener di comunicazione. Nello stato iniziale il primo PLC contiene nel DB i valori 1,2,3,4 a partire da byte 4, mentre il secondo contiene PLC contiene i valori 5,6,7,8 a partire sempre dal byte 4 del DB.

Dopo il trasferimento entrambi i DB dei partner online contengono 1,2,3,4 a partire dal byte 4 del DB.   Il trasferimento avviene usando la funzione PUT.

Nella rete i dispositivi sono stati inseriti con i seguenti IP

  • PLC_1 192.168.0.1
  • PLC_2 192.168.0.3
  • HMI KTP400 BASIC COLOR 192.168.0.2

In entrambi i PLC abbiamo creato un DB globale con la forma:

Blocco dati di destinazione

Le prime due righe sono variabili locali mentre i dati che intendiamo leggere/spedire sono 4 e si trovano all’indirizzo byte 4. Trattandosi di INTEGER hanno un’estensione totale di 8 byte come dovremmo indicare nel puntatore di accesso del comando PUT di cui vogliamo dimostrare il funzionamento.

Nell’immagine l’azione di trasferimento è già stata eseguita quindi nella colonna valore di controllo (visibile solo dopo avere agito negli “occhiali” di controllo delle variabili) compaiono i valori provenienti dal PLC che ha eseguito il PUT.  Quello che stiamo osservando è il DB del partner di comunicazione che ha subito la scrittura.

Nel PLC_2 usiamo il DB2 mentre nel PLC_1 il DB4.

Dati contenuti nel DB2   -> Dato5,6,7,8=5,6,7,8

Dati contenuti nel DB4  -> Dato1,2,3,4=1,2,3,4

L’obbiettivo è quello di trasferire i dati 1,2,3,4 nel DB2 del partner sovrascrivendo gli attuali 5,6,7,8 come già a visualizzato nell’immagine sovrastante.

Useremo i comandi GET e PUT nel protocollo profinet, inizialmente testiamo il PUT.

rete profinet gottardo

Obbiettivo trasferire quattro INTEGER dal DB4 del PLC_1 ad un DB2 del  PLC_2 remoto.

Funzione-PUT

Attenzione: Usare il comando ” -|P|-” sul pin “REQ” allo scopo di generare il fronte di salita necessario per spedire i dati successivi alla prima esecuzione.  

Agiamo sull’icona con la forma di cassetta degl’attrezzi.

collegamento al partner di comunicazione gottardo

Salviamo la configurazione .

In caso di problemi di comunicazione verificare di aver compilato la configurazione hardware con tutti i PLC e i dispositivi offline, e assicurarsi di aver ricaricato hardware e software in tutti i PLC dopo aver compilato.

Salvare la configurazione hardware profinet

 Scarica pdf bozza di questo articolo -> comunicazione profinet tra CPU 1200

Scarica il programma con questo esempio di comunicazione profinet -> nastro_hmi

In questo progetto, oltre alla comunicazione Profinet tra le due CPU sopradescritta troverete la configurazione per il pannello HMI modello KTP400 basic color (con programma Wincc) che accede contemporaneamente a ai TAG di entrambi i PLC centralizzando il controllo.

Profinet: Esercizio di comunicazione tra PLC e HMI (allievo Lucas Sperduto)

Scarica da questo link la relazione tecnica del programma svolto da Lucas Sperduto.

Comunicazione PROFINET tra due PLC S1

Profinet:  Un HMI accede a due PLC scambiando i dati tra i loro DB.

In questo esercizio, simile al precedente ma più completo, viene progettato un HMI modello KTP400 basic, in grado di accedere ai DB di due diversi PLC simultaneamente. L’area del pannello è divisa in due zone, la metà di sinistra per il controllo di un PLC e l’area di destra per il controllo dell’altro PLC.

Scarica il programma completo Comunicazione Profinet tra 2 S7-1200 e un HMI

TIA_HMI_Panel_esercizio_Profinet_Gottardo

In ogni PLC viene definito un DB contenente un set di dati con l’obbiettivo di trasmetterli al partner di comunicazione. Viene inoltre trasmetto il valore analogico acquisito da uno dei PLC. Il touch panel supervisiona e comanda le azioni. I valori sono mostrati nei campi HMI.

Profinet_esercizio_Gottardo_DB2_PLC1

Contenuto iniziale di DB2 nel PLC1, è fondamentale dalle proprietà del DB togliere lo spunto dal menù “accesso ottimizzato” allo scopo di poter visualizzare la colonna “offset” che mostra gli indirizzi in Byte.

Ecco la situazione, con una vista più globale, di DB1 nel lato PLC2.

PLC2_DB1

PLC_2_DB1

Aspetto del programma sul lato WinCC.

PANNELLO

Nella prossima immagine la tabella delle variabili lato HMI.

TABELLA_VARIABILE_TOUCH

Il contenuto di FC1 sul PLC1- ->PLC_1_FC1

 Datalogger con S7-1200.

Questo programma salva su un file excel in un PC che funge da terminale scada oppure da server 10 pacchetti schedulati contenenti ciascuno il time stamp e la registrazione del canale analogico. Questo potrà essere una temperatura o altro proveniente da un sensore in campo.

scarica il progetto TIA V13 del datalogger per 1212C AC/DC/relay ->data_log

L’acquisizione è sincronizzata su un merker di clock i cui fronti, posti in ingresso a un contatore determina il numero di campioni richiesti nel pacchetto registrato nel file excel in formato CSV, ovvero i campi sono separati da una virgola.

Sul PLC deve essere attivato il WEB server. Sarà parte essenziale del progettoun DB globale, nel nostro caso chiamato datalog che potrete vedere scaricando il file sopra.

scren1

Attenzione:  Il campo RECORDS in DataLogCreate, qui impostato a “1” indica il numero delle righe che troveremo nel file Excel. Possiamo cambiare questo parametro  indicando, ad esempio, 10.  Verranno registrati 10 campioni con i relativi Time stamp.scren2 scren3 scren4

Il file excel ottenuto è ->Recorder[1]

Per esercizio si tracci il grafico in RunTime del valore analogico schedulato.


Esercizio di indicizzazione di un  array. Si genera la matrice di passo di un motore stepper usando una tabella indicizzata.

Indicizzazione_array_Dati

Indicizzazione_array_LD


Documentazione tecnica utile.


Generatore PWM per CPU 313C

Nelle proprietà hardware della CPU bisogna abilitare le proprietà di “Conteggio” come mostrato nell’immagine. Ovviamente queste impostazioni sono accessibili solo dopo avere abilitato nella CPU le funzioni integrate di sistema. Analogamente, si otterrà un funzionamento hardware solo dopo avere evocato dalla libreria la funzione integrata software. Nel caso di questa CPU e questa versione di Step 7 si tratta dell’SFB 49.

Come ogni FB troverò appoggio sul proprio DB di istanza che ci cureremo di nominare con lo stesso numero allo scopo di una agevole identificazione quando si troverà nel mezzo degli altri DB nel Simatic Manager.

cpu_1

Per ottenere una forma d’onda corretta, che si aggiri almeno sui 2KHz, impostiamo i campi come mostrato sotto.  E’ possibile eseguire il preset tramite costanti oppure passando variabili da programma oppure tramite segnali provenienti dai canali analogici.

cpu_2

cpu_3

Nel DB globale inseriamo le variabili di controllo esterne al blocco funzionale, ad esempio la marcia e arresto dell’eventuale motore.

DB1

Nel DB di istanza (numerato come il funzionale di appartenenza) mettiamo le variabili di input e output del blocco di sistema.  Nella normale modalità operativa i DB di istanza vengono creati automaticamente quando si configura il blocco funzione integrata di sistema. (come in questo caso la creazione avviene quando scriviamo il nome del DB in testa al blocco FB nel segmento KOP).

DB49

pulse

Scarica -> FC1

Imposta la VAT per eseguire un test controllando le variabili.

vat

Nell’interfaccia HMI impostiamo questa semplice grafica:

WINCC_INTERFACCIA

Il pannello operatore utilizzato in questo esempio è un TP170A. L’interfaccia opera in queste variabili impostate in WinCC:

WINCC_VARIABILI

Si consiglia di collegare un oscilloscopio all’uscita digitale A124.0 del PLC per osservare l’azione di controllo del Duty Cycle.

Collegare un mosfet di potenza, con il gate connesso ad un partitore di tensione che eviti il superamento di 4V a partire dai 24 di uscita. E’ bene proteggere dagli spike il gate, il linea di massima con uno Zener (ad esempio da 3v3) o meglio con un transil.

Il Drain del Mosfet potrà essere collegato a un motore DC anche di discrete dimensioni la sui alimentazione di potenza non deve ovviamente provenire dall’alimentatore del PLC. Ad esempio un 36VDc, 5A. Le masse del PLC e dell’interfaccia di potenza, per questa prova, dovranno essere in comune.

Il programma completo è scaricabile ad inizio dei questo esercizio.


Corso avanzato: Attivazione misuratore di frequenza PLC314IFM

Vogliamo risolvere il problema del controllo della velocità, ad esempio di un nastro trasportatore al cui asse è abbinato un disco con n fori. Tale esercizio è ben esposto sul testo di programmazione avanzata dei PLC.

Potremmo realizzare il sistema con un motore DC per asservimenti o un MAT al cui asse sia collegato anche un disco forato che generi un treno di impulsi, oppure munito di un magnete o elemento metallico il cui passaggio sia rilevabile da proximity.  In alternativa il sistema potrà essere mosso da un motore stepper.

 Per lo svolgimento sarà necessario abilitare la funzione FC40 “IEC Time to S5TI”  e successivamente il funzionale integrato di sistema SFB30 che realizza la misurazione della frequenza appoggiandosi al DB di istanza DB62.

Il segnale a cui perviene la frequenza sarà E126.0 “proximity”, a cui la CPU abbina il canale hardware del misuratore di frequenza.

Si generano delle rampe, tramite dei Timer di tipo ritardato all’eccitazione “SA”, la cui durata indica la distanza tra due letture del sensore, da cui ricaviamo la velocità.

Ovviamente è fondamentale la trasformazione tra velocità angolare “omega” e la velocità tangenziale che costituisce la velocità effettiva del materiale posto sul nastro.

 Vedi il blocco di programma FC1

Per abilitare le funzioni integrate di sistema bisogna eseguire dei preset nella configurazione dell’hardware.

frequenzimetro sfb30

Hardware1

Hardware2

progetto_frequenzimetro

tabella_simboli

SFB30

DB62_istanza


Esercizio di programmazione avanzata dei PLC S7-300 CPU 314 IFM e HMI

In questo esercizio si vuole controllare e mantenere costante la velocità di un nastro trasportatore usando le funzioni integrate di sistema Frequenzimentro, Pulsgen e PID di una CPU 314IF. Il pannello operatore impiegato è il TP170A. il software è stato testato. La meccanica è esposta nel testo “Advanced PLC programming

Scarica il progetto e disarchivialo in Step7 V5.5 ->Progetto_velocita_nastro

Elenco funzioni integrate di sistema, visualizzate nel simatic manager:

manager_nastro_speed

  • SFB30 -> misuratore di frequenza (ci sono 5 impulsi al giro su un proximity), il DB di istanza è DB62.
  • SFB43 -> PID, il DB di istanza è DB43.
  • SFB49 ->  Uscita PWM il DB di istanza è DB49.

Sfondo per il pannello HMI modello TP170A

nastro


Manuali e documentazione.

  1. CPU 314IFM e 312IFM ->CPU314IFM_Manuale
  2. Siemens_Simatic_S7-1500_PLC_UVBAW6_v1_0
  3. Bilance Laumas celle di carico Ethernet e RS485