Vai al contenuto
PLC Forum


Sysmac Studio Stupidity


dott.cicala

Messaggi consigliati


CX è solo un esempio che però non ho riportato.

 

La riga sotto gira su un Siemens.

 

Il progetto gira su un NJ e devo leggere la posizione di un asse collegato in ethercaz il quale manda la pos in DINT e che devo dividere /10 per avere i mm.

 

In ogni caso, che senso ha quel risultato?

Link al commento
Condividi su altri siti

Il senso è semplice ed è intrinseco nel tipo di dato REAL ......

I REAL NON SONO PRECISI e non andrebbero usati quanto è richiesta la correttezza / precisione del dato.

Come fare ?

Semplice : usi un Doppio intero e formatti la visualizzazione con i decimali che ti servono.

 

P.S. - E' un comportamento 'normale' e non ascrivibile a OMRON / SIEMENS /SCHNEIDER / PC ..... (probabilmente potresti non avere la stessa casistica sui processori differenti).

 

Link al commento
Condividi su altri siti

Ma che significa ?

 

Sopra hai gli esempi con cx e Siemens e il problema non c'è.

 

Sai darmi una spiegazione?

 

 

 

Link al commento
Condividi su altri siti

Nel caso non fossi convinto : Matlab & FloatingPointNumbers

 

Nel link trovi CHIARAMENTE scritto (sempre in inglese) che il problema dei real risiede nel come i numeri vengono memorizzati in (implementazione IEEE754), che NON è un BUG di MatLab e che il problema esiste anche in C, Fortran .....

 

Non ti so spiegare il differente comportamento tra Omron e Siemens (magari tipo di dati diverso ? Single Vs. Double Float?) ma ti ho indicato il problema dei REAL.

Link al commento
Condividi su altri siti

Grazie dei link.

 

Probabilmente non sono stato chiaro nella mia richiesta.

 

Già conoscevo le ragioni che comportano quel risultato

 

Ciò che invece mi irrita terribilmente è che nel CX di 20 anni fa, questo problema è stato considerato

 

60aa10d87aa6471a137190ed5d6c883c.JPG

 

e in sysmac invece NO....

 

 

 

 

 

Link al commento
Condividi su altri siti

Stefano, hai letto le mie risposte? Le hai capite ?

Hai letto la risposta di pcontini che ti suggerisce di usare lreal (non so cosa sia non usando Omron - ipotizzo long real / real double precision ) che ti da il risultato atteso ?

Hai capito che il problema risiede nella NON precisa conversione da int a real e che NON è un problema di Omron / Sysmac ?

 

Link al commento
Condividi su altri siti

Caspita,  mi sa che non le hai lette tu le mie risposte o non le hai capite.

 

Lo so che se uso Lreal la conversione è corretta

 

ma ciò non toglie che se fai la conversione e guardate bene ciò che ho allegato,

 

con cx  la conversione int_to real non è affetta da quell'errore.

 

 

 

 

 

 

 

Link al commento
Condividi su altri siti

Il problema lo segnalo qui per chi dovesse trovarsi a "migrare" un vecchio progetto fatto con cx programmer, nel quale esista un fb in cui sia stata fatta la stessa conversione int_to_real senza problemi, la quale in  sysmac invece da un risultato diverso.

 

 

 

Link al commento
Condividi su altri siti

  • 2 weeks later...

Ciao a tutti,

sembra che il problema non sia tanto del Controllore, ma del monitoraggio di Sysmac Studio!

Ho provato infatti a controllare il risultato di una divisione tra REAL e il PLC non sbaglia.

4643/10 = 464.3 su PLC, 464.29999 sul monitoraggio di Sysmac Studio.

Non è quindi necessario utilizzare LREAL in quanto non è un problema di precisione

Allego lo screenshot sul mio programma di esempio.

Saluti! 

Divisione.png

Link al commento
Condividi su altri siti

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