Vai al contenuto
PLC Forum


S7_200 Riutilizzo Timers - riutilizzo risorse


Messaggi consigliati

Inserito:

Fino all'altro giorno usavo S5 o S7-300, e quando in una sequenza avevo bisogno di alcune temporizzazioni usavo sempre lo stesso timer caricato con valori opportuni di volta in volta.

In questi giorni sto sperimentando S7-200 (cpu 224) ed ho notato che i temporizzatori funzionano in modo leggermene diverso; a parte questo, ho provato a creare una sequenza usando un solo timer (TOF T38, +xxx) per diversi passi della seq. ma caricato con diversi valori di tempo; il tutto non mi funziona !

Potete suggerirmi qualche sistema (codice sorgente awl aprezzato) che voi utilizzate con successo ?


Gabriele Corrieri
Inserita:

Ciao

mi sa tanto di metodi non troppo ortodossi ... ;)

se posti tu il codice è possibile vedere dove sta l'errore ....

Ciao

Inserita:

...mmmhh ... ;)

ecco qua' la mia routine ; in sostanza i bit del byte 20 sono gli appoggi dei passi sequenza,

M16.0 e' un flag che viene subito resettato e serve ad attivare il T38 (TOF) che viene caricato con la

MW24.

Cosi' come e' la MW24 non riesce a caricare altro che "+300" ed il timer continua a contare da 0..300

senza mai mandare a 0 il suo stato, ma se io tolgo i commenti su

"U M28.1" , "U M28.2" , "U M28.3" e fornisco manualmente (quando necessario) questi flag, la

sequenza mi funziona esattamente come voglio io.

NETWORK 1 //TITOLO DEL SEGMENTO (una riga)

LD M20.0 //passo 0

S M20.1, 1 //passo 1

R M20.0, 1 //passo 0

S M0.0, 1

S M16.0, 1 //abilitazione tempo

R M0.1, 3

MOVW +300, MW24 //in MW24 il tempo da caricare in T38

NETWORK 2

LD M20.1 //passo 1

UN T38 //tempo scaduto (300 * 100ms)

//U M28.1

S M20.2, 1 //passo 2

R M20.1, 1 //passo 1

S M0.1, 1

S M16.0, 1 //abilitazione tempo

MOVW +400, MW24 //in MW24 il tempo da caricare in T38

NETWORK 3

//

LD M20.2 //passo 2

UN T38 //tempo scaduto (400 * 100ms)

//U M28.2

S M20.3, 1 //passo 3

R M20.2, 1 //passo 2

S M0.2, 1

S M16.0, 1 //abilitazione tempo

MOVW +500, MW24 //in MW24 il tempo da caricare in T38

NETWORK 4

//

LD M20.3 //passo 3

UN T38 //tempo scaduto (500 * 100ms)

//U M28.3

S M20.0, 1 //passo 0

R M20.3, 1 //passo 3

S M0.3, 1

S M16.0, 1 //abilitazione tempo

MOVW +200, MW24 //in MW24 il tempo da caricare in T38

NETWORK 5

//

LD M16.0 //flag di lancio T38

TOF T38, MW24 //T38 rimane alto fino all esaurim. di MW24

R M16.0, 1 //reset del flag di lancio

NETWORK 6

//

MOVB MB0, AB0

Gabriele Corrieri
Inserita:

Ciao

ci credo che non va :)

Probabilmente non hai molto chiara la programmazione di plc, difatti la tua programmazione è molto più riferita ad un sistema tipo "personal computer".

In pratica tu dovrai, fra uno step e l'altro dovrai riportare il segmento 5, altrimenti il segmento 5 entrerà in azione solo con il tempo di 20 secondi.

Spero di essere stato esauritente, in caso contrario chiedi pure ancora! :)

Ciao

Inserita:

....in realta' non sono un professionista ...ma non mi ritengo neanche un principiante :blink:

quando scrivevo in s5 o s7-300 in effetti "riportavo" il "segmento 5" sotto ad ogni passo perche' seguivo uno "schema aziendale", ma visto che S7-200 me lo sto studiando per i fatti miei ho deciso di buttare giu' uno "schema mio".

Ad ogni modo (non ho ancora provato il tuo suggerimento) non capisco perche' il segmento 5 verrebbe eseguito solo con un valore di tempo di 20 sec. ....mi sfugge qualcosa ? :unsure:

Gabriele Corrieri
Inserita:

Ciao

lo "schema aziendale" non c'entra niente ... ;) perdonami la battuta, o una cosa funzia oppure non funzia :)

In particolare il segmento che carica T38 da MW24 (il segmento 5 appunto) entra in gioco solo DOPO la terza fase ... cioè quando MW24 ha valore 200 (20.0 secondi), mentre per le altre fasi funziona con ciò che c'era caricato prima in T38, che non so non avendo tutto il programma sottomano.

Spero che sia chiaro, altrimenti repetitia juvant ... spiego ancora ;)

Ciao

Inserita:

Il problema principale è la sintassi, ovvero dovrai utilizzare dei salti condizionati ad ogni segmento che identifica il passaggio di passo in modo tale che solo un preset del timer di combio passo sia attivo durante ogni singolo passo.

Così come hai scritto verrà sempre caricato l'ultimo preset (ultimo processato prima del lancio del timer) poichè non c'è nessuna condizione che abiliti i singoli preset in modo univoco.

Questo problema avresti dovuto averlo anche con S5 o S7-300 .

bigalex :blink:

Inserita:

Ho corretto il listato aggiungendo tanti "segmenti 5" tra i passi della sequenza ed adesso in effetti _sembrerebbe_ funzionare; ma se io mi metto in "stato variabile" ed osservo il conteggio del T38 vedo che avanza ad un ritmo accelerato (un valore di 500 mi da luogo ad un tempo di una ventina di secondi).

C'e' una spiegazione a questo ?

Inserita:

In S5 / S7-300 usavo un listato del tipo :

UN M15.1

SPB=M001

U E1.0

S M15.2

R M15.1

---

---

S M40.0

M001: U M40.0

R M40.0

LKT 10.1

SV T10

***

UN M15.2

SPB=M001

UN T10

S M15.3

R M15.2

---

---

S M40.0

M001: U M40.0

R M40.0

LKT 15.2

SV T10

***

... e posso garantire che funzionava bene. <_<

Ciao. :D

Ivan Castellaro
Inserita:

Prova a premere F1 con lo step 7 attivo ed il cursore sulla riga SPB=M001

Inserita:

(per Ivan Castellaro)

:blink: ...Non ho capito il perche'; comunque mi sembrava evidente che il listato fosse in S5, mentre in S7(300) faccio cosi':

U #P2

SPBN P2A

UN "E 4.5"

S #P3

R #P2

S M 40.0

P2A: U M 40.0

R M 40.0

AUF DB 11

L DBW 8

SV T10

Ciao. B)

Ivan Castellaro
Inserita:

La mia indicazione era per il salto condizionato.

Nel programma per il 200 non hai saltato un bel niente. tutto il programma viene sempre processato.

In s5 e s7 invece fai dei salti entro i quali vai a caricare il valore del timer solo quando è attivo il passo in questione.

Ecco perche con il 200 non ti funonzia! ;)

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