Vai al contenuto
PLC Forum


PRIMO LAVORO IMPORTANTE


sorecaro

Messaggi consigliati

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


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

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

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

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

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

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

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

 

Link al commento
Condividi su altri siti

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

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

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

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