Vai al contenuto
PLC Forum


Posizionamento Encoder - Pid - Uscita Analogica - S7-1200


pierotermine

Messaggi consigliati

Salve,

ho appena da poco iniziato a lavorare con S7 -1200 cpu 1214 AC/DC/Rly. Devo realizzare un profilo semplice di movimento, il plc comanderà una macchina deformazione lamiera lineare, io devo controllare quota (lunghezza pezzo) e velocità, al raggiungimento della quota la macchina dovrà tagliare automaticamente.

Ho trovato su TIA PORTAL v11 sp2 ho trovato l'istruzione "PID COMPACT", che in linea teorica è quello che mi serve (ho bisogno di un profilo semplice di movimento, cioè, accelerazione, lavorazione a velocità costante, decelerazione e stop alla quota del setpoint).

Nella parametrizzazione del pid compact ho messo su setpoint la quota finale da raggiungere, input_PER (ingresso analogico) 0 e disattivato, invece, in INPUT ho messo direttamente il valore attuale dell'hsc(configurato in conteggio) (ed essendo hsc0 ID1000) (ho provato anche a copiare il valore id1000 su una variabile di appoggio MWxxx), facendo attenzione, alla coerenza tra i tipi di dati, id1000 è un REAL e l'ingresso INPUT dell'istruzione pid compact è un REAL; in uscita OUTPUT l'ho impostato a 0, invece, OUTPUT_PER (uscita analogica) ho messo QW96 ( che sarebbe l'indirizzo dell'uscita analogica), sul db del pid ho impostato rmode a 3 (modo automatico).

Inizialmente la funzione pid scrive 10 volts sull'uscita analogica, non appena l'encoder inizia a "Contare" il pid si spegne e va in errore. L'errore è 0200 Valore del parametro "Input" non valido: Formato numerico del valore non valido. Non riesco a capire cosa lo manda in errore.

Stavo pensando di sviluppare io una funzione pid (grazie anche alle guide di Livio Orsini).

Qualcuno potrebbe aiutarmi?

Vi ringrazio anticipatamente

Link al commento
Condividi su altri siti


In genere per posizionamenti semplici si lavora in proporzionale puro; anche perchè l'integrale è già un elemento naturale del sistema.

Io non conosco il 1200, ci sono molti utenti che usano questo PLC e potranno conformarlo o meno, però probabilmente dovrebbe essere presente una funzione di libreria Siemens per eseguire i posizionamenti.

Altrimenti puoi svilupparti uan semplece funzione di posizionamento. Se hai letto il mio tutorial, nel capitolo 6 è spiegato come implementare una funzione di posizionamento. Il buono di quella funzione è che è praticamente autoadattativa, cioè non ha bisogno di tarature.

Ti riassumo le linee guida della funzione.

Devi conoscere quanti impulsi di encoder hai, alla amssima velocità, per unità di tempo. Per esempio pensiamo di avere 10000 impulsi/1".

Ora prepari un interrupt su timer di sistema, sempre come esempio ipotizziamo di avere un interrupt ogni 20 ms; alla massima velocità avrai quindi 20 impulsi ogni cadenza di interrupt.

Ad ogni interrupt la routine adndrà a sommare 20 impulsi ad un contatore virtuale; sottrai dal contatatore virtuale il valore del contatore reale, quellodella scheda di conteggio o del contatore veloce. La differenza di conteggio la usi come riferimento di velocità. Se la differenza di conteggio è maggiore del massimo valore ammesso dall'uscita anologica metti il valore massimo. Confronti il valore del contatotore virtuale con il valore corrispondente alla quota da raggiuingere. Quando il valore del contatore virtuale sarà >= al valore della quota blocchi gli incrementi e fissi il valore del contatore eguale al valore della quota.

Inizialmente il riferimento di velocità crescerà, prchè cresce l'errore ovvero la differenza tra quota ideale e quota reale. Raggiunta la massima velocità l'errore rimane costante. Una volta che la quota ideale è eguale alla quota da raggiungere l'errore diminuisce e diminuirà anche la velocità. La velocità si azzera per errore = zero.

