Folder Inserito: 2 febbraio 2020 Segnala Inserito: 2 febbraio 2020 Come da titolo, domanda da un milione di euro, voglio porre fine a questo mio grande quesito, nonché le differenza tra una Word ed una Int. Ho notato che il TIA in alcune situazioni mi ha obbligato ad utilizzare un tipo di variabile di uno o dell' altro, ma anche discudendo tra colleghi, non c'è mai stata una risposta esaudiente.... "sono più o meno uguali" 🤣
batta Inserita: 3 febbraio 2020 Segnala Inserita: 3 febbraio 2020 E' solo un modo diverso di interpretare la stessa cosa.
84paolo Inserita: 3 febbraio 2020 Segnala Inserita: 3 febbraio 2020 normalmente la differenza principale è che INT è tra -32768 e +32767 e invece WORD tra 0 e 65535. Se tu appoggi un dato negativo in una word non lo vedrai con il segno meno, ma troverai un valore che non ha nulla a che fare con quello che hai messo. Se invece fai una somma di INT il cui risultato è maggiore di 32767 e lo appoggi in un INT vedrai un valore con il segno -. Su alcune schede analogiche con risoluzione 16 bit di altri fornitori non siemens per esempio devi appoggiare il valore in una word altrimenti ti perdi il bit 16. In altre parole WORD e INT è sempre a 16 bit. La differenza è che WORD hai tutti i 16 bit per il valore da 0 a 65536. INT hai 15 bit per il valore e il 16 è il segno quindi -32768 a +32767
batta Inserita: 3 febbraio 2020 Segnala Inserita: 3 febbraio 2020 2 ore fa, 84paolo ha scritto: normalmente la differenza principale è che INT è tra -32768 e +32767 e invece WORD tra 0 e 65535. Ad essere pignoli, questa è la differenza tra Int e UInt. Generalmente una Word viene visualizzata in esadecimale (0000..FFFF). Ma sempre variabili a 16 bit sono. Tutto sta solo nel decidere come si vuole interpretare e visualizzare il contenuto. Per esempio, se interpreto la variabile con il segno (Int), FFFF corrisponde a -1; se interpreto la variabile senza segno (UInt), FFFF corrisponde a 65535. Poi ricordiamoci anche che questo vale nei PLC Siemens, e nella stragrande maggioranza dei PLC. Ma, se si cambia ambiente, le variabili a 16 bit sono Short, mentre le Int sono a 32 bit, e le Long Int a 64 bit. Il concetto, comunque, non cambia: tutto sta solo nel modo in cui si decide di interpretare il contenuto.
ifachsoftware Inserita: 7 febbraio 2020 Segnala Inserita: 7 febbraio 2020 Banalmente le Word si potrebbero utilizzare per fare un contaore che arrivi a 65535 a parità di un Int che a parità di spazio mi limiterebbe a 32767 Peccato che le comparazioni sulle word lavorino solo con l'uguale e non con gli altri operandi , patto di farsi un qualcosa di dedicato per gestirle
batta Inserita: 7 febbraio 2020 Segnala Inserita: 7 febbraio 2020 3 ore fa, ifachsoftware ha scritto: Banalmente le Word si potrebbero utilizzare per fare un contaore che arrivi a 65535 a parità di un Int che a parità di spazio mi limiterebbe a 32767 A dire il vero, questa è la differenza tra UINT (senza segno) e INT (con segno).
Livio Orsini Inserita: 8 febbraio 2020 Segnala Inserita: 8 febbraio 2020 10 ore fa, Yiogo ha scritto: quello delle UINT 0 - 65535., quello delle WORD 0 - FFFF Cambia solo la visualizzazione del dato; il primo è espresso in base 10, mentre il secondo in base 16. Potrei anche scrivere 1777778 e sarebbe la stessa cosa. Fisicamente, nella memoria, è 1111 1111 1111 1111b
del_user_281384 Inserita: 9 febbraio 2020 Segnala Inserita: 9 febbraio 2020 (modificato) Il 2/2/2020 alle 21:37 , Folder ha scritto: Come da titolo, domanda da un milione di euro, voglio porre fine a questo mio grande quesito, nonché le differenza tra una Word ed una Int. Ho notato che il TIA in alcune situazioni mi ha obbligato ad utilizzare un tipo di variabile di uno o dell' altro, ma anche discudendo tra colleghi, non c'è mai stata una risposta esaudiente.... "sono più o meno uguali" 🤣 Nei manuali Schenider, per il software Unity, la WORD è indicata come variabile di tipo stringa anche se non ho mai capito la differenza con UINT perchè la rappresentazione sembra la medesima. Per copiare i dati da una WORD ad una UINT è stranamente necessaria una conversione di tipo... Modificato: 9 febbraio 2020 da Ridiculouslab
ifachsoftware Inserita: 10 febbraio 2020 Segnala Inserita: 10 febbraio 2020 Il 8/2/2020 alle 08:55 , Livio Orsini ha scritto: Cambia solo la visualizzazione del dato; il primo è espresso in base 10, mentre il secondo in base 16. Potrei anche scrivere 1777778 e sarebbe la stessa cosa. Fisicamente, nella memoria, è 1111 1111 1111 1111b Sinceramente mi sembra una sega mentale , dal mio punto di vista sono uguali , quello che non capisto è la possibilità di non gestire nativamente delle comparazioni di < o > ....
batta Inserita: 10 febbraio 2020 Segnala Inserita: 10 febbraio 2020 2 ore fa, ifachsoftware ha scritto: Sinceramente mi sembra una sega mentale Ma, infatti, esistono solo 0 e 1. Tutto il resto, è solo per riportare da codice binario a formati più facili da comprendere per noi esseri umani. L'esadecimale è comodo perché raggruppa 4 bit per ogni digit. Il decimale è comodo perché siamo abituati fin quasi dalla nascita a ragionare in base 10. Poi si deve decidere se si vogliono usare solo valori positivi (nel qual caso si decide che il bit più a sinistra è un bit come gli altri), o se servono anche valori negativi (quindi, il bit a sinistra sarà il bit del segno). Sono solo regole per dare la corretta interpretazione.
Roberto Gioachin Inserita: 10 febbraio 2020 Segnala Inserita: 10 febbraio 2020 5 ore fa, ifachsoftware ha scritto: quello che non capisto è la possibilità di non gestire nativamente delle comparazioni di < o > Se una variabile viene dichiarata INT può assumere valori inferiori a zero, se è dichiarata UINT non può, se la dichiari WORD perde senso pensare solamente una comparazione su < 0.
ifachsoftware Inserita: 10 febbraio 2020 Segnala Inserita: 10 febbraio 2020 25 minuti fa, Roberto Gioachin ha scritto: Se una variabile viene dichiarata INT può assumere valori inferiori a zero, se è dichiarata UINT non può, se la dichiari WORD perde senso pensare solamente una comparazione su < 0. < di 0 No , ma < di 50 per esempio si , e questo non è permesso , permette solo di controllare se è uguale a un valore
max.riservo Inserita: 10 febbraio 2020 Segnala Inserita: 10 febbraio 2020 Una word è più sensato 'vederla' come un array di 16 bits e usarla 'pensando' in binario (o in esadecimale). Un INT (UINT) è più sensato 'vederlo' come un numero e usarlo come tale (in decimale). Poi, siccome hanno la stessa dimensione in memoria, è molto semplice convertirli tra loro (che tradotto significa che i bits non cambiano ma cambia il significato che viene dato ai bits). Ricordo che il Modbus (RTU o TCP/IP) ragiona in Word (registri a 16 bits) ma ovviamente questo non vuol dire che gli INT, i DINT o i REAL non vengano trasferiti correttamente (o perdano qualcosa) utilizzando questo protocollo .....
Roberto Gioachin Inserita: 10 febbraio 2020 Segnala Inserita: 10 febbraio 2020 4 ore fa, ifachsoftware ha scritto: e questo non è permesso , permette solo di controllare se è uguale a un valore Questa è una scelta di Siemens ed è anche condivisibile, altri lo permettono. Quando ci si riferisce ad una WORD ci si riferisce ad una serie di 16 bit e non propriamente ad un numero, quindi è comprensibile che si possa verificarne solamente l'uguaglianza. Se per ipotesi la nostra WORD contiene di fatto due caratteri ASCII, che senso avrebbe fare una comparazione con un valore numerico? Se una WORD invece si sa che contiene un valore di tipo UINT, basta convertirla e poi la si può comparare.
Livio Orsini Inserita: 11 febbraio 2020 Segnala Inserita: 11 febbraio 2020 9 ore fa, Yiogo ha scritto: i veri programmatori ragionano in prima battuta in esadecimale Solo da una trentina di anni a questa parte, mentre prima dipendeva dalla macchina che usavi al momento, spesso dovevi ragionare in ottale. ma come ho scritto prima è solo una comodità rappresentativa, per la machina poi è tutto binario
Livio Orsini Inserita: 11 febbraio 2020 Segnala Inserita: 11 febbraio 2020 Libero di pensarlo se ti piace.
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora