Vai al contenuto
PLC Forum


Rampa Passo Passo


and

Messaggi consigliati

Salve a tutti, è da poco che mi occupo di PLC ed ho un problema con un VersaMax Micro, in particolare l'IC200UDD110. Sto tendando di costruirmi una rampa di accelerazione di un passo passo, il motore che utilizzo è un Sanyo Denki serie 103-H89 con azionamento RTA MIND A. In particolare la rampa che sono riuscito a creare non è affidabile in quanto soltanto il 40% delle partenze va a buon fine.

Vorrei capire dove sbaglio, se qualcuno mi può aiutare lo ringrazio fin da adesso.

Saluti And.

Link al commento
Condividi su altri siti


La rampa l'ho realizzata in due modi differenti:

1° modo) Ho considerato un valore di frequenza iniziale, un valore di frequenza finale, un tempo di rampa, ed un tempo di clock. Dividendo il tempo di rampa per il tempo di CK determino il numero di Step. Differenza Ff-Fi/n°step determino il delta F che vado a sommare ck dopo ck nel registro frequenza corrente.

2°modo) Ho costruito un vettore con 20 gradini con frequenze delta F di 200 HZ che vado a caricare nel registro di frequenza corrente mediante un sequenziatore.

Saluti e grazie per l'interessamento.

And

Link al commento
Condividi su altri siti

Entrambi i modi descritti devono funzionare correttamente. Se ci sono malfunzionamenti sono dovuti al modo come hai scritto la funzione. Verifica il programma, forse sbagli nel richiamare la funzione o hai scritto qualche istruzione errata.

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

Precedentemente quando ho parlato di non affidabilità della rampa e che solo il 40% dei lanci andava a buon fine in realtà non ho detto quale era il problema che si presenta. I lanci che falliscono fanno inchiodare il motore, in un punto qualunque della rampa. Ossia il motore perde il passo. Ho anche provato ad analizzare il treno di impulsi generato con un oscilloscopio, purtoppo non con memoria, e sembra che il PLC crei dei buchi nel treno ovvero manca l'impulso la dove dovrebbe esserci. Ma non vorrei che sia solo un effetto ottico. Ma se fosse così come potrei risolvere il problema?

Saluti e Grazie And

Link al commento
Condividi su altri siti

E' il solito problema! Bisogna estorcere i dati con la tortura! E si che si aiuto! Se non si danno tutti i dati le rispsote sono campate in aria.

Sperando che tu non abbia dimenticato/taciuto qualche altra cosa vediamo se ti posso aiutare.

Fatti una rampa molto lenta, cioè metti un tempo di clock abbastanza alto; assicurati che il dato che serve a settare la frequenza sia monitorabile in run time. Non modificare niente altro del tuo programma.

Fai partire la rampa e verifica che esegua tutti i passi in sequenza senza salti.

Da ultimo, ma molto importante. Come generi il clock? sei sicuro del tempo? e sei sicuro che il tempo sia costante?

Link al commento
Condividi su altri siti

Scusami Livio per la mia incompletezza ma spesso quando non si hanno le idee chiare si finisce anche per non sapere quali informazioni fornire. Io comunque ho fatto tantissimi tentativi con ogni tempo di rampa ed ogni valore di Ck, con moltissimi valori di frequenza iniziale compresi tra 0 e 1000 Hz ed ho anche inserito valori diversi di frequenza massima, ma non sono riuscito ad ottenere niente di completamente affidabile. Per quanto rigurda il TCK lo genero con un normale timer in ms,ed ho sempre impostato un tempo più lungo del tempo di ciclo del programma, anche se in alcune prove l'ho generato con i %s0003 che è un contatto a tempo pari a 10 ms. Comunque sulla fatto di avere un clock in assoluto costante non ci giurerei. Se il problema è quello come potrei fare per avere un clock in assoluto costante. Ho letto sul manuale che è possibile vincolare la CPU ad avere un tempo di scansione costante, quindi potrei utilizzare questo come parmetro di base per far si di ottenere un impulso ad ogni ciclo della CPU. Non so...

Saluti And

P.S. Se vuoi posso fornirti la funzione che ho implementato per costruire la rampa in modo che tu possa analizzarla.

Link al commento
Condividi su altri siti

Cristina Fantoni

Faccio una domanda che può sembrare molto banale:

l'impulso del clock è rilevato con un fronte di salita? :huh:

Perché da come descrivi il malfunzionamento mi fa venire in mente una mia dormita che dava un problema simile...

:wub:

Link al commento
Condividi su altri siti

P.S. Se vuoi posso fornirti la funzione che ho implementato per costruire la rampa in modo che tu possa analizzarla.

Non conosco molto (quasi niente) il PLC che usi tu, quindi se ci sono errori di programma non li vedrei.

Se il tempo di clock è varabile avrai una rampa che non è lineare, ma cimunque funziona. A meno che, se il tuo clock, dipende solo dal tempo di ciclo, ci sia la possibilità che alcune scansioni siano troppo rapide, pertanto la tua rampa sarebbe troppo ripido con conseguente perdita del passo degli stepper.

L'idea di fare un ciclo a tempo fisso può essere valida. Fissi un tempo che ti garantisca da overtime di ciclo, e come primo lavoro del programma entri nella rampa.

Per Cristina.

