Esempi WinCC

RulerControl e BasicScript

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.

Di |2011-03-31T13:06:01+02:00Marzo 31st, 2011|BasicScript, Esempi WinCC|0 Commenti

Ricerca sostituisci in una stringa

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)

Di |2010-03-30T11:49:51+02:00Marzo 30th, 2010|BasicScript, Esempi WinCC|0 Commenti

Esportare dati dagli archivi tramite WinCC OLE DB Provider

Interessante FAQ siemens sull’uso di WinCC OLE DB Provider reperibile al seguente indirizzo:

http://support.automation.siemens.com/WW/view/it/35840700

Un altro esempio è reperibile al seguente indirizzo

http://support.automation.siemens.com/WW/view/it/38132261

La documentazione si riferisce a WinCC 6.2 e 7.0 e comprende esempi e descrizioni dettagliate.

Chiudere una Picture Window

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);

Di |2009-10-03T11:53:46+02:00Ottobre 3rd, 2009|BasicScript, cScript, Esempi WinCC, Graphics Designer|0 Commenti

Creare un'area "calda" cliccabile

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à:

  • Global Shadow = No
  • Globalcolor Scheme = No
  • Picture Trasparent Color On = Yes
  • Picture Trasparent Color = stesso colore usato nel bitmap

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.

Di |2009-10-03T11:38:48+02:00Ottobre 3rd, 2009|Esempi WinCC, Graphics Designer|1 Commento

Rilevare la posizione del mouse

Puo’ essere utile avere la posizione del mouse da script.

Seguire la seguente procedura come esempio.

  1. Inserire dalla libreria HMI Symbol Library l’oggetto Basic Shapes \ Banner
  2. Impostare la proprietà Stile su Trasparente
  3. 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.

Di |2009-07-28T17:20:14+02:00Luglio 28th, 2009|BasicScript, cScript, Esempi WinCC, Graphics Designer|0 Commenti

Campo I/O personalizzato

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:

  • il valore visualizzato dal campo I/O viene letto dalla Tag “NomeTagLettura” e diviso per 10 prima della visualizzazione.
  • il valore introdotto nel campo di I/O verrà moltiplicato per 10 e scritto nella Tag “NomeTagScrittura”

Altre personalizzazioni e controlli possono in questo modo essere implementati per modificare o controllare l’input dell’operatore.

Di |2009-05-28T00:00:25+02:00Maggio 28th, 2009|cScript, Esempi WinCC|0 Commenti

Refresh dati UserArchive Control

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)

Di |2009-05-18T10:25:02+02:00Maggio 18th, 2009|DataBase, Esempi WinCC|0 Commenti

Disattivare WinCC da WSH

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

Di |2009-05-08T12:55:22+02:00Maggio 8th, 2009|cScript, Esempi WinCC|0 Commenti
Torna in cima