430 likes | 797 Views
Caratteristiche Principali PLC Siemens CPU 314C-2 DP. Prodotti Siemens. Simatic 300 CPU 3xxx Simatic 400 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.
E N D
Prodotti Siemens • Simatic 300 • CPU 3xxx • Simatic 400 • 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) • Cancellazione del programma presente • Caricamento Parziale • 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 ProgrammiBlocchi Organizzativi (OB) • Comandano l'esecuzione dei blocchi di programma utente • Realizzano il task secondo IEC 1131-3 • Sono contraddistinti da numeri e priorità • OB da 1(Low) a 28(High) • Dentro ogni OB viene scritto un programma (eventualmente con chiamate a SFB, SFC, FB, FC)
OB1 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
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 ProgrammiOB 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 ProgrammiOB 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 ProgrammiOB 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 ProgrammiOB 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 ProgrammiOB 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 ProgrammiOB 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) • Viene emessa una sequenza di impulsi su una uscita digitale prescelta • L'utente sceglie: Tempo Ritardo di Inserzione, Durata impulso e Durata periodo Ritardo di Inserzione Durata Periodo Durata Periodo Durata Impulso
Uscite AnalogicheEsempi 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
Ingressi AnalogiciEsempi 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: • -10 V, .., +10V • 0,..,+10V • Codifica in Corrente: • -20mA, .., +20mA • 0,..,+20mA • 4,..,+20mA • Ingresso per lettura di temperatura
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 • Uso memoria statica: