Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Software X Controllo Di Velocità - Modi x costruire un FB di Controllo Velocità


Messaggi consigliati

Inserito:

Domanda : In che modo si può costruire un FB che controlli la Velocità di un azionamento ?

L'unico modo è porsi in una Tag che venga incrementata, in maniera precisa, ad intervalli di tempo precisi con uno step di Incremento ?

Oppure esistono altri modi senza prefissare in qualche modo il tempo di richiamo della Tag, ma magari usando un contatore senza porsi in una Tag a tempo ? :huh:

Grazie x l'aiuto.


Inserita:

Scusa, ma non ho capito la domanda.

Facci sapere:

1) che plc usi? Parli di FB, quindi presumo Siemens, ma non lo specifichi.

2) per "controllare la velocità" intendi pilotare l'azionamento, o leggere la velocità istantanea?

3) che tipo di segnale hai per la lettura della velocità istantanea, analogico o da encoder?

Descrivi meglio il problema. Più dettagliata sarà la descrizione, più facile sarà dare i consigli giusti.

Inserita:

Provo a chiarire un po' meglio, scusandomi x la non sufficiente chiarezza precedente.

1) Non sto utilizzando Siemens, ma sto scrivendo l'FB in CoDeSys x un inverter che ha una scheda controller PLC inserita.

2) Per "controllare la velocità" intendo proprio pilotare l'azionamento, fornendogli un set di velocità x raggiungere un dato target di velocità e mantenere poi quel target nel tempo se il set non cambia.

Spero di essere stato sufficientemente chiaro ed attendo fiducioso qualche idea al riguardo

Inserita:

Quello che tu vuoi fare è un PID che controlli la velocità in funzione di un set-point programmabile .

Puoi avere almeno tre scelte :

1) Verificare se l'inverter ha un PID integrato ed utilizzare quello , fornendo hardware la retroazione (encoder o dinamo tachimetrica ?) ;

2) Verificare se nel codesys che hai esiste già un blocco PID ed utilizzare quello ;

3) Costruirti un blocco PID via software (es. utilizzando il linguaggio IEC61131-3 di codesys "testo strutturato") .

Per la terza scelta può tornarti utile il famoso Tutor del venerabile maestro Livio Orsini contenuto nella sezione didattica di questo forum .

A tal proposito usa la funzione "cerca" .

:blink:

bigalex

Inserita: (modificato)
Spero di essere stato sufficientemente chiaro ed attendo fiducioso qualche idea al riguardo

No non sei stato chiaro a sufficienza! Se vuoi una risposta chiara e, possibilmente, esaustiva descrivi compiutamente quello che vorresti fare, con quali apparecchiature e con quali mezzi.

La partecipazione al forum è gratuita, non si paga un tot a parola, quindi è controproducente usare uno stile telegrafico e lasciare che siano gli altri ad indovinare (anche l'uso di x in luogo di perchè è estramemente irritante).

Se si desidera un aiuto il minimo che si deve fare è fornire tutte le informazioni.

Ancora dopo anni si è costretti a fare il terzo grado o ad iniettare pentothal per ottenere le informazioni :angry:

Per esempio dovresti almeno specificare

1) se vuoi solo generare un riferimento ad anello aperto

2) se vuoi invece realizzare un anello di velocità ad anello chiuso

Nel caso 2 devi anche specificare:

1) tipo e dati del trasduttore di velocità

2) precisione necessaria

3) tempi di risposta

4) tipo e prestazioni del sistema di controllo

Modificato: da Livio Orsini
Inserita:
Domanda : In che modo si può costruire un FB che controlli la Velocità di un azionamento ?

L'unico modo è porsi in una Tag che venga incrementata, in maniera precisa, ad intervalli di tempo precisi con uno step di Incremento ?

Oppure esistono altri modi senza prefissare in qualche modo il tempo di richiamo della Tag, ma magari usando un contatore senza porsi in una Tag a tempo ?

Grazie x l'aiuto.

Provo a chiarire un po' meglio, scusandomi x la non sufficiente chiarezza precedente.

1) Non sto utilizzando Siemens, ma sto scrivendo l'FB in CoDeSys x un inverter che ha una scheda controller PLC inserita.

2) Per "controllare la velocità" intendo proprio pilotare l'azionamento, fornendogli un set di velocità x raggiungere un dato target di velocità e mantenere poi quel target nel tempo se il set non cambia.

Spero di essere stato sufficientemente chiaro ed attendo fiducioso qualche idea al riguardo

:lol::lol::lol: :ph34r:

Ancora dopo anni si è costretti a fare il terzo grado o ad iniettare pentothal per ottenere le informazioni

Per favore Livio, ti prego di portare pazienza ;)

Inserita:
Per esempio dovresti almeno specificare

1) se vuoi solo generare un riferimento ad anello aperto

2) se vuoi invece realizzare un anello di velocità ad anello chiuso

Semplicemente sono nella situazione 1), vorrei generare un riferimento ad anello aperto, attraverso il Plc inserito nell'Inverter ATV71 Telemecanique. Questo Controller agirà sullo stesso Inverter controllandone direttamente la velocità (appunto ad anello aperto) e su 2 Inverter che saranno Slave in gearing del primo inverter.

Il tutto lo vorrei fare appunto mediante il PLC inserito nella scheda Controller dentro l'Inverter Master.

Ancora dopo anni si è costretti a fare il terzo grado o ad iniettare pentothal per ottenere le informazioni

Effettivamente ho avuto troppa frettolosità nel descrivere il problema e quello che sembrava per me chiaro, poteva non esserlo per gli altri. Me ne scuso e faccio ammenda. L'importante, a mio parere, è non perseverare..........

(anche l'uso di x in luogo di perchè è estramemente irritante).

Questo invece per me è solo questione di opinioni, ma ad ogni modo non lo userò più in questo Forum.

Inserita: (modificato)
Questo invece per me è solo questione di opinioni, ma ad ogni modo non lo userò più in questo Forum.

Comincio da questo. L'uso di abbreviazioni e acronimi da Short Message Systems è comprensibile quando si usano strumenti "poveri" dotati di una tastiera ridotta e display di piccolissime dimensioni. Usando un normale PC o un Notebook, si ha disposizione uno schermo che è, minimo, VGA ed una tastiera standard, quindi non è giustificabile l'uso di acronimi, specie l'uso di "x", "+", "-". "6" in luogo dei fonemi equivalenti. Personalmente, poi, sono allergico a questa prassi, che perarltro trovo poco educata. D'altro canto il risparmio di tempo, nello scrivere, è talmente esiguo da non giustificare la scomodità di chi legge (non prendo neanche in considerazione la fatica di premere qualche tasto in pù).

Forse sarò antiquato, ma io sono italiano e cerco di parlare e scrivere in italiano usando un lessico ed una sintassi decente, compresa l'ortografia.

Chiusa questa premessa comportamentale veniamo al problema vero.

Semplicemente sono nella situazione 1), vorrei generare un riferimento ad anello aperto, attraverso il Plc inserito nell'Inverter ATV71 Telemecanique. Questo Controller agirà sullo stesso Inverter controllandone direttamente la velocità (appunto ad anello aperto) e su 2 Inverter che saranno Slave in gearing del primo inverter.

Non dici nulla relativamente alle prestazioni quali, ad esempio, precisione degli slaves, tempi di risposta, etc., quindi per il momento accantoniamo gli assi elettrici e vediamo solo l'anello aperto di velocità.

In pratica vuoi generare un riferimento di velocità per l'inverter master. Suppongo, perchè non lo dici, che il riferimento debba essere generato con accelerazione graduale (rampa). Non dici nulla circa la risoluzione del D/A del tuo PLC, quindi supporrò che sia un normale 12 bits. (dai pochissime informazioni; mi chiedo se è perchè le ignori o se hai paura che anche gli altri vengano a conoscenza di quello che vuoi realizzare :) )

Ora tu avrai una quantizzazione di 10 volt su 2047 livelli discreti (altrettanti per il negativo), in altri termini avrai un passo minimo pari a 4.88 mV circa. Bisogna anche decidere quale "tic" minimo si vuole o si può usare.

E' anche necessario sapere/decidere se:

- Si usa un solo tempo di accelerazione

- Si seleziona il tempo di accelerazione tra un numero limitato di tempi fissi

- Il tempo di accelerazione è impostabile a piacere entro un valore minimo ed uno massimo

In funzione di questa scelta si dovrà impostare la funzione.

A titolo di esempio supponiamo che che si voglia avere un tempo di accelerazione fisso pari a 10" e che si possa sceglere un "tic" pari a 10ms. Si dovrà abilitare un interrupt legato al timer di 10ms, se è stata richiesta una variazione di velocità si incrementa, o si decrementa, di due counts di D/A ad ogni "tic", fintanto che non sia stato raggiunto il nuovo valore di velocità.

Relativamente alla sincronizzazione dei due slaves sono necesarie molte altre informazioni. Prima di tutto bisognerebbe conoscere le prestazioni del PLC che intendi usare. Forse ti sembrerà strano, ma non tutti conoscono il PLC integrato con lo ATV71, ed io sono tra quelli che proprio lo ignorano.

Poi sarebbe necesario, come ho scritto in precedenza, conoscere le prestazioni deisderate, dettagli sugli encoders, etc.

Come vedi sarebbe ancora necesario usare un poco di pentothal sodico :P

Comunque un sistemino del genere lo spiego abbastanza chiaramente, almeno credo, nel mio tutorial sulle regolazioni e controlli, tutorial che se vuoi puoi reperire nella sezione didattica del forum.

Modificato: da Livio Orsini
Inserita:
dai pochissime informazioni; mi chiedo se è perchè le ignori o se hai paura che anche gli altri vengano a conoscenza di quello che vuoi realizzare

Mi accorgo che mi sono concentrato essenzialmente sull'aspetto software, ma non abbastanza sull'hardware.

Appena avrò ricapitolato bene tutte le informazioni (ero tentato di scrivere info... ma non lo farò) hardware, le scriverò per avere più precisi consigli.

Per ora grazie Livio anche per la tua schiettezza, che è altrettanta da parte mia.

Inserita:

ciao,

uso codesys da 3 o 4 anni anche se non in modo continuativo e nello specifico ho anche utilizzato la scheda controller inside della Schneider per l'ATV71....

esiste un Fb già fatto per fare le rampe e lo trovi nelle librerie ( util.lib sotto Function manipulators ramp INT per integer e ramp REAL per real )

cercavi questo???

ciao Stefano

Inserita:

Grazie pidds per la risposta

esiste un Fb già fatto per fare le rampe e lo trovi nelle librerie ( util.lib sotto Function manipulators ramp INT per integer e ramp REAL per real )

ma le Rampe definite in questi 2 FB sono lineari, come si vede nell'. di CoDeSys.

Io sto provando invece a costruire Rampe sinusoidali per rendere più morbidi i transitori, possibilmente senza usare una Tag a tempo fisso : il mio problema è questo.

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