Vai al contenuto
PLC Forum


movimento rotatorio automatico


Mello Marco

Messaggi consigliati

Buongiorno tutti ,

devo fare un movimento  automatico rotatorio in modo che l oggetto si fermi  per esempio a 30 gradi .

il mio algoritmo è  semplice : avvia il motore finche l encoder non legge 30 gradi .

Domanda si puo migliorare ulteriormente  il programma retroazionando l encoder con un pid ??  in modo che se il motore  sfora e si ferma a 32 gradi  subentra il secondo motore per il cambio direzione automaticamente  fino trovare 30 gradi , una sorta di autoaggiustamento???

Grazie per l attenzione

 

Link al commento
Condividi su altri siti


Ciao, a logica se fermi il motore quando arrivi a 30 gradi sfori per forza. Con che velocità ti muovi. Di quanto si deve muovere (spazio percorso nello step)? 

 

Link al commento
Condividi su altri siti

20 ore fa, Mello Marco ha scritto:

retroazionando l encoder con un pid ??

L'encoder è la retroazione!

A poche informazioni si risponde con poche risposte.

Link al commento
Condividi su altri siti

l oggetto in questione è  una gru 

ho 2 motori idraulici:1 per senso orario e 1 per senso antiorario .

ho configurato l encoder come oggwtto tecnologico che mi legge di quanto mi sposto , ma la mia paura è di non essere preciso : arrivata la soglia dei 30 gradi il motore si ferma ,  ma per inerzia continuerà  ancora per qualche grado .

Da qui rivolgo la domanda se associassi un pid ? in modo che se sforo in eccesso o in difetto parte un motore1 o motore 2 fino ad arrivare perfettamente ai 30 gradi ???

Link al commento
Condividi su altri siti

21 ore fa, marco1278 ha scritto:

Ciao, a logica se fermi il motore quando arrivi a 30 gradi sfori per forza. Con che velocità ti muovi. Di quanto si deve muovere (spazio percorso nello step)? 

 

è  questo il punto ..devo giocare su delle time ramp e/o  velocità  motore  o esiste una maniera  piu precisa ??

Link al commento
Condividi su altri siti

esatto  uso le valvole proporzionali ,fisso un valore costante ai motori poi all arrivo dei gradi desiderati  decremento  il valore con una ramp time . Puo essere giusto ?  E se usassi un Pid control in modo che cerca in automatico il grado desiderato attivando un motore o l altro a seconda di cosa legge il motore  o sto dicendo una boiata??

Link al commento
Condividi su altri siti

Il 8/2/2020 alle 18:14 , Mello Marco ha scritto:

subentra il secondo motore per il cambio direzione

 

17 minuti fa, Mello Marco ha scritto:

esatto  uso le valvole proporzionali

Ma davvero hai due motori? Non è che sia lo stesso motore idraulico e, col riferimento alla valvola proporzionale, viene regolato ed invertito il flusso dell'olio?
O, al massimo, hai una valvola proporzionale per regolare il flusso, e due elettrovalvole per avanti/indietro?

Comunque, non vedo bene il PID come soluzione.
Le strade percorribili, a mio avviso, sono due:
1) posizionamento più rudimentale, con rallentamento quando ti avvicini alla quota, ed arresto (sempre anticipando leggermente lo stop rispetto alla quota finale).
2) posizionamento con funzioni dedicate. In questo caso, la strada più semplice è usando le funzioni motion della CPU. Per un semplice posizionamento non hai bisogno di CPU con funzioni tecnologiche.

Link al commento
Condividi su altri siti

5 ore fa, batta ha scritto:

 

Ma davvero hai due motori? Non è che sia lo stesso motore idraulico e, col riferimento alla valvola proporzionale, viene regolato ed invertito il flusso dell'olio?
O, al massimo, hai una valvola proporzionale per regolare il flusso, e due elettrovalvole per avanti/indietro?

Comunque, non vedo bene il PID come soluzione.
Le strade percorribili, a mio avviso, sono due:
1) posizionamento più rudimentale, con rallentamento quando ti avvicini alla quota, ed arresto (sempre anticipando leggermente lo stop rispetto alla quota finale).
2) posizionamento con funzioni dedicate. In questo caso, la strada più semplice è usando le funzioni motion della CPU. Per un semplice posizionamento non hai bisogno di CPU con funzioni tecnologiche.

per ora sto usando la soluzione 1 ....la soluzione 2 cosa sarebbero le funzioni motion ??

Link al commento
Condividi su altri siti

Mello Marco, per favore non quotare l'intero messaggio, così facendo rendi la discussione iolleggibile; limitati a quotare una frase come fannogli altri.

Link al commento
Condividi su altri siti

1 ora fa, Mello Marco ha scritto:

la soluzione 2 cosa sarebbero le funzioni motion ??

Nel progetto TIA, nella cartella "Oggetti tecnologici" inserisci un oggetto "TO_PositioningAxis". Nella configurazione di questo oggetto tecnologico poi, di solito, si inserisce un azionamento in rete (Profinet o Profibus) con Telegramma 105 o 103. Nel tuo caso, puoi selezionare il controllo tramite uscita analogica. Poi configuri il collegamento all'encoder, la meccanica, la dinamica, i limiti, ecc.

Nel programma PLC gestisci l'asse con le istruzioni che trovi nel gruppo "Tecnologia" --> "Motion control".

Questo solo per darti una vaga indicazione sui primi passi. Poi, se non c'è nessuno che ti insegna, dovrai armarti di pazienza, e leggerti un bel po' di documentazione.
Poi, una volta capito i concetti, diventa semplice.

Link al commento
Condividi su altri siti

con un drive non siemens bisogna usare i db di appoggio ed è macchinoso (non impossibile, più complicato). se stai nel mondo Siemens trovi video, progetti di esempio etc etc e la cosa è abbastanza semplice (basta poco impegno)

con i db di appoggio risulta più complicato. se poi come dice ci sono due motori la vedo molto ma molto dura.

se i tempi di lavoro lo permettono si potrebbe fare con diversi step di velocità, come ha già suggerito Batta

praticamente due confronti. fino a un numero di gradi in veloce, poi rallentamento (anche più di uno) e poi arresto. ovvio bisogna conoscere le tolleranze e i tempi di posizionamento. molto dipenderà poi dall'inerzia col peso.

 

volendo conoscer lo spazio percorso in decelerazione  è una formula matematica e quindi potresti anche calcolare quando "azzerare il riferimento" ma se le inerzie in gioco cambiano ti diventa dura la faccenda.

Link al commento
Condividi su altri siti

1 ora fa, ken ha scritto:

con i db di appoggio risulta più complicato. se poi come dice ci sono due motori la vedo molto ma molto dura.

Sì, se ci si deve appoggiare ai DB diventa più complicato, ma non di molto. Nel caso specifico penso non serva l'appoggio ai DB, ma si dovrebbe poter fare semplicemente gestendo il tutto con l'uscita analogica (come fosse un inverter non in rete, ma da pilotare con segnali analogici, appunto).

Ovviamente, queste sono solo supposizioni, dato che non è ancora chiaro come venga comandato l'asse.

Sto ancora aspettando risposta sulla faccenda, alquanto strana, dei due motori.

Marco, prima di porre nuove domande, dovrebbe imparare a rispondere alle domande che sono state poste a lui.

Link al commento
Condividi su altri siti

Il 10/2/2020 alle 18:34 , batta ha scritto:

Nel progetto TIA, nella cartella "Oggetti tecnologici" inserisci un oggetto "TO_PositioningAxis". Nella configurazione di questo oggetto tecnologico poi, di solito, si inserisce un azionamento in rete (Profinet o Profibus) con Telegramma 105 o 103. Nel tuo caso, puoi selezionare il controllo tramite uscita analogica. Poi configuri il collegamento all'encoder, la meccanica, la dinamica, i limiti, ecc.

Nel programma PLC gestisci l'asse con le istruzioni che trovi nel gruppo "Tecnologia" --> "Motion control".

 

Buongiorno a tutti ,  le chiedo scusa se non sono stato preciso nei post ma è l' inesperienza.

Preciso che per due motori in realta  è una pompa dove comando 2 elettrovalvole proporzionali , una 1 senso una nell' altro (avevo detto 2 motori pensando di semplificare il discorso rendendo l'idea di 2 azionamenti )

Io ora ho impostato il programma nella maniera più rudimentale che rallento quando mi avvicino alla quota, impostando  l 'encoder rotatorio assoluto con profinet telegrama 81(come immagine)

Voorei capire meglio come utilizzare  l' oggeetto tecnologico  "TO_positioningAxis" con telegramma 105 o 103. Quale istruzione è piu inerente nella sezione 

