tornado Inserito: 8 aprile 2005 Segnala Share Inserito: 8 aprile 2005 devo calcolare la media oraria di un segnale analogico 4-20 mA scalato 0-100 Pa, con un micrologix 1200.qualcuno può darmi qualche dritta.grazie Link al commento Condividi su altri siti More sharing options...
ELMO Inserita: 8 aprile 2005 Segnala Share Inserita: 8 aprile 2005 Ciao non mi ricordo ,perchè non sono in sede, ma dovrebbe esserci una istruzione chiamata SCL Link al commento Condividi su altri siti More sharing options...
antstan Inserita: 8 aprile 2005 Segnala Share Inserita: 8 aprile 2005 (modificato) L'azzardo un pò...Calcolando l'integrale del tuo segnale e poi dividendolo per il tempo in cui l'hai integrato dovresti avere il valore da te desiderato in modo molto preciso...Forse l'istruzione PI fa a caso tuo ma devi guardare bene l'. per il suo utilizzo.... Modificato: 8 aprile 2005 da antstan Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 8 aprile 2005 Segnala Share Inserita: 8 aprile 2005 Dipende da quanti campioni devi, o vuoi, fare. Se per, ipotesi, fai un campione al minuto dovrai sommare 60 valori ed il totale varrà, come massimo, 6.000 (tutti al 100%). Se, invece, campioni ogni 30" avrai 120 campioni ed un amssimo di 12.000. Se vuoi avere anche un decimale il limite sale a, rispettivamente, 60.00 120.000.Ipotizziamo che tu scelga di fare 60 campionamenti per ora e di tenere un decimale.Poi dipende se la tua media oraria deve essere scorrevole o fissa. Il caso più complicato è se vuoi una media scorrevole. Devi farti un array con 60 (120) posizioni in cui andrai ad inserire le tue misure. Fino a che l'array non è pieno sommi tutti i valori e dividi per il numero delle misure effettute. Raggiunta la saturazione della pila dividi per 60 (120). Ogni nuova misura andrà a sostituire la più vecchia del buffer, in questo modo hai creato un buffer circolare. Se hai l'avvertenz di memorizzare l'ultima somma, ad ogni nuova misura simmerai il nuovo valore e sottrarrai il valore più vecchio. Quindi ad ogni muìisura te la cavi con un'addizzione, una sottrazzione ed una divissione. Link al commento Condividi su altri siti More sharing options...
antstan Inserita: 8 aprile 2005 Segnala Share Inserita: 8 aprile 2005 Ciao livio,sicuramente non ho molta esperienza, ma se c'è la possibilità di calcolarne l'integrale rispetto al tempo non è un modo + immediato???in tal caso posso sapere in qualsiasi momento la media della mia variabile anche se essa varia in modo molto veloce, inoltre posso saperne il valore in qualsiasi momento con una semplice divisione.Che ne pensi??? Link al commento Condividi su altri siti More sharing options...
tornado Inserita: 8 aprile 2005 Autore Segnala Share Inserita: 8 aprile 2005 ciao Livio, mi pare una buona soluzione, perchè in questo modo è come gestirne l'integrale, credo infatti che un array sia una colonna nella quale scrivo il contenuto delle celle in funzione di un clock, correggetemi se sbaglio, ma non ho molta esperienza con i plc, tanto meno con a-b, come lo costruisco un array?.ciao Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 8 aprile 2005 Segnala Share Inserita: 8 aprile 2005 Primo.Per realizzare un integrale si esegue una sommatoria dei differenziali. L'integrale di PID lavora esattamente in queto modo; come nel medesimo modo lavora un integrale analogico. Se si limita il numero dei valori sommati si esegue il classico integrale limitato, limitato nel tempo non nel valore.L'integrale però non è il valore medio, ma è il totale; per ottenere la media aritmentica è necessario dividere per il numero dei valori sommati.E' qualche anno che non programmo AB e non ricordo il dettaglio delle istruzioni. Non so se esistono, come per S7, l'istruzioni specifiche per gli array. Qui potrebbe risposndere uno specialista di AB.Comunque, nel caso non esistano istruzioni specifiche, è abbastanza semplice farlo.Riserva 60 (120) bytes o word (dipende se fai 100% o 100.0%). Poi ti crei una varabile, un byte è sufficiente, che è l'indice del buffer. Inizialmente è zero. Il primo valore che leggi lo memorizzi nella cella 0, incrementi l'indice a 1, poni nella memoria di somma il valore letto. Il secondo valore verrà memorizzato nella cella 1, incrementi l'indice, sommi il nuovo valore al valore della memoria di somma, lo memorizzi nella medesima memoria, dividi questo valore per l'indice ed avrai la media. Continui così fino a che l'indice è minore di 60 (120).Quando l'indice ha raggiunto 60(120) lo azzeri, alzi un flag che indicherà che il buffer è pieno. Con questo flag alto ad ogni nuovo valore dovrai agire in questo modo. Sottrai alla somma il valore contenuto nella cella indirizzata dall'indice, sommi il nuovo valore, memorizzi il nuovo valore al posto del vecchio, dividi la somma per 60(120) ed avrai la media. Ogni volta che l'indice raggiunge 60(120) lo riazzeri . Così vai avanti all'infinito Link al commento Condividi su altri siti More sharing options...
jumpier Inserita: 8 aprile 2005 Segnala Share Inserita: 8 aprile 2005 (modificato) Ciao "tornado". Dunque, per la tua richiesta ... si è possibile ma dammi qualche valore in più in termini di tempo di variazione dell'ingresso analogico, precisione richieste cliente ecc...Come dicevi nel primo post, se la grandezza varia da 0 a 100, rappresentato su intero (che il plc digerisce meglio ripetto ai float) con due cifre dopo la virgola andra dal minimo pari a zero ad un massimo pari a 10000 (100,00 scalato).Ora, considerando che una table di interi arriva a 256 elementi, potresti campionare ogni 15 secondi (ma qui devi dirlo tu se va bene come refresh) e se moltiplichi 15sec per 240 elementi (del tuo vettore) ottieni 3600secondi che sono proprio la tua ora di campionamento. Per crearti il vettore .... dunque, prima ti fai un timer con in serie un suo contatto normalmente chiuso (insomma si autoresetta); ogni volta che hai il suo bit di done incrementi il tuo puntatore (un intero) che va da 0 a 239. A questo punto con una funzione di "move" muovi il valore dell'analogica scalata nella table da te usata.Mi spiego:table array N7puntatore area N20:0dovrai eseguire il MOV di "ingresso analogico scalato" in N7:[N20:0] dove N20:0 lo farai incrementare di 1 ogni 15 secondi. A questo punto devi fare la media ... ricorda che su interi non puoi superare il valore di 32767 (intero positivo); quindi non potrai sommare tutti i 240 elementi e poi dividere per 240 ma dovrai fare medie parziali (somme e divisioni parziali). Insomma ... della matematica .Fammi sapereops ... non avevo visto l'ultima risposta di Livio. Segui il suo post e non puoi sbagliareCiao Modificato: 8 aprile 2005 da jumpier Link al commento Condividi su altri siti More sharing options...
antstan Inserita: 8 aprile 2005 Segnala Share Inserita: 8 aprile 2005 (modificato) Hallo jumpier, questo quesito mi interessa...Sicuramente l'idea dell'array è giustissima, ma io sono un testardo!!! In rs logix ci sono l'istruzione PI e PID, non ho capito bene come lavorano ma quello che è certo e che fanno calcoli integrali, poi dividendo tutto per il tempo....Se è possibile farlo in questo modo potresti esplicitare una tua soluzione??? Modificato: 8 aprile 2005 da antstan Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 8 aprile 2005 Segnala Share Inserita: 8 aprile 2005 In rs logix ci sono l'istruzione PI e PID.....Usare la funzione PI per calcolarsi una media oraria è andarsi a complicare la vita inutilmente.Si devono risolvere numerosi problemi preliminari.C'è sicuramente un problema di diversa scalatura. Tornado lavora con fs 100%. L'integrale di un algoritmo PI è l'integrale dell'errore, quindi bisognerebbe adattare il tutto in modo che ad una lettura pari a 100 corrisponda un errore pari a 100.Poi c'è il problema del tempo d'integrale. Bisogna conoscere esattamente l'algoritmo usato. Se viene usato un algoritmo simile a quello che uso io è abbastanza facile da riscalare; se viene usato un algoritmo sul tipo di quello usato da Siemens... meglio lasciar perdere.Ancora c'è da conoscere esattamente il tempo di campionamento.Poi con un integrale di un regolatore PI è molto difficile ottenre una media del tipo a "finestra scorrevole" (slide window), che è il tipo di media che presumo dovrà usare Tornado.Alla fine, se consideri bene il tutto, diventa molto più macchinoso e, sopra a tutto, con risultati non certi l'uso dell'ontegrale di un regolatore PI per ricavare una funzione di media.Poi il mondo è bello perchè vario, quindi se vuoi provare a sperimentare....facci sapere i risultati. Link al commento Condividi su altri siti More sharing options...
jumpier Inserita: 10 aprile 2005 Segnala Share Inserita: 10 aprile 2005 Per "antstan": dunque, sul Micrologix 1200 non mi pare esista la funzione PI.Non e' che ti confondi con il buon vecchio ControlLOGIX??? La funzione PID invece esiste, ma se provi a consultare l'. in linea ti rendi facilmente conto che quanto chiedi non è fattibile. E poi, il "PID file" relativo all'istruzione PID per ML1200 è differente dai plc SLC500. A senso non si può fare quello che tu stai pensando. Per ultimo, insorgono comunque i problemi citati da Livio. Io direi che a questo punto "tornado" (se lo ritiene opportuno) dovrebbe dirci se ha risolto, se ha ancora dubbi e quale soluzione ha adottato ritenendola più azzeccata alla sua applicazione! A volte si rischia di sparare ad un passerotto con un cannone Ciao a tutti Link al commento Condividi su altri siti More sharing options...
tornado Inserita: 11 aprile 2005 Autore Segnala Share Inserita: 11 aprile 2005 grazie a tutti, ci provo e vi farò sapere, anzi se il tutto mi riuscirà lo metterò a disposizione del forum.ciao Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 11 aprile 2005 Segnala Share Inserita: 11 aprile 2005 ....anzi se il tutto mi riuscirà lo metterò a disposizione del forumTornado ci contiamo! Oramai ti sei impegnato... Link al commento Condividi su altri siti More sharing options...
tornado Inserita: 12 aprile 2005 Autore Segnala Share Inserita: 12 aprile 2005 impegno sottoscrittociao Link al commento Condividi su altri siti More sharing options...
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