Vai al contenuto

Twincat3 array di Union e link a un I/O


Messaggi consigliati

Luca.Lombardi
Inserito:

Buongiorno a tutti,

ho una domanda abbastanza singolare da porvi.

 

Ho un array di circa 100elementi dove ogni elemento è un struttura da me definita con il comando di Union

DUT

TYPE U_ByteReal :
UNION
	rValue : REAL;
	aBytes : ARRAY[0..3] OF BYTE;
END_UNION
END_TYPE

 

Interna alla mia POU

PROGRAM MAIN
VAR
	ricezione : ARRAY[0..99] OF U_ByteReal;
END_VAR

Quello di cui avrei necessità di fare è di collegare in maniera automatica, i Byte di questo array di U_ByteReal ai byte d'ingresso che arrivano da un nodo profinet.

Il nodo profinet ha due blocchi da 100Byte ciascuno e quello che vorrei è collegarli alle mie strutture dati.

 

ricezione[0] i suoi 4 byte collegati ai primi 4 byte d'input 

ricezione[1] i suoi 4 byte collegati ai secondi 4 byte d'input

 

È possibile farlo o devo armarmi di una pazienza infinita e farlo a mano?

 

Grazie mille

zanellatofabio
Inserita:

Ciao, io non uso twincat ma so che somiglia a codesys.

Non avendo il file gsdml che usi tu, ho fatto una prova con un device che conosco, un inverter danfoss FC280 con una mappatura di 10/10 word di scambio.

Ho usato UINT e non BYTE perchè il device usa UINT ma credo sia lo stesso applicando il concetto ai byte del tuo caso.

 

nella mappatura del device ho mappato gli ingressi su una variabile globale aUintIngressi : ARRAY [1..10] OF UINT ; //mappatura ingressi profinet

vedi immagine allegata.
 

il mio tipo di dati usa gli UINT:
TYPE U_UintReal :
UNION
    rValue : REAL;
    aUint : ARRAY[1..2] OF UINT;
END_UNION
END_TYPE

 

---------------

 

nel POU

PROGRAM POU
VAR
    ricezione : ARRAY[1..5] OF U_UintReal;
END_VAR

 ---------------

 

//su twincat si usa MEMCPY invece in codesys è SYSMEMCPY
MEMCPY(ADR(ricezione), ADR(aUintIngressi), SIZEOF(aUintIngressi));

 

Immagine 2026-09-02 151855.png

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