Vai al contenuto
PLC Forum


Anello di Regolazione Velocita e Posizione


VINZENT

Messaggi consigliati

Salve a tutti, sto' sviluppando un progetto per un mio cliente dove mi chiede di poter mandare in sincronismo due alberi meccanici non vincolati tra di loro.

Si tratta di due Bielle verticali alte circa 4 metri una di fronte all'altra.

Queste bielle ruotano a 360 Gradi attraverso due motori (per singola biella) in CC da 70 Kw. I motori vengono gestiti da degli azionamenti , 1 per motore, dove la regolazione di velocita' puo' essere solo attraverso un segnale +/- 10Volt.

Attualmente attraverso il PLC riesco a comandare avanti e indietro le singole bielle con il riferimento analogico senza alcun problema.

I problemi sono quando devo iniziare a far sincronizzare le due bielle, perche' e evidente che pur avendo degli azionamenti identici, non sono regolati perfettamente uguali, in piu' le regolazioni sugli azionamenti e fatto attraverso micropotenziomentri e quindi le rampe come la risposta di ognuno e leggermente diversa.

Ci tengo a precisare che le due bielle non devono andare perfettamente identiche ma almeno stare dentro un +/- 5°

Su ogni biella e istallato un encoder rotativo incrementale 0-360 gradi.

Ho tentato di fare un regolatore PID di velocità, ma ho dei ritardi troppo evidenti sull'errore di inseguimento.

Ho pensato anche di fare una biella Master di velocità sotto regolatore PID.

La biella slave insegue il master in velocità con un altro regolatore PID. Ma come aggiusto la posizione se sono fuori asse?

Mi date qualche idea?

Allego un piccolo disegno per rendere l'idea

Grazie

 

 

disegno.jpg

Link al commento
Condividi su altri siti


Marco_Atomatico

@VINZENT secondo me hai fatto il ragionamento corretto battezzando una bilella Master di velocità e una Slave. Chiaramente a causa, del ritardo del PID nonchè di errori del controllo tensione di set-point/Velocità di rotazione albero motore, vedrai uno sfasamento delle due bielle incrementarsi con il tempo. Per risolvere questo problema introdurrei nel tuo algoritmo PLC un semplice ciclo di rifasamento. Potresti per esempio a ogni ciclo motore master per esempio qundo l'Encoder = 180° , trovare l'errore di posizione Ep = Enc Master - Enc Slave.

A questo punto devi semplicemente modificare il Set point in tensione dello Slave, Vsp Slave = Vsp Slave + Kp*Ep . A questo punto si tratterà di determinare Kp corretto....

Cosa ne pensi ?

Link al commento
Condividi su altri siti

9 minuti fa, Marco_Atomatico ha scritto:

secondo me hai fatto il ragionamento corretto battezzando una bilella Master di velocità e una Slave.

 

Non sono daccordo.

In questi casi il master deve essere virtuale ed i due motori devono essere intrambi slave. E l'unico modo per avere un errore di posizione trascurabile.

Per avere il massimo del sincronismo è indispensabile lavorare molto di feedforward, con il feedback derivato dai due encoders che agisce come regolatore fine.

In passato ho risolto in questo modo parecchi problemi simili.

 

PS Nella sezione didattica, sottosezione elettrotecnica, trovi un mio tutorial sulle regolazioni; nel capitolo 6dedicato agli esempi, c'è un esempio di sincronizzazione simile.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

15 minuti fa, Marco_Atomatico ha scritto:

@VINZENT secondo me hai fatto il ragionamento corretto battezzando una bilella Master di velocità e una Slave. Chiaramente a causa, del ritardo del PID nonchè di errori del controllo tensione di set-point/Velocità di rotazione albero motore, vedrai uno sfasamento delle due bielle incrementarsi con il tempo. Per risolvere questo problema introdurrei nel tuo algoritmo PLC un semplice ciclo di rifasamento. Potresti per esempio a ogni ciclo motore master per esempio qundo l'Encoder = 180° , trovare l'errore di posizione Ep = Enc Master - Enc Slave.

A questo punto devi semplicemente modificare il Set point in tensione dello Slave, Vsp Slave = Vsp Slave + Kp*Ep . A questo punto si tratterà di determinare Kp corretto....

