Vai al contenuto
PLC Forum


Assegnare nome a bit di una variabile dichiarata come word


sorecaro

Messaggi consigliati

Buongiorno a tutti, sto cercando il modo di fare una cosa ma non ne sono venuto a capo. Come da titolo vorrei assegnare un  nome ad 1 bit di una variabile dichiarata word. Nel programma che sto facendo devo visualizzare su hmi una 30 di allarmi. Ora wincc mi chiede la word di allarme ma nel programma devo lavorare a bit. Come posso fare per avere il bit specifico di allarme con il suo nome invece del solito Db1.dbx3.0 ?

Sperò di essere stato chiaro .

 

Buona giornata e grazie 

Link al commento
Condividi su altri siti


Io su Simotion dichiaro un array di word. La tabella seguente è la mappatura per un paio di word:

penso che sia la stessa solfa per il plc.......

Numero di bit della variabile
HMI_Variabili_Globali.boallarmidigitali
in Simotion
Numero di bit da
dichiarare nella
progettazione WinCC
boAllarmiDigitali[0].0 .0
boAllarmiDigitali[0].1 .1
boAllarmiDigitali[0].2 .2
boAllarmiDigitali[0].3 .3
boAllarmiDigitali[0].4 .4
boAllarmiDigitali[0].5 .5
boAllarmiDigitali[0].6 .6
boAllarmiDigitali[0].7 .7
boAllarmiDigitali[0].8 .8
boAllarmiDigitali[0].9 .9
boAllarmiDigitali[0].10 .10
boAllarmiDigitali[0].11 .11
boAllarmiDigitali[0].12 .12
boAllarmiDigitali[0].13 .13
boAllarmiDigitali[0].14 .14
boAllarmiDigitali[0].15 .15
boAllarmiDigitali[1].0 .16
boAllarmiDigitali[1].1 .17
boAllarmiDigitali[1].2 .18
boAllarmiDigitali[1].3 .19
boAllarmiDigitali[1].4 .20
boAllarmiDigitali[1].5 .21
boAllarmiDigitali[1].6 .22
boAllarmiDigitali[1].7 .23
boAllarmiDigitali[1].8 .24
boAllarmiDigitali[1].9 .25
boAllarmiDigitali[1].10 .26
boAllarmiDigitali[1].11 .27
boAllarmiDigitali[1].12 .28
boAllarmiDigitali[1].13 .29
boAllarmiDigitali[1].14 .30
boAllarmiDigitali[1].15

.31

Link al commento
Condividi su altri siti

Anche io faccio così ma non è quello che sto cercando di fare. Provo con un esempio : nel mio programma dichiaro un word allarmi.nel mio hmi assegno ogni bit della variabile alle varie segnalazioni . Ora quello che vorrei fare è avere un FC dove i vari bit della word sono "nominati" in modo simbolico e non assoluto. Spero di essere stato il più chiaro possibile 

Link al commento
Condividi su altri siti

La dico così, magari non si può...

Appoggia la Word bit a bit a dei merker, ogni merker avrà il nome che ti serve

 

Link al commento
Condividi su altri siti

Giuseppe Signorella

Come puoi ben comprendere non puoi nominare ogni singolo elemento di un array.

Personalmente ti consiglierei di fare come detto da "attiliovolpe".

Creati un numero "n" di variabili di tipo bool, rinominate simbolicamente, e trasferire il singolo valore nella word allarme.

Ciao

Link al commento
Condividi su altri siti

In alternativa puoi crearti tutti i tuoi bool di allarme (assegnando il simbolico che più ti piace)  nella DB e usarli per creare la Word di allarme.

 

Come sistema di organizzazione, se usi la word e basta, puoi farti un foglio excel in cui ti scrivi a cosa corrispondono. Molti fanno così

Link al commento
Condividi su altri siti

Quote

Come sistema di organizzazione, se usi la word e basta, puoi farti un foglio excel in cui ti scrivi a cosa corrispondono. Molti fanno così

 

In effetti io ho fatto un copia-incolla del foglio Excel dei miei 2000 allarmi. Ho volutamente tolto la colonna con i testi del messaggio ......

Link al commento
Condividi su altri siti

Sinceramente, dover lavorare con un foglio excel per poter riconoscere un allarme, non mi sembra molto comodo.
Preferisco creare un DB con tutti bit di allarme, e un DB con un array di word per passare gli allarmi al pannello operatore.
Basta una copia da un DB all'altro per risolvere sia il problema del pannello operatore che vuole le variabili di allarme in un certo modo, sia la comodità di avere ogni bit di allarme col proprio nome e commento.

Anzi, visto che nei pannelli operatore gli allarmi vengono letti scambiando l'ordine dei byte nella word (difficile spiegare perché dispositivi della stessa casa non siano capaci di mettersi d'accordo su una cosa così banale), generalmente anziché fare una semplice copia, faccio lo swap dei byte e mi ritrovo quindi anche col vantaggio di avere tutti gli allarmi in ordine numerico, e non con l'allarme Nr.1 che punta al bit 8 e l'allarme Nr.9 che punta al bit 0.

Basta un semplice ciclo FOR per fare tutto con poche righe di codice, anche nel caso di un numero elevato di allarmi.

Di solito, nello stesso ciclo FOR, inserisco anche le istruzioni per rilevare la presenza di allarmi, l'entrata di un nuovo allarme, il reset degli allarmi.

Link al commento
Condividi su altri siti

Supponiamo tu abbia bisogni di 80 allarmi.

Crei, per esempio, DB100 con 80 variabili booleane (da DB100.dbx0.0 a DB100.dbx9.7).

Poi crei DB101 con un array di 5 word.

Nel programma utilizzi i bit del DB100.

Poi fai una copia di tutti i bit di allarme (5 word) da DB100 a DB101.

Nel pannello operatore vai a leggere l'array di 5 word del DB101.

Devi solo avere l'accortezza di dichiarare i DB come "non ottimizzati".

 

Da non dimenticare poi che si potrebbero anche usare i merker. Con i merker puoi assegnare i nomi ai singoli bit e alle word.
La soluzione con i merker però mi sento di consigliarla solo per piccoli lavori.

E, anche utilizzando i merker, farei comunque una copia (magari con swap dei byte) su un DB per dare in pasto gli allarmi al pannello operatore.

 

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