sorecaro Inserito: 23 marzo 2016 Segnala Share Inserito: 23 marzo 2016 Buonasera a tutti, come da titolo dovrei fare un lavoro molto importante, almeno per me. Premetto che non sono un programmatore esperto ma ho fatto gia parecchie automazioni, anche se non molto complesse. Il lavoro che dovrebbero commissionarmi in linea di principio è molto semplice. Cerco di descriverlo. Il software che dovrei realizzare è cosi composto: 1) fornire a 15 inverter i segnali di riferimento velocità elaborati secondo una funzione matematica che mi daranno i tecnici di pregetto 2) gestire 10 valvole 4-20mA con altrettanti PID 3) visualizzare le varie informazioni ( velocità motore, apertura valvola , valori PID) su 3 dysplay Il tutto verrà gestito da unc CPU 1517 e varie unità remote Ora ragionando con la mia piccola esperienza non vedo grosse difficoltà nelle fase 1 e 3. La parte che mi "spaventa" è gestire 13 PID. Leggendo il manuale siemens trovo scritto che il blocco PID deve essere elaborato nell'OB35 ogni 100ms. Il primo dubbio che mi viene è: inserisco 10 blocchi pid nell'OB35 e li scansione ogni 10ms oppure li posso elaborare tutti insieme richiamandoli ogni 100ms? grazie a tutti e qualsiasi consiglio è ben accetto Link al commento Condividi su altri siti More sharing options...
batta Inserita: 25 marzo 2016 Segnala Share Inserita: 25 marzo 2016 I 100 ms sono solo un esempio. Il corretto tempo di campionamento dipende da cosa devi regolare. Se 100 ms vanno bene, sarebbe meglio impostare il tempo dell'OB a 10 ms e, ad ogni ciclo, elaborare un PID diverso (per alcuni cicli si elaborano due PID). Link al commento Condividi su altri siti More sharing options...
sorecaro Inserita: 25 marzo 2016 Autore Segnala Share Inserita: 25 marzo 2016 Buongiorno, prima cosa grazie per la risposta e l'aiuto. ma c'è qualcosa che non mi torna. Sul sito della Siemens trovo questo Quote Il tempo di campionamento CYCLE non influisce solo sulla capacità di elaborazione della CPU, ma anche sulla qualità della regolazione. Tra due intervalli di campionamento il regolatore non reagisce ai cambiamenti di grandezze di input e la grandezza di regolazione resta invariata. È inoltre necessario considerare il circuito di regolazione del processo. Una regolazione della posizione o della pressione richiede in genere un tempo di campionamento molto più breve (tipicamente 1 - 100 ms) rispetto alla regolazione della temperatura (tipicamente 100 ms - 10.000 ms) in quanto i circuiti di regolazione presentano un andamento temporale differente. Il tempo di campionamento minimo CYCLE non deve pertanto essere inferiore al tempo di esecuzione del programma di regolazione dipendente dalla CPU e il tempo di campionamento massimo CYCLE è il limite superiore tollerabile stabilito dalla dinamica del processo. Faccio un esempio. Nella mia OB35 ho 10 PID che vengono elaborati uno per volta. Come tempo di richiamo della OB35 imposto 5ms, quindi ogni 5ms la cpu esegue un PID. Moltiplico i 5ms per il numero di PID = 5ms x 10PID = tempo di campionamento 50ms. Quindi per elaborare tutti i PID ho un tempo di campionamento di 50ms, quindi il tempo di OB1 deve essere superiore a 50ms??? Spero di aver compreso bene Link al commento Condividi su altri siti More sharing options...
sorecaro Inserita: 25 marzo 2016 Autore Segnala Share Inserita: 25 marzo 2016 Buongiorno, prima cosa grazie per la risposta e l'aiuto. ma c'è qualcosa che non mi torna. Sul sito della Siemens trovo questo Quote Il tempo di campionamento CYCLE non influisce solo sulla capacità di elaborazione della CPU, ma anche sulla qualità della regolazione. Tra due intervalli di campionamento il regolatore non reagisce ai cambiamenti di grandezze di input e la grandezza di regolazione resta invariata. È inoltre necessario considerare il circuito di regolazione del processo. Una regolazione della posizione o della pressione richiede in genere un tempo di campionamento molto più breve (tipicamente 1 - 100 ms) rispetto alla regolazione della temperatura (tipicamente 100 ms - 10.000 ms) in quanto i circuiti di regolazione presentano un andamento temporale differente. Il tempo di campionamento minimo CYCLE non deve pertanto essere inferiore al tempo di esecuzione del programma di regolazione dipendente dalla CPU e il tempo di campionamento massimo CYCLE è il limite superiore tollerabile stabilito dalla dinamica del processo. Faccio un esempio. Nella mia OB35 ho 10 PID che vengono elaborati uno per volta. Come tempo di richiamo della OB35 imposto 5ms, quindi ogni 5ms la cpu esegue un PID. Moltiplico i 5ms per il numero di PID = 5ms x 10PID = tempo di campionamento 50ms. Quindi per elaborare tutti i PID ho un tempo di campionamento di 50ms, quindi il tempo di OB1 deve essere superiore a 50ms??? Spero di aver compreso bene Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 25 marzo 2016 Segnala Share Inserita: 25 marzo 2016 No. OB35 è richiamato da interrupt, quindi ogni 5 ms, stando al tuo esempio, si attiva l'interruzione; il plc sospende quello che stava elaborando ed esegue le funzioni di servizio all'interrupt. Ammettiamo che la funzione PID venga elaborata in un tempo pari ad 1ms. Ammettiamo che il tempo medio di ciclo, se non ci fossero interruzioni, sarebbe pari a 7 ms. Statisticamente nel caso pessimo, con tempo di clock pari a 5 ms, possono occorrere 2 elaborazioni per ciclo; da questi dati si deduce che, nel caso pessimo, il tempo di ciclo del PLC passa da 7ms medi a 9 ms medi. Differente invece è il tempo di attivazione della funzione. Richiamando una funzione alla volta con cadenza di 5 ms si ha che il tempo di campionamento di di ogni PID è pari a 50ms se si richiamano 10 funzioni PID. Questo può essere un tempo estremamente veloce o estremamente lento, in funzione del processo che devi controllare. Nella scelta del tempo, e del numero di funzioni PID ammissibili, si deve considerare il massimo periodo di campionamento compatibile con il processo controllato ed il rallentamento del ciclo di PLC dovuto all'elaborazione delle funzioni legate ad interrupt. Link al commento Condividi su altri siti More sharing options...
sorecaro Inserita: 25 marzo 2016 Autore Segnala Share Inserita: 25 marzo 2016 Livio forse ho capito, se non é così scusatemi. Quindi il tempo di ciclo OB1 deve essere superiore al tempo di ob35 quando esegue un pid. Se richiamo OB35 ogni 5ms, il pid impiega 1ms, il tempo OB1 deve essere superiore a 5+1. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 26 marzo 2016 Segnala Share Inserita: 26 marzo 2016 No il tempo di ciclo può essere anche minore. Puoi avere un tempo di ciclo di 1ms ed interrupt con clock di 20ms. Sono due cose differenti. PS Nella sezione didattica,sottosezione elettrotecnica, trovi il mio tutorial sulle regolazioni; visto che sembra che tu queste cose non le domini perfettamente, forse una sua lettura potrebbe toglierti qualche dubbio. Link al commento Condividi su altri siti More sharing options...
JumpMan Inserita: 26 marzo 2016 Segnala Share Inserita: 26 marzo 2016 Non ti devi curare del tempo di scansione di OB1, come ti ha già detto Livio quando viene richiamato OB35 (nel tuo caso ogni 5ms) viene momentaneamente interrotta l'elaborazione di OB1 per elaborare OB35, alla fine di OB35 l'elaborazione di OB1 prosegue dal punto in cui si era fermata. Esempio: Se hai un OB1 scarno, la cui elaborazione richiede 1ms e un OB35 pesante, che (lanciato ogni 5ms) impiega 2ms otterrai più o meno questi tempi di scansione per OB1: 1, 1, 1, 1, 3, 1, 1, 3, 1, 1, 3.... Se hai un OB1 un po' più pesante che gira in 7ms e un OB35 che (lanciato ogni 5ms) impiega 2ms otterrai più o meno questi tempi di scansione per OB1: 9,11,9,11..... Se con lo stesso OB1 da 7ms e lo stesso OB35 da 2ms di elaborazione cambi il richiamo di OB35 e lo metti a 50ms otterrai più o meno questi tempi di scansione per OB1: 7,7,7,7,7,7,7,9,7,7,7,7,7,7,9,7,7,..... (I valori che ho messo sono indicativi solo per farti capire) Se OB35 è talmente pesante da "cedere poco la parola" ad OB1 il tempo di OB1 si allunga a dismisura e se supera quello di watch-dog il cane si arrabbia e la cpu va in stop. Link al commento Condividi su altri siti More sharing options...
sorecaro Inserita: 26 marzo 2016 Autore Segnala Share Inserita: 26 marzo 2016 Penso di aver capito il concetto. Per non appesantire troppo il programma richiamo un pid alla volta nell OB35. Ho un'altra curiosità da chiedere. Nel software devo gestire 30 ingressi analogici, avrei pensato di creare una fc e li eseguiere tutte le varie scalture che mi serveno richiamandola nella OB1, può andare bene oppure avete qualche consiglio? Link al commento Condividi su altri siti More sharing options...
JumpMan Inserita: 26 marzo 2016 Segnala Share Inserita: 26 marzo 2016 I feedback dei PID è meglio se sono sincroni coi PID, la scalatura di quelli la farei in OB35. Link al commento Condividi su altri siti More sharing options...
sorecaro Inserita: 26 marzo 2016 Autore Segnala Share Inserita: 26 marzo 2016 ok, allora faccio come hai consigliato. Le scalature dei valori per per il comando degl'inverter li eseguo nella FC che mi richiamo nella OB1, mentre i valori che mi serveno per i vari pid li scalo nella OB35 Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 27 marzo 2016 Segnala Share Inserita: 27 marzo 2016 Quote I feedback dei PID è meglio se sono sincroni coi PID, No, devono assolutamente essere sincroni con il regolatore altrimenti s'introduce un errore. Link al commento Condividi su altri siti More sharing options...
JumpMan Inserita: 27 marzo 2016 Segnala Share Inserita: 27 marzo 2016 Certo Livio devono (come ho scritto io sembrava un consiglio e non un obbligo). Link al commento Condividi su altri siti More sharing options...
sorecaro Inserita: 27 marzo 2016 Autore Segnala Share Inserita: 27 marzo 2016 Grazie e buona pasqua. Se avete qualche altro consiglio da darmi sono tutto orecchie 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