"Tecnologia" --> "Motion control".??

grazie per la disponibilità

20200211_145501-1.jpg

20200211_145630.jpg

20200211_145933.jpg

Link al commento
Condividi su altri siti

le valvole proporzionali solitamente hanno 2 solenoidi e le soluzioni sono in genere 3:

1) solenoidi pilotati in corrente direttamente dal controllore (siccome si tratta in genere di assorbimenti nell'ordine di qualche centinaia di mA al limite 1 A serve un amplificatore da interfacciare al controllore)

2) elettronica a bordo con pilotaggio in tensione +/- 10V DC

3) elettronica di interfaccia su scheda separata interfacciata al controllore sempre in tensione +/- 10V DC.

 

Per una gestione dell'asse idraulico utilizzare un PID può essere la soluzione, se riesci a compensare la copertura dello spool nella banda morta intorno allo zero puoi andare solamente di proporzionale. Se non hai modo di compensare la banda morta puoi integrare in corrispondenza a percentuali di uscita inferiori al 10-15% in entrami i sensi.

Link al commento
Condividi su altri siti

18 ore fa, Mello Marco ha scritto:

Preciso che per due motori in realta  è una pompa dove comando 2 elettrovalvole proporzionali , una 1 senso una nell' altro

Sicuro di questa cosa? Io lavoro poco con l'oleodinamica, ma non mi è mai capitato di dover pilotare due valvole proporzionali per invertire il movimento. Mi sono capitate valvole proporzionali da pilotare con segnale ±10V, e valvole proporzionali da pilotare con segnale 0..10V (5V per tenere l'asse fermo), ma mai due valvole distinte.

Forse ho lavorato sempre con apparecchiature come quelle ai punti 2 e 3 del post di "Pigroplc".

 

Comunque, a parte dover capire cosa fare nel caso di gestione di due valvole proporzionali separate, io continuo a pensare che la soluzione più semplice sia quella di gestire un oggetto tecnologico TO_Positioning, da configurare come un azionamento pilotato con uscita analogica.
Non devi quindi inserire l'oggetto tecnologico "Encoder". Devi impostare il modo di funzionamento del modulo di conteggio veloce su "Rilevamento di posizione per oggetto tecnologico Motion Control".
Fatto questo, inserisci un oggetto tecnologico TO_PositioningAxis, e lo configuri come segue:
- Azionamento:

Tipo di azionamento: Collegamento  azionamento analogico

Uscita: qui devi selezionare l'uscita analogica (devi averla dichiarata nella tabella delle variabili)

- Encoder:

Se hai configurato il modulo conteggio veloce come ho scritto sopra, da qui sarà possibile selezionare il canale di conteggio per il posizionamento.

 

Quando inserisci un oggetto tecnologico, in automatico vengono creati gli OB MC-Interpolator e MC-Servo. Devi configurare il tempo di ciclo di MC-Servo (tasto destro --> Proprietà).
Per la tua applicazione, non scenderei a meno di 8 ms (aumenteresti il carico della cpu senza ottenere benefici a livello di prestazioni), ma anche 12 o 16 andranno benissimo.

 

 

 

 

Link al commento
Condividi su altri siti

26 minuti fa, batta ha scritto:

Preciso che per due motori in realta  è una pompa dove comando 2 elettrovalvole proporzionali , una 1 senso una nell' altro

io ci scommetto che si tratta di 2 solenoidi sulla stessa valvola e che "Mello Marco" sia abbastanza inesperto per un simile compito, tanto da scambiare il corpo di una valvola a doppio solenoide con 2 valvole separate. Basta leggere l'inizio della discussione per accorgersene.

Io con l'oleodinamica mi scontro tutti i santi giorni, e se ci sono 2 proporzionali in un circuito una è per la portata e l'altra è per la pressione!

Ho la netta sensazione che per risolvere un problema di automazione sia obbligatorio focalizzare l'applicazione a 360 gradi, con analisi approfondita di TUTTI i componenti (meccanici, oleodinamici, pneumatici, elettronici ecc.), ma siamo in pochi a pensarlo. La maggior parte si limita a improvvisare soluzioni, con enorme spreco di tempo e dubbi risparmi.

Link al commento
Condividi su altri siti

11 minuti fa, Mello Marco ha scritto:

