Vai al contenuto
PLC Forum


Lato Negativo Dell'Indirizzamento Simbolico?


Messaggi consigliati

Inserito:

Ciao a tutti, solitamente quando usavo un DB ad indirizzamento assoluto mi trovavo di fronte a questa situazione.

Ho un DB per gestire una cinquantina di allarmi (bool). Per verificare se sono in una situazione generica di allarme (almeno uno di questi 50 alzato) andavo a confrontare in OR tutte le double word che componevano il DB, riuscivo cosi con poco codice (due confronti a 0 di due DWord dove erano contenuti tutti i 50 allarmi) ad ottenere quello che volevo.

Mi domandavo ora come posso fare utilizzando un DB simile ma indirizzato simbolicamente (o ottimizzato).

Sono costretto a confrontare 50 bool per sapere se sono in una situazione di allarme o esiste una maniera piu intelligente?

Grazie e ciao.

Fere.


Inserita:

Ho chiamato l'. della Siemens e mi hanno detto che l'unica possibilità è dichiarare il DB NON ottimizzato, ma standard (per 300 e 400) cosi da poter utilizzare le doubleword per racchiudere 32bool e fare meno confronti.

Peccato, speravo in una soluzione un pò più intelligente.

Inserita:

Non vedo la difficolta effettIvamente un db standard ti da la compatibilita 300 e 400 per cui se sviluppi su piu piattaforme puoi mettertelo in libreria.

Inserita:

Ciao, puoi anche fare così:

creare una variabile DWord, anche simbolica, (chiamiamola allarmi), poi usi la variabile allarmi come DWord nei confronti per vedere se hai un bit alto.

Per vedere i singnoli bit devi usare questa dicitura: nomeDB.allarmi.x0 per il primo bit .x1 per il secondo e così via.

L'aspetto negativo di questo modo è che perdi il simbolico sui bit.

La stessa cosa la puoi usare anche con i byte (B), con le word (w)

Spero di esserti stato utile

Ciao

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