SCarlo Inserito: 8 marzo 2012 Segnala Inserito: 8 marzo 2012 Salve a tutti! Sono nuovo alla programmazione di PLC ma ho esperienza di programmazione con diversi altri linguaggi, in particolare C e C++. Per un lavoro che mi é stato commissionato devo campionare due segnali a 1 KHz ed elaborarli numericamente per poi azionare dei dispositivi. Mi é stata data piena libertá sulla scelta del PLC da utilizzare, ma vista la mia inesperienza sono un po' confuso. Vorrei chiedere consigli su quale PLC scegliere per le mie esigenze. L'elaborazione numerica, che puó essere vista come un filtraggio dei segnali, richiede circa 5000 operazioni floating point ad ogni ciclo e deve essere effettuata con una frequenza di 200 Hz circa. Grazie Carlo
Livio Orsini Inserita: 8 marzo 2012 Segnala Inserita: 8 marzo 2012 (modificato) L'elaborazione numerica, che puó essere vista come un filtraggio dei segnali, richiede circa 5000 operazioni floating point ad ogni ciclo e deve essere effettuata con una frequenza di 200 Hz circa. Questo significa avere sicuramente un tempo di ciclo minore di 5 ms. In questo tempo si devono eseguire 5000 operazioni i fp; però se queste 5000 sono solo somme sarà necessario un tempo x per operazione, se son divisioni sarà necessario un tempo almeno 20 x per operazione. Personalmente non ritengo il PLC lo strumento adatto per una simile operazione. Se deve fare solo questo lavoro è meglio rivelgersi verso un dipsoitivo embeddedd basato su DSP che è lo strumento più adatto. Se deve fare anche dell'automazione allora la valutazione deve essere fatta su tutto il sistema da realizzare. Comunque è necessaria una cpu ada lte prestazioni. Consigliarti un modello ed una marca solo con questi dati non mi sembra "onesto". Modificato: 8 marzo 2012 da Livio Orsini
Pongoz Inserita: 29 marzo 2012 Segnala Inserita: 29 marzo 2012 Se intendo bene quello che viene richiesto, è una media su 5000 campionamenti acquisiti con una frequenza di 200Hz. Per un PLC non è un problema fare una cosa di questo tipo, vero è che il primo dato realistico della media sarà dopo 1/200 * 5000 ovvero 25ms, ma da quel momento in poi avrò un nuovo dato ogni 1/200 = 5ms. Ormai il tempo di ciclo per 1K istruzioni si aggira intorno ai micro secondi e, testato personalmente, 60 PID con variabili float girano con un tempo di ciclo di 1,8 ms e non si tratta di fare una media.
Livio Orsini Inserita: 29 marzo 2012 Segnala Inserita: 29 marzo 2012 (modificato) Ormai il tempo di ciclo per 1K istruzioni si aggira intorno ai micro secondi.. E' vero se si tratta di operazioni boolenae o, al massimo, operazioni su interi. Pensa a 1024 divisioni in float, se non usi un DSP, ma di ottime prestazioni, ti scordi di risolvere in un tempo di qualche microsecondo. Risolvere un PID è un poco differente, prima di tutto in un PID, se ben fatto, l'operazione aritmetica più lunga è un moltiplicazione, che solitamente impegna circa 1/5 del tempo di una divisione o anche meno; in un PID di moltiplicazioni se ne eseguono al massimo 3, le altre sono comparazioni somme e sottrazioni e sono in tutto meno di 20 quando il PID è completo. Con una vecchia S7-216 eseguivo un PID in circa 2 ms, a riprova che non è poi una funzione che impegna molto la CPU. Modificato: 29 marzo 2012 da Livio Orsini
Pongoz Inserita: 29 marzo 2012 Segnala Inserita: 29 marzo 2012 Vero, però fare una media aritmetica di 10 o 5000 valori si riduce in un ciclo FOR che si esegue in un ciclo macchina e in una divisione. Alla fine sono due operazioni matematiche. Ho fatto la prova con un PLC e questo è il tempo di ciclo: Task 0: Main, ID: 2 Cycle count: 1042 Cycletime: 2789 microseconds Cycletime (min): 2591 microseconds Cycletime (max): 4291 microseconds Cycletime (avg): 2836 microseconds Status: RUN Mode: CONTINUE ---- Priority: 1 Intervall: 1 ms Event: NONE ---- Function pointer: 16#00400DE8 Function index: 191
Livio Orsini Inserita: 29 marzo 2012 Segnala Inserita: 29 marzo 2012 (modificato) Non per polemica ma per amor di precisione e chiarezza. Cycletime (max): 4291 microseconds Intanto questo è il valore da prendere in considerazione, non il medio o il minimo. Poi la richiesta iniziale è: che puó essere vista come un filtraggio dei segnali, richiede circa 5000 operazioni floating point ad ogni ciclo e deve essere effettuata con una frequenza di 200 Hz circa. Eseguire un filtraggio non è certo un ciclo for con una divisione come lo è una media aritmetica! Normalmente la somma è l'operazione aritmetica più veloce. Una divisione in fp richiede più di 20 volte il tempo di una somma fp. Ovviamente il dato preciso dipende dal processore; si può avere anche un tempo inferiore nei DSP dove la divisione fp è praticamente eseguita in puro Hw o quasi, però questi non sono i processori dei PLC. Modificato: 29 marzo 2012 da Livio Orsini
Pongoz Inserita: 29 marzo 2012 Segnala Inserita: 29 marzo 2012 Ciao Livio, nessun problema sulla polemica, siamo qui tutti per imparare e confrontarci, io per primo. Il Cycle Max è solo riferito al primo ciclo PLC che per ovvie ragione è sempre quello con il tempo maggiore, devi fare riferimento al CycleTime standard che è di 2789 microsecondi. Ho inteso filtraggio come media aritmetica perché non è stato specificato altro, se si fosse scritto filtro passa alto/passa basso o altro ancora allora il discorso sarebbe diverso, tenendo anche conto che il soggetto era un PLC e leggendo il quesito, forse erroneamente, mi sono immaginato un segnale analogico; da qui la mia scelta sulla media aritmetica.
Livio Orsini Inserita: 30 marzo 2012 Segnala Inserita: 30 marzo 2012 Per me la questione di fondo è che un PLC, per sua natura, non è lo strumento adatto per questo tipo di impieghi. Dalla sommaria descrizione del problema sembrerebbe un compito adatto più ad un DSP che ad un PLC. Parentesi di costume. Non ho mai capito perchè: 1 - certe persone aprano discussioni dando solo indicazioni generiche e somamrie del problema, quasi si trattasse di dispositivi ultrasegreti in cui è in gioco la sicurezza nazionale. 2 - posto il problema, dopo aver ricevuto le prime risposte spariscono senza dar seguito alla faccenda. Senza neanche un rigo di spiegazione e di ringraziamento per chi ha perso del tempo. Forse non sono più agiornato sulle usanze sociali attuali, ma a me questo comportamento sembra dovuto a cattiva educazione e scarsa civiltà.
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