Cosa ne pensi ?

Ciao Marco, a questa soluzione ci stavo pensando da un po'.

Attualmente riesco a mantenere abbastanza fermo la Biella master mandandola a velocità costante con un regolatore PID , tipo metri al secondo.

L'effetto sullo slave e molto tardivo perché spesso il master cambia di velocità e a volte anche direzione.

Tuttavia posso provare ed abbassare la risposta dello slave in modo da renderlo piu' veloce e far inseguire il master in velocita' aggiustando con un K facendo la differenza dei due encoder.

Una idea fattibile, vediamo che errori posso ottenere.

Grazie

 

 

 

11 minuti fa, Livio Orsini ha scritto:

 

Non sono daccordo.

In questi casi il master deve essere virtuale ed i due motori devono essere intrambi slave. E l'unico modo per avere un errore di posizione trascurabile.

Per avere il massimo del sincronismo è indispensabile lavorare molto di feedforward, con il feedback derivato dai due encoders che agisce come regolatore fine.

In passato ho risolto in questo modo parecchi problemi simili.

 

PS Nella sezione didattica, sottosezione elettrotecnica, trovi un mio tutorial sulle regolazioni; nel capitolo 6dedicato agli esempi, c'è un esempio di sincronizzazione simile.

Provo a dare una occhiatina ai tuoi tutorial.

Non ho ben capito come gestisci il virtuale.

Grazie

 

Link al commento
Condividi su altri siti

Marco_Atomatico
26 minuti fa, Livio Orsini ha scritto:

 

Non sono daccordo.

In questi casi il master deve essere virtuale ed i due motori devono essere intrambi slave. E l'unico modo per avere un errore di posizione trascurabile.

Per avere il massimo del sincronismo è indispensabile lavorare molto di feedforward, con il feedback derivato dai due encoders che agisce come regolatore fine.

In passato ho risolto in questo modo parecchi problemi simili.

 

PS Nella sezione didattica, sottosezione elettrotecnica, trovi un mio tutorial sulle regolazioni; nel capitolo 6dedicato agli esempi, c'è un esempio di sincronizzazione simile.

 

Ho cliccato sul Pdf che hai indicato, ma sembra non esistere il file, potresti controllare ?

 

Grazie mille Livio

Link al commento
Condividi su altri siti

15 minuti fa, VINZENT ha scritto:

Non ho ben capito come gestisci il virtuale.

 

Devi avere un elemeto programmabile (microcontrollore, PLC, scheda tecnologica dei converter) con cui realizzi l'albero elettrico.

Il feedforward lo generi semplicemente con un segnale analogico proporzionale alla velocità che vuoi ottenere

Conosci la frequenza degli encoders in funzione della velocità; ad ogni campionamento, che sarà effettuato con clock rigorosamente costante, sommi ad un contatore il differenziale teorico degli impulsi di encoder, poi confronti il conteggio reale degli impulsi con quello teorico. La differenza costituisce l'errore di fase dei 2 alberi, Processi i 2 errori con un regoaltore PID; l'uscita dei 2 PID la sommi, con somma pesata, al feedforward. Queste 2 somme costituisce il riferimento di velocità per i 2 motori

Link al commento
Condividi su altri siti

C'è , bsta clickare sul link in basso a sx.

Comunque questo è il link. L'esempio è questo: "6.2.1.3 Configurazione “master virtuale”

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

27 minuti fa, Livio Orsini ha scritto:

C'è , bsta clickare sul link in basso a sx.

Comunque questo è il link. L'esempio è questo: "6.2.1.3 Configurazione “master virtuale”

1 ora fa, Marco_Atomatico ha scritto:

@VINZENT secondo me hai fatto il ragionamento corretto battezzando una bilella Master di velocità e una Slave. Chiaramente a causa, del ritardo del PID nonchè di errori del controllo tensione di set-point/Velocità di rotazione albero motore, vedrai uno sfasamento delle due bielle incrementarsi con il tempo. Per risolvere questo problema introdurrei nel tuo algoritmo PLC un semplice ciclo di rifasamento. Potresti per esempio a ogni ciclo motore master per esempio qundo l'Encoder = 180° , trovare l'errore di posizione Ep = Enc Master - Enc Slave.

