marantz65 Inserito: 1 aprile 2013 Segnala Share Inserito: 1 aprile 2013 buongiorno a tutti sto iniziando con il 1200, come faccio a creare delle subroutine? devo creare dei blocchi e richiamarli dal main? se si devo utilizzare un blocco FC? grazie Link al commento Condividi su altri siti More sharing options...
Frank681 Inserita: 1 aprile 2013 Segnala Share Inserita: 1 aprile 2013 Ciao La risposta e' si , tendenzialmente io nella routine principale OB1 , richiamo i bloccvhi FC se sono solo funzioni che restituiscono un valore ,FB se. Oo blocchv piu' complessi con un DB di istanzaer poter manipolare memorizzare elaborare variabili. Link al commento Condividi su altri siti More sharing options...
marantz65 Inserita: 1 aprile 2013 Autore Segnala Share Inserita: 1 aprile 2013 grazie Frank mi spieghi meglio come faccio a richiamare un blocco dal main? mi spiego meglio: con il 200 settavo nel main un merker che richiamava una sub alla cui fine resettava il merker di richiamo. ho provato a fare la stessa cosa con il 1200, ma non mi parte il timer che ho messo all'inizio del blocco. grazie Link al commento Condividi su altri siti More sharing options...
amed Inserita: 1 aprile 2013 Segnala Share Inserita: 1 aprile 2013 Nella Finestra di navigazione nel progetto vai in Blocchi di programma e in Inserisci nuovo blocco. Puoi inserire le tue FC ed altri tipi di subroutine. Per inserire i richiami in OB1 devi semplicemente trascinare l'icona del FC dalla Finestra di navigazione nel progetto al segmento in OB1. Ciao Link al commento Condividi su altri siti More sharing options...
marantz65 Inserita: 1 aprile 2013 Autore Segnala Share Inserita: 1 aprile 2013 grazie Amed sai anche dirmi come far partire il conteggio di un timer in un blocco? mi spiego: dovrei richiamare un blocco settando un merker, all'interno del blocco devo far partire un timer TOF. grazie Link al commento Condividi su altri siti More sharing options...
amed Inserita: 2 aprile 2013 Segnala Share Inserita: 2 aprile 2013 Il merker lo metti nel semento in OB1 di richiamo della tua FC. Entra nella FC ove vuoi inserire TOF. TOF lo trovi nella finestra di sinistra nell'elenco delleI Istruzioni di base e lo trascini nel segmento desiderato in FC. Quando inserisci il timer TIA tichiede di assegnargli una DB d'istanza, digli di "sì" e non ti preoccupare. Al timer fai poi comandare un merke ed usa questo merker come contatto del timer nel resto del programma. Quando sei on line con il PLC apri il DB d'istanza, clicca sugli occhiali cosi ti fai una idea del suo contenuto. Ciao Link al commento Condividi su altri siti More sharing options...
marantz65 Inserita: 3 aprile 2013 Autore Segnala Share Inserita: 3 aprile 2013 grazie ci provo Link al commento Condividi su altri siti More sharing options...
marantz65 Inserita: 3 aprile 2013 Autore Segnala Share Inserita: 3 aprile 2013 ci ho provato ma il timer non parte Link al commento Condividi su altri siti More sharing options...
amed Inserita: 4 aprile 2013 Segnala Share Inserita: 4 aprile 2013 La costante di tempo PT scrivila ad esempio: T #10s. Corrisponde a 10 secondi. Il Blocco FC deve essere esguito, quindi il richiamo dell blocco FC in OB1 deve essere collegato alla barra di tensione a sinistra (stato logico sempre "on"). Per caricare "Tutto" nel PLC, cioè tutti i blocchi e la configurazione hardware, clicca su PLC_1 con il tasto destro nella finestra di navigazione nel progetto. Clicca poi su Carica nel dispositivo e su Tutto. Ciao Link al commento Condividi su altri siti More sharing options...
marantz65 Inserita: 4 aprile 2013 Autore Segnala Share Inserita: 4 aprile 2013 grazie Amed ma non mi parte il timer. io sto settando un merker nel ob1 che richiama il blocco fc. il blocco viene richiamato ed all'interno del blocco lo stesso merker è collegato all'ingresso del timer. ma il timer non riesco a farlo partire. purtroppo tutte le mie sub devono lavorare con un timer, cosa sbaglio? grazie (mi manca tanto il 200) Marino Link al commento Condividi su altri siti More sharing options...
step-80 Inserita: 4 aprile 2013 Segnala Share Inserita: 4 aprile 2013 Scusate se mi intrometto, ma hai inserito una bobina dopo il timer? Cosa vuol dire che non ti parte il timer? Se hai messo un TOF è un ritardo alla diseccitazione. Il merker che richiama la FC lo hai messo come fronte di salita? Link al commento Condividi su altri siti More sharing options...
marantz65 Inserita: 4 aprile 2013 Autore Segnala Share Inserita: 4 aprile 2013 grazie step 80 cosa intendi per mettere una bobina dopo il timer? io sto usando l'uscita ET del timer per pilotare un uscita ad intervalli diversi. il merker che lancia il blocco si setta con un ingresso nell'ob1 richamando il blocco. lo metto all'interno del blocco prima del timer, ho provato a mettere tra i due un fronte positivo del merker ma non funziona, è questo che intendi? o devo mettere il fronte p al merker nel ob1? devo per forza far partire un timer all'ingresso nel blocco. con il 200 funziona in questo modo aiuto Link al commento Condividi su altri siti More sharing options...
Giuseppe Signorella Inserita: 4 aprile 2013 Segnala Share Inserita: 4 aprile 2013 (modificato) io sto settando un merker nel ob1 che richiama il blocco fc. il blocco viene richiamato ed all'interno del blocco lo stesso merker è collegato all'ingresso del timer. Ma che senso ha connettere il il merker con cui richiami l'FC prima del timer presente nel medesimo FC? Se connetti il timer direttamente (sempre TRUE) senza il merker, il tuo Timer (presente nell'FC) verrà comunque eseguito solo se richiami la Funzione. Poi trattandosi di un blocco contenete un timer, perchè hai usato un FC e non un FB? Modificato: 4 aprile 2013 da Giuseppe Signorella Link al commento Condividi su altri siti More sharing options...
batta Inserita: 4 aprile 2013 Segnala Share Inserita: 4 aprile 2013 Con l'istruzione "Ritardo alla disinserzione" si ritarda il reset dell'uscita Q della durata PT programmata. L'uscita Q viene impostata se il risultato logico combinatorio (RLO) nell'ingresso IN passa da "0" a "1" (fronte di salita del segnale). Quando lo stato del segnale sull'ingresso IN torna a "0", il tempo programmato PT inizia a decorrere. L'uscita Q rimane impostata per tutta la decorrenza della durata PT. Una volta decorsa la durata PT l'uscita Q viene resettata. Se lo stato del segnale nell'ingresso IN commuta su "1" prima che sia trascorsa la durata PT, il temporizzatore viene resettato. Lo stato del segnale nell'uscita Q resta impostato su "1". Nella citazione ci sono le prime righe copiate dalla guida in linea sul funzionamento del timer TOF, che viene richiamata semplicemente selezionando il box del timer e premendo F1. Non mi stancherò mai di ripetere che, specialmente quando qualcosa non funziona, la prima cosa da fare è sempre la stessa: consultare il manuale. Come prima cosa, si nota che l'uscita Q viene impostata se il risultato logico combinatorio nell'ingresso IN passa da "0" a "1" (fronte di salita del segnale). Tu hai legato l'esecuzione della funzione con all'interno il timer e l'attivazione del timer stesso (all'interno della funzione) al medesimo merker. Questo comporta che, quando il merker è OFF, la funzione con il timer non viene elaborata. Il timer quindi non potrà mai vedere il suo ingresso allo stato basso e, quindi, non rileverà mai un fronte di salita. Come se non bastase (sempre che tu stia usando un timer TOF come scrivi nel post #5), quando il merker sull'ingresso del timer è basso (ed il timer dovrebbe quindi iniziare a contare), la funzione non viene più richiamata. Facile pensare che il timer così non possa funzionare. Prova a richiamare la funzione con il timer in modo incondizionato, e vedrai che il timer funziona. Link al commento Condividi su altri siti More sharing options...
marantz65 Inserita: 5 aprile 2013 Autore Segnala Share Inserita: 5 aprile 2013 grazie per le vs risposte. per Giuseppe: è meglio che usi un blocco FB? non mi è ancora ben chiara la differenza, se gentilmente vorrete potete compensare la mia lacuna. per Batta: cosa intendi per modo incondizionato. sono riuscito a fare partire il timer , anteponendo (nel blocco) all'ingresso del timer una uscita rinominata con il nome del merker presente nell?ob1. sicuramente ci sarà una soluzione più elegante. grazie Link al commento Condividi su altri siti More sharing options...
step-80 Inserita: 5 aprile 2013 Segnala Share Inserita: 5 aprile 2013 (modificato) è meglio che usi un blocco FB? non mi è ancora ben chiara la differenza, se gentilmente vorrete potete compensare la mia lacuna. . sono riuscito a fare partire il timer , anteponendo (nel blocco) all'ingresso del timer una uscita rinominata con il nome del merker presente nell?ob1. Ti consiglio caldamente a proposito di fc e fb gli ottimi videocorsi di Pedrani nella sezione didattica,uno di loro parla proprio di questa differenza. L' ultima parte non l'ho capita.. È sufficiente che nel blocco fc( o fb, se lo userai) tu inserisca in ingresso al timer il merker di sistema " sempre vero" Un altra cosa peró non mi è chiara: dici di aver inserito un TOF; se è cosi il tempo impostato comincerà a scorrere quando in ingresso al timer verrà rilevato un fronte di discesa... Mettendo un sempre vero esso non andrà mai a 0. Tra l' altro, non ho ben compreso ancora cosa devi fare, e perchè il tof dentro la fc. Spiegaci bene quel che devi realizzare, magari riusciamo ad aiutarti! Modificato: 5 aprile 2013 da step-80 Link al commento Condividi su altri siti More sharing options...
batta Inserita: 5 aprile 2013 Segnala Share Inserita: 5 aprile 2013 per Batta: cosa intendi per modo incondizionato. Tu ora, prima del richiamo della funzione, hai un contatto con un merker. Se questo merker è ON, la funzione viene richiamata, mentre se è OFF, la funzione non viene richiamata. Elimina questo contatto, in modo che la funzione venga richiamata sempre. sono riuscito a fare partire il timer , anteponendo (nel blocco) all'ingresso del timer una uscita rinominata con il nome del merker presente nell?ob1. ???? Non ho capito cosa hai fatto. Per quanto riguarda la differenza tra FC e FB: In una FC puoi dichiarare variabili INPUT, OUTPUT, INOUT, TEMP. Le variabili INPUT sono i parametri che passi alla funzione quando la richiami. Le variabili OUTPUT sono parametri in uscita dalla funzione. Le variabili INOUT sono parametri che vengono letti e scritti dalla funzione. Le variabili TEMP sono variabili i cui valori vengono scritti in un'area di memoria comune ad altre funzioni. Quando esci dalla funzione è quindi molto probabile che un'altra funzione vada a scrivere in questa area di memoria. In breve, significa che, se scrivi un valore in una variabile TEMP, al prossimo richiamo della funzione non troverai più quel valore. La prima istruzione di una variabile TEMP deve quindi sempre essere un'operazione di scrittura. Solo dopo aver scritto un valore potrai accedere in lettura. Quando richiami una FC, devi per forza collegare qualcosa ai parametri INPUT, OUTPUT e INOUT. In una FB puoi dichiarare variabili INPUT, OUTPUT, INOUT, STAT, TEMP. Le variabili INPUT: come FC, ma vengono anche appoggiate nel DB di istanza. Le variabili OUTPUT: come FC, ma vengono anche appoggiate nel DB di istanza. Le variabili INOUT: come FC, ma vengono anche appoggiate nel DB di istanza. Le variabili TEMP: come FC. Le variabili STAT sono variabili che andranno lette/scritte nel DB di istanza della funzione. Quando richiami una FB, ai parametri INPUT, OUTPUT e INOUT puoi non collegare nulla. I parametri li puoi anche leggere/scrivere direttamente nel DB di istanza. Quando richiami una FB, devi associare un DB di istanza. In questo DB di istanza verranno appoggiate tutte le variabili della FB (ad esclusione delle TEMP). Un esempio classico di utilizzo di FB è la gestione di macchine (o parti di macchina) tutte uguali. Per ogni macchina (o parte di macchina) richiami sempre la stessa FB, associando però di volta in volta un diverso DB di istanza. In pratica, se con altri PLC (non tutti) per gestire macchine uguali devi fare una copia della funzione e cambiare manualmente tutte le memorie all'interno della funzione stessa, con le FB ti basta cambiare DB di istanza quando richiami la FB. Link al commento Condividi su altri siti More sharing options...
step-80 Inserita: 5 aprile 2013 Segnala Share Inserita: 5 aprile 2013 (modificato) Batta ma tu la pazienza dove la compri? Scommetto che ti fanno un bello sconto sulle grandi quantità!! Modificato: 5 aprile 2013 da step-80 Link al commento Condividi su altri siti More sharing options...
batta Inserita: 5 aprile 2013 Segnala Share Inserita: 5 aprile 2013 Batta ma tu la pazienza dove la compri? Ho due figlie di quasi 14 anni, con le quali faccio molto allenamento Link al commento Condividi su altri siti More sharing options...
marantz65 Inserita: 5 aprile 2013 Autore Segnala Share Inserita: 5 aprile 2013 grazie a voi tutti per la pazienza, purtroppo non è il mio mestiere (si vede) e volente o nolente mi sto calando nella veste di programmatore di plc per necessità (salvagurdia/mantenimento dell'impiego). cerco di spiegarvi cosa devo fare. premesso che lo ho gia' fatto con il 200, per esigenze commerciali lo devo fare anche con il 1200. nell'ob1 con il 200 attraverso la funzione fifo e add_tbl memorizzavo n ingressi che andavano alti a caso. li leggevo nello stesso ordine in cui erano andati alti ed ad ogni lettura (uno alla volta) settavo un merker che richiamava una sub nella quale un timer svolgeva tutto (gestione delle varie uscite). con il 1200 purtroppo ho scoperto che l'istruzione fifo non è presente (almeno così mi sembra) e la tabella delle priorità già sarà un problema realizzarla (si accettano suggerimenti). sono al punto di realizzare le varie sub (anzi blocchi) che svolgono il compito principale. molto desideroso di rendervi partecipi al mio progetto vi saluto cordialmente. Marino Link al commento Condividi su altri siti More sharing options...
step-80 Inserita: 5 aprile 2013 Segnala Share Inserita: 5 aprile 2013 Questo spiega tutto! Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora