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




Wincc Advanced V12 Sp1 - Tp1200C - S7-1500 - Vbs Overflow Nel Testare Variabile Dint


Messaggi consigliati

Inserito:

Buongiorno,

ho il seguente problema.

Ho una variabile DInt (32 bit) appoggiata ad una DB ottimizzata che può quindi contenere un valore massimo FFFFFFF (esadecimale) che corrisponde a tutti i bit a 1.

In uno Script VBS devo verificare il valore di ogni singolo bit e, solitamente, utilizzo un ciclo For di questo tipo:

For Conta=0 to 31

if SmartTags("VariabileDInt") AND 2^Conta then

.... Bit a 1

else

... Bit a 0

end if

Next

Il problema è che se VariabileDint contiene FFFFFFFFF lo script mi va in overflow nella riga del test!

Qualsiasi operazione che provo a vare con la VariabileDint valorizzata a FFFFFFFF và in errore (l'unica cosa che sembra farmi fare è la divisione).

Ho provato a convertire la variabile in stringa esadecimale tramite HEX() per poi spaccarlo in due, ad appoggiarla ad una variabile definita nella routine VBS, ecc. ma mi dà sempre overflow!

Purtroppo non posso dividere a monte la variabile in due Int perché il programma del PLC è fatto da altri e non può essere modificato.

Esiste un modo per dividere magari la variabile in due INT da testare poi con due cicli distinti da 0 a 15 senza andare in overflow?

Se provo con una variabile Int (16 bit) tutto funziona correttamente.

Grazie anticipatamente a tutti.

Roberto


Gianmario Pedrani
Inserita:

Purtroppo essendo un db ottimizzato non puoi spezzare pero puoi muovere il valore del db in un md e poi leggi le 2 word da wincc

ciao

Inserita:

Ciao, il problema è che non posso mettere mano in nessun modo al PLC e, tramite VBS, non ho trovato il modo di spezzare la variabileDint in due variabili Word (qualsiasi operazione che provo a fare, ad esempio una mascheratura con AND FFFF, mi và in overflow).

Qualche idea?

Roberto

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