A questo punto devi semplicemente modificare il Set point in tensione dello Slave, Vsp Slave = Vsp Slave + Kp*Ep . A questo punto si tratterà di determinare Kp corretto....

Cosa ne pensi ?

Ciao Marco, a questa soluzione ci stavo pensando da un po'.

Attualmente riesco a mantenere abbastanza fermo la Biella master mandandola a velocità costante con un regolatore PID , tipo metri al secondo.

L'effetto sullo slave e molto tardivo perché spesso il master cambia di velocità e a volte anche direzione.

Tuttavia posso provare ed abbassare la risposta dello slave in modo da renderlo piu' veloce e far inseguire il master in velocita' aggiustando con un K facendo la differenza dei due encoder.

Una idea fattibile, vediamo che errori posso ottenere.

Grazie

27 minuti fa, Livio Orsini ha scritto:

C'è , bsta clickare sul link in basso a sx.

Comunque questo è il link. L'esempio è questo: "6.2.1.3 Configurazione “master virtuale”

 

Perfetto, do una bella lettura e vediamo cose ne esce fuori.

Per ultimo, dai due encoder come faccio a tirare fuori la velocita?

Attualmente gli encoder mi danno un riferimento di posizione 0-360 gradi che si resetta ad ogni giro.

Se volessi calcolarmi la velocita? Considerando che l'encoder e un 360 impulsi a giro a doppio canale A-B

Grazie

 

Link al commento
Condividi su altri siti

5 ore fa, VINZENT ha scritto:

Per ultimo, dai due encoder come faccio a tirare fuori la velocita?

 

L'encoder è incrementale o assoluto?

Secondo il tipo di encoder cambia la modalità di misura.

Comunque non ti serve, per la regolazione calcolare la velocità.

Ammettiamo che alla  velocità di 5 m/1' l'encoder compia 10 rivoluzioni al secondo se campioni ogni 10ms avrai una variazione di posizione pari a 36 impulsi.

Ad ogni campionamento leggi la posizione (conteggio) e gli sottrai il valore memorizzato al precedente campionamento. Sommi questo differenziale in un contatore in modo da avere un integratore.

Avrai 3 contatori - integratori Master, Slave1 e Slave2. Nel contatore master sommi sempre il differenziale teorico (36 impulsi nel caso di esempio); poi confronti i due integratori slave con il master: le differenze costituiscono gli errori da processare con il regolatore PID.

 

Che convertitori stai usando (odello e marca)?

Cosa stai usando per efettuare il regolatore PID?

 

Per quanto tu riesca a velocizzare la risposta, avrai sempre lo slave in ritardo sul master, perchè prima deve esserci l'errore, poi il regolatore lo può correggere.

 

Se i convertitori ed i motori sono di opttima qualità, ed i convertitori hanno gli anelli di corrente e velocità ben ottimizzati, usando il feed forward, puoi ridurre di molto lo scostamento di velocità tra i due, quindi ilregolatore di posizione dovrà fare solo piccoli aggiustamenti e l'inevitabile errore sarà minimizzato al punto che potresti rientrare nella tolleranza.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

3 ore fa, Livio Orsini ha scritto:

 

L'encoder è incrementale o assoluto?  Incrementale 360 Impulsi a giro. Marca Eltra

Secondo il tipo di encoder cambia la modalità di misura.

Comunque non ti serve, per la regolazione calcolare la velocità.

Ammettiamo che alla  velocità di 5 m/1' l'encoder compia 10 rivoluzioni al secondo se campioni ogni 10ms avrai una variazione di posizione pari a 36 impulsi.

Ad ogni campionamento leggi la posizione (conteggio) e gli sottrai il valore memorizzato al precedente campionamento. Sommi questo differenziale in un contatore in modo da avere un integratore.

Avrai 3 contatori - integratori Master, Slave1 e Slave2. Nel contatore master sommi sempre il differenziale teorico (36 impulsi nel caso di esempio); poi confronti i due integratori slave con il master: le differenze costituiscono gli errori da processare con il regolatore PID.

 

Che convertitori stai usando (odello e marca)? Azionamenti Esavar della Mipro. Molto semplici e non sono dotati di tecnologia digitale.

