Vai al contenuto
PLC Forum


Sysmac Studio Stupidity


Messaggi consigliati

Inserito:

Chi riesce a spiegarmi questo ?

 

2215456b54c693ba5b92d7007c100cde.JPG

 

Con altri plc

 

2ee20f4833eb0c1188f824f1990dbb03.JPG

 

lo stesso fatto con cx non accade!


Inserita:

Ma in cx-p hai messo la divisione come in sysmac?

 

Inserita:

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?

Inserita:

Ecco come si comporta CX

 

75fd8abbd51bbeb331ff073b6157a3c7.JPG

 

7e7593fc2fc023717f3f528ba8f572b8.JPG

Inserita:

 

...E ancora in Sysmac Stu(p)dio

 

efb39f3d920d2c28d7c1f5356fc40e07.JPG

 

34380051359f558b9712fce911d5c7eb.JPG

Inserita:

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

 

Inserita:

Ma che significa ?

 

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

 

Sai darmi una spiegazione?

 

 

 

Inserita:

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.

Inserita:

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

 

 

 

 

 

Inserita:

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 ?

 

Inserita:

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.

 

 

 

 

 

 

 

Inserita:

Bene, allora contatta la OMRON e segnala a loro il problema .....

 

Inserita:

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.

 

 

 

  • 2 weeks later...
Inserita:

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

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