Vai al contenuto

Come gestire piu’ uscite PWM

Home Forum Controllori SlimLine e Netsyst (LogicLab) Come gestire piu’ uscite PWM

Stai visualizzando 3 post - dal 1 a 3 (di 3 totali)
  • Autore
    Post
  • #35847
    Enrico Viviani
    Partecipante

    Ho la necessità di controllare quattro azionamenti passo-passo del tipo step-direzione. Dai vari forum ho capito che l’uscita DO00 della CPU IEC61131-3 può erogare tramite la FB SysSetPWMOut fino a 1kHz (o più tramite gli opportuni artifici) ma è possibile usare per lo stesso scopo (magari a frequenze inferiori 3-400hz) con la stessa FB le uscite, ad esempio, del modulo PCB124*100 magari implementando i contatori di feedback sugli ingressi dello stesso modulo ?

    Faccio questa domanda perchè non ho trovato informazioni riguardo la massima frequenza di uscita dei moduli I/O ma sembra che quello indicato sia quello con i tempi di risposta più rapidi. L’idea sarebbe quella di usare una CPU più economica (ad esempio la MPS053*310) e due schede PCB124*100 con le quali controllare l’uscita step (Out1 e Out2) di due azionamenti con SysSetPWMOut  usando come feedback gli ingressi 12 e 13 con un SysGetCounter per ognuno, replicando la condizione per l’altro gruppo di azionamenti.

    In questo modo gestirei anche gli ingressi di Zero e Fine Corsa e il comando di direzione.

    #39068
    Sergio Bertana
    Amministratore del forum

    La gestione di motori stepping è un argomento ampiamente trattato nel forum (Topic, topic), la tua idea di utilizzare gli I/O standard per generare frequenze di uscita dell’ordine di 400 Hz ha un problema. Le uscite digitali statiche hanno tempi di On/Off compatibili con i 400 Hz ma è la loro gestione il tallone d’Achille.

    Se ipotizzi di utilizzare l’interrupt fast a 1 mS per invertire lo stato di una uscita digitale tu avrai una frequenza in uscita di 500 Hz. Ho fatto delle prove ed è possibile anche scendere con l’interrupt a 500nS con frequenza massima di 1KHz. Ora se tu utilizzi una sola uscita puoi variare il tempo di interrupt (Funzione SysSetTaskLpTime) per avere tutte le frequenze nel range fino ad 1KHz. Ma se le uscite sono più di una è ovvio che variando il tempo di interrupt tutte le uscite cambiano di frequenza.

    Per variare la frequenza di ogni uscita puoi solo attendere una o più esecuzioni dell’interrupt per invertire l’uscita ma in tal caso le frequenze sono sottomultipli esatti della frequenza base (Esempio 1KHz, 500Hz, 250Hz, 125Hz…) e non credo vada bene.

    Sul mercato esistono drivers economici per motori stepping che si possono gestire via I2C (Vedi questo), in alternativa esistono degli integrati per generare uscite PWM pilotabili da bus I2C (Esempio il PCA9685, 16-channel, 12-bit PWM Fm+ I2C-bus LED controller della NXP).

    #39071
    Enrico Viviani
    Partecipante

    Ma l’uso di dispositivi esterni “non industriali” esula dal senso del trattato e dell’oggetto che devo realizzare. Speravo di poter usare i vostri sistemi per una macchina in realtà piuttosto semplice ma dovrò tentare un altra strada.

Stai visualizzando 3 post - dal 1 a 3 (di 3 totali)
  • Devi essere connesso per rispondere a questo topic.