Cosa stai usando per efettuare il regolatore PID? PLC Siemens S71200, una 1217 per esattezza

 

Per quanto tu riesca a velocizzare la risposta, avrai sempre lo slave in ritardo sul master, perchè prima deve esserci l'errore, poi il regolatore lo può correggere.

 

Se i convertitori ed i motori sono di opttima qualità, ed i convertitori hanno gli anelli di corrente e velocità ben ottimizzati, usando il feed forward, puoi ridurre di molto lo scostamento di velocità tra i due, quindi ilregolatore di posizione dovrà fare solo piccoli aggiustamenti e l'inevitabile errore sarà minimizzato al punto che potresti rientrare nella tolleranza.

Questi azionamenti sono dotati di alcuni trim dove si puo' regolare la rampa di accelerazione e decelerazione, velocita massima, coppia, stabilità.

 

Link al commento
Condividi su altri siti

25 minuti fa, Yiogo ha scritto:

se così è puoi anche semplificare l'architettura senza arrivare ad un struttura di sincronismo perfetto, gestisci con una scheda motion i due encoder come un'unico encoder differenziale 

fai un bias della velocità sul segnale di diferenza

ovio che non hai la stessa precisione ma se hai una tolleranza così alta ci stai senza problemi ed è molto più semplice

 

Tirare fuori il differenziale dei due encoder non mi serve una scheda Motion. Posso gia' farlo. Ma non ho capito come regolare una volta ottenuto l'errore differenziale.

 

Link al commento
Condividi su altri siti

18 minuti fa, Yiogo ha scritto:

lavori semplicemente in proporzionale se l'encoder virtuale differenziale rimane a zero tieni i valori di pilotaggio, se registra un numero lo uso con un K per correggere il pilotaggio dei due inverter, ovviamente uno + e uno -

non aspettarti certo la precisione di un motion ma viste le premesse hai un buon risultato con semplicità, peraltro anche se non enormemente precisa è una regolazione canonica molto robusta

peraltro se ho capito bene l'applicazione necessariamente è relativamente lenta e contemporaneamente le tue richieste sono modeste, immagino che la velocità del movvimento sia relativamente bassa per cui i 5 gradi di errori sono governati anche da una logica plc

Quindi potrei pensare di mandare una biella come master di velocita regolata da un PID per tenere fermo il piu' possibile la biella Master per via delle pendolazioni del carico.

Spedisco lo stesso riferimento analogico anche allo Slave, pero' campionando ogni 10 ms la differenza dei due encoder.

L'errore dato dalla differenza di angolo ci aggiungo un fattore K per compensare l'analogico allo slave.

Non ho capito però il fattore di correzione K allo slave come lo gestisco? se metto su un PID di correzione come dovrei gestirlo?
Grazie

Link al commento
Condividi su altri siti

10 ore fa, VINZENT ha scritto:

Spedisco lo stesso riferimento analogico anche allo Slave, pero' campionando ogni 10 ms la differenza dei due encoder.

 

Non funzionaperchè è una correzione solo proporzionale, quindi non annullerà mai l'errore, errore che tende ad accumularsi.

 

inoltre se hai un pendolamento significa che l'azionamento (motore + trasduttore di velocità + convertitore) non tarato corretamente.

 

Anche se gli azionamenti sono completamente analogici non ci deve essere pendolamenti di velocità. Con un analogico si posoono avere delle derive di velocità, la precisione di regolazione è in feriore al digitale, ma il motore non deve pendolare, se pendola significa che non è tarato bene l'azionamento.

Quindi prima di ogni cosa bisogna ottimizzare gli azionamenti analogici, poi si puoò pensare di fare la regolazione di spazio sovrapposta.

 

Esistono solo 2 modi per effettuiare le regolazioni: quello corretto e quello errato. Se tenti di risolvere il problema con una regolazione impostata in modo errato non si riuscirà mai ad aottenere un risultato stabilmente soddisfaciente.

Link al commento
Condividi su altri siti

Io non discuto di soluzoni tecniche con chi si occupa di marketing e comunicazione.

 

I miei fatti sono le decine di controlli simili realizzati e funzionanti, punto.

 

 

