Vai al contenuto
PLC Forum


Task Sti


TravelMen

Messaggi consigliati

Slave a tutti, ho fatto una ricerca sul forum ma non ho trovato una risposta esauriente.

Il mio quesito è il seguente:

Ho un lad richiamato ogni 7ms e vorrei sapere come faccio a determinare quanto tempo impega un' istruzione, o come faccio a determinare quanto tempo inpiga ogni singolo rung??

Spero di essere abbastanza chiaro?

<_<

Link al commento
Condividi su altri siti


Se usi un SLC,

nei File S2 del Sistema trovi anche i Bit-Flag che indicano se la tua SubRoutine Richimata

dall' Interrupt STI, a sufficiente tempo per essere completata, prima che venga rigenerato

un nuove evento di chimata temporale.

Cioè se la tua SubRoutine viene elaborata prima dei 7ms, altrimenti se il tempo

per elaborarla è maggiore all' interrupt Time (Schedulato a 7 ms S2:30 e S2:2/10)

viene settato il bit di OverFlow Bit S2:5/10.

Penso che il tempo impiegato dalla subRoutine ad essere elaborata la

trovi nella Word S2:43 (in Multipli di 10 MicroSecondi).

Se usi RsLogix500 e punti sulle varie word o flag che compongono la Categoria (Status-File STI)

e poi schiacci F1 ti verrà mostrato il loro significato.

Se il Tempo impiegato per elaborare la SubRoutinee molto lungo, devi calcolare il tempo impiegato per elaborare le varie Istruzioni che la compongono.

Potresti provare a togliere tutti i Richiami alle altre SubRoutine dal Ladder File:2, cosi verrà

richiamata la sola SubRoutine dell' Interrupt STI.

Oppure Richiami ciclicamente nel File:2 solo questa tua SubRoutine, per prova e verifica il tempo

ciclo, guarda (S2:22 Max Time) e (S2:23 AverangeTime).

Chiaramente in questa ultima prova non richiamarla anche dall' interrupt STI.

Per il PLC5 vi sono 4 Livelli di Interrupt a Tempo STI 0,1,2,3, e per ognuna di queste SubRoutine

C'è il tempo minimo,medio,massimo di elaborazione.

Per il ControlLogix esistono le Task periodiche che fanno la funzione similare a quella della STI nel SLC/PLC5

Nota: se la tua SubRoutine impiega molto tempo per essere elaborata, e non c'è sufficiente tempo,

tra un interrupt e l' altro, rischi di non trovare più tempo per elaborare, il resto del programma File:2.

Perciò dividi equamente il richiamo della SubRoutine STI per non appessantire eccessivamente il

Giro-logica File:2.

Molte volte per suddividere le risorse di processo equamente, crea un Interrupt-Time STI Medio-piccolo 5ms, però all' interno della tua SubRoutine crea dei Bit di Scansione, per dividere in multipli di 5ms.

Basta per esempio sommare continuamente 1 in una Word, e poi usa i suoi Bit per avere dei

multipli binari (bit0 =5ms; bit1 =10ms; bit2 =20ms) oppure combinazioni (bit0 & bit1).

Ora con questi Bit di Scansione richiama in maniera appropriata le varie componenti del Processo

in modo alterno, cosi che ogni 5 ms elabori ogni singola parte del processo, ma suddiviso in 2 o 3 passatte.

Non so se ho descritto bene la procedura, oppure se ho un pò pasticciato.

Spero che ti sia di aiuto.

Link al commento
Condividi su altri siti

Perfettamente chiaro Henon, grazie.

Il PLC in questione è un SLC, e la mia domando è nata dal fatto che ho notato il bit di OverFlow (Bit S2:5/10) alto, per diverso tempo, ed ho cominciato a sezionare la routine STI per cercare di ridurre il tempo di esecuzione.

Ma provero a fare come detto da te. grazie :rolleyes:

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