Vai al contenuto

Lettura valore negativo da macro con GetData

Home Forum Terminali operatore (Weintek) Lettura valore negativo da macro con GetData

  • Questo topic ha 2 risposte, 2 partecipanti ed è stato aggiornato l'ultima volta 1 anno fa da fbossio.
Stai visualizzando 3 post - dal 1 a 3 (di 3 totali)
  • Autore
    Post
  • #76475
    fbossio
    Partecipante

    Sto cercando di leggere un valore negativo impostato su un registro di sistema su un pannello cMT3162X.

    All’interno della macro utilizzo GetData per leggere il valore ma invece del valore negativo mi viene mostrato e stampato nella stringa il corrispondente decimale del complemento a due (allego immagine), ovviamente il problema non si pone con valori positivi (Screenshot).

    Come posso leggere il valore corretto?

    #76479
    Sergio Bertana
    Amministratore del forum

    Vedo che hai dichiarato la variabile di tipo int, non so che tipo di variabile hai definito nella impostazione di X sul pannello. Le variabili LW sul pannello sono variabili a 16 bit quindi:

    • Se dichiari la variabile come 16-bit Signed nella macro la funzione GetData dovrà appoggiare il valore su una variabile di tipo short.
    • Se dichiari la variabile come 32-bit Signed (Utilizza 2 LW consecutive) nella macro la funzione GetData dovrà appoggiare il valore su una variabile di tipo int.
    • Se dichiari la variabile come 32-bit Float (Utilizza 2 LW consecutive) nella macro la funzione GetData dovrà appoggiare il valore su una variabile di tipo float.

    Ecco la macro da me testata.

    macro_command main()
    short V16Bit=0
    int V32Bit=0
    float VFloat=0
    
    GetData(V16Bit, "Local HMI", LW, 0, 1)
    GetData(V32Bit, "Local HMI", LW, 10, 1)
    GetData(VFloat, "Local HMI", LW, 20, 1)
    
    TRACE("Value 16-bit: %d", V16Bit)
    TRACE("Value 32-bit: %d", V32Bit)
    TRACE("Value Float: %f", VFloat)
    end macro_command
    #76603
    fbossio
    Partecipante

    Grazie mille veramente un errore da pivello il mio

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