Vai al contenuto
PLC Forum


Acquisizione Dati - tempo di campionamento 5ms


IMM-Domenico

Messaggi consigliati

In base alla vostra esperienza, pensate che sia una buona idea utilizzare un PLC per acquisire un segnale e visualizzarlo su PC?

Parlo di un segnale analogico da acquisire con un tempo di campionamento di 5 ms (costante).

Che PLC pensate sia più adatto per un'applicazione di questo tipo?

Attualmente ho esperienza solo con Siemens (ma si fa in fretta ad imparare).

Ci sono sicuramente soluzioni migliori per acquisire segnali, ma il PLC dovrò necessariamente inserirlo in questo sistema per altri motivi, quindi me lo ritrovo "gratis".

Grazie.

Domenico

Link al commento
Condividi su altri siti


In base alla vostra esperienza, pensate che sia una buona idea utilizzare un PLC per acquisire un segnale e visualizzarlo su PC?

Parlo di un segnale analogico da acquisire con un tempo di campionamento di 5 ms (costante).

Certo che 5 ms e' un valore di tempo molto basso.. potresti perdere qualche colpo (anche via interrupt)..

Penso il meglio sia installare una scheda AI nel PC direttamente !

Link al commento
Condividi su altri siti

5 ms, come dice anche Savino, è un tempo piuttosto basso per un plc, anche se non impossibile. Penso però che questa acquisizione non sia fine a se stessa, ma deva essere trasferita ad un pc. Credo che nessun tipo di comunicazione ti permetta di inviare dati ad un pc con aggiornamento ogni 5ms.

Se il campionamento deve avvenire solo per brevi periodi potresti creare un buffer nel plc e trasferire poi il tutto al pc.

Se invece il campionamento deve essere continuo, ritengo che l'unica soluzione sia l'adozione di una scheda dedicata da installare direttamente su pc.

Modificato: da batta
Link al commento
Condividi su altri siti

Grazie mille... lo sospettavo ma conservavo ancora un po' di speranza.

Per quanto riguarda la parte di trasmissione verso il PC, non è necessario che avvenga ad ogni campionamento, ma i dati possono essere anche raggruppati in pacchetti, purchè si riesca a ricostruire sul PC la sequenza corretta di dati campionati.

