Vai al contenuto
PLC Forum


Come Realizzare Macchine Sequenziali - Qualche chiarimento su come scrivere blocchi che realizzino una funzio


Messaggi consigliati

Inserito:

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:

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 diventerebbe

CALL 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

Inserita:

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:

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

Inserita: (modificato)

Salve amebaspugnosa,

Io avevo pensato ad un FC con l'interfaccia

Dunque,

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 = 1

M 0.1 = Richiesta di commando passo 2 => MW 10 = 2

M 0.2 = Richiesta di commando passo 3 => MW 10 = 3

M 0.3 = Richiesta di commando passo 4 => MW 10 = 4

M 1.0 = passo 1 eseguito

M 1.1 = passo 2 eseguito

M 1.2 = passo 3 eseguito

M 1.3 = passo 4 eseguito

M 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 1

T 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 4

M 3.0 = Tempo scaduto per il passo 1

M 3.1 = Tempo scaduto per il passo 2

M 3.2 = Tempo scaduto per il passo 3

M 3.3 = Tempo scaduto per il passo 4

M 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... :o

To be continued...

Modificato: da Savino

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...