Vai al contenuto

Utilizzare le macro subroutines per la scalatura valori

Home Forum Terminali operatore (Weintek) Utilizzare le macro subroutines per la scalatura valori

Stai visualizzando 4 post - dal 1 a 4 (di 4 totali)
  • Autore
    Post
  • #35529
    Sergio Bertana
    Amministratore del forum

    Nel nuovo tool di programmazione EasyBuilderPro disponibile per le nuove serie di pannelli operatore Weintek è stata introdotta la possibilità di effettuare conversioni di scala sui valori da visualizzare e da inputare utilizzando delle macro subroutines. Precedentemente era possibile definire le conversioni di scala solo come un rapporto lineare tra il valore reale della variabile ed il valore da visualizzato nell’oggetto grafico sul terminale.

    Questo approccio alla conversione non poteva essere utilizzato per conversioni che non sono lineari, l’esempio più semplice sono le conversioni delle temperature tra le diverse unità di misura. Esempio:

    Gradi Kelvin=Gradi Celsius+273.15
    Gradi Celsius=Gradi Kelvin-273.15
    Gradi Fahrenheit=(Gradi Celsius*9/5)+32
    Gradi Celsius=(Gradi Fahrenheit-32)*5/9

    Come si vede in queste operazioni è necessario eseguire somme e sottrazioni, in EasyBuilderPro è possibile definire delle macro subroutine che hanno come input il valore espresso in una unità di misura e ritornano in uscita il valore  espresso in un’altra unità di misura.

    #38112
    Sergio Bertana
    Amministratore del forum

    Creando un nuovo progetto EasyBuilderPro vengono già automaticamente definite una serie di macro per la conversione delle temperature. Per definire le macro subroutines agire sul menù Tools -> Macro e poi sul tasto Librerie (Screenshot). Riporto ad esempio la macro subroutine di conversione da Fahrenheit a Celsius:

    sub float f2c(float f)
      float c
      c=(f-32)*5/9
      return c
    end sub

    Ed ecco la subroutine di conversione da Celsius a Fahrenheit:

    sub float c2f(float c)
      float f
      f=c*9/5+32
      return f
    end sub

    Come si vede ogni subroutine ha un parametro in ingresso ed un parametro in uscita.

    #38113
    Sergio Bertana
    Amministratore del forum

    Vediamo ora come utilizzare queste macro subroutines, ecco un semplice programma che esegue la conversione tra gradi Celsius e gradi Fahrenheit (Download programma). Ho inserito due oggetti di Introduzione numerica, su uno di essi (Quello riferito ai gradi Celsius) ho definito la scalatura con Macro subroutines (Screenshot).

    In lettura il valore letto dalla LW 10 viene passato alla subroutine f2c di conversione da Fahrenheit a Celsius ed il ritorno della subroutine viene visualizzato.

    In inputazione il valore inputato dal terminale viene passato alla subroutine c2f di conversione da Celsius a Fahrenheit a Celsius ed il ritorno della subroutine viene scritto nella variabile LW 10.

    L’oggetto riferito ai gradi Fahrenheit visualizza il valore della LW 10 senza effettuare alcuna scalatura. Come si vede dallo screenshot inputando un valore in gradi Celsius ne ho la conversione in gradi Fahrenheit e viceversa.

    #38114
    Sergio Bertana
    Amministratore del forum

    Aggiungo al topic un progetto fornito da Weintek che spiega il funzionamento di questa tecnica (Screenshot). Nel file zip del progetto vi è anche una breve spiegazione in pdf del funzionamento (Download progetto).

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