Vai al contenuto
PLC Forum


Campionamento analogica con interrupt/ingressi veloci


Messaggi consigliati

Inserito:

Ciao a tutti! Ho a disposizione una cpu 1214 DC/DC/DC con TIA15.1 e sto realizzando un'applicazione che prevede il movimento di un asse. Durante una parte del movimento dovrei collezionare una serie di valori (posizione data dall'encoder e forza data da una cella di carico) campionandoli a circa 3000 campioni/secondo. Dato che il tempo di ciclo della cpu si aggira intorno a 3/4 ms non riesco a campionarli con il ciclo normale ma dovrei mettere in piedi un OB di interrupt. Ho però notato che il minimo valore che posso inserire nelle proprietà di un OB è 1 ms e non mi basta ancora. Sto ora cercando di capire se riesco a sfruttare in un qualche modo gli ingressi veloci...

Qualche idea per risolvere con l'hardware che ho in mano oppure l'unica strada è passare ad un 1500 visto che ha prestazioni superiori?


Inserita:
2 ore fa, EP-Automation ha scritto:

Qualche idea per risolvere con l'hardware che ho in mano oppure l'unica strada è passare ad un 1500 visto che ha prestazioni superiori?

Se devi campionare 4000 volte al secondo hai un periodo di 250µs.

Con quella CPU è già un problema usare l'interrupt ad 1ms, visto che per servire l'interrupt dovresti interrompere il programma almeno 4 volte a ciclo, ammesso che la routine di servizio interrupt sia brevissima.

 

A mio parere sarebbe più logico usare un sistema embedded se necessiti di quella velocità di campionamento, oppuire verificare se CPU più performanti ti consentono interrupt a 250µs.

Inserita:
20 minuti fa, Livio Orsini ha scritto:

oppuire verificare se CPU più performanti

Comunque non esistono schede analogiche che acquisiscono con quelle velocità, secondo me non è un lavoro per un plc.

Inserita:

Effettivamente sono velocità abbastanza alte anche se l'interrupt sarebbero due semplici MOVE quindi non dovrebbe rallentare troppo. E' comunque vero che c'è bisogno dell'analogica che riesca a stare dietro a tutto altrimenti è inutile (e questo dettaglio mi ero scordato di controllarlo). Ora vedrò come poter risolvere altrimenti cambiero strada. Grazie!

Inserita:

Esistono strumenti apposta per queste acquisizioni e valutare le curve forza spostamento, es Kelmer o Buster.

 

Inserita:

Ciao, quindi il PLC che controlla l'asse dovrebbe collezionare la posizione..ma se il controllore cicla a 3msec quale è il senso di collezionare dati a meno di questo tempo? Fattibilità a parte.

Inserita:

Se devi fare 3000 campionamenti al secondo, il PLC non è l'oggetto giusto.

Poi dovresti anche dire per quanto tempo devi campionare, e dove vanno a finire i campionamenti.

Ma, indipendentemente da questo, vale sempre quanto ho scritto nella prima riga: non è un lavoro da PLC.

Inserita:
13 ore fa, drn5 ha scritto:

.ma se il controllore cicla a 3msec quale è il senso di collezionare dati a meno di questo tempo?

 

Con i dati che ci hai fornito non è un'applicazione per PLC (e siamo 3 su 3 con questa valutazione); se ci spieghi un po' meglio e con maggiori particlari tutta l'applicazione si potrà giudicare meglio.

Inserita:

Ciao,

mi aggiungo anch'io: a quelle velocità normalmente utilizziamo un PC con una apposita scheda di acquisizione (es. National Instruments) e, ovviamente, un applicativo scritto ad hoc; queste schede sono, in pratica, strumenti di misura che permettono di acquisire N misure in un tempo T; prima di imposta la scheda con una o due funzioni, poi si avvia la misura.

Inserita:
1 ora fa, drugo66 ha scritto:

utilizziamo un PC con una apposita scheda di acquisizione (es. National Instruments) e

 

Ottima scelta, la condivido.

Inserita: (modificato)

Ti hanno risposto bene o male tutti! Saresti in situazione border line anche con CODESYS o B&R, il secondo può arrivare con molti PLC a 250us, il primo potresti (A patto di avere HW adeguato) spingerlo fino a 50-100us (Giusto questi sabato e domenica ho testato un DAC ed un ADC su scheda FPGA Ethercat a 50, 100 e 250us, tieni conto che a 50 e 100 perdevo diversi campioni), ma sei veramente borderline e la scelta delle apparecchiature sarebbe da suicidio.
Ci sono schede come le ST3M che ti permettono tranquillamente di campionare nel range dei 50-100ns, e ti danno un certo margine di sicurezza, puoi bufferizzare ed inviare pacchetti.

L'unico vero vantaggio che avresti con CODESYS è che con una licenza puoi usare più master, quindi potresti averne uno a 250us per il campionamento ed uno più tranquillo per il resto del campo.

Solo per pura divagazione...
Nelle foto allegate vedi i miei test di campionamento a 50us.
Li ho fatti con CODESYS installato su linux con un kernel con le patch RT_PREEMPT ed il CPU pinning. Tuttavia il jitter è inaccettabile per viaggiare a quel campionamento, su un i3 di terza generazione non si può scendere sotto 250us.

Come si vede ho dovuto disabilitare gli errori da watchdog e si vede un punto esclamativo su ethercat! Tutto fila liscio fino a 250uS.
test50us1.thumb.jpg.6fb2d78832c0e21de0bf844a62f48fce.jpg

Screenshot_20200902_152453.thumb.png.12772742a3cd8e1ad7c9c1e788618870.png

Modificato: da Marco Mondin

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