Vai al contenuto
PLC Forum


CP1E con Oriental Motors ARD-K


Garzo

Messaggi consigliati

Buongiorno!

Mi sono appena iscritto al forum ma già altre volte ho preso questo foro come riferimento per risolvere alcuni problemi che mi si sono presentati, ed ho notato che vi sono persone molto capaci.

Mi scuso in anticipo se dovevo presentarmi in qualche sezione, ma il tempo stringe davvero. 

Lavoro in un'azienda di automazioni industriali, ho 19 anni e sono entrato a far parte del mondo dei PLC da 4 mesi circa. Fin'oggi ho programmato macchinari dotati di PLC e HMI da parte di Rockwell, Allen-Bradley, ora mi trovo una situazione diversa con un PLC Omron CP1E-NA con due Oriental Motors ARD-K. 

Premetto che non mi piace per niente CX-Programmer, anzi mi sto trovando malissimo ... con Allen-Bradley è tutto molto più basilare ed efficiente.

Venendo al problema, sto cercando di far muovere i motori, X e Y dotati entrambi di due uscite, una per l'impulso e uno per la direzione, quindi, su 100.00 e 100.01 ho impulso e direzione per X, 100.02 e 100.03 per Y. 

 

Ctec scrive in un'altra discussione:

 

" [supponendo che tu abbia collegato l'ingresso a impulsi dell'MX2 alla uscita 100.0 del PLC. Potresti collegare lo start dell'inverter alla 100.2, facendo in modo che quando usi la SPED in CCW l'inverter si ferma (100.2 = 0) e in CW parte (100.2 = 1).

In pratica dovrai usare, per far partire l'inverter, la SPED #0000 #0100 Veloc, dove Veloc è la frequenza in Hz (occhio che è una doppia word). Il parametro #0100 è la modalità, impostata a Pulse+Dir e in CW.

Per fermarlo, userai poi la INI #0000 #0003 Value, dove value è una Dword.] "

 

Ho seguito le istruzioni, portando ad 1 sia 100.00 che 100.01, utilizzando la porta #0000 (si presume, quindi, 100.00 e 100.01) senza però ottenere nessun risultato.

Insomma, le ho provate un po' tutte !!! In allegato lascio lo screenshot del rung, in maniera che il problema sia chiaro.

 

