Vai al contenuto
PLC Forum


VB Script WinCC RT Advanced variabili non aggiornate


GianSW

Messaggi consigliati

Buongiorno a tutti, 

Sto utilizzando un VB Script per salvare dei dati in Excel collocati in un DB di una CPU Siemens 1214C.

nel mio DB ho un array [0..6] di un tipo di dati comprendente parecchie variabili di tipo real e interi.

Nell'HMI ho creato una variabile multiplexata per poter salvare il dato di una stazione alla volta ( array [0..6] indica 7 stazioni di lavoro) la variabile che permette di multiplexare questo dato è scritta anch'essa da plc nello stesso DB.

 

Premettendo che le variabili sono in acquisizione continua e con un ciclo di acquisizione di 100ms, noto che la mia variabile multiplexata nell'HMI comprende valori aggiornati e valori non aggiornati (cioè a 0) mentre nel DB quelle variabili hanno un valore diverso da 0

 

129396878_Schermata2022-04-08alle09_07_37.thumb.png.dd94e28a8bae6d81e7f08de70914ee21.png

Questo è il DB da me creato dove la variabile Zona è l'array precedentemente descritto, WriteCSVCmd è una variabile che nell'HMI viene dichiarato che nell'evento fa partire lo script, WriteCSVZoneNr è la variabile che permette di multiplexare l'array,SaveTime è il ritardo tra la scrittura di WriteCSVZoneNr e WriteCSVCmd (permette di aggiornare prima la variabile da multiplexare e successivamente gli arriva il comando)

885575806_Schermata2022-04-08alle09_12_24.thumb.png.d0a6d4cc2707eff50d9d7ad77f076c3b.png

 

Spero di essere stato chiaro e non troppo dispersivo

 

Link al commento
Condividi su altri siti


sempre meglio mettere un ritardo fra il trigger di lettura e i tag da salvare in modo da garantire il rinfresco del dato. Gli script hanno bassa priorità e potrebero risentire del carico di lavoro del pannello.

Link al commento
Condividi su altri siti

Ciao pigroplc,

ho messo un ritardo di 5s tra il trigger e i tag, il mio pannello all'interno ha solo gli script e nient'altro (oltre ad una pagina con 4 pulsanti).

 

Cosa consiglieresti di fare?

Link al commento
Condividi su altri siti

qualcosa mi dice che stai pescando dei tag sbagliati. Per aver la certezza matematica che stai pescando i tag giusti io te li farei appoggiare a tag interni dello script, quindi aggiornerei le celle del file excel coi tag interni. Se anche così i valori sulle celle del file excel non hanno i valori che ti aspetti vuol dire che non aggiorni il PLC.

 

Link al commento
Condividi su altri siti

Hai impostato le variabili di advanced il modo di acquisizione "ciclo continuo"?

Advanced aggiorna le variabili se visualizzate nella pagina in esecuzione o se impostata come "ciclo continuo"

Link al commento
Condividi su altri siti

Ciao p.fabio

si o avevo già impostato.

 

pigroplc, i tag sono corretti ed ogni volta che vado a creare l'excel mi stampo anche l'indice che l'HMI ha multiplexato (ed è coerente)

guardando le variabili nel db e quelli dell'excel le prime sono uguali mentre le ultime sono diverse, aspetto un'altro po' di secondi, faccio riscrivere l'excel con gli stessi dati del db (forzando il tag nel db) ed ecco che i valori mi vengono tutti giusti.

Preciso che sono +/-  1000 Interi 

 

Grazie per le risposte

Link al commento
Condividi su altri siti

1000 variabili in ciclo continuo mi sembrano tante. Che pannello usi? Che tempo d'aggiornamento hanno le variabili?

Prova ad aumentare il tempo d'aggiornamento a 2-3 secondi e/o a spezzare il ciclo di salvataggio a meta.

 

 

Link al commento
Condividi su altri siti

mi ricordo che a suo tempo riscontrai dei problemi sulla esecuzione di script con ricorsioni piuttosto pesanti per la memorizzazione di ricette tramite array, lavorando sul puntatore col banale FOR-NEXT.

Ricordo inoltre di aver risolto appoggiando l'array su un tag array interno quindi il trasferimento dell'array completo in un colpo solo. 

Non so se questo è il tuo caso, ma farei uno script che rinfresca dei tag interni, con un flag di memoria al PLC, quindi con lo stesso flag far partire l'aggiornamento di Excel con i tag interni. 

Se così funziona magari provare ad ottimizzare fino a trovare la soluzione migliore

 

 

Link al commento
Condividi su altri siti

  • 3 months later...

Salve, il problema l'ho risolto senza multiplexare le variabili ma credo una fb dove vado a copiare temporaneamente i dati che mi serve salvare.

A tal punto dando 1s di tirato al trigger rispetto al refresh dei dati temporanei la scrittura su excel è coerente.

A tal punto presumo che dichiarando una variabile da multiplexare, l'HMI vada ad aggiornare tutti i valori dell'array e di conseguenza per quello non erano sempre del tutto aggiornate dato che sono molte (è una mia considerazione non ne ho la certezza)

Link al commento
Condividi su altri siti

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