Vai al contenuto
PLC Forum


Campionamento analogica con interrupt/ingressi veloci


EP-Automation

Messaggi consigliati

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?

Link al commento
Condividi su altri siti


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.

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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!

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

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.

Link al commento
Condividi su altri siti

1 ora fa, drugo66 ha scritto:

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

 

Ottima scelta, la condivido.

Link al commento
Condividi su altri siti

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
Link al commento
Condividi su altri siti

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