EP-Automation Inserito: 1 settembre 2020 Segnala Inserito: 1 settembre 2020 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?
Livio Orsini Inserita: 1 settembre 2020 Segnala Inserita: 1 settembre 2020 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.
acquaman Inserita: 1 settembre 2020 Segnala Inserita: 1 settembre 2020 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.
EP-Automation Inserita: 1 settembre 2020 Autore Segnala Inserita: 1 settembre 2020 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!
acquaman Inserita: 1 settembre 2020 Segnala Inserita: 1 settembre 2020 Esistono strumenti apposta per queste acquisizioni e valutare le curve forza spostamento, es Kelmer o Buster.
drn5 Inserita: 1 settembre 2020 Segnala Inserita: 1 settembre 2020 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.
batta Inserita: 1 settembre 2020 Segnala Inserita: 1 settembre 2020 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.
Livio Orsini Inserita: 2 settembre 2020 Segnala Inserita: 2 settembre 2020 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.
drugo66 Inserita: 2 settembre 2020 Segnala Inserita: 2 settembre 2020 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.
Livio Orsini Inserita: 2 settembre 2020 Segnala Inserita: 2 settembre 2020 1 ora fa, drugo66 ha scritto: utilizziamo un PC con una apposita scheda di acquisizione (es. National Instruments) e Ottima scelta, la condivido.
Marco Mondin Inserita: 2 settembre 2020 Segnala Inserita: 2 settembre 2020 (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. Modificato: 2 settembre 2020 da Marco Mondin
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora