Upload
hoanghuong
View
269
Download
1
Embed Size (px)
Citation preview
Programmare OB1 in KOPCome programmare la funzione di memoria in Kop
Inseriamo un nuovo segmento utilizzando il tasto destro
Programmare FB in KOPIl blocco funzionale (FB) è subordinato al blocco organizzativo. Esso contiene una parte del programma che può essere richiamata all’interno dell‘OB1 ogni volta che lo si desidera. Tutti i parametri formali e i dati statici del blocco funzionale vengono memorizzati in un blocco dati DB separato che è assegnato al blocco funzionale. Il blocco funzionale (FB1) viene programmato nella già nota finestra del programma KOP/AWL/FUP.
Nella finestra di dialogo "Proprietà –Blocco funzionale" selezionare il linguaggio di programmazione, attivare la Proprietà multiistanza e con OK acquisire le altre preimpostazioni.
Facendo doppio clic sul FB1 si accede alla finestra del programma KOP/AWL/FUP.
Programmare FB in KOPVediamo come programmare un blocco funzionale che per es. comanda e controlla un motore a benzina e un motore diesel con un blocco dati ciascuno. Tutti i segnali specifici del motore vengono trasferiti come parametri di blocco dal blocco organizzativo al blocco funzionale e devono perciò essere riportati nella tabella di dichiarazione delle variabili come parametri di ingresso e di uscita (dichiarazione "in" e "out").
Come dichiarare / definire le variabili
Programmare FB in KOPVediamo come programmare un blocco funzionale che per esempio comanda e controlla un motore a benzina e un motore diesel con un blocco dati ciascuno. Tutti i segnali specifici del motore vengono trasferiti come parametri di blocco dal blocco organizzativo al blocco funzionale e devono perciò essere riportati nella tabella di dichiarazione delle variabili come parametri di ingresso e di uscita (dichiarazione "in" e "out").
Si noti il contatto (normalmente chiuso) - Parallelo al contatto normalmente aperto.
I nomi introdotti, relativi alle variabili di input definite per l’FB, vengono automaticamente evidenziate con uno #all’inizio. Le variabili locali di blocco vengono identificate con # e sono valide solo nel blocco.
Le variabili locali di blocco vengono identificate con # e sono valide solo nel blocco. Le variabili globali sono racchiuse tra virgolette. Vengono definite nella tabella dei simboli e sono valide nell’intero programma.
Lo stato di segnale "Funzionamento automatico" viene definito nell‘OB1 con un elemento SR ed interrogato ora nell‘FB1.
Come programmare l‘inserzione e la disinserzione di un motore
Quando viene inserito e disinserito il motore ?
Se la variabile #Switch_on ha lo stato di segnale "1" e (AND) la variabile "Funzionamento automatico " ha lo stato di segnale "0", il motore viene inserito. Solo la negazione (contatto normalmente chiuso) di "Funzionamento automatico" permette questa funzionalità.Se la variabile #Switch_on ha lo stato di segnale "1" o (OR) la variabile #Failure ha lo stato di segnale "0", il motore viene disinserito. La funzionalita desiderata viene di nuovo conseguita con la negazione di #Failure (#Failure è un segnale "zeroattivo" e in caso normale ha valore "1", in caso di guasto ha valore "0").
Programmare FB in KOPInseriamo un nuovo segmento e selezioniamo il montante. Nel catalogo degli elementi del programma navigare a Op. di confronto ed inserire un CMP>=I. Nel montante inserire inoltre una bobina.
Come programmare il controllo del numero di giri
Come controlla l’operazione di confronto il numero di giri del motore?
Mediante l’operazione di confronto vengono confrontate le variabili #Actual_Speed e #Preset_Speede viene assegnato il risultato delle variabili #Preset_Speed_Reached (stato di segnale 1).
Programmare FB1 in AWL/FUPNel seguito mostriamo i prg equivalenti scritti in AWL/FUP
Inserzione e disinserzione del motore
Controlla il numero di giri
Tutti i segnali specifici del motore vengono trasferiti come parametri di blocco dal blocco organizzativo al blocco funzionale e devono perciò essere riportati nella tabella di dichiarazione delle variabili come parametri di ingresso e di uscita (dichiarazione "in" e "out").
Creare il blocco dati di istanzaAbbiamo appena programmato il blocco funzionale FB1 ("Motore") e definito, tra lealtre cose, i parametri specifici del motore nella tabella di dichiarazione delle variabili locali.
Per poter programmare successivamente il richiamo (CALL) dell‘FB nell‘OB1, ènecessario creare il relativo blocco dati. Ad un FB è sempre assegnato un bloccodati di istanza (DB).
L‘FB deve comandare e controllare un motore a benzina o un motore diesel. I diversi numeri di giri prefissati dei motori vengono memorizzati in due DB separati modificando il valore attuale corrispondente (#Numero giri_prefissato).
Programmando solo una volta in modo centrale il blocco funzionale, si riducono i tempi di programmazione.
Creare il blocco dati di istanza
Nella finestra di dialogo "Proprietà – Blocco dati" acquisire il nome DB1, scegliere nella casella di riepilogo la voce "DB di istanza " ed acquisire il nome del blocco funzionale "FB1" assegnato. Confermare le preimpostazioni con OK. Il blocco dati DB1 viene aggiunto nel Progetto.
Creare il blocco dati di istanzaAprire il DB1 con doppio clic. Confermare la finestra di dialogo visualizzatacon Sì per parametrizzare il blocco dati di istanza.
Introdurre ora per il motore a benzina nella colonna Valore attuale il valore "1500” (nella riga "Numero giri_prefissato”). In tal modo èstato definito il numero di giri massimo per questo motore. Salvare il DB1, e chiudere la finestra del programma.
A questo punto creare analogamente al DB1un altro blocco dati DB2 mediante il copia ed incolla. Introdurre ora per il motore diesel il valore attuale "1200”. Salvare il DB2, e chiudere la finestra del programma.
Come programmare un richiamo di blocco in KOP
Adesso è necessario richiamare dentro l’OB il programma inserito nell’FB. Per ciascun richiamo dell‘FB viene utilizzato un blocco dati; vengono così comandati i due motori.
Richiamare la cartella Blocchi , ed aprire l’OB1. Nella finestra di programmazione KOP/AWL/FUP occorre selezionare l’ultimo segmento e con il tasto destro inserire in fondo un nuovo segmento
Nel catalogo degli elementi del programma navigare infine all’FB1 ed inserirlo.
Come programmare un richiamo di blocco in KOP
Programmare due segmenti per richiamare il blocco funzionale "Motore“ (FB1) con i blocchi dati “Diesel" (DB2) e “Benzina” (DB1)
Nella tabella dei simboli si possono anche assegnare nomi simbolici a diversi blocchi (p.es.FB1 ha il nome "Motore" e DB1 il nome "Benzina").
Come programmare un richiamo di blocco in AWL/FUP
Configurare l’HW
Aprire la cartella Stazione SIMATIC 300, e fare doppio clic sul simbolo Hardware.
L’hardware viene configurato con STEP 7. I dati di configurazione vengono trasferiti al sistema di automazione successivamente durante il "Caricamento“
Si apre la finestra “Configurazione HW" e viene visualizzata la CPU scelta durante la creazione del progetto (si tratta della CPU314).
Configurare l’HWE‘ necessario inserire prima di tutto un alimentatore. Navigando nel catalogo, posizionarsi su PS307 2A ed inserire l’alimentatore sul posto connettore 1mediante Drag & Drop.
Per un‘unità di ingresso (DI, Digital Input) navigare a SM321 DI32xDC24V ed inserirla sul posto connettore 4. Il posto connettore 3 rimane libero.
Analogamente inserire sul posto connettore 5 l’unitàdi uscita SM322 DO32xDC24V/0.5A.
Con il comando di menu Stazione > Verifica coerenza è inoltre possibile controllare se vi sono errori nella configurazione. Mediante Salva e compila i dati vengono preparati per il trasferimento nella CPU.Una volta chiusa la "Configurazione HW”, nella cartella Blocchi viene visualizzato il simbolo Dati di sistema
PLC - ProgrammazioneIl programma può essere organizzato in due forme diverse: quella lineare e quella strutturata.
�La programmazione lineare utilizza un solo blocco all'interno del quale è contenuto tutto il programma. E’ comodo quando il programma è breve e semplice.
�La programmazione strutturata suddivide il programma in più parti, con la possibilità di saltare da una parte all'altra in diversi modi. Tale metodo di programmazione è il più utilizzato in quanto permette una larga flessibilità, una facile rilettura e quindi immediata individuazione dei guasti. Permette, inoltre, la separazione di varie funzioni all'interno del programma stesso e, potendo decidere quando richiamare tali funzioni si riduce il tempo necessario per l'esecuzione del programma. Il programma utente nell'OB1 è costruito in termini di chiamate a blocchi (Programmazione Procedurale)
PLC - ProgrammazioneL'esecuzione ciclica può essere interrotta. Es. allarmi, errori o interrupt
I programmi di gestione degli errori possono rendere variabile la durata del ciclo di esecuzione.
PLC - Programmazione
Per risolvere compiti complessi si suddivide opportunamente il programma in varie parti distinte (Blocchi). Nel linguaggio di programmazione step 7 esistono cinque tipi di blocchi a loro volta suddivisibili in segmenti:
- blocchi organizzativi (OB), che servono per gestire il programma applicativo; - blocchi di programma (PB) e blocchi di passo (SB), sono due tipi di blocchi
analoghi utili per strutturare il programma e per la programmazione di comandi sequenziali
- blocchi funzionali (FB), sono blocchi di programma speciali. Parti di programma frequentemente ricorrenti o particolarmente complessi (p.es. funzioni di segnalazione o di calcolo) vengono programmate entro blocchi funzionali; essi sono parametrizzabili e possiedono un repertorio di istruzioni piùesteso (p.es. operazioni di salto all’interno dello stesso segmento);
- blocchi dati (DB), dove l’utente memorizza i dati necessari per l’elaborazione del programma applicativo; sono dati, per esempio, i valori reali, i valori limite oppure i testi
PLC - Programmazione
Comandano l'esecuzione dei blocchi di programma utente. 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)
I BLOCCHI ORGANIZZATIVI
OB10 – ALLARME OROLOGIO
Questo blocco priorità 2 (invece OB1 ha priorità 1)
�Viene Parametrizzato:�Esecuzione: una volta, ogni minuto, ogni giorno, ogni settimana, ogni mese, etc.�Data di Avvio�Ora di Avvio
OB20 – ALLARME DI RITARDO
Questo blocco ha priorità 3
�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'OB20 (che deve contenere il codice)
PLC - ProgrammazioneOB35 – SCHEDULAZIONE OROLOGIO
Questo blocco ha priorità 12
�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).
OB40 – INTERRUPT DI PROCESSO
Questo blocco ha priorità 16
�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
Nella configurazione hardware degli ingressi DIGITALI, selezionare:�gli ingressi che determinano l'interrupt di processo { utilizzare le variabili locali L8.xx-L11.x Ad esempio L11.x corrisponde a I124.x }�Il fronte di salita o di discesa (anche entrambi)�Il ritardo di ingresso (stabilizzazione del segnale)
PLC - ProgrammazioneOB VARIE TIPOLOGIE
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
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). 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"
OB 100
PLC - Programmazione
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 #
I BLOCCHI FUNZIONALI