Vai al contenuto
PLC Forum


Hex-dec


Messaggi consigliati

Inserito:

Salve, avrei la necessità di utlizzare il valore in hex memorizzato su un DM come valore decimale, senza conversione, mi spiego meglio, un DM con valore HEX "32" io vorrei utilizzarlo come valore decimale "32" e non come valore 50 (Conversione da hex a dec) esiste un modo per farlo da PLC??.

Questo valore lo devo leggere da un pannello NS5 eventualmente potrei fare l'eventuale conversione con qualche macro??

Grazie a tutti.


ifachsoftware
Inserita:

E se ti trovi 1AF0 cosa lo fai diventare ? <_<

Inserita:

non troverò mai dei numeri diversi da 10-20-30---90 perchè sono numeri scritti da un programma di ricettazione.

emanuele.croci
Inserita:

Devi usare le funzioni di conversione da decimale a BCD, se sono presenti nel tuo plc.

Ad es. in step7 con l'istruzione BTD risolvi il tuo problema:

vediamo....

carico HEX 0032

BTD (trasforma da BCD a decimale , interpretando 32 come se fosse "trentadue")

mi restituisce HEX 0020 (che per il plc è di fatto "trentadue")

spero che ti sia utile...

Ciao, Emanuele

Inserita:

non ho bisogno della pura conversione hex-bcd ma che il valore HEX 32 lo posso trattare come valore

BCD 32.

in sostanza io sul PLC ho un valore in una DM = 0030 Hex

tale valore lo devo leggere da NS5 e scriverlo su un area del terostato, in quest'area posso scriverci solo in BCD quindi il valore 0030 hex è necessario che mi diventa 30 BCD.

Se io lo converto non ho più 30 ma 48 quindi sul termostato scriverei il settaggio della temperatura con un valore errato.

ifachsoftware
Inserita:

Potresti fare una conversione Ascii prendendo un byte alla volta ...

Ciao :)

emanuele.croci
Inserita:

Dipende che cosa HAI e che cosa VUOI.

Ad es. se dici:

in sostanza io sul PLC ho un valore in una DM = 0030 Hex

tale valore lo devo leggere da NS5 e scriverlo su un area del terostato, in quest'area posso scriverci solo in BCD quindi il valore 0030 hex è necessario che mi diventa 30 BCD.

OK molto bene, allora non devi fare nessuna conversione in quanto 30HEX (cioè 0000-0000-0011-0000) equivale perfettamente al 30BCD (cioè 0000-0000-0011-0000).

30 HEX, per inciso, è anche il numero "quarantotto".

Però se a te va bene mettere sul display 3-0, allora sei già a posto.

Ciao, Emanuele

Inserita:

Nel numeral display dell'NS devi mettere BCD2 come Storage Type e Decimal come display type. In questo modo il tuo 30Hex viene letto come 30 e se scrivi 10 ti ritrovi 10Hex e non A.

Ciao!

Inserita:

Grazie Edogol, un ulteriore informazione in un post vecchio mi avevi suggerito di settare l'area dati nella list selection del tipo $HWXX, sei sicuro che si possa fare perchè il programma non me lo permette e non so come fare grazie..

  • 2 weeks later...
Inserita:

Ciao; scusa il ritardo...

E' vero, le aree $HW non sono indirizzabili direttamente dall'oggetto list selection, ma il problema è facilmente aggirabile con una bella macro MEMCOPY con la quale copi il tuo blocco di dati $HW nei $W ai quali farà riferimento la listselection (e viceversa in caso di modifiche...) :lol:

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