Vai al contenuto
PLC Forum


Come Settare Un Bit All’Interno Di Un Byte Wincc


Messaggi consigliati

andrea21092012
Inserito:

In una pagina di wincc devo raffigurare 8 pulsanti che mi devono, ognuno, modificare rispettivamente gli 8 bit di un byte.

Come posso fare?


Inserita: (modificato)

Ciao

Di che WInCC parliamo se del 7.0 in C basta creare uno script che ti scomponga in byte in bit poi lo puoi apoggiare su variabili interne e usarlo come vuoi.

se invece devi comandare il contrario in c poi componi il byte della variabile

Se Flexible non riesco ad aiutarti

Modificato: da Frank681
andrea21092012
Inserita:

Ciao si tratta di WinCC 7.1. Il problema che non conosco il linguaggio C per compilare lo script. Il problema è che avrò circa 50 byte. e devo comandare i singoli bit di tutti i byte.

grazie,ciao

Inserita:

Ciao

Purtoppo mi viene in mente solo il C .

devi creare una variabile temporane per ogni byte

poi quando premi uno degli 8 pulsanti leggi il valore della variabile byte lo modifichi settando il bit del punsante premuto e la riscrivi modificata .

potresti fare una libreria custom con questa funzione.

Adesso sono incasinato su un lavoro , non riesco a fare di più.

Purtoppo per queste cose è necessario sapere il C , oppure vi è anche vbs interno a wincc però l'ultima volta ho notato che ha delle limitazioni , e io non lo ho mai usato.

scusa di più non riesco al momento.

  • 3 weeks later...
Inserita:

se devi settare metti la variabile in "or" con un numero che rappresenta il bit che vuoi settare tipo

var =var or 2 così setti il bit 2

var =var or 4 così setti il bit 3

diversamente la metti in "and" con un numero dove sono tutti a 1 salvo quello che vuoi resettare

il tutto in uno script che magari gli passi la variabile e il numero del bit, così lo riutilizzi

  • 1 month later...
Inserita:

Esempio: Settare/ resettare il terzo bit (linguaggio C):

SetTagByte ("VariabileByte", GetTagByte ("VariabileByte") | 2); // Mask = 0000 0100

SetTagByteWait ("VariabileByte", GetTagByte ("VariabileByte") & 253); // Mask = 11011101

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