Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Differenza Tra Tipo Di Dato Word E Uint


Messaggi consigliati

Inserito:

Buongiorno

mi sono sempre chiesto che differenza ci sia tra il tipo di dato WORD ed il tipo di dato UINT,se entrambi rappresentano numeri interi da 0 a 65.535.

Questo è dovuto sicuramente alle mie scarse abilità di programmatore,ma sarò grato a chiunque volesse provare a rispondermi

Matteo


Inserita:

Una word è un riferimento all'organizzazione di memoria e non ha una grandezza fissa. Ci sono memorie organizzate a wor di 8 bits, altre a words da 16, o da 24 bits o 32 bits, sino ai PC di ultima generazione dove le word sono da 64 bits. C'è una famosa serie di microcontrollori dove la memoria di programam è organizzata in words da 12 bits.

Invece i tipid i dati INT hanno una lunghezza fissa e precisa, stabilita dalle normative IEEE. Sono lunghi 16 bits e hanno un campo di +/- 32767 oppure di 65535 se son UINT (unsigned).

Inserita:

Grazie Livio,

il mio dubbio era dovuto al fatto che i controllori che ho usato io dichiarano word come 16 bits(esattamente come il tipo di dato INT).

Ora mi spiego il perchè dell'esistenza di entrambi i tipi di dato.

Un dubbio però mi rimane: è ininfluente dichiarare una variabile come word o come uint?Questo naturalmente nel caso di controllori i quali considerano una word come 16 bits.

Giuseppe Signorella
Inserita: (modificato)

No, non è ininfluente.

Una Word è da considerarsi come un contenitore generico, dove semplicemente sono contenuti in esso un numero di bit specifici.

(Senza un significato apparente specifico).

Essi possono semplicemente identificare lo stato delle uscite del PLC come gli ingressi o altro.

Oppure in funzione del formato assumere un significato preciso.

Se io ti chiedessi cosa significa questa combinazione binaria 1100110011001100, (word a 16 bit) non ti direi nulla.

Se invece lo volessi sapere in decimale mi risponderesti 52428

In DCB (ottagonale) mi risponderesti 146314

se volessi saperlo in ascii mi diresti "ìì"

Pertanto specificare il formato è molto importante, in quanto la medesima combinazione di bit, può assumere significati differenti.

Modificato: da Giuseppe Signorella
Inserita:

Grazie Giuseppe

in pratica se ho capito bene,se volessi dichiarare 16 uscite del mio plc potrei dichiarare una word la quale so che ad un determinato bit corrisponde una determinata uscita.

Questo che tipo di comodità può portare? magari mi evita di andare a controllare ogni singolo bit.?.se per esempio avessi le mie 16 uscite e volessi verficare che tutte siano ad '1'..che istruzione dovrei utilizzare?e nel caso le uscite fossero che so,dieci?

io ho in mente un modo,ma non so se è quello giusto...andrei a prendere la word,e la confronterei col valore 65535...se il confronto è vero significa che tutti i 16 bit sono alti :whistling:

potrebbe essere? :huh:

Giuseppe Signorella
Inserita: (modificato)

Si esatto, ma per la precisione, se stiamo parlando di word, io il confronto lo farei in esadecimale con "FFFF"

.andrei a prendere la word,e la confronterei col valore 65535

Un confronto di questo tipo, alcuni software non lo accetterebbero, in quanto prima ti obbligherebbero a convertire la word. Il risultato della conversione lo utilizzi per il confronto.

In alcuni software più evoluti (moderni) questa conversione la fa anche direttamente l'istruzione. (Nel caso dell'esempio l'istruzione di confronto).

Per tale motivo il compilatore non ti da errore. Questo modo di ragionare dei moderni sistemi di sviluppo/compilatore tende ad ingannare facendoti credere che l'utilizzo di un dato espresso in un modo piuttosto che in un altro sia la stessa cosa. In realtà è perchè il compilatore si fa carico della conversione.

Modificato: da Giuseppe Signorella
Inserita:

Grazie, ora la questione mi è chiara.

Quindi la procedura corretta sarebbe prima la conversione word-uint, poi il confronto a 65535.

Inserita:

ciao

In alcuni software più evoluti (moderni) questa conversione la fa anche direttamente l'istruzione. (Nel caso dell'esempio l'istruzione di confronto).

E' vero,alcune marche di plc quando fai il confronto tra word e uint lo fanno senza problemi e la stessa word puoi confrontarla successivamente con un into con un esadecimale. Per loro la word è solo una rappresentazione comoda per l'utente, quello che c'è dentro è sempre un numero.

In alcuni software più evoluti (moderni)

Questa opportunità e già presenta da oltre 15 anni su alcuni software (solo per informazione).

pero' se usi siemens.........

  • 1 month later...
Inserita:

Scusate se riaccendo la discussione, ma lo letta e volevo chiedervi una cosa, che praticamente non mi è chiara al 100 %100, se con step 7 devo fare una moltiplicazione tra 2 numeri interi , posso inserire il moltiplicatore e il moltiplicando in formato word ? E lui se lo converte automaticamente ? Step 7 se non mi sbaglio dovrebbe interpretare le word in BCD e le int in codice binario ,grazie è 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...