Vai al contenuto
PLC Forum


CPU1500 TiaPortal OB30 quando eseguito ? (Ha precedenza su OB1 ?)


fiorezzz

Messaggi consigliati

Salve a tutti

In una CPU 1500 ho attivato un OB30 a 5ms 

In questo OB30 ad ogni suo ciclo imposto un merker a 1 se vale 0 a 0 se vale 1

Tracciando il grafico di questo merker noto che se il tempo ciclo totale cpu vale 1/2 ms la gestione del Merker è "regolare" nel senso che per 5ms lo vedo a1 e altri 5 ms lo vedo a zero 

Se nel programma PLC aggiungo "tanto codice" da portare il tempo ciclo PLC a 10ms  non ho + questa "regolarità" come se OB30 non sia eseguito in modo "regolare" ogni 5 ms 

o addirittura che non vada ad interrompere OB1 ogni 5ms impostato 

Cosa sbaglio ?  Ci sono delle priorità di esecuzione da impostare ?

 

Link al commento
Condividi su altri siti


OK 
Ho visto che nel Trace c'è Opzione "Ora Registrazione"  che impostata su OB1 se lo metto su OB30 vedo il grafico regolare come mi aspetto 

Mi sfugge il senso "tecnico" di questo campo "Ora Registrazione" 

Gentilmente hai qualche spiegazione terra/terra (l'oscilloscopio lo uso raramente ..mancava nello Step7 e non sono abituato )

 

Link al commento
Condividi su altri siti

Mi sembra di capirla cosi. L'oscilloscopio se impostato su OB1 rileva lo stato delle variabili ad inizio ciclo OB1 se queste cambiano durante lo stesso OB1 (che sarà interroto prima o poi 
per eseguire OB30) non viene rilevato il cambiamento 

O mi sbaglio ? Quindi con oscilloscopio non posso verificare cosa esattamente succede a quel merker nel "combinato misto" OB1 ..OB30 
(come probabilmente non vedrei eventuali variazioni fatte all'interno di OB1 )   

 

Link al commento
Condividi su altri siti

Anche io non lo uso molto, sembra che campioni in funzione del'ob a cui lo hai legato.
Se hai un OB1 lento il tuo OB30 può essere elaborato più volte all'interno di un ciclo di OB1, quindi è normale che tu non vedi il tuo bit salire e scendere in quanto potrebbe cambiare di stato più volte nello stesso ciclo.

Ma a cosa ti serve un bit così veloce?

 

Link al commento
Condividi su altri siti

1 ora fa, fiorezzz ha scritto:

Se nel programma PLC aggiungo "tanto codice" da portare il tempo ciclo PLC a 10ms  non ho + questa "regolarità" come se OB30 non sia eseguito in modo "regolare" ogni 5 ms 

 

E una prova che ho seguito più di 25 anni fa per testare la validità dell'interrupt a tempo in OB35. Modalità e risultati li ho descritti nella discussione relativa all'istruzione PAW.

Torno a ripetere: temporizazione perfatta in funzione del tempo impostato. C'è un limite minimo che dipende dalla CPU; ad esempio con la vecchia S7-315, sotto i 5ms ci poteveno essere problemi.

Link al commento
Condividi su altri siti

2 ore fa, fiorezzz ha scritto:

L'oscilloscopio se impostato su OB1 rileva lo stato delle variabili ad inizio ciclo OB1 se queste cambiano durante lo stesso OB1 (che sarà interroto prima o poi 

Immagina la registrazione di una telecamera di videosorvaglianza. Se imposti che venga registrato un fotogramma al secondo, non puoi pretendere di vedere cosa accade tra un fotogramma e l'altro. Qui è la stessa cosa: se registri i dati con la frequenza di OB1, non puoi pretendere di registrare quello che accade in mezzo a due cicli di OB1.

Link al commento
Condividi su altri siti

Si chiaro adesso grazie 

Volevo usare un OB a tempo per leggere + velocemente del tempo ciclo PLC da 10ms circa un ingresso digitale e attivare di conseguenza un uscita sempre + velocemente del ciclo PLC 

(senza fare molto altro ) 

Link al commento
Condividi su altri siti

2 ore fa, fiorezzz ha scritto:

Volevo usare un OB a tempo per leggere + velocemente del tempo ciclo PLC da 10ms circa un ingresso digitale

 

Devi leggere l'ingresso usando l'istruzione duale di PAW, ovvero devi leggere direttamente dall'ingresso fisico; l'istruzione se pricord bene è PEW.

Attenzione che se usi gli ingressi normali hanno comunque un filtro Hw, a memoria credo sia 1ms di ritardo, comunque è specificato nel foglio tecnico della scheda.

Se vuoi leggere sneza ritardi devi usare gli ingressi veloci.

Link al commento
Condividi su altri siti

Però devi tenere anche conto del ritardo del filtro di ingresso sempre presente sugli ingressi digitali (tranne gli ingressi veloci).

Link al commento
Condividi su altri siti

Oltre a quanto detto da Livio, se hai bisogno di reazioni veloci al cambio di stato di un ingresso, la soluzione migliore sarebbe gestirlo con un interrupt ad evento.

 

Per quanto riguarda letture e scritture immediate con S7-1200/1500, non si usa più la sintassi "PEW" e "PAW", ma si aggiunge ":P" dopo la variabile. Per esempio: IW0:P.
Comunque, se scrivi PEWxxx, il TIA converte automaticamente nella nuova sintassi.

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