Vai al contenuto
PLC Forum


Comando Per Bit Di Una Db


Messaggi consigliati

Inserito:

buongiorno a tutti,

ho una db con svariati bit, ho la necessita di comandarli a zero, tutti insieme o in gruppo per un istante. ma non resettarli, successivamente dovranno essere comandati ad 1 dal programma e/o parte del programma.

come faccio?

grazie

saluti


Inserita:

A parer mio:

quando questi bit devono andare a zero? Se riguarda un ingresso o un merker puoi permetterti di fare questo tranquillamente .

Mi ricordo che una volta sono riuscito a resettare un intero db , attraverso un loop e usando il registro ar 1 ,che ogni loop lo incrementavo di un bit.

Spero di essere stato d'aiuto ciao

Inviato dall'app. Mobile di PLC Forum da iPhone6,2

Inserita:

Grazie coquinati, potresti spiegarmi meglio come impiegare questa funzione ar1.

in tanto ho utilizato l'sfc20 BLKMOVE e una db di 8 Byte con tutti i bit a zero, li sposto dove mi servono per mettere temporaneamante a zero i bit di altre db che impiego nel programma.

ciao

Inserita: (modificato)

in tanto ho utilizato l'sfc20 BLKMOVE

già anche quello può andare:)ma personalmente ritengo più pratico l'uso del registro AR1

potresti spiegarmi meglio come impiegare questa funzione ar1.

ecco il codice:(scritto prima e testato su una cpu fisica) per ora l'ho limitato a 5 bit, basta solo cambiare il numero loop per resettare quanti bit si vogliono.

U M 70.0 //RESET MERKER

SPBN END1 // ALTRIMENTI SALTA A FINE

AUF "DBX DB" // DB DA RESETTARE

L P#DBX 0.0 // CARICO OFFSET VARIABILE AR1

LAR1 // ADESSO SU AR1 HO IL MIO INDIRIZZO DB30.DBX0.0

L 5 // NUMERO DI LOOP E DI BIT DA RESETTARE

A001: T #CONTEGGIO_LOOP_RESET // VARIABILE NUMERO DI LOOP

R [AR1,P#0.0] // RESET BIT

+AR1 P#0.1 //OGNI LOOP MI RESETTI IL BIT SUCCESSIVO

L #CONTEGGIO_LOOP_RESET // CONTEGGIO LOOP

LOOP A001 // DECREMENTA IL CONTEGGIO LOOP

END1: NOP 0 //NESSUNA OPERAZIONE

chiaramente con questo li resetti, poi quando devi portarli ad uno puoi portarli cosi:

U M 70.1 //SET MERKER

SPBN END1 // ALTRIMENTI SALTA A FINE

AUF "DBX DB" // DB DA RESETTARE

L P#DBX 0.0 // CARICO OFFSET VARIABILE AR1

LAR1 // ADESSO SU AR1 HO IL MIO INDIRIZZO DB30.DBX0.0

L 5 // NUMERO DI LOOP E DI BIT DA RESETTARE

A001: T #CONTEGGIO_LOOP_SET // VARIABILE NUMERO DI LOOP

S [AR1,P#0.0] // SET BIT

+AR1 P#0.1 //OGNI LOOP MI RESETTI IL BIT SUCCESSIVO

L #CONTEGGIO_LOOP_SET // CONTEGGIO LOOP

LOOP A001 // DECREMENTA IL CONTEGGIO LOOP

END1: NOP 0 //NESSUNA OPERAZIONE

spero di essere stato d'aiuto

Modificato: da coquinati
Inserita:

Figurati :) quando riesco cerco di dare qualche consiglio anche io :)

Penso che l'sfc20 occupa più memoria di lavoro per il motivo che utilizza dei dati di tipo ANY.

Comunque vedi te :)

ciao

Inviato dall'app. Mobile di PLC Forum da iPhone6,2

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