Vai al contenuto
PLC Forum


AWL: istruzione Set (S) mantiene RLC?


m.fochesato

Messaggi consigliati

Buonasera, 

 

U E0.0

S M120.0

L 2

L 3

+I

T MW 22

 

ciò che non mi è chiaro è il seguente: Se E0.0 è a True setto M120.0 e trasferisco anche in MW22 la somma dei 2 numeri? Il dubbio sta nel fatto che l'operazione di sommare i due numeri venga fatta anche se E0.0 è a False. 

Grazie.

Link al commento
Condividi su altri siti


Le istruzioni L e T e +I non sono dipendenti da RLC, se vuoi che non siano eseguite devi saltarle con uno SPB o SPBN che sono istruzioni di salto condizionato sullo stato di rlc, la prima salta se RLC=1, la seconda salta se RLC=0.

 

 

 

Link al commento
Condividi su altri siti

Ok grazie. Ti chiedo per sicurezza che se scrivo così:

U E0.0

L 2

L 3

+I

T MW 22

S M120.0

 

Faccio la somma e setto M120.0 solo se E0.0 è a True?

 

Grazie

Link al commento
Condividi su altri siti

Come succede in tutti i PLC, quel codice che hai scritto viene elaborato ciclicamente,

facciamo finta che la tua cpu abbia un tempo di scansione di 5ms, quindi ogni 5ms farebbe le seguenti operazioni:

- Controlla ingresso E0.0

- Somma 3+2 (CON QUALSIASI STATO DI E0.0)

- Scrive il risultato della somma su MW22 (SEMPRE)

- Setta M120.0 se RLC=1 (quindi solo se E0.0 = TRUE)

 

Per esempio se il codice fosse stato invece:

U E0.0

L 2

L MW22

+I

T MW 22

S M120.0

Vedresti MW22 che aumenta di 2 in 2 all'impazzata, sia con E0.0=FALSE che con E0.0= TRUE

 

Altro esempio, se vuoi che MW22 venga incrementato di 1 ogni volta che E0.0 passa da false a true:

U E0.0

FP M100.0

SPBN L1

 

// inizio istruzioni elaborate solo su fronte positivo di E0.0

L 1

L MW22

+I

T MW 22

// fine istruzioni elaborate solo su fronte positivo di E0.0

 

L1: NOP 0

 

 

 

 

 

 

 

 

 

Link al commento
Condividi su altri siti

no. come ti ha già detto jumpman 

Le istruzioni L e T e +I non sono dipendenti da RLC, se vuoi che non siano eseguite devi saltarle con uno SPB o SPBN che sono istruzioni di salto condizionato sullo stato di rlc, la prima salta se RLC=1, la seconda salta se RLC=0.

quindi la cosa corretta è:


U E0.0

spbn _001

L 2

L 3

+I

T MW 22

S M120.0

_001: nop 0

in questo modo se E0.0 è a 0 salta a nop 0 (nessuna istruzione e quindi non esege la somma e non setta nulla.

se invece è a 1 non esegue il salto ed esegue la somma

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