Vai al contenuto
PLC Forum


Encoder Con Cpm1a


CDR

Messaggi consigliati

A causa cambio lavoro è molto tempo che non mi collego e colgo l'occasione per salutare tutti quanti, ho trovato il forum rinnovato e migliorato, segno di crescita e professionalità.

Ho un CPM1A al quale ho collegato un encoder incrementale 360 i/g in questo modo:

fase A all'ingresso 0.00

fase B 0.01

fase Z 0.02

nelle impostazione del contatore ho spuntato:

reset: fase Z e software

mdalità: incrementale

attivazione: utilizza contatore

nella prima riga di programma tengo sempre a 1 25200 con l'istruzione 25313, fin qui tutto ok tant'è che nel canale 248 vedo incrementare il valore del contatore e a 360 quando passo sulla fase Z riparto da zero.

Quello che non capisco leggendo il manuale è come si fà a scatenare degli eventi ad un certo valore, mi spiego meglio:

imposto dm0 a 50

imposto dm1 a 150

imposto dm2 a 70

imposto dm3 a 220

voglio che l'uscita 10.00 si attivi al valore di dm0 e si disattivi al valore di dm1

stessa cosa per l'uscita 10.01, deve attivarsi al valore di dm2 e si disattivi con dm3

In pratica continuando in questo modo vorrei fare 16 camme con limite minimo e limite massimo impostabile esternamente, ho già provato diverse soluzioni ma non riesco a farle funzionare, ringrazio anticipatamente tutti quelli che proveranno a darmi una mano.

Link al commento
Condividi su altri siti


Sto facendo un lavoro simile al tuo e per ora ho provato usando =

Cioè quando il valore degli impulsi dell'encoder risulta uguale a un valore impostato, faccio eseguire il comando, nel mio caso una pls2 (uso un cp1l)

Però se qualcuno ha altri metodi sarei felice anche io di provarli e metterli in pratica.

Link al commento
Condividi su altri siti

La condizione di uguaglianza può creare problematiche se la velocità dell'encoder è sostenuta. Mi spiego meglio:

A velocità di rotazione motore ampie non è detto che ad un ciclo possa corrispendere un singolo valore di incremento dei contatori. In tal caso risolvo creando una soglia, quindi valori compresi in un intervallo:

If A<=x-Y and A>=x+Y then ....

in tale codice inserisco un bit attivo sul fronte di salita ed il gioco è fatto.

Altri metodi non ne ho trovati...

Link al commento
Condividi su altri siti

Nel manuale di programmazione del CPM1A a pag 77 capitolo 2-3-5 l'esempio applicativo modo UP/DOWN spiega molto bene come fare una tabella di confronto, io ho capito così:

dopo aver scritto e caricato il programmino della pag 78, imposto le DM esattamente come a pag 77, a questo punto mi ritrovo ad aver fissato 2 limiti inferiori e 2 limiti superiori con le DM da DM0000 a DM0009.

A questo punto se DM0 è caricata a 50 e DM2 a 100, quando il PV vale 75 che cosa mi ritrovo a 1 ?????????

Stessa cosa vale per la DM 5 caricata a 150 e la DM 7 caricata a 200, anche qui che cosa mi va a 1 quando i PV vale 150 ???

Link al commento
Condividi su altri siti

Ciao

Io uso la funzione BCMP(68) bit compare

253.13 ---------- BCMP68

248 (word encoder)

DM0 (inizio cams)

H0 (canale cams)

se il valore di 248 è compreso tra DM0 e DM1 allora H0.0 = on

se il valore di 248 è compreso tra DM2 e DM3 allora H0.1 = on

e così via

ELEL65

Link al commento
Condividi su altri siti

Ciao. Non il manuale sotto mano. Penso che dalle parti del manaule dove dice CDR viene ben spiegato come usare la [at]CTBL (tabella di registrazione) la chiami prima di processarla, la tabella viene registrata, e tramite i parametri della tabella stessa lanci delle sub che ci fai quello che vuoi. Sempre usata senza problemi,normalmente per un avanti e indietro uso due [at]CTBL. Bye

Link al commento
Condividi su altri siti

provato il metodo ELEL65 funziona benissimo

GIGIRAMONES.....perchè la at davanti a CTBL? il manuale non la nomina e io non l'ho messa.

Sarà per quello che non funziona?

Comunque grazie a entrambi.

Link al commento
Condividi su altri siti

Ciao. la [at] sarebbe la chiocciola del e-mail, la chiocciola è l'istruzione differenziale per le funzioni.

Se la chiami sempre la ctbl e in continua registrazione e dubito che funzioni.

comunque per essere breve estratto da manule Cat. No. W353-I1-1 del febbraio 2001 (il primo che ho trovato!)

Con ([at])CTBL(63) puoi fare.

-Registrazione della tabella per il confronto a target

-Registra la tabella comparativa dei valori di arrivo.

-Registrazione della tabella per il confronto ad intervalli

-Registra la tabella comparativa di intervallo.

-Registrazione tabella a target e avvio del confronto

-Registra la tabella comparativa dei valori di arrivo e avvia il confronto.

-Registrazione tabella comparativa a intervalli e avvio del confronto

-Registra la tabella comparativa di intervallo e avvia il confronto.

Ti posto velocemente cosa faccio su delle torrette di rotazione per attivare 4 camme

passo 1 sono a 0 gradi pronto a partire vado a passo 2

passo 2 becco dal pannello i setup di 4 finestre finestra 1a camma, finestra 2a camma... 3a.. e 4a dove deve fermarsi.

e li muovo come valore assoluto dentro alla tabella configurata da ctbl

passo 3 attivo la registrazione della tabella (qui uso l'istruzione differenziale)

passo 4 comando avanti motore (set AuxMot 200.7 esempio)

Arrivati a questo punto dentro alla configurazione della tabella ci sono 4 sub chiamate a piacere 1,2,3,4

in questo esempio usiamo Registra la tabella comparativa dei valori di arrivo quindi

Arrivato la 1a camma la ctbl richiama la sub 1 che farà che deve fare. arrivata la 2a camma la ctbl chiama la sub 2 che farà che deve fare e così per la 3a; Arrivata la 4a camma la ctbl richiama la sub 4 dove dentro c'è scritto (reset AuxMot 200.7) ed il motore si ferma.

bye

Link al commento
Condividi su altri siti

In giornata provo anche la tua soluzione al mio problema ( GIXRAMONES ), io è la prima volta che utilizzo Omron perchè qui a Torino con FIAT va al 99% Siemens che per altro utilizzo da 20 anni.

Siemens non dà scampo, nel senso che con un encoder si fa così e basta, con Omron vedo che ci sono diverse soluzioni e questo mi disorienta un pò, la soluzione di ELEL65 l'ho provata e sembra funzionare benissimo ma sono sicuro che deve funzionare altrettanto bene anche la tua.

Arrivando da Siemens la tua soluzione è quella che più assomiglia al modo di programmare un encoder con Siemens, ma siccome mi piace andare a fondo vorrei capire anche qual'è la soluzione migliore con Omron, sempre che ci sia una soluzione migliore, magari sono 2 modi diversi ma altrettanto efficaci.

Ciao e grazie a tutti.

Link al commento
Condividi su altri siti

La soluzione migliore è quella di GixRamones in quanto l' istruzione CTBL scatena un interrupt, che non dipende dal tempo di ciclo del plc, quindi molto preciso, mentre la soluzione di ELEL65 lavora in ciclo, che magari può funzionare benissimo se la frequenza degli impulsi è bassa.

Ciao

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