Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Ricavare 2 Byte Da Una Word In Wincc


Messaggi consigliati

Inserito:

Ciao, per caso qualcuno sa come si fa ad andare a leggere il valore della prima e seconda byte di una word in WinCC? Grazie


Inserita:

devi scrivere uno script in C .

Guarda nella guida - . se c'e' qualche funzione del genere oppue

la estrapoli con le maschere 0xff e 0xff00

ciao

Inserita: (modificato)

Vedi se lo script ti permette di dichiarare una struttura di data del tipo union in modo di formatare una variabile WORD in una array CHAR di tre (il terzo=NULL) elementi. La conversione averebbe per pura corrispondenza senza delay di trasformazioni.

union Word_ // struttura

{ short int Word_16;

signed char Byte[2];

};

union Word_ m_Var; // m_Var e' la variabile

m_Var.Word_16=+12110; // 2F4E

m_Var.Byte[1] =2F;

m_Var.Byte[0] =4E;

Se nella tablella di asegnazione del tipo di data per quel tag non trovi il supporto per questa struttura allora importa il codice fondato in una DLL oppure in una OCX scritta in ambiente C /C++ puro.

Good things.

Modificato: da Savino
  • 4 weeks later...
Inserita:

Scusate il ritardo. Grazie a tutti per l'aiuto. Comunque sono riuscito a farlo in modo molto semplice....

Data una DBD X

Ho ricavato le due word facendo:

WordH= DBD X mod 65556, WordL= DBD X \ 65556,

/ \ / \

ByteH=WordH mod 256 ByteL=WordH \ 256 ByteH=WordL mod 256 ByteH=WordL \ 256

Inserita:
Ho ricavato le due word facendo:

WordH= DBD X mod 65556, WordL= DBD X \ 65556,

/ \ / \

ByteH=WordH mod 256 ByteL=WordH \ 256 ByteH=WordL mod 256 ByteH=WordL \ 256

Caro diego_fly,

Senzaltro che il tuo algoritmo funzionarebbe...

Per esempio se io ti direi di elaborare non so.. 2000 tags (e non sono tanti) tu saresti assolutamente fuori.

Perche' non farlo per " correspondenza " piuttosto che calcolato.

Il tempo ciclo di elaborazione sarebbe = ZERO. ;)

Inserita:
Per esempio se io ti direi di elaborare non so.. 2000 tags (e non sono tanti) tu saresti assolutamente fuori.

Perche' non farlo per " correspondenza " piuttosto che calcolato.

Il tempo ciclo di elaborazione sarebbe = ZERO.

Questa affermazione in teoria e' valida , ma dipende da come viene tradotta dal compilatore per il micro che ha sotto....

Ciao :)

Inserita:
Questa affermazione in teoria e' valida , ma dipende da come viene tradotta dal compilatore per il micro che ha sotto....

Ciao ifachsoftware, :)

Appunto... in realta', con l' indicazione dell'ettichetta ZERO ho voluto rappressentare un valore di offset assolutamente non assoluto.... ma indicativo di un amontare relativamente molto basso.

Inserita:

Grazie, purtroppo ho i tempi ristretti e non posso perdere molto tempo a testare. comunque quando avrò finito il progetto, proverò l'algoritmo con calma. 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...