Vai al contenuto
PLC Forum


OB30 a tempo da 1ms


fiorezzz

Messaggi consigliati

Salve a tutti 

In una CPU 1510SP-F   ho attivato un OB30 a tempo con timing 1ms 

In questo OB o gestito  una variabile Merker che va ON per 10ms (contando 10 chiamate OB30) e OFF per 50ms 

 

Andando a tracciare con oscilloscopio noto che ogni tanto dopo circa  un 10/15 volte che viene chiamato OB30 e il Merker assume il valore 0/1 che ho programmato

(rimane a ON per 10ms o OFF per 50ms) ho una pausa di circa 100ms in cui il Merker rimane OFF come se OB30 non viene chiamato

Controllando poi il tempi ciclo PLC ho notato che il tempo ciclo + lungo è 77ms  !!!!

MA DOVE ARRIVA QUESTO  "BUCO " DI 100MS ? 

 

OB30 chiama un FB con DB istanza ma che contiene dati per circa 20byte

Tempo ciclo PLC min.2,8  attuale 3..4ms  +Lungo 20ms  (questo con O30 a 10sec senza nessuna chiamata a FB ) ..anche questi 20ms mi suonano un pò strani.

 

Link al commento
Condividi su altri siti


Chiedere ad una 1510 di elaborare un OB a tempo ad intervalli di 1 ms, è un po' troppo. Perché non metti l'OB a 10 ms?

Link al commento
Condividi su altri siti

3 ore fa, fiorezzz scrisse:

Andando a tracciare con oscilloscopio noto che ogni tanto dopo circa  un 10/15 volte che viene chiamato OB30 e il Merker assume il valore 0/1 che ho programmato

 

per tracciarlo con un oscilloscopio devi pilotare un'uscita. Che uscita usi e come la scrivi?

Link al commento
Condividi su altri siti

Uso una variabile bool dell' FB richiamato nell OB  ..... perchè sto provando e perchè non ho uscite cosi veloci ..e uso il servo trace del Tia 

 

In effetti con OB30 a 10ms è (20ms ON ..50Ms Off)  è + regolare sembra che non ci sia + quella pausa di 100ms    e tempo ciclo max 24ms 

 

Però mi sfugge sempre il perchè ..non dovrebbe avere  un timing ben preciso l'OB (al limite a scapito del tempo ciclo PLC ...) 

 

MI sorge il dubbio che usando un Merker con un tempo OB < TempoCiclo PLC il Trace non vede sempre correttamente 

Link al commento
Condividi su altri siti

Quote

non dovrebbe avere  un timing ben preciso l'OB

Sì, finché ce la fa.

Di sicuro, con tempo di 1 ms, se apri la diagnostica ti trovi errori relativi all'elaborazione dell'OB ciclico.

Link al commento
Condividi su altri siti

3 ore fa, fiorezzz scrisse:

perchè sto provando e perchè non ho uscite cosi veloci ..e uso il servo trace del Tia 

 

Anche questo, con tempi così stretti, potrebbe dare delle indicazioni improprie.

Potresti usare delle uscite analogiche, però non conoco quelle dello s7-1500, quindi non so i tempi di conversione. Con il 300 c0erano schede che convertivano in meno di 1 millisecondo, quindi con una scrittura diretta alla periferia si aveva un'indicazione abbastanza precisa per tempi dell'ordine dei 5 ms

Link al commento
Condividi su altri siti

Quote

Scusa Batta ma cosa intendi ..finchè ce la fa....

Se non riesce ad elaborare l'OB ciclico ad intervalli di 1 ms, significa che "non ce la fa".
Anche l'OB ciclico ha bisogno di un suo tempo di elaborazione, che dipende dalle istruzioni che deve eseguire.
E la CPU deve fare anche altre cose, mica solo elaborare l'OB ciclico.
Generalmente non si scende sotto ai 5 ms.

 

Link al commento
Condividi su altri siti

Ok ma come si potrebbe fare a capire in fase di progettazione/acquisto se una determinata  CPU  "ce la fa o meno" ad elaborare un OB Ciclico in modo costante e ripetivo ..o esiste altro modo per fare un qualcosa ad un determinato timing (fisso e ripetibile ..)  

Link al commento
Condividi su altri siti

35 minuti fa, fiorezzz scrisse:

capire in fase di progettazione/acquisto

 

per prima cosa bisogna osservare il dato sul tempo medio di esecuzione delle istruzioni, minore è questo tempo maggiore è il numero di istruzioni eseguibiliin determinato intervallo di tempo.

 

Poi è necessario anche ragionare su quello che si vuole fare.

Anche riducendo al minimo indispensabile le istruzioni da eseguirsi all'interno dell'OBxx a tempo, rimane il problema che un richiamo troppo freqeunte riduce praticamente a zero il tempo che la CPU potrà dedicare al resto del programma.

 

Il processore della CPU non esegue solo il programma applicativa, questo è solo un job di tutto il lavoro che deve eseguire. Anche se gli attuali processori sono molto performanti, hanno comunque dei limiti.

Link al commento
Condividi su altri siti

Negli OB ciclici si cerca sempre di non inserire routines troppo pesanti. Nei manuali si trovano anche i tempi di esecuzione delle singole istruzioni, quindi, in teoria, sarebbe possibile valutare il tempo richiesto. Nella realtà, nessuno penso si sia mai messo a fare questo calcolo. Si cerca semplicemente di non appesantire inutilmente il lavoro della CPU, e di programmare il richiamo degli OB ciclici ad intervalli "ragionevoli".
Considera poi che se per il tuo compito serve veramente un richiamo ad intervalli di 1 ms, probabilmente hai sbagliato l'approccio. Magari il tuo problema richiede una soluzione diversa.

Per quello che intendevi fare poi (10 ms on, 50 ms off), ti basta richiamare l'OB ciclico ogni 10 ms. Richiamarlo a frequenza 10 volte più alta non migliora la precisione, serve solo ad appesantire inutilmente il lavoro della CPU.

Poi, come dice Livio, la CPU mica si deve occupare solo di OB1 e OB30, ma deve anche leggere l'immagine degli ingressi, scrivere l'immagine delle uscite, gestire la comunicazione con dispositivi remoti, gestire la comunicazione con pannelli operatore o pc per la programmazione, gestire la diagnostica. Se, ogni 1 ms, richiami l'OB30, cosa resta alla CPU per tutti gli altri compiti? Ricorda anche che la 1510 è un modello base.

Link al commento
Condividi su altri siti

  • 4 weeks later...

Forse ha risolto, ma pensa che farlo sapere agli altri, che hanno speso il loro tempo per aiutarlo, sia tempo perso.

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