Vai al contenuto
PLC Forum


Word-Int


Ghisla

Messaggi consigliati

Ciao ragazzi, mi sono imbattuto in un problema al quale non riesco ad uscirne.

Ho sempre saputo che un intero ha come range  -32768..+32767 mentre una word  0..65535 , provando tramite una tabella di comando mi sono accorto che non è possibile dare un valore maggiore di 32767 ad una word.

Come mai? allora che differenza ci sarebbe tra INT e WORD? Grazie

Link al commento
Condividi su altri siti


Marco Fornaciari

Ma ... stai parlando di una generica variabile chiamato Word, o della variabile tipo Word?

C'è differenza.

Ma tutto ciò vuole anche contestualizzato nel tipo di PLC e nel suo SO, se ante CEI EN 61131, e fino a circa il 2005: c'era di tutto.

Normalmente nella generica variabile Word ante 61131 si può scrivere FFFF/7FFF quindi -32768/+32767 oppure 0-65536.

 

Nella variabile tipo Word puoi scrivere FFFF quindi 65536.

Nella variabile tipo INT si può scrivere -32768-+32767, poi magari la si vede anche come FFFF/7FFF

 

Ma bisogna stare attenti, alcuni SO permettono di vedere e scrivere i valori in qualunque variabile in qualunque modo, poi il valore della variabile è gestito in coerenza con le istruzioni o/e funzioni utilizzate nel programma.

 

 

Link al commento
Condividi su altri siti

Marco Fornaciari

Semplice, lo scrivi in esadecimale FFFF, oppure usi una UINT.

Quindi nel programma lo usi con coerenza, ma quando lo visualizzi segli il formato che ti serve.

Ma, scusa è indispensabile utilizzare il formato WORD?

Come abbiamo già scritto c'è differenza tra variabile Word e formato WORD.

Link al commento
Condividi su altri siti

Quote

Sto parlando delle word di siemens, in una word non è possibile assegnare il valore 65535 

Nel 300 non esistono le "UINT", ma solo le "INT", quindi con valore da -32768 a +32767.
Che poi la differenza è solo nel modo di interpretare il contenuto dei 16 bit.

Se hai bisogno di gestire, con interi, valori da +32768 a +65535, usi una DINT, che va da -2147483648 a +2147483647.

 

Nelle CPU 1200/1500 invece ci sono anche BYTE, SINT, USINT (8 bit), WORD, INT, UINT (16 bit), DWORD, DINT, UDINT (32 bit), LWORD, LINT, ULINT (64 bit).

Link al commento
Condividi su altri siti

Marco Fornaciari

Dopo anni, mi sono accarto adesso che nel 300 non ci sono le UINT ... 😊

Sarà perchè già nel progetto evito di avere necesstà di numeri negativi ... che poi vallo a spiegare a manutentori e tecnologi 😕

Modificato: da Marco Fornaciari
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...