Grazie a tutti in anticipo, la macchina andrebbe consegnata lunedì alle 17.00, ma la vedo dura :( 

 

EDIT: ho anche provato a mettere una UDINT per la frequenza degli impulsi a SPED, e una DINT invece per PULS, al posto del numero di impulsi , impostando però lo stesso valore inserito nell'immagine.

 

Cassettiera.jpg

Link al commento
Condividi su altri siti


Quel mio esempio era per pilotare un inverter in velocità, e non un driver in posizione.

Premetto che mi dispiace non ti piaccia il CX, che io considero uno dei migliori, anche se un po' vecchio e senza compilazione puramente simbolica. Il vecchio Rockwell (non li uso più da anni) era tutto fuorché intuitivo, anche se cento colte meglio dello Step7. Ma comunque...

Allora ho visto che quegli oriental motor sono stepper.

 

Per andare in posizione, usa pa PLS2, molto più pratica, con una istruzione fai tutto. In questa avrai PLS2 P M S F, dove:

P = porta (0 per asse 0 e 1 per asse 1)

M = modalità (#0101 se vuoi andare in posizione assoluta, #0100 in posizione relativa avanti, #0110 in posizione relativa indietro)

S = primo indirizzo di una tabella dati così composta:

       S1  valore accelerazione (valori alti, rampa ripida) UINT

       S2  valore decelerazione (valori alti, rampa ripida) UINT

       S3  valore velocità (frequenza impulsi) UDINT

       S4  valore posizione (in impulsi) DINT (UDINT se relativo)

F = velocità di partenza (di solito 0, ma coi passo passo che stallano potrebbe essere comodo un valore diverso) UDINT

 

Eseguila impulsivamente (@ davanti) altrimenti viene aggiornata ad ogni scansione. Come la lanci, deve apparirti un treno in uscita.

Non usare mai le uscite a treno come bobine o set/reset, altrimenti avrai errori

 

PS: quante volte finite le macchine nei finesettimana o la mattina presto pregando che il container arrivi in ritardo...

Link al commento
Condividi su altri siti

1 ora fa, Ctec scrisse:

[S = primo indirizzo di una tabella dati così composta:

       S1  valore accelerazione (valori alti, rampa ripida) UINT

       S2  valore decelerazione (valori alti, rampa ripida) UINT

       S3  valore velocità (frequenza impulsi) UDINT

       S4  valore posizione (in impulsi) DINT (UDINT se relativo)

 

F = velocità di partenza (di solito 0, ma coi passo passo che stallano potrebbe essere comodo un valore diverso) UDINT

 

Eseguila impulsivamente (@ davanti) altrimenti viene aggiornata ad ogni scansione. Come la lanci, deve apparirti un treno in uscita.

Non usare mai le uscite a treno come bobine o set/reset, altrimenti avrai errori]

 

 

Ctec, speravo proprio in una tua risposta, perciò grazie !! :)

 

Alcune cose non mi sono molto chiare :

  • S = come faccio ad inserire 4 valori, in una Word sola ? (S1,S2,S3,S4)
  • F = a velocità 0, il motore non dovrebbe non muoversi (?) poi, il valore inserito in F, sarebbe corrispondente in Hz (quindi rappresenta la sua frequenza) ? 
  • Eseguirla impulsivamente, ma come ? Immettendo @PLS2 invece che PLS2? Inoltre, io su CompactLogix di Allen-Bradley, solitamente, ho i miei 7 PIN di uscita, (Start, Stop, Reset, Homing, PRG1, PRG2, PRG3) , perciò, come faccio a dargli lo start se non portando ad 1 la bobina per l'impulso (100.00) ? Sto facendo confusione...

Mi scuso in anticipo per l'ignoranza in materia, ma sono alle prime armi ... mi manca molta della parte teorica, e appena mi capita qualcosa di un po' diverso da ciò che sono abituato a fare trovo degli intoppi.

 

Grazie,

Federico.

Link al commento
Condividi su altri siti

Dunque. S è l'indirizzo di partenza di una tabella di 4 valori (S1-S4) contenuti in 6 word.

Se per esempio metterai al posto di S l'indirizzo D100, avrai la tabella seguente da compilare prima dell'esecuzione della PLS2

D100  S1  UINT (word)

D101  S2  UINT (word)

D102  S3  DINT (doppia word)

D104  S4  UINT (doppia word)

quindi avrai occupate tutte le word da D100 a D105 comprese. Purtroppo col CP1 non si possono creare le strutture.

 

Se metti la velocità a 0, ovviamente avrai una frequenza 0Hz in uscita (nessun impulso) e pertanto nessun moto. Ma occhio perché a tale velocità non raggiungerai mai la quota impostata, per cui evitare sempre la velocità 0. E si, la velocità è espressa in impulsi al secondo quindi in Hz.

 

Si, per rendere impulsiva una istruzione (che lo consente, quasi tutte ma non tutte) si mette una @ davanti. In pratica viene lanciata appena la condizione è vera, e l'istruzione esegue subito quanto specificato nella tabella S (più la velocità iniziale F).

Se clicchi doppio sull'istruzione e nella finestra Modifica Istruzione premi Guida Istruzione, ti si apre l'. (in inglese) dell'istruzione, dove trovi una descrizione anche grafica e degli esempi.

 

La gestione dello start e stop non si esegue con uscite multiple, ma solo con le Y dedicate a ciascun asse, e sono 2, CW e CCW o Pulse/Dir a seconda della modalità impostata nella PLS2. Appena lanci la PLS2, gli impulsi escono e il moto viene eseguito fino al suo termine, o finché con una INI decidi di arrestarlo.

Se devi fare anche l'homing, allora devi prima di tutto andare in Impostazioni-> Uscita a Impulsi 0 (o 1) e dare dei parametri. Come vedi, in primis ci sono da specificare i limiti di corsa. Se non li usi, mettili su NO (Normally Open, non che non si usano...). Se per esempio non li hai usati e hai lasciato l'impostazione NC, lui vede i limiti massimo e minimo aperti, quindi non eseguirà mai il moto voluto.

Se usi l'homing, devi attivare la parte Usa Operazione Definizione Origine e poi nel manuale vedi dove è assegnato l'ingresso di riferimento per ciascun asse (ok, te lo dico, 0.06 per asse 0, 0.07 per asse 1...). Vedi capitolo 12 del manuale W480. C'è la descrizione totale del funzionamento delle uscite a impulsi.

Per lanciare l'homing, devi eseguire la ORG (@ORG impulsiva sempre meglio) che può anche eseguire un ritorno all'origine (non penso di averlo mai usato...)

 

Per i dettagli, la trattazione è lunga. Se vedi quel capitolo, vedrai che ci sono tutta una serie di bit e word interne (area A) che ti fa vedere lo stato, la posizione, se l'origine è fatta, i limiti di corsa, ecc., tutte cose importanti per gestire al meglio un asse.

 

Io con i CP1, nei limiti delle loro caratteristiche, ho fatto posizionamenti discretamente incasinati e performanti, usando servomotori, Purtroppo i passo passo non chiudono l'anello di posizione, quindi Dio solo sa se è davvero dove te credi che sia...

 

PS: Hex vuol dire numero in notazione esadecimale. In Omron CX si ottiene anteponendo il # davanti al numero. Per i decimali senza segno, si antepone un &, il + o il - per numeri interi con segno e virgola mobile

Link al commento
Condividi su altri siti

Ragazzi, non ci sto capendo nulla ... oggi è lunedi ed i motori ancora non si sono mossi di un millimetro.

 

@Ctec mi sono creato la mia tabella , con le seguenti memorie in D100, D101, D102-D103, D104-D105 mettendo i valori che la guida di CX presenta come esempi.

  • cosa sono questi valori stranissimi espressi in numeri e lettere ?! Non ho mai visto nulla di simile ...
  • nell'istruzione @PLS2, nella terza operazione, come faccio a selezionare la tabella che mi identifica S1,S2,S3,S4 in un solo valore (quindi, si presume, S)

Le sto provando tutte, sono ore che provo e riprovo ma nulla !! Sto impazzendo , e la macchina doveva già essere pronta. Con Allen-Bradley l'avrei finita in un'ora...

 

Nella terza operazione dell'istruzione mi fa inserire solamente D100, ho provato ad affiancargli anche le altre memorie ma nulla ... è possibile avere uno screenshot di un esempio ? Su come lo usate voi ?

 

Poi, come faccio ad impostare il valore ad una doppia word ?! Mi sto trovando davvero male e sono incaz.. nero !

 

Grazie comunque per il supporto e le spiegazioni davvero ben dettagliate, il problema principalmente sono io xD

Immagine.jpg

Link al commento
Condividi su altri siti

EDIT: Sono disposto a pagare un'assistenza in TeamViewer, non ho altre opzioni ... secondo me la situazione dev'essere approfondita per capire la problematica. 

Link al commento
Condividi su altri siti

@pls2

#1.....PORTA 1.... 2 out ( dipende dl plc )

#0 ......controllo tipo di ucita

D100...dati di funzinamento:

D100...accelerazione

D101...decelerazione

D102+D103...frequenza inpulsi ( D102 e' il valore piu' basso )

D104+D105...numero di inpulsi da eseguire ( D104 e' il valore piu' basso )

D110+D111...frequenza di avvio

.....................

@PLS2 ( COSI A ME PARTE SUBITO ) sto usando CP1H si vedono gli inpulsi in modo lento

#1

#0

D100...0001---D101..0001----D102...0010---D103...0000---D104....0020----D105....0000

D110...0000----D111...000

 

ci sono anche dei limiti...ESEMPIO

se la frequenza e troppo alta e l'accelerazzione troppo bassa..NON PARTE

 

scusa SE DICI CHE OMRON E' DIFFICILE !!!!!!

abb ti ha veramente rovinato...senza offesa

 

in alto alla pagina di cx-programmer

ce la guida

funzioni cp1e

pulse istruction

e tutto spiegato passo passo

 

WP_20180507_12_01_01_Pro.jpg

Link al commento
Condividi su altri siti

1 minuto fa, gianff scrisse:

@pls2

#1.....PORTA 1.... 2 out ( dipende dl plc )

#0 ......controllo tipo di ucita

D100...dati di funzinamento:

D100...accelerazione

D101...decelerazione

D102+D103...frequenza inpulsi ( D102 e' il valore piu' basso )

D104+D105...numero di inpulsi da eseguire ( D104 e' il valore piu' basso )

D110+D111...frequenza di avvio

.....................

@PLS2 ( COSI A ME PARTE SUBITO ) sto usando CP1H si vedono gli inpulsi in modo lento

#1

#0

D100...0001---D101..0001----D102...0010---D103...0000---D104....0020----D105....0000

D110...0000----D111...000

 

ci sono anche dei limiti...ESEMPIO

se la frequenza e troppo alta e l'accelerazzione troppo bassa..NON PARTE

 

scusa SE DICI CHE OMRON E' DIFFICILE !!!!!!

abb ti ha veramente rovinato...senza offesa

 

in alto alla pagina di cx-programmer

ce la guida

funzioni cp1e

pulse istruction

e tutto spiegato passo passo

 

 

Ti ringrazio davvero per la risposta!

 

Assolutamente, non ho voluto sminuire Omron ... semplicemente mi sono trovato ad iniziare con ABB che è (a mio parere) molto più semplice ed intuitivo... ed il lavoro suo lo fa BENISSIMO .. forse, se avessi iniziato direttamente con CX che probabilmente ha una sintassi leggermente più dettagliata e complessa, mi sarei trovato meglio in futuro . Ti assicuro che per me che sono abituato a Siemens ed ABB, Omron (e non parlo del sysmac) risulta CENTO VOLTE più "rognoso", anche se ha Guide istruzioni e manuali davvero ben fatti, e per chi si lamenta dell'inglese... secondo me è la cosa primaria da sapere prima di interfacciarsi a questo pianeta.

 

Tra poco proverò e vi faro sapere.

 

P.S. davvero le memorie si devono scrivere così nell'istruzione?! xD

D100...0001---D101..0001----D102...0010---D103...0000---D104....0020----D105....0000

D110...0000----D111...000

Link al commento
Condividi su altri siti

no

la D100 Va scritta da sola nella funzione ( idem D110 ) ( Qeste sono di riferimento iniziali )

poi la stessa funzione usa le altre di conseguenza

che andrai a scrivere nell'area del plc.... manualmente ...da programma..o da tastierino

i dati che ci vai a scrivere posso essere decimali oppure esadecimali

il mio esempio e in decimale

 

Link al commento
Condividi su altri siti

In risposta a @Ctec :

 

Sto girovagando per il manuale, ed ho trovato la seguente voce:

 

"The PLS2 instruction can be used to set a starting frequency or separate acceleration and deceleration rates, but there are limitations on the operating range because the end point must be specified in the PLS2 instruction."

 

Perciò, si presuppone che finchè non definisca gli input di extra-corsa (almeno noi li chiamiamo così) io sia impossibilitato all'uso dell'istruzione @PLS2 , ed ugualmente, non posso dare al motore un moto assoluto ma solamente relativo.
Adesso mi sono molto più chiare tantissime cose, inoltre sto capendo che la soluzione fai-da-te alla ricerca di informazioni sparse per i manuali a volte è la miglior cosa. Non si può andar a sbattere da altri per ogni singolo problema che si presenta, perché da come sto capendo, in questo mestiere ne escono molti e di continuo.

Venendo al dunque, io su MicroLogix di ABB mi trovo il mio comando PTOX.ControlStop (.CS) in cui, settandolo come bobina, posso inserire nelle condizioni del rung tutti gli ingressi/bit in sequenza OR che, quando sono veri, mi fermano di colpo il motore (come sensori extra-corsa o barriere di sicurezza) ok, qui la situazione è diversa, vado in Impostazioni --> Uscita di a impulsi 0 (o 1) --> Segnala ingresso limite: NC (Normally closed ?) e fino a qua ci siamo ... ma dove definisco quali siano i sensori? Mi prende in automatico gli ingressi 0.6 - 0.7 necessari anche nell'homing?

 

Ringrazio a tutti in anticipo per la pazienza e la collaborazione!

 

 

 

 

Link al commento
Condividi su altri siti

nelle inpostazioni plc solitamente si usa il finecorsa di ricerca origine

se ai fatto modifiche nelle impostazioni plc  ..uscita inpulsi 0/1

forse..? ai selezzioneto ricerca origine allora vengono ablitati i finecorsa

ma normalmente sono disabilitati e le uscite funzionano subito

Link al commento
Condividi su altri siti

Forse ho trovato il problema !!

Sul manuale mi dice che devo applicare le modifiche anche nelle aree di memoria:

 

"The following Auxiliary Area words contain the pulse output

PVs Pulse output 0: A277 (leftmost 4 digits) and A276 (rightmost 4 digits)

Pulse output 1: A279 (leftmost 4 digits) and A278 (rightmost 4 digits)"

 

Cosa rappresentano ? Credo che dopo questo io abbia risolto, anche perchè sto studiano le istruzioni e le ho immesse in tutti i modi possibili inimmaginabili .. per cui, il problema o è hardware, oppure c'è un punto mancante ...

 

Comunque ho chiamato un ingegnere che programma da anni con Omron, e mercoledì dovrebbe essere qui da me ... ma comunque vorrei iniziare a metter su qualcosina.

Tra l'altro, sto cambiando parere riguardo CX.. ha i suoi pro e contro, ma alla fine basta saperlo usare. Supporto Omron è GRATUITO, ed ha manuali con esempi ben descritti per ogni singola cosa.

 

Cordialmente,

Federico.

Link al commento
Condividi su altri siti

certo che devi scrivere i numeri nelle D100...ecc

altrimenti e sepre tutto a zero

lo puoi fare anche manualmente basta che sei online Con la cpu e anche con l'area DM

la cpu deve essere in MONITOR oppure PROGRAM ( NON IN RUN )

Per scrivere nelle DM

menu a tendina sx

alla voce memoria ..apri e CLICCA D

clicca la casella con gli ( occhiali ) e vai oline con l'area dati reale attuale della cpu

poi vai alla 100 e comincia a inserire i numeri al posto giusto

 

SE impari a usare CX-PROGRAMMER poi odierai ABB E SIEMENS

Link al commento
Condividi su altri siti

23 minuti fa, gianff scrisse:

Per scrivere nelle DM

menu a tendina sx

alla voce memoria ..apri e CLICCA D

clicca la casella con gli ( occhiali ) e vai oline con l'area dati reale attuale della cpu

poi vai alla 100 e comincia a inserire i numeri al posto giusto

 

 

Ma questo l'avevo già fatto ... infatti ogni cosa quadra, credo proprio che il problema sia altrove... (anche se trovo altre aree di memoria compilate che io non sono andato assolutamente a modificare)

 

P.S. ho usato le memorie da D100 A D105 e per la frequenza impulsi D110 e D111

 

Immagine.jpg.164c825a8d928d0df351f86d14309f4b.jpg

Link al commento
Condividi su altri siti

le DM100....111

debbono essere usate solo per la pls2

dove non vanno scritti numeri ci deve essere 0000

io vedo troppi numeri e troppo grossi

cosi non puo' andare

Link al commento
Condividi su altri siti

Ciao lelos,

Ho già chiamato due volte ... ma non danno assistenza su un punto di vista software. Per esempio mi ha detto quali erano le uscite a treno di impulsi del mio PLC e mi ha indicato dove collegare impulso e direzione.

Credimi le sto provando tutte, questa era la mia ultima spiaggia 😂 anche se ho letto sulla rete che Omron fa assistenza remota TeamViewer, il che è Ottimo ... mi piace comunque confrontarmi con persone che fanno il mio stesso lavoro da molti anni, sono ancora in fase upgrade .. ho 19 anni ed un giorno vi supererò tutti😀😀 (con ironia)

 

Cordialmente,

Federico.

Link al commento
Condividi su altri siti

Nicola Carlotto

sulle dm che vedi scritto dei numeri grandi scrivici  zero , poi scrivi il valore che ritieni giusto,  praticamente da quel che si capisce hai le memorie sporche , probabilmente

il plc e' rimasto senza batteria a lungo in magazzino.

ciao

prova come l'esempio che ti ho postato , io programmo omron dal 1994 ,  ciao

 

Link al commento
Condividi su altri siti

Infatti, quando faccio partire il monitoraggio In linea delle memorie, me le da tutte compilate con numeri a caso ... spero non sia un problema del mio plc

Comunque, valori come D32100 io non posso impostarli ... il mio plc arriva fino a D9000 Circa. Nel caso, è scontato che io possa usare altre memorie.. Idem con le memorie in "A" !!!

Link al commento
Condividi su altri siti

Comunque provato e riprovato in tutti i modi ... forse il problema non è dove credo che sia .. grazie comunque a tutti per la collaborazione, e buon lavoro

Link al commento
Condividi su altri siti

Come immaginavo, il problema era altrove... è stato un errore di cablaggio, su 100.00 e 100.02 invece che avere il morsetto dell'Impulso avevo il reset... per cui, potevo provare all'infinito ma i motori non si sarebbero mai mossi. 

Comunque, per comodità ho usato questo altro metodo (sempre con il @PLS2) in modo che non devo andare a ricercarmi le memorie manualmente.

 

Infine, ho sbagliato a sottovalutare questa piattaforma a causa della mia ignoranza. Ne terrò conto per il futuro.

 

Buona giornata a tutti

(#CLOSED)

Immagine.jpg

Immagine1.jpg

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