Vai al contenuto
PLC Forum


Word-Int


Messaggi consigliati

Inserito:

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


Marco Fornaciari
Inserita:

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.

 

 

Inserita:

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

Marco Fornaciari
Inserita:

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.

Inserita:
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).

Marco Fornaciari
Inserita: (modificato)

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

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