Vai al contenuto
PLC Forum


Sottrazione con GX Works 3


Simo.PLC

Messaggi consigliati

Ciao ragazzi,

Ho un problema in una FB di GX Works 3, sto cercando di fare una sottrazione di due variabili che hanno come tipo delle Double Words Signed. Queste due variabili si incrementano, la seconda variabile è più bassa della prima, ma il risultato è sempre alto e questo è strano.

Quindi c'è un errore che non ho capito, chi può aiutarmi?

Link al commento
Condividi su altri siti


Magari è solo sbagliata l'interpretazione del tuo risultato o della tua interpretazione del risultato finale, quando compili l'istruzione relativa se ci fosse uno dei due operandi non conformi all'istruzione non ti farebbe compilare il tutto e pure il risultato deve essere conforme, perciò mi sa che è la tua interpretazione non corretta. Dove metti il risultato in una Label o in un Device? In quest ultimo caso potrei capire che possa esservi un'interpretazione sbagliata del risultato, nel caso di una label no. Che bello quando tutto era interpretabile liberamente dai Device e era il programmatore a capire come interpretare il risultato di un'operazione, come sul buon vecchio Developer....

Link al commento
Condividi su altri siti

11 ore fa, leleviola ha scritto:

Che bello quando tutto era interpretabile liberamente dai Device e era il programmatore a capire come interpretare il risultato di un'operazione, come sul buon vecchio Developer.

No, Lele, proprio i linguaggi strettamente tipizzati sono un modo di evitare errori. Prima buttavi tutto in una word e poi una volta lo vedevi come INT, oppure come UINT, o peggio come WORD (array di bit) o un BCD. Ben vengano i warning di tipo non corretto, che ti fanno vedere che stai probabilmente facendo una cavolata... Permettevano dei trucchi niente male (già dai tempi degli assembler...) ma la possibilità di errore era piuttosto grande e di difficile individuazione.

Quello che purtroppo manca nei linguaggi IEC (e il GX3 non lo è molto...) è il casting automatico ed esplicito. W il C.

Link al commento
Condividi su altri siti

Cerco di spiegarmi meglio, sto usando una funzione che si chiama "D-" in una FB, il primo valore della sottrazione dovrebbe essere più grande di 500 rispetto al secondo, perché questi numeri sono i risultati di due operazioni presenti in un Program e aumentano sempre a seconda delle volte volte in cui entrano in determinati if.

Le variabili che sto usando sono delle label, in particolare il primo numero è una variabile di input, il secondo numero è un variabile di IN/OUT e il risultato è una variabile interna.

Avreste dei suggerimenti per avvicinarmi alla risoluzione del problema? Magari facendo qualche prova.

Grazie mille

Link al commento
Condividi su altri siti

5 ore fa, Ctec ha scritto:

.. Permettevano dei trucchi niente male (già dai tempi degli assembler...) ma la possibilità di errore era piuttosto grande e di difficile individuazione.

 

Si Andrea è vero, la mia era una divagazione "nostalgica" sul tema

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