Caratteristiche Principali PLC Siemens CPU 314C-2 DP Prodotti Siemens Simatic 300 Simatic 400 CPU 3xxx CPU 4xxx Unico Ambiente di Programmazione Step7 V5.3 Simatic CPU 314C-2 DP Argomenti Trattati Area Memoria Gestione dei Programmi Unità di I/O Function Block Area di Memoria Memoria di Caricamento Micro Memory Card (64Kbyte) Flash Memory Mantenimento dati per 10 anni Memorizza Blocchi di Codice e Dati Utente Configurazione Hardware e area S.O. Memoria di Sistema Memoria di Lavoro Area di Memoria Memoria di Caricamento Memoria di Sistema Aree Operandi Merker, Temporizzatori e Contatori Immagini di Processo I/O Dati Locali (temporanei) Memoria di Lavoro Area di Memoria Memoria di Caricamento Memoria di Sistema Memoria di Lavoro Blocchi Codice e Blocchi Dati della porzione di programma da eseguire Interagisce con la MMC (carico del codice e dei dati) Memoria Lavoro=48 Kbyte Area Memoria a Ritenzione Il Programma utente e i dati nella MMC sono sempre a ritenzione Per i Merker, Temporizzatori e Contatori (Memoria di Sistema) l'utente stabilisce quali parti debbano essere a ritenzione Es. M0.0-M15.0 sono a ritenzione Buffer di diagnostica, indirizzo MPI/DP sono a ritenzione Caricamento Programmi in MMC Caricamento di un Programma Completo (tutti i blocchi) Caricamento Parziale Cancellazione del programma presente Aggiornamento di uno o più blocchi Aggiunta di uno o più blocchi I Programmi memorizzati in una MMC possono essere caricati nel PC Gestione dei Programmi Sistema Operativo Gestione avviamento (warm, cold) Aggiornamento immagine I/O Richiamo programma utente Gestione allarmi/errori/aree di memoria Comunicazione con altri dispositivi Programma Utente Gestione dei Programmi Sistema Operativo Programma Utente suddiviso in Blocchi: Blocchi Organizzativi (OB) Function Block (FB) Funzioni (FC) Function Block di Sistema (SFB) Funzioni di Sistema (SFC) Blocchi Dati di Istanza (DB), per gli FB o SFB Gestione dei Programmi Blocchi Organizzativi (OB) Comandano l'esecuzione dei blocchi di programma utente Sono contraddistinti da numeri e priorità Realizzano il task secondo IEC 1131-3 OB da 1(Low) a 28(High) Dentro ogni OB viene scritto un programma (eventualmente con chiamate a SFB, SFC, FB, FC) Gestione dei Programmi Il S.O. viene eseguito in un loop Richiama l'OB1 una volta per ciascun loop OB1 Gestione dei Programmi In ciascun ciclo il S.O.: Aggiorna le uscite (IPU) Legge gli ingressi (IPI) Esegue l'OB1 Elabora dati di sistema OB1 Gestione dei Programmi E' possibile scrivere l'intero programma utente nell'OB1 (Programmazione Lineare) Oppure è possibile scrivere il programma utente nell'OB1 in termini di chiamate a blocchi (Programmazione Procedurale) Gestione dei Programmi L'esecuzione ciclica può essere interrotta Es. allarmi, errori o interrupt OB x OB y Gestione dei Programmi Tempo di Ciclo: variabile E' possibile impostare un Watchdog (Stop CPU) E' possibile limitare il Carico di Comunicazione Gestione dei Programmi OB 10 Allarme Orologio Priorità 2 (OB1 ha priorità 1) Viene Parametrizzato: Esecuzione: una volta, ogni minuto, ogni giorno, ogni settimana, ogni mese, etc. Data di Avvio Ora di Avvio Gestione dei Programmi OB 20 Allarme di Ritardo Priorità 3 (OB1 ha priorità 1) Permette di eseguire con ritardo alcune parti del programma utente Esiste una particolare funzione di sistema (SFC 32) attraverso cui è possibile settare il tempo di ritardo di esecuzione dell'OB 20 (che deve contenere il codice) Gestione dei Programmi OB 35 Schedulazione Orologio Priorità 12 (OB1 ha priorità 1) Permette l'esecuzione periodica di una porzione di codice Viene Parametrizzato: Per default 100 ms Nel caso di più processi ciclici (non nella CPU314C-2DP) è possibile impostare un offset (per evitare avviamento simultaneo) Gestione dei Programmi OB 40 Interrupt di Processo Priorità 16 (OB1 ha priorità 1) Il codice viene eseguito in reazione ad un segnale di Ingresso E' necessario disporre di una unità di I/O che supporti l'interrupt di processo Nell'unità di I/O vengono settati gli ingressi che determinano l'attivazione dell'OB40 Gestione dei Programmi OB 40 Interrupt di Processo Nella configurazione hardware degli ingressi DIGITALI, selezionare: gli ingressi che determinano l'interrupt di processo Il fronte di salita o di discesa (anche entrambi) Il ritardo di ingresso (stabilizzazione del segnale) Creare l'OB40 Scrivere il codice entro l'OB40 Se si vogliono utilizzare gli ingressi, utilizzare le variabili locali L8.xx-L11.x Ad esempio L11.x corrisponde a I124.x Gestione dei Programmi OB 40 Interrupt di Processo Questo codice permette di memorizzare gli ingressi I124.0, I124.1 e I 124.2 quando vi è un fronte di discesa o salita o entrambi (dipende dalla configurazione) Gestione dei Programmi Esistono degli OB che, se definiti, permettono di eseguire azioni in caso di eventi: OB 82, Priorità 26: allarme diagnostica (es.cortocircuito unità di ingresso) OB 85, Priorità 26: errore di esecuzione programma (es.OB non caricato) OB 86, Priorità 26: guasto al telaio di montaggio OB 87, Priorità 26: errore di comunicazione OB 100, Warm Start Avviamento Nella CPU 314C-2DP è consentito il solo Avviamento Warm (Nuovo Avviamento) L'avviamento Warm diviene Cold, se non vi sono aree di memoria ritentive definite o utilizzate La CPU esegue un avviamento a caldo: Dopo RETE ON Da Stop a RUN OB 100 viene eseguito all'avviamento Warm (nessun limite sulla durata) Avviamento: OB100 Può essere utilizzato per l'inizializzazione di variabili Per i Merker si utilizza il comando SET La sintassi è SET = variabile (nome o indirizzo). Ad esempio: SET = = = "home_robot" "home1" "home2" Unità di I/O 24 Ix.x digitali (124, 125 e 126) E' possibile settare interrupt di processo e ritardo di ingresso (filtro) 16 Qx.x digitali (124 e 125) 5 ingressi analogici IW x (752-761) 4 configurabili (tensione, corrente) 1 configurabile come (termo-)resistenza Unità di I/O 2 uscite analogiche QW x (752-755) configurabili (tensione, corrente) 4 canali di conteggio Conteggio eventi Conteggio in avanti o indietro Frequenza massima di conteggio: 60 KHz Unità di I/O Misura di frequenza La CPU conta gli impulsi che arrivano entro un tempo di integrazione prestabilito Tempo di integrazione impostabile tra 10 e 10.000 msec in passi di 1 msec Il valore di frequenza misurato viene fornito dopo il tempo di integrazione Frequenze misurabili: da 0 a 60 KHz Unità di I/O Modulazione ampiezza di impulsi (PWM) Ritardo di Inserzione Viene emessa una sequenza di impulsi su una uscita digitale prescelta L'utente sceglie: Tempo Ritardo di Inserzione, Durata impulso e Durata periodo Durata Periodo Durata Impulso Durata Periodo Uscite Analogiche Esempi di Programmazione Ogni uscita analogica viene codificata con un INT (16 bit) -32768, .., +32767 QW n (ogni uscita è identificata da un numero) Codifica in Tensione: -10 V, .., +10V 0,..,+10V Codifica in Corrente: -20mA, .., +20mA 0,..,+20mA 4,..,+20mA Uscite Analogiche Esempi di Programmazione Ingressi Analogici Esempi di Programmazione Ogni ingresso analogico viene codificata con un INT (16 bit) -32768, .., +32767 IW n (ogni uscita è identificata da un numero) Codifica in Tensione: Codifica in Corrente: -10 V, .., +10V 0,..,+10V -20mA, .., +20mA 0,..,+20mA 4,..,+20mA Ingresso per lettura di temperatura Ingressi Analogici Esempi di Programmazione Function Block Sono importantissimi per semplificare il codice e per renderlo riutilizzabile Essenzialmente la creazione consiste nella definizione di un Blocco Funzionale e di un Blocco Dati per ogni istanza Per ciascun Blocco Funzionale si possono definire i parametri formali e le variabili: IN, OUT, IN_OUT, STAT, TEMP Vengono richiamati premettendo il simbolo # Function Block Function Block Function Block Function Block Function Block Function Block Function Block Function Block Uso memoria statica: