Vai al contenuto
PLC Forum


Sottrazione con risultato negativo


Garzo

Messaggi consigliati

Buongiorno a tutti,

ho ripreso il mio progetto della cassettiera automatica dopo un bel po' di tempo (soprattutto dopo aver studiato nella giusta maniera)... per farla breve, mi sono "creato" il mio moto assoluto tramite il relativo, con varie istruzioni.

Il macchinario è costituito da una cassettiera con 35 celle, a cui sul ciclo dell'automatico, ho impostato le proprie quote per ognuna, per X e per Y. E' comandata con degli oriental motors di tipo Stepper.

Adesso, il problema è che io faccio fare la differenza della posizione attuale in cui si trovano i motori con la prossima a cui devono arrivare

 

ESEMPIO:

La prima cella ha per il motore X una quota di 10.000 Hz. alla seconda cella imposto una quota di 5.000 Hz, quindi ci si aspetta che il movimento sia di 5.000 impulsi indietro, per cui: 5.000 - 10.000 = -5.000 che sposto nella DINT che mi indica il Target_Pulses nel @PLS2.

Venendo al punto: 

Quando la sottrazione ha un risultato sotto zero, la DINT della destinazione del risultato mi va al valore massimo (ergo 4 miliardi e passa) ... ma io non sto usando una UDINT che va da 0 a 4 miliardi bensì una DINT, che sempre secondo teoria, dovrebbe partire da -2 miliardi e qualcosa fino a 2 miliardi !!! 

 

Uso l'istruzione @-L visto che devo operare con delle doppie word.

Uso un CP1E-NA.

 

Ho implementato un metodo che sarà funzionante al 100% (simile a quello che uso per MicroLogix) e risolto questo posso concludere la macchina.

 

Soluzioni? (In allegato lo screenshot)

 

Immagine.png

Link al commento
Condividi su altri siti


La posizione assoluta memorizzata nel PLC dovrebbe essere a 32bit e quindi un numero sopra 4 miliardi ma non può essere negativo, perciò se vai sotto la posizione zero sei a 4miliardi e passa, non vai a una posizione negativa, considera la posizione assoluta sempre un valore senza segno. Inoltre invece di fare un posizionamento relativo perchè non fai fare posizionamenti assoluti visto che la posizione delle varie stazioni le conosci? Altra cosa mi immagino che l'Homing sia nella posizione minima che puoi assumere, giusto?

Meglio se fai gestire tutto al PLC con posizionamenti assoluti, ci pensa il PLC a effettuare il posizionamento relativo alla posizione attuale con la rampa necessaria o che può eseguire

Link al commento
Condividi su altri siti

E' solo un "problema" di visualizzazione, devi avere impostato la visualizzazione dei numeri come UINT (come si evince dalla & davanti al numero).

In questa mia risposta a un problema simile, trovi come poter impostare, o meglio non impostare, una visualizzazione di default

Link al commento
Condividi su altri siti

1 ora fa, leleviola scrisse:

La posizione assoluta memorizzata nel PLC dovrebbe essere a 32bit e quindi un numero sopra 4 miliardi ma non può essere negativo, perciò se vai sotto la posizione zero sei a 4miliardi e passa, non vai a una posizione negativa, considera la posizione assoluta sempre un valore senza segno. Inoltre invece di fare un posizionamento relativo perchè non fai fare posizionamenti assoluti visto che la posizione delle varie stazioni le conosci? Altra cosa mi immagino che l'Homing sia nella posizione minima che puoi assumere, giusto?

Meglio se fai gestire tutto al PLC con posizionamenti assoluti, ci pensa il PLC a effettuare il posizionamento relativo alla posizione attuale con la rampa necessaria o che può eseguire

 

Si lo so, basterebbe che nella seconda istruzione del PLS2 impostassi #0101 invece che #0100. Il problema è che non mi funziona ! E non ho tempo per mettermi a capire perchè non effettua il moto, pertanto me lo sono creato io tramite varie combinazioni di istruzioni.

 

1 ora fa, Ctec scrisse:

E' solo un "problema" di visualizzazione, devi avere impostato la visualizzazione dei numeri come UINT (come si evince dalla & davanti al numero).

In questa mia risposta a un problema simile, trovi come poter impostare, o meglio non impostare, una visualizzazione di default

 

Non avevo notato, la discussione è anche molto recente! :) 

 

Grazie ragazzi, se ho altri problemi vi faccio sapere

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