A me di questo problema interessa poco.

La soluzione corretta, secondo i dettami della teoria della regolazione e della pratica di campo, l'ho esposta. Se all'utente interessa raggiungere una soluzione seria ed efficiente sono disponibile a dare un aiuto.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

Dai test che ho eseguito ho trovato benefici facendo un regolatore pid sulla Biella Master mandando a a velocita' costante, Questo comporta che ho potutoi stabilizzare la biella master impedendo molte meno pendolazioni per via del suo carico che si trascina quando ruota in salita e in discesa.

Credo che questo porti vantaggi per uno slave che deve inseguirlo.

 

Credo anche che cio' che dice Livio sia giusto e francamente se riesco a capire come fare un encoder virtuale, sarei molto curioso di metterlo in atto.

Sto leggendo e rileggendo il link di Livio, pero' ancora non trovo una quadra.

Grazie per i suggerimenti. Vediamo se continuo a documentarli e a capire come procedere.

 

 

Link al commento
Condividi su altri siti

Aggiungo che per altre applicazioni con due bilelle collegate meccanicamente tra di loro, non ho avuto di questi problemi, ho fatto un albero elettrico master/Slave con lo slave di riferimento di velocità del master.

Qui essendo non vincolanti meccanicamente, si evidenza subito lo sfasamento, cosa che in un albero meccanico lo compensa spesso  lo scorrimento del motore.

 

Link al commento
Condividi su altri siti

24 minuti fa, VINZENT ha scritto:

Credo anche che cio' che dice Livio sia giusto e francamente se riesco a capire come fare un encoder virtuale, sarei molto curioso di metterlo in atto

 

Se usi 1200 lo pui fare molto bene io ne ho realizzati  alcuni usando S7-214 (parlo di oltre 20 anni fa), con campionamento a 20 ms legato ad un interupt del timer di sistema; forse ho ancora in giro il programma in microwin, anzi se il file con gli esempi del tutorial non è andato perso nell'incendio del data center, devrebbe essercene una copia.

Non consco le nuove serie 1200 e 1500, ricordo che con lo S7 300 dovevi configurra Hw il tempo del clock di sistema, poi legavi il suo interrupt allo OB35.

In pratica, come ti ho scritto in precedenza, calcoli la quantità di impulsi in fuzione della velcità ed ad ogni interrupt incrementi la variabile dil contatore amster di quella quantità.

 

33 minuti fa, VINZENT ha scritto:

un regolatore pid sulla Biella Master mandando a a velocita' costante

 

L'azionamento ha una reazione di tachimetrica o è in reazione di armatura?

Se ha una reazione di tachimentrica non deve pendolare. Se pendola o il convertitore è un'immonda ciofeca o mal tarato.

Con questo tipo di carico, a bassa velocità, l'andamento della coppia è di tipo sinusoidale, quindi anche la corrente assorbita dal motore ha un andamento sinusoidale distribuito su tutti e 4 i quadranti. Ha i minimi a 0°(360°) e 180°, il massimo negativo a 90°(discesa) ed il massimo positivo a 270° (salita).

Man mano che la velocità aumenta l'effetto volano tende a creare una base continua di coppia (corrente) sino ad una determinata velocità dive la coppia (corrente) è praticamente costa con sovrapposto un leggero disturbo sinusoidale.

Se il convertitore è di buona qualità e ben ottimizzato non deve pendolare può esserci solo una leggera ondulazione di velocità, non avvertibile ad occhio, ma misurabile con tachimetri precisi e veloci, o con oscilloscopio sulla reazione.

Però anche lo slave, se è simile come meccanica, avrà la stessa reazione. Se i 2 sistemi avesso identica fasatura non si noterebbe alcuna differenza tra i 2.

Lo scopo della sincronizzazione con master virtuale è quella di mantenere i 2 slaves perfettamente fasati tra loro.

 

In passato ho effettuato sincronizzazioni di motori anche con potenze di parecchie decine di kW, che avevano carichi di questo tipo di sbilanciamento. Fidati, la prima cosa da fare è quella di ottimizzare la risposta dell'azionamento analogico. Dico analogico, perchè se fosse digitale con reazione da encoder, il tutto si risolverebbe più facilmente.

 

