Vai al contenuto
PLC Forum


Contatto Immediato... Questo Sconosciuto!


Messaggi consigliati

Inserito:

Ciao a tutti

è la prima volta che scrivo e prendo quindi l'occasione per presentarmi (oltre che fare la domanda)

Sono un ing. Informatico e da sempre, per passione e per lavoro ho avuto a che fare con il mondo dell'elettronica/elettrico

Attualmente per lavoro stò imparando a programmare ed utilizzare plc s7-200 (per poi passare ai mitsubishi e quini B&R)

Durante la lettura del manuale siemens "S7-200 programmable controller system manual" mi sono imbattuto nei contatti immediati, ma non sono riuscito a capire a cosa possano servire e in quali situazioni rivelarsi utili. (in ogni caso mi sembra che questo manuale sia fatto molto male... megli i datasheet della microchip... anche se ovviamente sono due cose differenti...)

Ovviamente conosco la procedura di scansione ed elaborazione del plc: lettura ingressi, "calcolo" dei valori di uscita, settaggio uscite.

(Però devo dire che per uno che è stato sempre abbituato a lavorare in procedurale e pensare il codice come operazioni sequenziali, passare al mondo dei plc si trova un poco smarrito... :) )

Sapete darmi una risposta?

Grazie


Inserita:

Ciao,

la definizione di "contatti immediati" mi fa pensare solo ad una grossolana traduzione di ingressi veloci; sono quegli ingressi che sfruttano la task di interrupt del ciclo programma per eseguire il comando attribuito.

Per esempio, le uscite in quadratura di un encoder che possono arrivare a frequenze piuttosto elevate (> 5 KHz), potrebbero non essere interpretate nel giusto modo da una cpu con un tempo ciclo di qualche centinaio di millisecondi. Essendo ingegnere, conoscerai bene la modalità operativa e di gestione delle cpu: acquisizione dell'immagine di processo degli ingressi, task di elaborazione del programma, task di interrupts, immagine di processo delle uscite; se in questo tempo non si tenesse conto di ingressi ad elevata frequenza, parte di essi andrebbero persi.

Inserita: (modificato)

Umh... un errore di traduzione non credo... visto che sul manuale in inglese viene chiamato come "immediate contacts" (o meglio una mia traduzione errata). Nella descrizione (del manuale tradotto) riporta quanto segue:

"Contatti diretti

I contatti diretti non dipendono dal ciclo di scansione

dell’S7--200 per aggiornarsi, ma si aggiornano direttamente.

Le operazioni a contatto diretto normalmente aperto (LDI, AI

e OI) e normalmente chiuso (LDNI, ANI e ONI) leggono il

valore dell’ingresso fisico quando vengono eseguite, ma

senza aggiornare il registro dell’immagine di processo."

Pagina 76, Sistema di automazione S7-200, Manuale di sistema

Mi confermi quindi quello che mi hai detto? vengono utilizzati per segnali veloci? e se si, mi puoi indicare la frequenza al di sopra della quale deve utilizzarli? (o eventualmente la formula di calcolo in base alla frequenza di cpu etc)

Grazie mille

Modificato: da pastus
Inserita: (modificato)

Normalmente si scrivono le uscite nei registri immagine e si leggono gli ingressi memorizzati nei registri immagine; al termine del ciclo di scansione i registri immagine delle uscite sono copiate sulle uscite fisiche e lo stato degli ingressi fisici viene memorizzato nei registri immagine.

Se si usano le istruzioni di scrittura diretta si scrve immediatamente nell'uscita fisica. Identicamente se si usano istruzioni di lettura diretta si leggerà lo stato fisico dell'ingresso corrispondente.

Questa tecnica è usata quando ci si vuole sganciare dai tempi di esecuzione del programma.

Come esempio esplicativo.

Immagina di eseguire un posizionamento con due camme: una abbastanza lunga che comanda il rallentamento, l'altra molto corta, per questioni di precisione, per posizionare.

