Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Ob40 Ob Di Interrupt Di Processo - IM151-7 CPU


Messaggi consigliati

Inserito:

Per una' applicazione mi serve generare un interrupt tramite ingresso digitale (4DI DC24V HF et200s)

in OB 40 ho inserito le istruzioni per resettare una uscita precedentemente settata in OB1.

ovviamente siccome mi serve resettare l'uscita immediatamente utilizzo l'istruzione TPAB, e fin qui

niente di strano. Ho provato ha monitorare tramite un oscilloscopio a due canali sia l'ingresso che l'uscita

e mi trovo una cosa che non mi aspettavo, l'uscita si spegne con un ritardo che va dai 8 mS a 19 mS rispetto

all' ingresso. Leggendo le caratteristiche tecniche sul manuale della IM151-7 CPU Et200s dicono che

l'interrupt ha un ritardo inferiore ai 20 mS, e questo mi andrebbe anche bene, ma io ho necessita' che il

ritardo sia sempre costante, altrimenti cosa me ne faccio di un interrupt ?

Il tempo di scansione del mio programma va da 14 a 22 mS.

Il problema e' dovuto a questo tipo di cpu oppure e' un problema che si ritrova anche in altri tipi di cpu?

Avete qualche suggerimento, ovviamente senza utilizzare schede tecnologiche che mi porterebbero

ad un costo aggiuntivo?

Mi starebbe bene che l'uscita mi ballasse meno di 3 mS.

Grazie per le vostre risposte

ciao

wally


Inserita:

Il problema che riscontri è normale; nell'OB40 è vero che comandi l'uscita digitale ma questo

NON forza la cpu a comandarla. Infatti essa verrà aggiornata SOLO a fine scansione del programma.

Quindi: in OB40, oltre a gestire la tua uscita, settati anche un merker che, all'uscita dell'OB40 userai

per saltare la scansione di tutti i restanti blocchi fino alla penultima linea dell'OB1 dove resetterai la tua

memoria (per sicurezza resettala anche in testa all'OB1 ... non si sa mai a secondo della pericolosità

dell'attrezzatura che automatizzi) e finalmente a fine OB1 la CPU ti aggiornerà l'uscita.

Prova e fammi sapere ... io ho gestito in questo modo un posizionatore con comando tramite I/O digitali.

Buon lavoro B)

Inserita:

Grazie jumpier per la tua interessante risposta.

Ma io non gestisco direttamente l'uscita A 38.0, ma utilizzo un bit M30.0,

una volta che resetto il bit M30.0 in OB40, alla riga sucessiva (sempre in OB40) ho messo

la seguente istruzione :

L MB30

T PAB38

Percio mi aspetto che l'uscita si aggiorni subito tramite l'istruzione T PAB.

ciao

wally

Inserita:

Si ma quand'è che la cpu trasferisce l'istruzione PAB alle uscite fisiche? <_<

Solo a fine scansione e cioè a fine OB1 ;) . Quindi ..... mi sa che devi

rivedere l'architettura della tua pplicazione :blink:

Inserita:

Se non ricordo male la PAB dovrebbe scrivere immediatamente l'uscita saltando i registri immagine che vengono aggiornati, quelli si, al termine del ciclo di scansione.

Piuttosto io penso ch eil ritardo variabile sia dato dai ritardi Hardware dei filtri di ingresso e di uscita. Dovresti usare ingressi veloci, quelli specifici per interupt, con filtro Hw settato al minimo valore; inoltre dovresti usare un'uscita a stato solido diretta sul rack, non remotata perchè hai il ritardo del bus che oltre ad essere variabile è anche non trascurabile.

Inserita:

Anche secondo me l'istruzione PAB (PAW, ...) accede direttamente alla periferica senza aspettare la fine del ciclo.

Ciao

Inserita:

Io di solito prima assegno l'uscita (es U M30.0 = A38.0), poi faccio il T PAB da immagine uscite a periferia ( L AB38 T PAB38).

Se fai subito l mb30 t pab38 secondo me alla fine del ciclo riscrive l'uscita con l'immagine che non è aggiornata.

Inserita:

