meccanico1 Inserito: 17 agosto 2015 Segnala Share Inserito: 17 agosto 2015 Buona sera , mi sono accorto che non posso caricare un valore fisso superiore a 16#FFFF su di una operazione a virgola fissa nel mio caso una DIVDI mentre lo posso fare usando il valore in decimale. C'è un motivo particolare ? grazie Link al commento Condividi su altri siti More sharing options...
Giuseppe Signorella Inserita: 17 agosto 2015 Segnala Share Inserita: 17 agosto 2015 (modificato) Non è molto chiaro ciò che intendi dire in quanto non indichi che tipologia di variabile stai utilizzando (Se a 16 o 32 bit) Se è un numero reale, parliamo di 32 bit. Se è un numero intero (probabilmente) parliamo di 16 bit (Lo deduco da ciò che hai scritto "16#FFFF") e non da un numero intero a 32 bit. Esprimere un valore in esadecimale, in decimale, o in binario è la medesima cosa. Non cambia nulla se non il modo con viene espresso il valore. Il valore espresso in esadecimale "16#FFFF" Corrisponde al valore decimale "65535", il quale è il massimo valore che può contenere una WORD, pertanto non puoi inserire in una word una valore maggiore di 65535 o di 16#FFFF. Se riesci ad inserire nel blocco un valore superiore a 65535, probabilmente ti viene fatta una conversione di tipo coercion "implicita", ma anche la variabile di uscita a questo punto deve essere a 32 bit. Modificato: 17 agosto 2015 da Giuseppe Signorella Link al commento Condividi su altri siti More sharing options...
valvolina Inserita: 17 agosto 2015 Segnala Share Inserita: 17 agosto 2015 ciao, se stai programmando in kop (con step7) con una operazione di divisione DIV_DI (divisione di doppi interi quindi 32 bit), non è permesso mettere come parametro di ingresso un numero in esadecimale. Giustamente come ha detto Giuseppe devi esprimere il valore che vuoi mettere invece che in esadecimale in decimale. esempio 16#FFFFFF = 16777215 in decimale. se lo fai in awl, il software è un pò meno fiscale e ti lascia più libertà. un saluto Valvolina Link al commento Condividi su altri siti More sharing options...
meccanico1 Inserita: 17 agosto 2015 Autore Segnala Share Inserita: 17 agosto 2015 in effetti è quello che ho fatto , ma avevo la curiosità di capire se c'è un motivo particolare perchè in un modo si può fare ( con i valori in decimale ) e nell'altro no ( con i valori in esadecimale). Grazie Link al commento Condividi su altri siti More sharing options...
elettrix01 Inserita: 17 agosto 2015 Segnala Share Inserita: 17 agosto 2015 Io me lo sono spiegato così: la funzione DIV_DI richiede in ingresso un numero intero a 32 bit (tipo DINT). In quanto numero vuole la rappresentazione in decimale. Se tu usi la rappresentazione esadecimale il compilatore lo interpreta come una (DWORD) che non è accettato come ingresso della funzione. In AWL invece la funzione va a leggere direttamente sui registri e perciò non fa controlli sul tipo di dati Link al commento Condividi su altri siti More sharing options...
Colonial54 Inserita: 18 agosto 2015 Segnala Share Inserita: 18 agosto 2015 Io ho provato con una divisione KOP DIV_DI con 16#FFFF sia al dividendo che al divisore e non mi ha dato problemi; Hai eliminato la spunta sulla casella "Strumenti-Impostazioni-Kop/Fup-Controllo tipo di operandi? Ops... Scusate, avevo letto male la domanda... Link al commento Condividi su altri siti More sharing options...
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