PIGROPLC SE NON TI PIACE LA DISCUSSIONE NON COMMENTARE NESSUNO TI HA OBBLIGATO ..

???

Sinceramente, questa tua sparata proprio non la capisco.
Non che Pigroplc abbia bisogno di qualcuno che prenda le sue difese ma, dimmi, cosa avrebbe detto di offensivo?

Che tu non abbia una grande esperienza traspare sia dal tipo di domande che poni, sia da come le poni.
Ed è proprio per la tua inesperienza che stai chiedendo aiuto, altrimenti, per un compito simile, a parte qualche indicazione specifica, per esempio, su come si configura un oggetto tecnologico, di aiuto non dovresti aver bisogno. Ma questo non è certo un problema, anzi, è lo scopo del forum. E, mi pare, ci stiamo prodigando per darti l'aiuto che chiedi.
Però, se sentirti dare dell'inesperto ti offende, forse sei tu che hai sbagliato qualcosa.

Link al commento
Condividi su altri siti

21 minuti fa, batta ha scritto:

 E, mi pare, ci stiamo prodigando per darti l'aiuto che chiedi.

Sig. Batta lei è un signore nonostante le mie difficolta è propenso ad aiutare. oggi provo a settare il positioning axis.

Certo lo stesso  encoder sarà dunque impiegato in 2 oggetti tecnologici, come encoder slewing e come positioning axis 

Link al commento
Condividi su altri siti

Lascia perdere il lei: sul forum esiste solo il tu. E lascia perdere anche il signore: a volte ci godo a comportarmi un po' da str... (ma solo in modo scherzoso, anche se, forse, talvolta vengo frainteso).

 

12 minuti fa, Mello Marco ha scritto:

Certo lo stesso  encoder sarà dunque impiegato in 2 oggetti tecnologici

Assolutamente no! Lo devi collegare solo all'oggetto tecnologico TO_PositioningAxis e, per poterlo fare, come scritto in precedenza, nella configurazione hardware del modulo di conteggio devi impostare "Rilevamento di posizione per oggetto tecnologico Motion Control". Una volta collegato l'encoder all'oggetto TO_PositiningAxis, con le funzioni MC_xxx dell'asse gestisci anche l'encoder (azzeramento ed altro). La posizione attuale dell'asse la leggi nelle variabili dell'oggetto tecnologico TO_PositioningAxis.

 

17 minuti fa, Mello Marco ha scritto:

nonostante le mie difficolta è propenso ad aiutare

Anche Pigroplc ti sta aiutando.

Link al commento
Condividi su altri siti

2 ore fa, Mello Marco ha scritto:

PIGROPLC SE NON TI PIACE LA DISCUSSIONE NON COMMENTARE NESSUNO TI HA OBBLIGATO ..

 

Scrivere a tutte maiuscole equivale a strillare, questa è una grave scortesia nei confronti di chi sta cercando di aiutarti.

Cerca di essere meno suscettibile; se i consigli altrui non ti piacciono puoi ignorarli, ma questo non può giustificare la scortesia gratuita.

Link al commento
Condividi su altri siti

2 ore fa, Mello Marco ha scritto:

PIGROPLC SE NON TI PIACE LA DISCUSSIONE NON COMMENTARE NESSUNO TI HA OBBLIGATO

Mello Marco, ti confermo la discussione mi piace, mi piacerebbe inoltre sapere com' è il circuito oleodinamico, cosa che tu tieni ben nascosto.

Stempero la tua irritazione con una faccina col sorriso, che è sempre la soluzione migliore 😃

Il 9/2/2020 alle 20:59 , ken ha scritto:

Se vuoi consigli servono INFORMAZIONI.

Ken te l'ha già scritto il 9 febbraio ma tu continui a fare orecchie da mercante

1 ora fa, Mello Marco ha scritto:

Certo lo stesso  encoder sarà dunque impiegato in 2 oggetti tecnologici

torno a ribadire il concetto che è meglio che tu perda qualche minuto a descrivere ciò che devi muovere, il software viene per ultimo.

Link al commento
Condividi su altri siti

Livio è entrato 2 volte in discussione manco ha parlato una volta di plc o del tema in discussione  ….pfff

manco l' avessi interpellato

Se vuole le passo il forum dei critici o degli avvocati

Link al commento
Condividi su altri siti

Ospite
Questa discussione è chiusa alle risposte.
×
×
  • Crea nuovo/a...