amebaspugnosa Inserito: 25 gennaio 2006 Segnala Inserito: 25 gennaio 2006 Salve a tutti, essendo un "pivello" del PLC vi volevo chiedere qual'è il modo più semplice ed efficiente per scrivere blocchi funzionali così fatti:- presentino un'interfaccia che offra poche azioni- abbiano un funzionamento interno sequenziale e mostrino all'esterno il valore di alcune variabili interne- restituiscano al chiamante un OK di operazione conclusa.Praticamente il caso è questo: ho un pistone che può andare avanti e indietro (uscita A e I) ha due fondocorsa (FA e FI) e una pinza (P, 0 aperta, 1 chiusa) e vorrei realizzare un blocco che mi permetta di dare il comando spingi (pistone parte da dietro, chiude la pinza, avanza, torna indietro e apre la pinza) e il comando trascina (il pistone va avanti, chiude la pinza per afferrare un pezzo, torna indietro e apre la pinza). I due comandi mi restituiscono 1 quando terminano. Inoltre dovrei poter sapere se il pistone è in posizione avanti/indietro/in movimento.Io avevo pensato ad un FC con l'interfaccia:- ingresso bool Spingi- ingresso bool Trascina- uscita bool Esito- uscita int Stato (0 indietro, 1 avanti, 2 in movimento)L'unica idea però che mi viene per implementare internamente il blocco è quella di usare tanti merker quanti sono gli stati, ed associare all'attivazione di un merker l'esecuzione di alcune azioni. Mi sembra però un approccio *molto* inefficiente e dopo qualche modulo avrei finito i merker...Qualche suggerimento?
emanuele.croci Inserita: 25 gennaio 2006 Segnala Inserita: 25 gennaio 2006 Il sistema appositamente studiato da Siemens per questo è di usare gli FB (function block).Ti permettono di creare un blocco di dati associato ad ogni ISTANZA (ogni singola chiamata CALL FB...).Il tuo blocco dati ha parametri in ingresso, in uscita e pure dati interni, non accessibili tramite l'interfaccia standard.Quindi diventerebbeCALL FB1, DB1 (pistone 1) spingi: M50.0 trascina: M50.1 finecorsa: M50.2 .....CALL FB1, DB2 (pistone2)CALL FB1, DB3 (pistone 3)ecc ecc.....Che ne dici?Ciao, Emanuele
amebaspugnosa Inserita: 25 gennaio 2006 Autore Segnala Inserita: 25 gennaio 2006 Purtroppo non so usare AWL, so qualcosina di Ladder (ma molto poco rispetto al set KOP), ora direte "ok ma cosa pretendi di fare se le basi non le hai", ma purtroppo doveva essere una cosa simulata in Isagraph e poi si è trasformata in implementazione vera e propria...Pensavo di fare tutto in KOP...
emanuele.croci Inserita: 25 gennaio 2006 Segnala Inserita: 25 gennaio 2006 Non ho capito bene l'utilità o il senso della cosa....Credo che sia meglio farla in AWL piuttosto che in KOP; non credo sia particolarmente difficile se hai nozioni di programmazione.Forse un breve corso di STEP7 ti può essere utile, se hai il budget per farlo.Cultura generale che serve sempre....Ciao, Emanuele
Savino Inserita: 26 gennaio 2006 Segnala Inserita: 26 gennaio 2006 (modificato) Salve amebaspugnosa,Io avevo pensato ad un FC con l'interfacciaDunque,All'inizio, quando si ci trova in fase di progettazione,anche i piu' esperti prima d'implementare una FC parametrizzabile che ad esempio deva essere richiamata n volte, la ci architettano e collaudano per fare il task di una singola sequenza.Poi si va bene, basta cambiare le variabili globali impostati prima per quelle locali aggiungendo i parametri di I/O nella intestazione del blocco.Poi vai qui e comincia a capire cos'e' una sequenza di movimenti.Poi,supponiamo che hai una sequenza di 4 passi.Allora, ne prendo un po' di staff disponibile e parto con una base minima:M 0.0 = Richiesta di commando passo 1 => MW 10 = 1M 0.1 = Richiesta di commando passo 2 => MW 10 = 2M 0.2 = Richiesta di commando passo 3 => MW 10 = 3M 0.3 = Richiesta di commando passo 4 => MW 10 = 4M 1.0 = passo 1 eseguitoM 1.1 = passo 2 eseguitoM 1.2 = passo 3 eseguitoM 1.3 = passo 4 eseguitoM 2.0 = Consenzo alla esecuzione passo 1 M 2.1 = Consenzo alla esecuzione passo 2 M 2.2 = Consenzo alla esecuzione passo 3 M 2.3 = Consenzo alla esecuzione passo 4 T 1 = Tempo di controllo per il passo 1T 2 = Tempo di controllo per il passo 2 T 3 = Tempo di controllo per il passo 3 T 4 = Tempo di controllo per il passo 4M 3.0 = Tempo scaduto per il passo 1M 3.1 = Tempo scaduto per il passo 2M 3.2 = Tempo scaduto per il passo 3M 3.3 = Tempo scaduto per il passo 4M 4.0 = Anomalia presente passo 1........ M 4.1 = Anomalia presente passo 2........M 4.2 = Anomalia presente passo 3........M 4.3 = Anomalia presente passo 4........Continua te...... mi si e' fatto tardi... To be continued... Modificato: 26 gennaio 2006 da Savino
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