Una volta che l'azionamento è tarato "come un violino", alllora la sincronizzazione digitale "inchiada" i 2 ( o più) slaves come fosse un vero PLL.

Link al commento
Condividi su altri siti

Glia azionamenti sono in reazione di armatura, non sono provvisti di tachimetrica nonostante abbiano a bordo l'ingresso per la tachimetrica.

Provo a mettere su un master virtuale domani e vediamo.

Nel 1200 posso dichiarare un OB ciclo con il tempo che voglio. Magari ne faccio 1 su 20ms e provo a fare cio' che mi hai detto, encoder virtuale.

Ti aggiorno.

Grazie

Link al commento
Condividi su altri siti

12 ore fa, VINZENT ha scritto:

Glia azionamenti sono in reazione di armatura, non sono provvisti di tachimetrica nonostante abbiano a bordo l'ingresso per la tachimetrica.

 

Questo è molto male, ora capisco tutti i problemi di pendolamento!

 

Tieni presente che se sono convertitori trifasi, l'anello di corrente può rispondere entro 6.6 ms, quindi se realizzi l'anello di velocità di tipo quantizzato usando l'encoder dovrebbe avere un tempo di campionamento non superiore a 10ms solo per avere risultati decenti.

Da come hai descritto le problematiche, ritengo che già con 2 anelli di velocità fatti bene, e con un'ottimizzazione degli anelli di corrente ben fatta, avresti ben poco da correggere, più che altro le eventuali derive, visto che hai una tolleranza grande.

 

Se non risolvi il problema del controllo di velocità tutte le pezze che andrai a mettere saranno solo ... toppe che spesso sono peggio del buco.

 

Senza offese ma perchè, nell'anno di grazia del 2022, si è pensato di usare convertitori in reazione di armatura? praticamente non vengono più immpiegati dagli anni 70 del secolo scorso.

Link al commento
Condividi su altri siti

  • 3 weeks later...

Solo per dare un riscontro sull'applicazione.

Sono riuscito a ottenere una ottima regolazione dei due assi con un margine di errore di +/- 2 gradi.

Ho semplicemente mandato una biella in Master di velocità, la biella slave la faccio partire con lo stesso riferimento di velocita' dello slave. Premesso che ho tarato quasi perfettamente i 4 azionamenti che gestiscono i 4 motori.

Calcolo l'errore di posizione angolare encoder delle due bielle e correggo lo slave con un PI +/- per tenermi dentro il mio errore.

Va da dio.

Grazie tante per i consigli sempre utili.

Ci tenevo anche a dire che un'altra azienda per una macchina simile aveva fatto l'ecoder virtuale. Ma e vero anche che gli azionamenti istallati erano digitali.

Ancora Grazie

 

 

ora mi chiede di sfasare di 180 gradi le due bielle e di tenerle in sincro su 180...questa la vedo piu' difficile visto che i miei encoder resettano la posizione su 360 gradi

😬

Modificato: da VINZENT
Link al commento
Condividi su altri siti

3 ore fa, VINZENT ha scritto:

Premesso che ho tarato quasi perfettamente i 4 azionamenti che gestiscono i 4 motori.

 

Questa èun'operazione che va fatta comunque.

Hai ridotto il problema con l'ottimizzazione e con un buon uso del feedforward. fino a quando, con la normale usura meccanica, il sitema "rimane li" può anche essere sufficiente.

 

3 ore fa, VINZENT ha scritto:

Ci tenevo anche a dire che un'altra azienda per una macchina simile aveva fatto l'ecoder virtuale. Ma e vero anche che gli azionamenti istallati erano digitali.

 

Hanno adottato la soluzione corretta, anche se con gli azionamenti digitali ne avrebbero potuto fare ameno, vista la maggior precisione di questo tipo di convertitore.

 

3 ore fa, VINZENT ha scritto:

ora mi chiede di sfasare di 180 gradi le due bielle e di tenerle in sincro su 180...questa la vedo piu' difficile visto che i miei encoder resettano la posizione su 360 gradi

 

Usando la soluzione canonica del master virtuale non ci sono problemi, basta sommare gli impulsi pari a 180° ad uno dei 2

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