Vai al contenuto
PLC Forum


Comando Per Bit Di Una Db


thesla

Messaggi consigliati

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

Link al commento
Condividi su altri siti


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

Link al commento
Condividi su altri siti

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

Link al commento
Condividi su altri siti

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
Link al commento
Condividi su altri siti

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

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