Ce la racconti la dormita?

Link al commento
Condividi su altri siti

Cristina Fantoni
Per Cristina.

Ce la racconti la dormita?

Caro Livio,

vuoi proprio che tiri fuori lo scheletro dall'armadio..... :lol:

E' presto detto:

avevo utilizzato il merker di clock senza appoggiarlo su un fronte di salita, dato che il merker rimane per meta' del suo tempo a "1" e per l'altra meta' a "0", invece di dare un impulso a tempo, ed eseguire quindi il codice una sola volta per ogni impulso, lo eseguiva per diversi cicli consecutivi, fino a che il merker rimaneva ad "1".

Veniva da se' che il programma a volte girava bene ed a volte faceva cose assurde, dato che il tempo di ciclo variava parecchio (secondo le funzioni che eseguiva) e che l'operazione doveva essere eseguita un certo numero di volte.

Siccome era tardino, continuavo a controllare il codice senza accorgermi della ronfata... :unsure:

Allora lavoravo in simbiosi con un collega molto in gamba che ha dato un'occhiata al programma, poi, conoscendomi bene, si e' messo a ridere e mi ha detto "O che vai a casa e ci guardi domani... oppure controlli che lo esegua una volta sola...", ho capito che era sicuramente una cretinata e mi e' suonata la sveglia.... messo il FS ed il programma funzionava bene... (poi finalmente siamo andati a casa....) :D

:wub:

P.S. per il mio ex collega: se leggi questo post e ti metti a ridere guai a te!!!!!! :lol:

Link al commento
Condividi su altri siti

Tanto per cominciare vorrei ringraziarvi tutti per l'aiuto che mi state dando, è davvero prezioso.

Per Cristina: il Ck è filtrato da un fronte di salita quindi da un solo implulso, ma grazie lo stesso perchè spesso e volentieri sono questi gli errori che ti fanno perdere un sacco di tempo.

La funzione che utilizzo genera un PWM con D.C. del 50%, che è quello richiesto dall'azionamento, fra l'altro tra i vari tentativi o anche inserito un resistore da 1,5 KOhm 0,5 W fra l'output Q1 ed il comune come da indicato nel manuale, ma non ho ottenuto nessun miglioramento.

Saluti a tutti e ancora grazie

And

Link al commento
Condividi su altri siti

Grazie Piero del manuale ma ho già letto quelle pagine,ma non c'è un vero esempio di rampa, fra l'altro ho la versione in italiano se ti può interessare

Saluti And

Link al commento
Condividi su altri siti

La funzione che utilizzo genera un PWM con D.C. del 50%, che è quello richiesto dall'azionamento, fra l'altro tra i vari tentativi o anche inserito un resistore da 1,5 KOhm 0,5 W fra l'output Q1 ed il comune come da indicato nel manuale, ma non ho ottenuto nessun miglioramento.

Se ho capito bene parti con una frequenza minima del PWM _at_ 50% (inda quadra), poi ad ogni clock incrementi questo valore di frequenza di una quantità prestabilita. Ora ti faccio la domanda clou: hai mai verificato con un oscilloscopio la rispondenza della freaquenza teorica con quella reale? Potresti benissimo mettere un comando start-stop su un ingresso (tra l'altro è una condizione operativa) con cui vai a fermare la rampa, fai la misura con l'soscilloscopio e verifichi che sia corrispondente al valore che dovresti avere.

Ti dico questo perchè può essere che la tua funzione lavori correttamente, ma per cause diverse, la frequenza in uscita al PWM non sia quella preventivata, oppure il duty cycle non sia 50%.

Link al commento
Condividi su altri siti

Si Livio la mia funzione fa proprio quello che dici tu, e quello che ho potuto verificare con l'oscilloscopio è un'onda quadra con una frequenza che man mano aumenta, ovvero si restringe il periodo, questo avviene in modo abbastanza rapido, per poter apprezzare tutti i passaggi sarebbe necessario un oscilloscopio con memoria che non ho, la cosa interessante che ho potututo osservare è che il DC sembra del del 50%, dico sembra perchè lo è sicuramnete quello della frequenza massima ma non so di quello dei gradini intermedi, e come ti accennavo in precedenza mi è sembrato di vedere dei buchi nel treno di impulsi.

Sinceramene io non credo di essere in grado di risolvere il problema perchè non mi vengono in mente possibili accorgimenti ... Comunque ho provato un PLC Nais (FP0) che ha delle funzioni in libreria che implementano la rampa tipo la F168 e queste funzionano che una bellezza, quindi credo che delegherò al plc Nais la funzione di posizionamento e tutto il resto lo gestisco con il GE. Almeno fino a quando non risolvo il problema

Saluti e Grazie And

Link al commento
Condividi su altri siti

Gabriele Corrieri

Ciao and,

io non so nulla di plc GE, però se carichi solo la funzione rampa, e anteponi all'enable generale della rampa un ingresso puoi vedere se singolarmente ogni step viene eseguito e se la frequenza d'uscita e il duty cycle sono corretti.

Da questo punto riposiziona in automatico la rampa, introducendo un ritardo fra uno step e l'altro ritardo sempre decrescente ... fino a che non vedi la mancanza degli steps.

Sto guardando il manuale della scheda, giusto se mi venisse qualche idea provo a scrivere qualcosa.

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