Vai al contenuto
PLC Forum


Cx Programmer


krotal

Messaggi consigliati

Buon giorno a tutti!

Qualcuno sa quale è l' instruzione in cx-programmer per salvare un valore proveniente da un encoder rotativo? (devo usare un contatore veloce, giusto?) grazie!

Link al commento
Condividi su altri siti


scusate, ma mi ero dimenticato di chiedere anche quale è la funzione che mi consente di Leggere da un encoder rotativo con risoluzione di 0.1 gradi.

Link al commento
Condividi su altri siti

In base al plc che utilizzi devi configurare gli ingressi come contatore veloce; dopodichè sempre in funzione del plc che utilizzi avrai due canali che contengono il valore del tuo contatore.

Se vuoi più info devi far sapere che plc stai utilizzando.

Cosa intendi per salvare il valore?

Link al commento
Condividi su altri siti

Il plc è un Omron cj1m con cpu 22 (in più ha una scheda analogico-digitale MAD 42)

per salvare intendo dire che voglio memorizzare un dato e richiamarlo.

più precisamente devo fare:

gira a dx (fino al fondo corsa), scrivi il valore letto(A).

gira a sx (fino al fondo corsa), scrivi il valore letto(B).

fai: (B-A)/2=C

SALVA C, vai in C.

Link al commento
Condividi su altri siti

Il valore del contatore 0 è contenuto nei canali A270-A271; contatore 1 nei canali A272-A273.

Arrivato a fine corsa dx devi spostare (istruzione MOVL) il valore del contatore in un data memory (DMA),

arrivato a fine corsa dx devi spostare (istruzione MOVL) il valore del contatore in un data memory (DMB); successivamente sottrai (istruzione -L) DMB-DMA=DMZ e poi dividi (istruzione /L) DMZ:2=DMC.

Spero di essere stato chiaro.

ps: occupando ogni contatore due canali si devono utilizzare le istruzioni a doppia word contraddistinte dalla "L" dopo il simbolo o il codice dell'istruzione: MOV=istruzione a singola word; MOVL=istruzione a doppia word

Link al commento
Condividi su altri siti

sei stato chiarissimo! se non ti disturbo troppo ti faccio altre due o tre domande!!!

come contatore uso l' istruzione prv?

come posso fare a dirgli (al plc) che quando legge una velocità dell' encoder = 0 deve fermare il motore e poi farlo girare dall' altra parte (cioè come faccio a dirgli di leggere la velocità e fargli capire che è 0, per il resto suppongo che basti dirgli di attivare l' uscita "vai a destra" "vai a sinistra"in un caso o nell' altro)

inoltre come faccio a far fermare il motoren( quale contatto devo dirgli di attivare)?

grazie, spero di essermi spiegato bene!

scusa, ma cosa intendi con questa frase?

"Il valore del contatore 0 è contenuto nei canali A270-A271; contatore 1 nei canali A272-A273."

come posso utilizzare (nel programma), queste informazioni?

Link al commento
Condividi su altri siti

Caro Krotal

ti consiglio vivamente di investire un po di tempo nella lettura dei manuali del cj.

Questo ti faciliterà poi nello sviluppo dell'applicazione e nel poter usufruire degli utilissimi consigli degli amici del forum.

Il valore del contatore 0 è contenuto nei canali A270-A271; contatore 1 nei canali A272-A273

In queste locazioni di memoria avrai il numero di impulsi provenienti dall'encoder, poi come ti ha detto Gabo, con le istruzioni a doppia word (suffisso L) ci fai spostamenti, somme, sottrazioni, ecc...

Ciao

Link al commento
Condividi su altri siti

Grazie pcontini!

è proprio quello che stò facendo (leggere i manuali!), ma per quanto mi riguarda mi aiuta di più avere una spiegazione da qualcuno che già sa usare un plc piuttosto che "perdere tempo" a cercare una spiegazione sul manuale (che talvolta non è chiara), inoltre spesso è molto più utile avere un semplice esempio pratico che non mille spiegazioni teoriche!

Ciao, Krotal.

p.s.: scusate, ma sono un pò durino!!!! In quale dei due canali per contatore vado a pescare i dati? dipende dalla loro dimensione? se si, quanto è grande ogni canale?

Modificato: da Krotal
Link al commento
Condividi su altri siti

Ciao Krotal,

il valore del contatore 0 si trova in A270-A271 cioè una doppia word... è per questo che devi usare le istruzioni MOVL -L ect, perchè sono riferite a doppie word.

Avendo una doppia word hai una parte H del registro ed una parte Bassa..

Esempi

