PID controller Android

La BieMme è orgogliosa di annunciare di aver sviluppato una libreria dedicata ai pannelli Ltouch7 GS che permetto l’utilizzo della funzione PID. Grazie al sistema operativo Android sarà molto più facile creare e personalizzare le tue esigenze.

Non vi servirà altro che solamente un nostro HMI Android Ltouch7 GS che ha di serie due ingressi analogici con risoluzione fino a 17bit, 4 uscite a relè oppure la linea RS485 Modbus che permette l’interfaciamento con sucessiva modulazione a dispositivi slave.

La libreria ha il nome di MathProcess, con molteplici funzionalità e personalizzazioni. Di seguito alcuni metodi disponibili:

  • String GetVersion();
    restituisce la versione della libreria in uso
  • int InitPid(char channels):
    Anzitutto chiamare questa funzione per dichiarare il numero di canali richiesti
    channels : numero di canali da gestire
    valori di ritorno : EXIT_FAIL, EXIT_OK
  • void ClosePid()
    chiamare alla chiusura dell’applicazione per liberare le risorse allocate
  • double[] ChangePidGains(char ch, double p_gain, double i_gain, double d_gain)
    imposta i guadagni per il canale selezionato
    restituisce i guadagni applicati
  • double[] GetPidSettings(char ch)
    restituisce le impostazioni in uso per il canale impostato: p_gain, i_gain, d_gain , inverted state (true se invertito, false altrimenti)
  • public native int SetPidCh(boolean inverted, char ch, double p_gain, double i_gain, double d_gain, int sample_time_ms, int pulse_time_ms, double refval, double maxval, double minval);
    boolean inverted:
    char ch: canale da configurare
    double p_gain, double i_gain, double d_gain : guadagni
    int sample_time_ms : tempo in ms tra 2 elaborazioni
    int pulse_time_ms : durata dell’impulso nell’ uscita a relè (durata dell’impulso intesa come somma del tempo in cui l’uscita è alto e in cui è bassa)
    double refval : valore target per il segnale
    double maxval : valore massimo per il segnale oltre cui non si deve salire
    double minval : valore minimo per il segnale oltre cui non si deve scendere
  • public native int PidLoop(double []inputs,double []outputs);
    double []inputs :vettore conente le acquisizioni dagli ingressi analogici
    double []outputs : vettore contenente i valori calcolati dalla libreria pid

La funzione MathProcess.SetPidCh dovrà essere richiamata ciclicamente attraverso un thread, questa potrà comandare dei relè a bordo oppure modulare altri dispositivi attraverso la porta seriale Modbus di serie.