dott.cicala

Sysmac Studio Stupidity

16 messaggi in questa discussione

Chi riesce a spiegarmi questo ?

 

2215456b54c693ba5b92d7007c100cde.JPG

 

Con altri plc

 

2ee20f4833eb0c1188f824f1990dbb03.JPG

 

lo stesso fatto con cx non accade!

Condividi questa discussione


Link discussione
Condividi su altri siti

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

 

Condividi questa discussione


Link discussione
Condividi su altri siti

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?

Condividi questa discussione


Link discussione
Condividi su altri siti

Ecco come si comporta CX

 

75fd8abbd51bbeb331ff073b6157a3c7.JPG

 

7e7593fc2fc023717f3f528ba8f572b8.JPG

Condividi questa discussione


Link discussione
Condividi su altri siti

 

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

 

efb39f3d920d2c28d7c1f5356fc40e07.JPG

 

34380051359f558b9712fce911d5c7eb.JPG

Condividi questa discussione


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

 

Condividi questa discussione


Link discussione
Condividi su altri siti

Ma che significa ?

 

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

 

Sai darmi una spiegazione?

 

 

 

Condividi questa discussione


Link discussione
Condividi su altri siti

Real_Numbers

 

Leggi (è in inglese) la parte finale quando parla di 1/10 .....

 

Condividi questa discussione


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

Condividi questa discussione


Link discussione
Condividi su altri siti

infatti se usi LREAL sei ok

lreal.jpg.ba34a2ea56d8c0917ea1a108c0475c90.jpg

Condividi questa discussione


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

 

 

 

 

 

Condividi questa discussione


Link discussione
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 ?

 

Condividi questa discussione


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

 

 

 

 

 

 

 

Condividi questa discussione


Link discussione
Condividi su altri siti

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

 

Condividi questa discussione


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

 

 

 

Condividi questa discussione


Link discussione
Condividi su altri siti

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

Condividi questa discussione


Link discussione
Condividi su altri siti

Registrati o accedi per inserire messaggi

Devi essere un utente registrato per lasciare un messaggio. La registrazione è GRATUITA.

Crea un account

Iscriviti alla nostra comunità. È facile!


Registra un nuovo account

Connettiti

Hai già un account? Connettiti qui


Connettiti adesso