mazzinga Inserito: 8 giugno 2008 Segnala Share Inserito: 8 giugno 2008 Buongiorno.Dal titolo della discussione penso che si capisca quale il mio problema, devo convertire un variabile reale in una variabileDIntero,nella libreria di microWin non ho trovato la funzione corrispondente.Qualcuno saprebbe indicarmi se in qualche modo si puo convertire tale variabileGrazie Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 8 giugno 2008 Segnala Share Inserita: 8 giugno 2008 Devi usare "R_TO_DI" nel formato IEC1131.Dall'help in linea di microwin:L'operazione Converti numero reale in numero intero (a 32 bit) converte un numero reale (N) in numero intero a 32 bit e carica il risultato nella variabile specificata da OUT.Condizioni d'errore che impostano ENO = 0:0006 indirizzo indirettoSM1.1 overflow o valore non ammesso Link al commento Condividi su altri siti More sharing options...
pineto Inserita: 11 luglio 2008 Segnala Share Inserita: 11 luglio 2008 Livio anche io ho lo stesso problema di mazzinga,dovrei convertire un numero reale in doppio intero.Nel mio Tool di sviluppo non trovo l'istruzione da te indicata.La versione che sto utilizzando e la 4.0.6.35,potrebbe essere un problema di versione. Link al commento Condividi su altri siti More sharing options...
kamikaze Inserita: 11 luglio 2008 Segnala Share Inserita: 11 luglio 2008 La funzione citata da Livio , non c'è nel set istruzioni per S7-200.L'unico modo per convertire un REAL in un INT a 32bit (DINT) è usare la funzione ROUND , arrotondamento.CiaoIvan Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 12 luglio 2008 Segnala Share Inserita: 12 luglio 2008 Come ho scritto sopra "R_TO_DI" fa parte del set IEC1131 supportato da tutte le CPU 22x, però non lo trovi nell'editor AWL, KOP e FUP, devi usare un editor IEC1131 e poi compilare, questo è unìaltra delle firbate di Siemens.Non ho mai fatto prove in merito con il 200, ma in altri casi con l'operazione "raund" fai solo il troncamento, ma il numero rimane espresso in real e non in intero, quindi con formati completamente differenti perchè real esprime la mantissa nela byte alto e l'esponente nei 3 byte di peso inferiore Link al commento Condividi su altri siti More sharing options...
rimonta Inserita: 12 luglio 2008 Segnala Share Inserita: 12 luglio 2008 in microwin sulla funzione ROUND, indica che la variabile d'ingresso è un REAL l'out è un DINT. Quindi è quello che fa per te.BAsta guarda re la guida. Link al commento Condividi su altri siti More sharing options...
kamikaze Inserita: 12 luglio 2008 Segnala Share Inserita: 12 luglio 2008 Non ho mai fatto prove in merito con il 200, ma in altri casi con l'operazione "raund" fai solo il troncamento, ma il numero rimane espresso in real e non in interoPer chiarezza bisogna dire che le operazioni che convertono un numero reale con mantissa+esponente sono 2.ROUND , interpreta il numero reale , e restituisce un valore in una DW arrotondato in genere sempre al successivo (in eccesso).Ovviamente i numeri inferiori allo zero assumono annotazione negativa , i numeri con esponente positivo superiori al limite consentito dal formato INT nella DW +2.147.483.647 o minori di zero inferiori a -2.147.483.647 , restituiscono su ENO il valore zero (overflow).TRUNC invece ,effettua un vero troncamento preleva solo la mantissa dal numero reale e la restituisce nella DW in formato INT , in questo modo il valore originale REAL perde il suo significato numerico.CiaoIvan 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