Non volevo dare false informazioni a "wally" ma forse ho omesso di chiedere tipo cpu e firmware ... :(

Ad esempio con CPU 6AG1 315-2AG10-2AB0 / V2.0 ho dovuto fare come spiegato nei miei precedenti post

(confermatomi poi anche dall'hotline) altrimenti picche per l'aggiornamento delle uscite ad interrupt.

Inserita: (modificato)

Concordo pienamente con quanto dice Livio .

L'ingresso dell'et200s ha sicuramente un tempo di fitro (anche se basso) inoltre qualcosa (msec) si perde perchè passi attraverso una periferia decentrata .

Pertanto se tu con l'oscilloscopio leggi l'ingresso al morsetto della scheda ingressi , la differenza tra l'ingresso e l'uscita è molto probabilmente data dal tempo di acquisizione e trasferimento alla cpu dell'ingresso stesso (come minimo) .

Per quanto riguarda il tempo di esecuzione del comando inoltre è opportuno utilizzare un comando inserito in ob periodico (a tempo costante) .

Pertanto ti consiglierei di inserire il test dell'ingresso ed il relativo comando dell'uscita in un ob a tempo periodico se non ricordo male OB35 etc. (vedi manuali Siemens).

Ciao

bigalex :blink:

Modificato: da bigalex
Inserita:

Concordo con Livio.

Le periferie remote (tipo et200) utilizzano il bus che per quanto veloce possa essere in realtà introduce sempre dei ritardi. Confermo che le istruzioni PAx modificano immediatamente lo stato delle uscite (che vengono comunque rinfrescate alla fine della scansione con l'immagine dei processi di uscita).

Se serve una reazione veramente veloce è necessario oltre a gestire l'interrupt negli appositi OB (in questo caso il 40) gestire anche le uscite con schede veloci progettate per tale scopo.

ciao

Inserita: (modificato)

i plc svolgono un ciclo di lavoro principalmente basato su tre sezioni:

1- acquisizione input

2-elaborazione programma utente

3-scrittura output.

Considera il fatto che anche se la scheda fosse sul rack del plc , e non in profibus , c'e' sempre il

bus K , e veloce quanto sia non sara mai real time , comunque in pochi ms si dovrebbe poter

fare che dici usando l'istruzione speciale detta sopra.

Con le vecchie cpu si arrivava a tempi di scansione ciclo anche di 50 ms

Adesso le nuove cou sono piu veloci , ma per un programmino abbastanza normale e semplice , impiegano

sempre 10-15 ms.

Da quanto ho capito , l'esecuzione del OB e' velocissimo , hai solo un'istruzione di set o reset .

Solo per curiosita', a cosa ti serve un rapido intervento di quesot genere , chesso ' per pilotare un asse

o cosa, se la cosa non e' segreta ?

ciao

walter

p.s.come di ce giustamente livio , bisogna tenere in considerazione i ritardi hw e filtri vari .

Modificato: da walterword
Inserita:

Grazie a tutti per le risposte, alcune informazioni hardware del progetto:

1 - cpu IM151-7 e' praticamente una CPU tipo 313 con involucro tipo ET200s,

percio' e' inserita direttamente sul bus ET200s

2 - la scheda di ingresso che genera l'interrupt e' il modello High Future con filtro di ingresso = 0,1 mS

L'interrupt veloce :( mi serve per fermare un traino di un motore pilotato

da un inverter Siemens MM440.

Dopo svariate prove e leggendo il manuale della cpu in questione (tempo di elaborazione dell'interrupt

< di 20 mS) mi sono convinto che con questa cpu non potevo ottenere una precisione elevata

di fermata tramite OB40 (8 mS di indecisione = +- 5 mm di indecisione sullo stop) e allora ho messo

una scheda di posizionamento che avevo in casa per et200s con uscite digitali (tipo marcia veloce/lenta)

per pilotare direttamente il micromaster.

grazie

wally

Inserita:

prova ad esaminare bene il drive , magari c'e' la possibilita' di gestire degli I/O veloci direttamente su di esso , con l'opportuna parametrizzazione .

Ci sono dei drives per esempio che gestiscono direttamente encoders e quindi posizionamenti senz apassare dal plc.

Vedi dal manuale del drive se si puo fare una cosa del genere .

Molti drives incorporano funzioni svariate e funzionanti .

ciao

walter

Inserita: (modificato)

Ho esaminato le funzionalita' tipo PLC del micromaster (Flip Flop, porte ANDecc. ecc.), e le ho anche

provate, purtroppo tali funzionalita' erano svolte dal Micromaster 440 con un ciclo di 132 mS

:angry: , praticamente inutilizzabili per posizionamenti precisi.

Comunque adesso con la scheda nel plc per il posizionamento ho una indecisione di 1 mm e sono

a posto.

ciao

wally

Modificato: da wally

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...