Nel programma MAIN (OB1) richiamo più volte la sub che legge direttamente l'ingresso corrispondente alla camma di rallentamento, se l'ingresso è zero (proximity non impegnato) esco dalla sub e continuo con il programma corrente; nel caso rilevi la cama di rallentaemento, do il comando di rallentamento scrivendo direttamente nella periferia, e ciclo sulla lettura diretta della camma di stop. Riconosciuto lo stop scrivo direttamente l'uscita del comando di stop, poi torno al normale programma.

Ovviamente questi ingressi potrebbero essere collegati ad ingressi veloci, legati ad interrupts, ivitando il polling.

Modificato: da Livio Orsini
FattoreDiPotenza
Inserita:
ma non sono riuscito a capire a cosa possano servire e in quali situazioni rivelarsi utili.

Il maule mi sembra abbastanza chiaro:

Contatti diretti

I contatti diretti non dipendono dal ciclo di scansione

dell’S7-200 per aggiornarsi, ma si aggiornano direttamente.

Le operazioni a contatto diretto normalmente aperto (LDI, AI

e OI) e normalmente chiuso (LDNI, ANI e ONI) leggono il

valore dell’ingresso fisico quando vengono eseguite, ma

senza aggiornare il registro dell’immagine di processo.

Il contatto diretto normalmente aperto è chiuso (on) quando

l’ingresso fisico (bit) vale 1; il contatto diretto è chiuso (on)

quando l’ingresso fisico (bit) vale 0. Le operazioni di

contatto normalmente aperto caricano, combinano tramite

AND oppure combinano tramite OR direttamente il valore

dell’ingresso fisico nel primo valore dello stack; le

operazioni di contatto normalmente chiuso caricano,

combinano tramite AND oppure combinano tramite OR il

valore dell’ingresso fisico negato nel primo valore dello

stack.

FONTE: Sistema di automazione S7-200 , Manuale di sistema . 6ES7298-8FA24-8EH0

E' un mezzo semplificato per eseguire delle operazioni "veloci" senza l'uso di interrupt che richiedono una più specifica impostazione.

Oltretutto il processo di interrupt non è applicabile a tutti gli I/O presenti sul PLC , questa variante invece sì , persino ai moduli aggiuntivi di I/O.

La spiegazione semplificata di Livio è esatta , l'interrogazione di un "NI" non proviene dall'immagine ingressi ma è dipendente dallo stato fisico dell'ingresso in quel preciso istante.

Quindi si tiene in considerazione anche l'evenienza in cui lo stato di quello specifico ingresso possa cambiare appena dopo l'aggiornamento IPI.

Questa operazione a differenza di un interrupt non è completamente slegata dall'eleborazione programma in quanto per essere eseguita la scansione deve raggiungere quel punto specifico del programma tenendo conto di tutto ciò che viene scritto prima di esso.

Ha anche un costo in risorse , l'uso di un NI comporta un tempo di elaborazione compreso tra 15 e 21 microsecondi/istruzione contro 0,22 micorsecondi di una interrogazione normale.

Esistono anche le assegnazioni dirette alle uscite =I , SI , RI , che operano con il medesimo principio delle interrogazioni , andando a scrivere una volta eseguite direttamente il nuovo valore sull'usicta fisica , anche loro con un bel contributo in termini di tempo di esecuzione.

Non è una novità , molti PLC permettono la medesima operazione , ma spesso in alcuni casi ci si limita a "forzare" un nuovo aggiornamento IPI completo prima di interrogare un ingresso o più e poi a "forzare" un aggiornamento IPU dopo avere assegnato il valore ad un uscita.

Questo metodo ha l'unico pregio di essere semplice.

Come tutte le cose ha dei pro e dei contro , anche se i contro sono più dei pro.

Se usata alla fine o verso la fine della scansione codice , perde molta della sua utilità.

Non è veloce quanto un vero e proprio aggiornamento immagine , e contribuisce ad umentare il tempo totale di esecuzione del programma , a scapito di altre funzionalità.

Non sono consentite assegnazioni di peso maggiore al BIT.

Và usata con moderazione.

L'unico esempio pratico che mi viene in mente è aumentare la precisione e ripetibilità di posizionamento di dispositivi che non usano controlli di tipo continuo.

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