Vai al contenuto
PLC Forum


Info Dimensione Udt


Messaggi consigliati

Inserito:

Ciao a tutti,

La domanda e' semplicissima:

- Esiste un'istruzione/funzione che restituisca la dimensione in byte di una variabile/parametro/struttura dati (UDT)?

Il mio problema e' il seguente:

ho una DB formata da n UDTx, vorrei creare una funzione in grado di leggere e scrivere in questa DB, per far cio' la funzione alloca nella STAT una UDTx

usando un puntatore andra' a scrivere la struttura nella posizione n voluta mediante un BlkMov (SFC20).

Attualmente la mia UDTx "pesa" 32 byte e tale valore e' scolpito nella funzione (serve per calcolare il puntatore alla UDT da scrivere nella DB) ma potrei (in applicazioni future) trovarmi nella condizione di espanderla pertanto mi piacerebbe calcolare la dimensione della UDTx direttamente nella funzione ...

Grazie mille


Inserita:

Secondo me non è possibile calcolare la lunghezza di una struttura con una funzione; secondo me l'unico modo è quello di specificare la dimensione in byte di un elemento in un'altra area di memoria e quindi nelle tue FC invece di avere un parametro costante potresti usare ad esempio un MB che avrai inizializzato con la dimensione del dato.

Inserita:

Ciao,

Ho trovato!!!!!

La cosa e' abbastanza semplice, riporto un esempio per chi avesse un problema analogo:

- Nella definizione delle variabili inserisco la mia struttura (UDT) seguita da un byte che chiamero'

End_Struct, sara' sufficiente fare la differenza tra il puntatore a End_Struct e quello alla struttura, trasformarlo

in DInt e ottengo la dimensione della mia UDT in runtime ...

Var_Temp

Par1:Real

Par2:DInt

MyUDT: UDT 20

End_Struct:Byte

Par3:Bool

Par4:Word

End_Var

Begin

Network

Title =

L P##End_Struct

L P##MyUDT

-D

SRD 3

T #Lenght

End_Function

A questo punto posso blindare il codice e modificare la mia UDT senza dovermi preoccupare di aggiornare la funzione che la usa ... :)

Ciao

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...