spacer.png, 0 kB

Torna indietro   Roboitalia.com - Il primo portale in Italia sulla robotica amatoriale > Robotica di base > Informatica > P. in C, C++

Rispondi
 
Strumenti discussione Modalità  visualizzazioe
  #1  
Vecchio 13-02-2013, 17.33.41
Ziko Ziko non è collegato
Robottaro sostenitore
 
Data registrazione: 02-04-2005
Residenza: Firenze
Età : 31
Messaggi: 587
Potenza reputazione: 88
Ziko E' una stupenda persona in cui credere
Predefinito PI software qualche perplessità.

Salve a tutti,

Per un progettino universitario sto implementando un PI digitale utilizzando (come avrete capito dalla decina di posto che ho aperto) un dsPIC, siamo giunti quindi alla fine ed alla implementazione del PI.

La funzione per il calcolo del PI è la seguente:
Codice:
typedef struct{
    float Gain;
    float IGain;
    float Up_Limit;
    float Low_Limit;
    float Integrator;
    bool sat;
}reg_PI;

float calc_PI(reg_PI Pi, float input)
{
    float out;
    out = (Pi.Gain * input) + Pi.Integrator;
    if((out>=Pi.Low_Limit) && (out<=Pi.Up_Limit)){
        Pi.Integrator = Pi.Integrator + input * Pi.IGain;
        Pi.sat = false;
    }else{
        if(out < Pi.Low_Limit)
            out = Pi.Low_Limit;
        else
            out = Pi.Up_Limit;
        if (Pi.Integrator < Pi.Low_Limit)
            Pi.Integrator = Pi.Low_Limit;
        else
            Pi.Integrator = Pi.Up_Limit;
        Pi.sat = true;
    }
}
Questo spezzone di codice viene eseguito ogni 10usec (100KHz) alla generazione dell'interrupt del DMA a seguito del campionamento eseguito. Il problema al quale non riesco a dare una spiegazione è che sembrerebbe che la parte integrale non sortisca nessun tipo di effetto, ad avvalorare ciò la variabile Pi.Integrator non si sposta mai dallo 0.

Qualche suggerimento in merito?

Grazie 1000.
Rispondi citando
  #2  
Vecchio 13-02-2013, 18.25.41
Ziko Ziko non è collegato
Robottaro sostenitore
 
Data registrazione: 02-04-2005
Residenza: Firenze
Età : 31
Messaggi: 587
Potenza reputazione: 88
Ziko E' una stupenda persona in cui credere
Predefinito

Ok... Come spesso accade uno si risponde da solo... Ed è questo il caso! La funzione prende in ingresso la copia del pi e quindi Pi.Integrator non viene memorizzato, passando invece il puntatore del pi tutto torna a funzionare.
Mi scuso per aver aperto il post per nulla!
Rispondi citando
  #3  
Vecchio 13-02-2013, 21.05.07
L'avatar di Caronte
Caronte Caronte non è collegato
Administrator
 
Data registrazione: 15-10-2009
Residenza: Ferrara
Età : 50
Messaggi: 2,962
Potenza reputazione: 332
Caronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua famaCaronte La sua reputazione è oltre la sua fama
Predefinito



Citazione:
Orginalmente inviato da Ziko Visualizza messaggio
Ok... Come spesso accade uno si risponde da solo... Ed è questo il caso! La funzione prende in ingresso la copia del pi e quindi Pi.Integrator non viene memorizzato, passando invece il puntatore del pi tutto torna a funzionare.
Mi scuso per aver aperto il post per nulla!
Mah! Per nulla..... mica tanto! Pubblichi codice e poi soluzione.....

Facciamo così: tu continua ad aprire post per 'nulla'.

Ciao

Antonio

Ultima modifica di Caronte : 13-02-2013 alle ore 21.23.50
Rispondi citando
  #4  
Vecchio 13-02-2013, 21.57.43
Ziko Ziko non è collegato
Robottaro sostenitore
 
Data registrazione: 02-04-2005
Residenza: Firenze
Età : 31
Messaggi: 587
Potenza reputazione: 88
Ziko E' una stupenda persona in cui credere
Predefinito

Ottimo allora non mi sento in colpa... comunque vi annuncio in questo post di provincia che il mio progettino funziona in maniera egregia e devo dire che un'emozione così forte dopo 10 ani di programmazione e 7 di lavoro con i pic non me l'aspettavo.

Il matrimonio tra teoria, pratica, elettronica analogica, digitale, firmware e software è qualcosa di unico. Tanto sono contento aprirò un post con i risultati visto che alcuni scogli li ho superati con i consigli di chi frequenta questo forum.
Rispondi citando
Rispondi


Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti)
 
Strumenti discussione
Modalità  visualizzazioe

Regole di scrittura
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code è Attivato
Le smilies sono Attivato
[IMG] è Attivato
Il codice HTML è Disattivato

Vai al forum

Discussioni simili
Discussione Autore discussione Forum Risposte Ultimo messaggio
Qualche domanda su Arduino ecc... SkyNET290897 Arduino 13 25-04-2011 18.00.42
qualche osservazione.. valerio_93 Suggerimenti 1 09-11-2009 15.18.48
Ancora qualche domanda....... Simo2 Forum generale 8 18-11-2005 23.13.07
Consigliatemi qualche libro Regulus Discussioni off-topic 3 28-10-2004 22.49.41
Qualche consiglio! Ivan Progettazione 0 22-08-2003 00.39.59


Tutti gli orari sono GMT. Adesso sono le: 05.00.45.


Basato su: vBulletin Versione 3.8.8
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Realizzazione siti web Cobaltica Foligno
spacer.png, 0 kB