Gestire motori passo passo con un sistema SlimLine
Home › Forum › Controllori SlimLine e Netsyst (LogicLab) › Gestire motori passo passo con un sistema SlimLine
- Questo topic ha 12 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 2 anni, 1 mese fa da
Sergio Bertana.
-
AutorePost
-
Settembre 24, 2013 alle 4:08 pm #35420
Luca
PartecipanteVolendo interfacciare uno SlimLine ad un driver per un mototre passo passo qual è la frequenza massima di una scheda di uscita da bbinare al datore di impulsi di clock che determina il numero dei passi ?
Settembre 25, 2013 alle 3:56 pm #37795Sergio Bertana
Amministratore del forumI moduli SlimLine CPU ARM7 IEC61131-3, dispongono di una uscita PWM hardware (Out 0), che può generare segnali ad onda quadra con un limite di 1 Khz. Tramite il blocco funzione SysSetPWMOut, set PWM output (Estratto manuale), è possibile impostare sia la frequenza di uscita che il duty cycle.
In realtà in generatore PWM può essere programmata per generare frequenze molto maggiori, ma l’OptoMOS di uscita taglia la frequenza. Il valore di 1 Khz è garantito, ma regolando il valore di Duty-Cycle in modo da compensare la differenza tra il tempo di ON ed il tempo di Off dell’OptoMOS si può raggiungere anche valori supuriori ai 2 Khz.
Se si collega l’uscita Out0 con l’ingresso Inp0 utilizzando il blocco funzione SysGetCounter get counter, è possibile utilizzare il counter hardware per conteggiare gli impulsi in uscita ed in questo modo poter gestire anche il loop di posizionamento dello stepping motor.
In questo post un’altra soluzione possibile.
Maggio 19, 2014 alle 4:11 pm #38251Anonimo
InattivoBuonasera, sono un nuovo utente. Sono molto interessato alla possibilità di generare segnali PWM con un modulo SlimLine CPU ARM7. Nel manuale hardware (sezione Download) sono presenti dei limiti ai valori massimi in relazione ai tempi di Ton e Toff. Per quanto riguarda la massima frequenza del segnale d’uscita, vorrei sapere se è possibile ottenere un’informazione precisa su quanto ci si possa spingere oltre il valore garantito di 1Khz.
Maggio 27, 2014 alle 3:43 pm #38252Sergio Bertana
Amministratore del forumCome dicevo prima ci si può spingere fino a 2 Khz. Ho comunque eseguito una rilevazione oscillografica e con un carico da 1KOhm sull’uscita ho ottenuto il risultato che vedi dallo screenshot.
Come vedi ho raggiunto la frequenza di 2,5Khz con un duty cycle impostato al 78 %.In realtà a causa dei ritardi degli OptoMOS in uscita il duty cycle reale del segnale è circa del 50 %. Come vedi il tempo di chiusura dell’OptoMOS (Salita del segnale) è molto più lento del tempo di apertura (Discesa del segnale). Il livello dell’uscita attiva è a 12 Vdc.
Settembre 11, 2014 alle 9:35 am #38412Alessandro
PartecipanteDovrei gestire uno stepping motor per dei posizionamenti, intendevo utilizzare un driver collegato alla uscita PWM del modulo SlimLine. Ho fatto la connessione Out0 con Inp0 sul modulo CPU ed ho realizzato un semplice programma ladder ma non capisco se stà funzionando. Cosa si intende per Duty, la durata dell’impulso ?
Settembre 11, 2014 alle 9:38 am #38413Sergio Bertana
Amministratore del forumSi certo collegando l’uscita DO00 con l’ingresso DI00 è possibile tramite l’FB SysGetCounter conteggiare gli impulsi generati dall’uscita PWM che sono inviati all’ingresso di clock del driver motore stepping (Vedi cablaggio). Agendo sul valore di Frequency è possibile comandare la velocità del motore, impostando il valore 0.0 il motore si arresta.
Con Duty è possibile impostare percentualmente il tempo di On/Off del segnale PWM in uscita, dovendo generare una onda quadra il valore di Duty può essere setttato al 50%. Però ricorda che se ti spingi a frequenze elevate può essere necessario modificarne il valore come indicato precedentemente.
Ecco lo screenshot di un programma ladder che gestisce l’uscita PWM e ne conteggia gli impulsi generati, allego anche il programma sorgente.
Maggio 8, 2017 alle 1:50 pm #39934Stefano
PartecipanteLeggendo la documentazione vedo che il blocco SysSetPWMOut gestisce il generatore hardware di PWM del modulo CPU.
E’ disponibile solo un canale PWM sul modulo CPU o anche su altri moduli di espansione.PS sarebbe utile uno specchietto riassuntivo delle “funzioni speciali” disponibili sui vari ingressi/uscite di tutta la serie di CPU e moduli di espansione (Es. Pwm, counter, lettore encoder ecc ecc). Questo faciliterebbe la scelta delle apparecchiature in fase di progetto.
Maggio 12, 2017 alle 4:40 pm #39935Sergio Bertana
Amministratore del forumAttualmente è disponibile una sola uscita PWM hardware sul modulo CPU. Tutti inostri moduli di estensione hanno nella versione statica un driver sulle uscite che ha una frequenza operativa estremamente ridotta, quindi non tale da permettere di avere un PWM.
In quanto allo specchietto stiamo lavorandoci…
Maggio 19, 2022 alle 1:21 am #65313Carlo
PartecipanteHo installato il programma sorgente in un sistema composto da CPU: Mps054_XUnified_1_0 on ARMv7M con abbinato un modulo di espansione I/O: PCB124B000 (serial nr: 00163).
Ho notato, che modificando gli indirizzi “address=0” e “channel=12” del blocco funzione SysGetCounter (quelli del modulo di espansione) il conteggio non avviene e l’uscita “fault” viene settata TRUE. Ho provato anche con gli altri 3 ingressi veloci del modulo (13, 14 e 15) senza successo.
Eppure dalle specifiche, il modulo PCB124B000 rientra tra quelli con gestione hardware contatori. Qualche suggerimento?
Maggio 20, 2022 alle 12:38 am #65314Carlo
PartecipanteSvelato l’arcano…….. Nel modulo PCB124B000 gli ingressi utilizzabili dal blocco funzione SysGetCounter sono gli ingressi DI00 e DI01 che corrispondono rispettivamente al “channel” 0 e 1 del blocco stesso.
Consultando però, il manuale, gli ingressi “high-speed sono DI12 e DI15. Non capisco, ma me ne farò una ragione……
Maggio 23, 2022 alle 10:41 am #65322Sergio Bertana
Amministratore del forumSe guardi nella documentazione del FB SysGetCounter, nella sezione Moduli con gestione hardware contatore, vedi che il modulo PCB124*000 ha indicato 2 counters that can be individually wired to any of 16 digital inputs.
In pratica il modulo può gestire fino a 2 contatori hardware con la possibilità di selezionare tramite la definizione del parametro Mode quale dei 16 ingressi digitali utilizzare come ingresso di clock. Il modulo non gestisce ne il reset hardware ne il conteggio in reverse mode da ingresso digitale. Ma queste operazioni sono facilmente implementabili da software.
Quindi ecco spiegato l’arcano, il modulo ha 16 ingressi di cui 4 veloci, ed è possibile decidere impostando opportunamente il parametro Mode quale ingresso utilizzare per i 2 counters.
Febbraio 25, 2023 alle 7:32 pm #70568Carlo
PartecipanteHo realizzato un’applicazione per la gestione di un motore passo passo (0,9°/imp) utilizzando il PWM e il Counter di un PLC SlimLine LogicLab Cortex M7 MPS054* così come precedentemente consigliato e tutto funziona regolarmente: fornendo 400 impulsi l’asse del motore compie esattamente 1 giro.
Successivamente, alla stessa applicazione, ho dovuto aggiungere un secondo motore da controllare con FB SysGetCounter di un modulo PCB124B000 sfruttando gli stessi impulsi generati dal PWM della CPU. Mi sono accorto, però, che fornendo 400 impulsi, il contatore segna 400, ma l’asse motore non completa il giro. A questo punto ho fatto varie prove cambiando la frequenza del PWM, il valore di Duty, ho usato anche il secondo Counter del modulo I/O, ho addirittura sostituito il modulo I/O senza però sortire alcun miglioramento. L’unico modo per far funzionare il motore passo passo è quello difarlo gestire dal modulo CPU.
Allo scopo ho recentemente acquistato 2 CPU MPS056A310 (anch’essi con PWM e Counter hardware). Avrei preferito i MPS054* ma non erano disponibili.
Bene. Appena arrivati, ho collegato una CPU all’applicazione con lo stesso schema e lo stesso programma usato con la CPU MPS054*, risultato: fornendo 400 impulsi l’asse motore non completa il giro! C’è lo stesso problema riscontrato con i moduli I/O.
Ho l’impressione che il contatore dei moduli PCB124*000 e della CPU MPS056*, per qualche strana ragione, non contano correttamente gli stessi impulsi forniti al drive del motore.
Perdonatemi se mi sono dilungato troppo, ma per questo problema, ci ho perso un sacco di tempo. Alla fine ho recuperato alcune CPU MPS054* di altre applicazioni che non utilizzano i counter hardware e le ho sostituite con quelle appena acquistate (MPS056*). Ho potuto finalmente realizzare una applicazione per la gestione di n° 3 motori passo passo ognuno controllato da una distinta CPU MPS054*.
Peccato, se il sistema CPU MPS054* con il modulo PCB124*000 fosse stato all’altezza delle aspettative, ci sarebbe stato un netto risparmio economico e, sicuramente, un sistema più funzionale e snello non fosse altro per la programmazione…
Cosa ne pensate?
Marzo 6, 2023 alle 3:28 pm #70698Sergio Bertana
Amministratore del forumPer pilotare un motore stepping eseguendone il posizionamento (Quindi conteggiando gli impulsi) devi utilizzare lo schema riportato nel FB SysSetPWMOut.
Nel tuo caso mi sembra di capire che generi un clock in uscita dal PWM con il quale hai intenzione di pilotare più motori, e per il posizionamento ti affidi al conteggio degli impulsi tramite counters.
Quindi lasci il PWM in esecuzione che invia il clock a più drivers ed abiliti uno o l’atro driver secondo le esigenze. Se è così hai sicuramente un problema di ritardo tra il comando di abilitazione del driver e la sua effettiva abilitazione, cosa che potrebbe farti perdere i 44 impulsi.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.