In questo modo hai due rampe, accelerazione e decelerazio, automaticamente tarate per la amssima accelerazione pèossibile con quella macchina.

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

Grazie Livio per aver risposto al mio post. Nel caso in cui prendessi la decisione di scrivermi io la funzione pid era mia intenzione seguire proprio il capitolo 6 della tua guida.

Per il posizionamento ci sono delle librerire dedicate, ma non sono solo per le uscite a treni d'impulsi? Lo chiedo, ovviamente, a chi legge questo post posso controllare attraverso l'istruzione mc power (motion control) direttamente l'uscita analogica?

Grazie

Piero

Link al commento
Condividi su altri siti

posso controllare attraverso l'istruzione mc power (motion control) direttamente l'uscita analogica?

Ciao, le istruzioni motion sono valide solo per uscite a treno di impulsi, vale a dire solo se tu dovessi controllare il tuo azionamento in step/dir.

Se hai un uscita analogica l unica cosa che mi viene in mente è usare il pid come hai provato a fare, oppure scriverti da solo il codice magari con due riferimenti di velocità( lento-veloce ad esempio)in base all errore tra set point e valore hsc. Questo solo se non hai particolari esigenze di velocità e/o precisione.

Link al commento
Condividi su altri siti

Rileggendo attentamente mi è sorto un dubbio.

Fai questa prova: nelle impostazioni del pid seleziona " imput per" in luogo di " imput"

A questo punto sul blocco pid dovrebbe all ingresso" imput per "farti aprire la tendina e farti selezionare direttamente il numero di hsc che hai usato. Se non sbaglio imput va usato solo nel caso in cui il valore provenga da una variabile di appoggio es un valore manipolato proveniente da un ingresso analogico.

Prova e facci sapere

Matteo

Link al commento
Condividi su altri siti

Ciao Matteo,

ho fatto come mi hai consigliato, ma nel menu a tendina dell'editor del pid è tutto bloccato sia setpoint che input che output, mi fa solo selezionare input o input_per e output o output_per, sotto tutto grigio non selezionabile. a mano ho provato nell'istruzione pid all'ingresso input_per inserire id1000 che sarebbe la lettura del mio contatore veloce, ovviamente, mi da errore poichè il valore che accetta è una word, invece, id1000 è un real. La mia versione di tia portal è v11 sp2 l'ho appena acquistato. Nell'editor "impostazioni di base" dovrebbe darti le possibili scelte?

Grazie

Piero

Link al commento
Condividi su altri siti

Ma nella configurazione del pid hai messo imput per?

Hai inserito il blocco pid in un ob ciclico, meglio se con tempo basso tipo 50 ms?

Io ho provato e nel blocco pid me lo fa inserire, nella tendina mi da tra altre voci la lista degli hsc..

Link al commento
Condividi su altri siti

Ciao

si ho selezionato input_per sul modulo e non riesco ad aprire nessun menu a tendina... In allegato ti invio foto delle impostazioni di base, dove vedi il colore fucsia dovrebbero esserci i menu a tendina che, non so se si capisce, ma è grigio non cliccabile.Che versione di tia portal hai? Io ho tia portal v11 sp2 update 2 ed ho appena scaricato l'update 5.... sarà un problema di tia portal? Il tutto gira su windows xp sp3.

Che consiglio mi potresti dare??

Grazie

Non so se si riesce a vedere la foto.... eventualmente ti lascio il mio indirizzo mail mandami il tuo e ti mando in allegato le impostazioni di base del pid *********.

Piero

*****

Da regolamento. Per motivi di riservatezza non si possono iserire email personali, numeri di telefono, etc. Son consentite solo le email nella forma xy@plcforum.it

Come inserire foto e immagini c'è una risposta nelle FAQ; c'è anche un'apposita discussione nel forum "utility". La foto come l'hai inserita non può essere visulalizzata.

Modificato: da Livio Orsini
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...