Se il tuo contatore contenesse il valore 50.000 avrai :

A270=C350(HEX)

A271=0000

se i valore è 100.000 :

A270=86A0

A271=0001

Molto probabilmente stai facendo confusione, perchè li devi considerare all'inverso, cioè la parte alta è A271 e la parte bassa A270.

Spero di averti aiutato

Ciao :P:P

Link al commento
Condividi su altri siti

SUPER GRAZIE!!!!!!

allora ti faccio qualche altra domanda!!!

io ho un encoder rotativo incrementale a 5 "fili":

A e B sono due segnali sfasati di 90 gradi elettrici(per capire se gira a dx o sx), Z è il riferimento di 0 (inoltre ci sono, ovviamente, il +24v e il GND).

vorrei sapere come posso fare per utilizzarli in un programma per plc: mi servono due contatori ( prv 0010 e 0011)? il segnale di 0(Z) come lo posso utilizzare (so che gli devo dire che tutte le volte che arriva un impulso da lì deve aggiungere 0 togliere 1 giro al conteggio, ma non so come dirlo al plc)? che istruzione devo usare per utilizzare i segnali A e B e in che modo lo devo fare?

ciao e grazie!

Link al commento
Condividi su altri siti

fase A morsetto A13

fase B morsetto B13

fase Z morsetto B4

questo per il contatore 0.

Una volta configurato il contatore 0 nel menù impostazioni il plc si "arrangia" ad incrementare o decrementare il valore del contatore (contenuto A270-A271) in funzione del senso di rotazione.

Ti consiglio anch'io di leggere il manuale altrimenti continuiamo a darti informazioni con il conta goccie e poco esplicative.

Link al commento
Condividi su altri siti

Ciao Krotal,

in effetti Gabo ha ragione... Non so in quale manuale stai facendo riferimento ma io ti consiglio vivamente di scaricarti dal sito della Omron il manuale W395-IT2-CJ1M-Units+OperManual.pdf...

Io avevo problemi simili, per la tesi, e mi ha risolto molti dubbi.

Ciao :D

Link al commento
Condividi su altri siti

Grazie a tutti, sieste stati molto gentili!

il mio problema è che ho a dispodizione TUTTO Il DVD con la libreria tecnica 2005 della omron!!!!

infatti talvolta devo andare a cercare le cose un pò in qua e un pò in là!(perdo molto tempo!). Comunque avevo trovato le informazioni che mi avete dato (scusatemi tanto per il disturbo!).

siccome però sono un "rompi" vi farò un' altra domanda! (spero non sia banale come la precedente):

In cx programmer come faccio a mandare in ingresso ad un unico contatore (prv) i 3 segnali distinti?

Link al commento
Condividi su altri siti

Ciao Krotal,

devi andare sotto impostazioni alla voce Ingresso Incorporato e poi settare le varie voci: Usa Contatore, Modo Conteg. etc....

P.S: Eh si è normale perderci tempo la prima volta... però perso una volta le successive sono più veloci :P

Link al commento
Condividi su altri siti

scusa, ma mi sono spiegato male:

volevo sapere che indirizzo devo scrivere sopra al contatto per la funzione prv (visto che fisicamente si tratta di mettere tre ingressi: cio 2960 bits da 06 a 09 per le fasi A e B e bits 02 e 03 per la Z)!

occorre mettere prima un' altra funzione? devo mettere 3 contatti in parallelo(anche se questa possibilità non mi sembra avere un gran senso, in quanto credo che poi lui non li distingua!)?

Link al commento
Condividi su altri siti

Ti sei spiegato benissimo e per questo che ti consigliamo di leggere il manuale, perchè stai facendo un pò di confusione:

-un conto è il contatto che ti attiva la funzione PRV e un conto sono gli ingressi fase A,B,Z; quando utilizzi un contatore veloce (gli ingressi fase A, B ecc. arrivano + veloci del tempo di scansione) gli ingressi 2960.06 ecc. non li devi considerare (si arrangia il plc) ma devi far riferimento al canale del contatore (A270-A271).

esempio

CF113

--[ ]--------------[PRV]

questo caso tu leggerai il valore del contatore sempre.

Link al commento
Condividi su altri siti

era proprio ciò che volevo sapere e che stavo cercando sul manuale (anche ora!), ma senza successo; devo dire che leggendo attentamente stò ricavando piano piano le informazioni che mi servono o che mi serviranno per il programma.(sono un pò impaziente, quindi vi ho fatto delle domande alle quali ho trovato la risposta sui manuali; prometto di consultarli meglio prima di chiedervi qualcosa!!!!!)

