Stato comunicazione
FAQ Siemens su come controllare lo stato della comunicazione
L’esempio prevede uno script in cScript.
FAQ Siemens su come controllare lo stato della comunicazione
L’esempio prevede uno script in cScript.
Con la versione 7.0 è stato introdotto l’oggetto RulerControl.
Il RulerControl viene utilizzato per visualizzare informazioni di OnlineTrendControl e OnlineTableControl.
Per “leggerere” le informazioni visualizzate dal RulerControl da BasicScript occorre da prima istanziare l’oggetto
Set RulerControl = ScreenItems(“Control1”)
Successivamente puntare alla riga desiderata (per esempio la prima riga)
Set Penna = RulerControl.GetRow(1)
Infine puntare alla colonna desiderata (per esempio la terza colonna)
Penna_Valore = Penna.CellText(3)
In questo modo si riporta il valore in una variabile di BasicScript che puo’ essere utilizzata per altri scopi.
Rilasciato il nuovo progetto demo per WinCC 7.0 SP1.
Il progetto è scaricabile al seguente indirizzo (FAQ. 38612895):
Il progetto demo è molto utile per vedere e studiare le funzionalità del prodotto.
Si può progettare la Toolbarbuttons dello UserArchive (da 4.02) anche in una pagina esterna allo OCX.
Di seguito il link alla FAQ Siemens (FAQ. 729703):
Maggiori informazioni sul sito Siemens.
Di seguito un esempio sull’uso delle regular expression in VBS di WinCC mirato alla ricerca sostituzione all’interno di una stringa.
Function ReplaceString(str1, patrn, replStr)
Dim regEx ‘ Crea variabili
Set regEx = New RegExp ‘ crea regular expression.
regEx.Pattern = patrn ‘ Set pattern.
regEx.IgnoreCase = True ‘ non case sensitive
regEx.Global = True ‘ setta ricerca a tutta la stringa.
ReplaceString = regEx.Replace(str1, replStr) ‘ esegui sostituzione
End Function
Qui una semplice idea che puo’ essere personalizzata in vari modi per la manipolazione di stringhe.
(GG)
Siemens ha rilasciato un video che descrive le funzionalità di Datamonitor per WinCC:
Il video è in inglese e il download e’ di circa 230 Mb.
Interessante FAQ siemens sull’uso di WinCC OLE DB Provider reperibile al seguente indirizzo:
Un altro esempio è reperibile al seguente indirizzo
La documentazione si riferisce a WinCC 6.2 e 7.0 e comprende esempi e descrizioni dettagliate.
Per chiudere (nascondere) una Picture Window tramite un pulsante presente al suo interno esistono vari modi.
Il piu semplice e veloce e’ usare una direct connection che imposta (source) come costante 0 la proprietà (targhet) display della Current Window.
Tramite VBS
Item.Parent.Parent.Visible = False
Tramite cScript
SetVisible(“nomePWContenitore”,”nomePW”,FALSE);
Spesso e’ necessario creare una area cliccabile in una pagina.
Non esiste un ogetto “area calda” in wincc che in modo trasparente permetta di essere cliccata.
Un modo per ottenere il seguente risultato e’ disegnare un oggetto Graphic Object e associare un bitmap preventivamente creato che contenga un unico colore base (uno dei 16 colori base della tavolozza di Paint per capirci)
Il bitmap puo’ essere anche di una dimensione minima di 10 per 10 pixel.
All’oggetto Graphic Object cosi’ disegnato a video impostare le seguenti proprietà:
L’oggetto diventa completamente trasparente e risponde ai suoi eventi (per esempio il click)
Naturamente conviene inserire questi oggetti in un piano separato in modo da poterli visualizzare con un “seleziona tutto” in caso di modifiche o per nasconderli durante le operazioni di disegno.
E’ disponibile in inglese il manuale di istruzioni del connectivity pack al seguente indirizzo:
Per visualizzare testo su piu righe nell’Alarm Control seguire le indicazioni della seguente FAQ:
La procedura e’ un po diversa per le versioni 6.0 e 6.2, per la versione 7.0 la gestione e’ automatica.
Puo’ essere utile avere la posizione del mouse da script.
Seguire la seguente procedura come esempio.
- Inserire dalla libreria HMI Symbol Library l’oggetto Basic Shapes \ Banner
- Impostare la proprietà Stile su Trasparente
- Usare l’evento MouseOver per avere le coordinate del mouse
L’evento MouseOver dell’oggetto viene chiamato passando tra i parametri anche le coordinate del mouse.
In questo semplice modo sono possibili iterfacce di selezione degli oggetti a video come liste o altro.
Potrebbe essere necessario utilizzare un campo I/O in modo personalizzato.
Per esempio controllare il valore di input dell’operatore e modificarlo prima di trasmetterlo alla Tag collegata al campo di I/O
Oppure ancora fare in modo che il campo di I/O visualizzi un valore letto da una prima Tag ma che un eventuale valore introdotto venga scritto in una Tag diversa dalla prima.
Per implementare questa e altre casistiche personalizzate occorre usare la funzione GetInputValueDouble() disponibile in cScript.
Per verificare e testarne la funzionalità seguire l’esempio di seguito descritto.
Disegnato un campo di I/O a video nella proprietà “valore in uscita” inserire questo codice CScript
return(GetTagWord(“NomeTagLettura”)/10);
con esecuzione del codice su trigger della stessa Tag “NomeTagLettura” con il tempo di scansione desiderato.
Nell’evento “Valore di Ingresso” (del gruppo Uscita/Ingresso) inserire questo codice CScript
double lValore;
lValore=GetInputValueDouble(lpszPictureName,lpszObjectName);
SetTagWord(“NomeTagScrittura”,lValore*10);
Con queste poche righe di codice si avrà il seguente funzionamento:
Altre personalizzazioni e controlli possono in questo modo essere implementati per modificare o controllare l’input dell’operatore.
Inserendo in una pagina UserArchiveControl collegato ad una tabella dello User Archive, tutto funziona bene utilizzando i comandi di WinCC e del controllo.
Ma se i dati nella tabella vengono inseriti utilizzando funzioni ADO con vbScript il controllo non mostra immediatamente i nuovi record inseriti ma occorre effettuare un cambio pagina per forzare il refresh.
Sembra che non esista un metodo refresh dell’oggetto.
Un modo per far rileggere i dati al controllo è utilizzare la proprietà di query del controllo stesso che si chiama “FilterSQL” (nel controllo UserArchive classic la proprietà si chiama “Filter”)
Impostando la proprietà da codice prima con il valore “ID=0” e immediatamente dopo al valore “ID>0” si eseguono due query sul controllo che di fatto aggiornano la visualizzazione senza dover ricaricare la pagina.
(SR)
Puo’ essere necessario dover disattivare il runtime di WinCC da uno script Windows (WSH) per effettuare uno spegnimento ordinato per esempio in caso di mancanza di alimentazione.
Alcuni software di gestione UPS permettono l’esecuzione di Windows Script (.vbs) per effettuare alcune operazioni in modo ordinato e temporizzato prima di comandare la chiusura del SO.
In file .vbs inseriamo le seguenti istruzioni
dim mcp
set mcp = CreateObject(“WinCCRuntime-Project”)
mcp SetValue “Spegni”,1
set mcp = nothing
Questo codice non fa altro che settare il valore 1 nella tag “Spegni” di WinCC
Basterà triggherare dall’interno di WinCC tramite una action cScript la Tag “Spegni” e sul cambio di valore eseguire il seguente codice di chiurura runtime
DMExitWinCCEx(DM_SDMODE_POWEROFF)
Questa istruzione chiude WinCC e spegne il PC