Un campionamento di 5 ms equivale a 200 campioni al secondo. Utilizzando 32 bit abbiamo 800 bytes/s (oltre ovviamente all'overhead), e mi sembra più che fattibile, non pensate?

Volendomi accontentare di un tempo di campionamento maggiore, che tempo pensate che possa essere fattibile? Quale potrebbe essere il PLC più adatto?

Tutti gli altri dati da leggere sono molto lenti, mi posso accontentare di pochi campioni al secondo.

Grazie ancora, buon lavoro.

Link al commento
Condividi su altri siti

Un campionamento di 5 ms equivale a 200 campioni al secondo. Utilizzando 32 bit abbiamo 800 bytes/s
Dunque 800 bytes al secondo non sono pochi.. qual'e' sarebbe la durata per il ciclo di campionamento..? intendo dire per quanto tempo pensi campionare..
Volendomi accontentare di un tempo di campionamento maggiore, che tempo pensate che possa essere fattibile?
cosa devi campionare..?
Link al commento
Condividi su altri siti

Non mi intendo di PLC (su questo lascio la parola a Savino) Se fai due conti

800 byte/sec visto che la uart trasmette 10bit ogni byte sono 8000bit/sec aggiungi intestazione coda checksum ecc.. se vai a 9600bit/sec sei in trasmissione continua e dal PC puoi inviare solo qualche ACK di conferma ricezione.

Puoi ocntinuare a campionare a 5ms ma devi settare la velocità della seriale molto alta (Savino si può?)

Una uart standard arriva a 115000bit/sec a spanne impieghi 1/10 del tempo rispetto a 9600bit/sec per trasmettere i dati

Potresti fare così

doppio buffer da 200 campioni = 800byte

Mentre riempi uno con le acquisizioni invii l'altro e ogni secondo scambi i buffer.

Link al commento
Condividi su altri siti

qual'e' sarebbe la durata per il ciclo di campionamento..?

diverse ore o addirittura giornate intere...

cosa devi campionare..?

l'uscita di un sensore di pressione. Quando vi chiedo un tempo secondo voi fattibile intendo dire dal punto di vista del PLC... per quanto riguarda il mio segnale sto facendo le mie valutazioni, so per certo che con 5ms ha sempre funzionato tutto da anni, ora stiamo valutando le conseguenze di un campionamento più lento.

Per quanto riguarda il discorso del doppio buffer sembra che non faccia una piega. Comunque posso prendere in considerazione anche altri tipi di interfaccia più veloci, come ad esempio ethernet, non ho vincoli da questo punto di vista.

Modificato: da IMM-Domenico
Link al commento
Condividi su altri siti

diverse ore o addirittura giornate intere...
behh.. allora campionare sul PLC la vedo difficile.. solo in 1 ora di campionamento, a una frequenza di 800 bytes al secondo fai quasi 3 MB di dati ..? ...solo delle CPU con 2 MB for data costarebbero un patrimonio.. con queste caratteristiche, dovresti passare definitivamente a campionare su PC !
l'uscita di un sensore di pressione
se vuoi restare sul PLC, quello che potresti fare sarebbe di alzare il tempo di clock per il campionamento e/o fare delle medie aritmetiche ogni tot, campionare il resultato in un'altra area dati... azzerare e ricomminciare.. poi ogni tanto, salvi sul PC...
Puoi ocntinuare a campionare a 5ms ma devi settare la velocità della seriale molto alta (Savino si può?)
accacca, non vedo qui il problema.. piuttosto sarebbe nel PLC... Io andrei a campionare direttamente sul PC.

Link al commento
Condividi su altri siti

in 1 ora di campionamento, a una frequenza di 800 bytes al secondo fai quasi 3 MB di dati

beh, i dati non ho intenzione di tenermeli per un'ora sul PLC, devono essere in continuo visualizzati sullo schermo e analizzati nel giro di pochi secondi. Mi dovrebbe bastare una cache di qualche secondo al massimo.

Salendo a 10 ms pensate che sia più facile realizzare qualcosa del genere? Non riesco a credere che nel 2007 esistono PLC con tali prestazioni.

Ricorrere ad una scheda di acquisizione mi creerebbe non pochi problemi nel software lato PC per la gestione contemporanea con il PLC, oltre ad un costo maggiore di hardware e licenze. Sarebbe bello evitarlo.

Link al commento
Condividi su altri siti

Non riesco a credere che nel 2007 esistono PLC con tali prestazioni.
mmm, qui parli di campionamento... poi, parlaci dal HMI, cosa pensi utilizzare ... uno SCADA od una API ad hoc ? Connessione MPI ? Comunque, se utilizzi il PLC come driver I/O e campioni in un pooling continuo su PC, potresti riuscire come bello ad stare entro il secondo.. cioe' 3600 campioni all'ora.. (mica pochi).
Link al commento
Condividi su altri siti

parlaci dal HMI, cosa pensi utilizzare ... uno SCADA od una API ad hoc ?

OPC penso che non sia adatta per queste cose, quindi dovrò probabilmente utilizzare delle librerie native. Farò comunque questa scelta dopo aver trovato l'hardware giusto. Se troverò un PLC all'altezza mi adeguerò di conseguenza.

3600 campioni all'ora.. (mica pochi)

sì... in un anno sarebbero ancora di più... però il mio segnale varia abbastanza velocemente, e devo tenere sotto controllo il ciclo di lavoro che dura circa un secondo. Con un campione al secondo ci faccio poco.

Link al commento
Condividi su altri siti

sì... in un anno sarebbero ancora di più... però il mio segnale varia abbastanza velocemente, e devo tenere sotto controllo il ciclo di lavoro che dura circa un secondo. Con un campione al secondo ci faccio poco.
Allora con i PLC ci farai poco, anzi se tu vuoi campionare cicli di 1 sec., ci fai niente.... dovresti inviare il segnale/segnali direttamente a una scheda input incastronata sul PC. Oppure fai come ti ho descritto sopra... salva i 200 campioni (1 sec) in una buffer... inviali al PC... azzera.. ricommincia.. Vedi, a volte, i PLC non sono adatti per certe tipi di applicazioni... e questo non vuoldire affatto che sarebbero dei sistemi obsoleti Modificato: da Savino
Link al commento
Condividi su altri siti

Ok Savino, grazie del tuo aiuto... io però sono un po' testardo, penso che prima o poi ci proverò lo stesso, mi servirà da esperienza visto che ne ho poca.

Sarei curioso di sentire il parere anche di altre persone, siete tutti d'accordo con Savino?

Grazie, buon weekend a tutti.

Link al commento
Condividi su altri siti

In base alla vostra esperienza, pensate che sia una buona idea utilizzare un PLC per acquisire un segnale e visualizzarlo su PC?

Parlo di un segnale analogico da acquisire con un tempo di campionamento di 5 ms (costante).

Se non devi usare il segnale per successive elaborazioni nel PLC, la soluzione PLC la escluderei. Se devi acquisire, visualizzare e, eventualmente elaborare con trends, medie e quant'altro la soluzione ottimale, e anche meno costosa, è una scheda professionale, come quelle di National instruments, da inserire in PC. Acquisisci velocemente, non hai praticamente limiti di memoria e puoi fare tutte le successive elaborazioni-visualizzazzioni senza eccessive complicazioni.

Se proprio devi usare un PLC, 5ms un tempo di campionamento di 5 ms può creare qualche problema anche solo per leggere il convertitore AD della periferia; non tanto per il tempo di acquisizione, ma per la difficoltà che potrebbe creare un timer così veloce. Con 10 ms, ovviamente, le cose migliorano. Però ti rimane sempre il problema della trasmissione al PC. La soluzione miglore sarebbe quella di integrare nel PC una scheda profibus e connettere PLC-PC in profibus o, comunque, con un bus di campo veloce almeno come profibus. Però se analizzi i costi vedi che la soluzione PC + scheda acquisizione dati porfessionale è decisamente meno costosa.

Link al commento
Condividi su altri siti

Ok, piano piano mi sto convincendo... però è un peccato che i PLC siano così poco flessibili. Appena si esce un po' dal seminato escono alla luce dei fortissimi limiti. Un campionamento di 5 ms tutto sommato non è molto veloce.

Speravo di riuscire a sfruttare la presenza del PLC, visto che dovrò necessariamente inserirlo (e collegarlo al PC) per altri motivi.

La presenza di un altro hardware per l'acquisizione potrebbe indurmi, tra l'altro, qualche problemino sulle tempistiche, visto che ci saranno sicuramente dei ritardi diversi rispetto al PLC.

Certo, questo "contrattempo" mi induce ad una riflessione spontanea: sarebbe molto interessante, sia dal punto di vista tecnico, sia dal punto di vista commerciale, la nascita di un PLC che riesca a rendere fruibili i progressi tecnologici del terzo millennio, magari con un progetto simil-open-source sia dal punto di vista dell'hardware che del software.

Nel mio caso, per esempio, con un PLC più flessibile sarei riuscito a gestire questa situazione con un solo hardware, l'acquisto di una sola licenza per il software, e la gestione di una sola tecnologia di comunicazione, ricevendo gratis la sincronizzazione dei segnali, e un aumento di affidabilità, visto che la scheda di acquisizione, non essendoci, non si romperà mai.

Cosa ne pensate?

Link al commento
Condividi su altri siti

Hai una soluzione che integra PLC e PC. Siemens credo abbia ancora in catalogo M7. In un unico rack hai la CPU del PLC e le periferiche di un PC industriale e gli I/O dello S7300 con le relative espanssioni. Window gira come Job del SO del PLC che è RTOS. Ovviamnete si perde molto della facilità di programmazione tipica del PLC, però le prestazioni crescono di molto.

I PLC sono pensati e costruite per risolvere una ben determinata tipologia di problemi legati all'automazione industriale. Il tuo problema è problema di data logging.

Se si vuole facilità di programmazione è automatico avere dei limiti.

Anche altri prodotti, come quelli che ho citato in precedenza, hanno dei limiti anche più grandi di quelli dei PLC; però sono pensati per risolvere altre tipologie di problemi.

Ho visto un bel progetto OPEN Source di PLC basato su HW tipo PC e SO simil linux. E' stato sponsorizzato da Automation.com, che ha motlo seguito in USA e non solo, però a oggi non ci sono molti sistemi installati ed i suoi limiti non sono molto diversi da quelli dei PLC più moderni.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

Il tuo problema è problema di data logging.

Sì vi ho parlato solo di questo... in realtà tutto il resto è un tipico problema di automazioe industriale perfettamente affrontabile con un PLC (controllo temperatura, apertura valvole, temporizzazioni ecc). C'è solo questo segnale da acquisire.

Dev'essere necessariamente acquisito poiché dev'essere elaborato dal PC e i risultati di queste elaborazioni vanno registrati su un database.

Ovviamente si tratta di un caso particolare, e mi rendo conto che nella stragrande maggioranza dei casi i PLC svolgono egregiamente i loro compiti.

La mia sorpresa nasce soltanto dal fatto di scoprire che la linea di confine tra PLC e qualcosa di più performante è così netta, e un segnale relativamente lento (uno solo) non può essere acquisito. Evidentemente il gioco non vale la candela.

Mi informerò su questo progetto di PLC, evidentemente anche qualcun'altro aveva già avuto una delusione simile alla mia.

Link al commento
Condividi su altri siti

La mia sorpresa nasce soltanto dal fatto di scoprire che la linea di confine tra PLC e qualcosa di più performante è così netta, e un segnale relativamente lento (uno solo) non può essere acquisito.

Il problema di fondo non è l'acquisizione ma la temporizzazione e la trasmissione dei dati. La temporizzazzazione può essere risolta con un interrupt a tempo, anche se 5 ms è un periodo piuttosto rapido e potrebbe dare qualche problema, con le nuove CPU penso si possa anche faresenzaproblemi. Ipotizzando che la funzione di lettura diretta della periferia per leggere il convertitore AD consumi in totale <=0.5 ms avresti il 90% del tempo per risolvere il rimanente programma di automazione.

Rimane la trasmissione del dato letto al PC. Se il tuo PLC è già master porfibus, la trasmissione di questo dato praticamente non grava sulla CPU perchè la gestione del bus di campo è servita da un processore specifico. Ti rimane lo slave sul PC, ma è solo questione di costi da valutare.

Se invece non hai bus di campo, ma ti affidi ad una periferica seriale sul PLC, anche se viene vista dalla CPU solo come locazione di memoria, rimane il tempo di trasmissione. A 9600 baud, se trasmetti 5 bytes, impieghi più di 5ms; anche se riduci la trasmissione ai soli 2 bytes della misura, impieghi comunque >2ms. Diversamente se riesci a salire a 192 kbauds impiegheresti solo 26us per 5 bytes. Però il PLC non credo abbia la comunicazione seriale così veloce.

Come vedi il limite più grande non è dato dal PLC, ma dalla comunicazione.

L'acquisizione di un canale di AD da parte di S7-300 credo, se la memoria non mi tradisce, sia eseguita in <100us. Acquisire un segnale ogni 5ms è possibile, io l'ho fatto e con il segnale acquisito ho anche effettuato una regolazione, sempre campionando con periodo di 5 ms.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

Con un modulo ethernet non si dovrebbe riuscire a raggiungere velocità maggiori rispetto ad una comunicazione seriale? In linea di principio sono almeno 10 Mbit/s. Se non ci sono altri dispositivi nella rete non ci sono problemi di collisioni, e comunque la non deterministicità può essere aggirata con una cache di dimensione opportuna. Se proprio si dovesse perdere qualche campione, in questo caso specifico, non è la fine del mondo.

Con il driver OPC che ho io non si possono impostare meno di 10 ms come tempo di campionamento, però a pensarci bene anche questo problema si aggira utilizzando una cache... l'importante è che tra l'inizio di una lettura e l'inizio della successiva si faccia in tempo a completare il trasferimento e l'elaborazione.

Potrei fare una cache che viene riempita in continuazione, e arrivati al termine si ricomincia ad inserire dall'inizio. In una locazione viene scritto l'indirizzo dell'ultimo dato scritto in modo tale che il PC prenderà in considerazione soltanto i dati presenti dall'ultima locazione letta (che avrà precedentemente memorizzato) e l'ultima locazione scritta, tentendo in considerazione la "ciclicità" della cache.

Se riesco a raccimolare il materiale, speriamo, vedo di fare una prova.

Link al commento
Condividi su altri siti

Con un modulo ethernet non si dovrebbe riuscire a raggiungere velocità maggiori rispetto ad una comunicazione seriale?

Si, però con S7-300 credo sia più semplice farlo lavorare come master profibus, però qualcuno che conesce meglio di me le reti Siemens può darti qualche dato in più.

Link al commento
Condividi su altri siti

Grazie dax, mi informerò meglio.

Hai avuto modo di provare personalmente questi prodotti? Come vanno? Si interfacciano facilmente con il PC?

Grazie ancora, ciao.

Domenico

Link al commento
Condividi su altri siti

Sponsorizzano PLCforum, ergo devono funzionare egregiamente :P

Prova a clikkare sul banner ad inizio pagina, trovi molto materiale.

Link al commento
Condividi su altri siti

Ho usato spesso i prodotti kernel e funzionano egregiamente.

non ho mai interfacciato pc ma so che si può fare.

Comunque sono sempre molto disponibili a studiare soluzizoni

alternative se quelle di default non sono adatte al tuo problema.

Tra l'altro, i loro plc si possono programmare anche in C.

dax

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