Visto che ci sono....

gli ingressi 2960.06 etc. li devo comunque inizializzare oppure il plc (o meglio l' istruzione prv) li vede non appena arriva il segnale?

forse ho capito, ditemi se è giusto: il plc vede gli ingressi nel momento che su di essi viene applicato un segnale; quando vado a fare una cosa del genere(

2960.06

--[]-- )

allora dico al plc che quando arriva il segnale su quel canale deve fare qualcos' altro (in base all' uscita che ci metto, ad esempio(

2961.00

--()-- )(in questo caso dovrebbe attivare un' uscita fisica, giusto?)o alla fuzione che c' è dopo il contatto. Dunque quando mi dici di fare

CF113

--[ ]--------------[PRV]

vuol dire che ad un particolare momento dello svolgimento del prog. verrà attivata la funzione prv e il plc comincerà SOLO allora a considerare gli ingressi 2960.06 etc.(fino ad allora, a meno che non sia specificato altrimenti con un contatto, il plc IGNORA gli ingressi relativi alla funzione prv?).

GRAZIE ancora, ciao

Krotal. :D

Link al commento
Condividi su altri siti

Il plc funzione nel seguente modo (N.B. ingressi normali):

1) inizio scansione rileva lo stato degli ingressi.

2) elaborazione del programma in funzione dello stato degli ingressi rilevato a inizion scansione.

3) aggiornamento delle uscite.

4) fine scansione riparte dal punto 1

Ingressi fase A, B ecc. di un encoder possono essere più veloci del tempo di scansione del plc quindi potrebbero presentarsi + volte durante una scansione. Se si verificano nella fase 1 della scansione vengono rilevati dal plc ma nelle altre fasi no quindi vengono persi.

Attivando il contatore veloce (impostazioni del plc) il plc gestisce in maniera autonoma gli ingressi fase A, B ecc. cioè li rileva sempre e aggiorna il canale di conseguenza.

Il bit CF113 è un flag del plc che è sempre on quindi il leggo il valore del contatore sempre.

esempio:

Se utilizzi il bit 2960.06 (fase A) per incrementare una DM e la fase A si presenta 10 volte la tua DM potrebbe essersi incrementata solo di 1 perchè la fase A dell'encoder non si è presentata nella fase 1 della scansione del plc.

p.s.: mi sono spiegato malissimo, ma sto cercando di rendere il tutto il + semplice e chiaro.

Link al commento
Condividi su altri siti

no, ti stai spiegando BENISSIMO!!!

quello che mi hai detto lo sapevo già, mi sa che sono io che non riesco a spiegarmi!

Quello che dicevo è che volevo la conferma del fatto che utilizzando l' istruzione prv non importa che specifichi (in cx programmer) quali ingressi usare, basta che usi un contatto (sempre attivo o in seguito ad un' istruzione) per attivarla e il plc vede automaticamente i 3 ingressi (A B Z) e sa come utilizzarli, giusto?

inoltre te dici che "Se utilizzi il bit 2960.06 (fase A) per incrementare una DM e la fase A si presenta 10 volte la tua DM potrebbe essersi incrementata solo di 1 perchè la fase A dell'encoder non si è presentata nella fase 1 della scansione del plc.": cioè se uso in modo alternativo l' ingresso 2960.06 cioè se non lo uso per l' istruzione prv .

Grazie per la disponibilità!

:D

Link al commento
Condividi su altri siti

Quello che dicevo è che volevo la conferma del fatto che utilizzando l' istruzione prv non importa che specifichi (in cx programmer) quali ingressi usare, basta che usi un contatto (sempre attivo o in seguito ad un' istruzione) per attivarla e il plc vede automaticamente i 3 ingressi (A B Z) e sa come utilizzarli, giusto?

Il plc sa già "usarli" quando imposti il contatore veloce e potresti far senza usare l'istruzione PRV perchè ciò che leggi con PRV lo trovi nei canali A270-A271. Prova a usare l'istruzione PRV (sempre attiva con CF113) e succesivamente a encoder fermo confronta il valore che leggi con PRV e i canali A270-A271.

"Se utilizzi il bit 2960.06 (fase A) per incrementare una DM e la fase A si presenta 10 volte la tua DM potrebbe essersi incrementata solo di 1 perchè la fase A dell'encoder non si è presentata nella fase 1 della scansione del plc.": cioè se uso in modo alternativo l' ingresso 2960.06 cioè se non lo uso per l' istruzione prv .

No perchè il tuo ingresso si attiva quando il plc non può vederlo fase 2-3-4 del ciclo di scansione.

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