Categorie
Documentazione

Funzioni del nuovo WinCC 7.0 (anteprima)

Dovrebbe essere imminente il rilascio di WinCC 7.0 (giugno 2008 secondo i piani di sviluppo)

Di seguito alcune delle novità che saranno incluse nella nuova versione

  • Runtime eseguibile in Windows Vista
  • Nuovi oggetti allarmi, trend e user Archive
  • Eseguibile come servizio

Altre novità che dovrebbero essere presenti nella nuova versione

  • Nuove possibilità grafiche come trasparenze, sfumature di colore e ombreggiature
  • Gestione centralizzata della palette dei colori
  • Gestione centralizzata dei temi degli oggetti
  • Nuovi oggetti grafici (combo box, list box, testi multilinea, controlli multimediali, ecc.)
  • Oggetto allarmi visualizza un numero illimitato di allarmi
  • Filtro allarmi orientato all’utente
  • Nuovo editor per import export testi gestione multilingua
  • Filtri in textlibrary
  • Webclient possibile senzal’uso di internet explorer
  • Trigger veloce per animazioni fluide
  • Tag interne persistenti
  • Controllo container controlli .NET

E ancora:

  • Simatic Logon incluso “di serie”
  • Driver Ethernet IP (Allen-Bradley)
  • Driver Modbus TCP/IP (Schneider)

Ovvio che non vediamo l’ora di mettere le mani su una versione demo.

A presto

Categorie
Security

Security rischi e pericoli

Sappiamo benissimo che le macchine a controllo numerico sono una realtà da anni.
Tuttavia, se da una parte c’è un ovvio beneficio, dall’altra nascono problemi che prima non esistevano e che ora se ne ignora l’esistenza.

Per essere più chiari: un esempio di problema che può nascere è la Cyber Security.

E’ oramai noto che un PC possa essere violato per scopi di spionaggio industriale o per il semplice motivo di monitorare la navigazione WEB. Ora, visto e considerato che, la maggior parte dei supervisori lavorano su PC a stretto contatto con il WEB, la domanda è: siamo sicuri  che il nostro impianto sia al sicuro?

Bene: a questa domanda troverete qui parte della risposta, che vi dico subito essere NO!
In questo Blog, noi ci occupiamo di WinCC, e quindi abbiamo provveduto a fare dei test in laboratorio, provando più tipi di attacco per verificare la sicurezza del noto supervisore, sia in versione 6.x sia il Flexible.

Premetto alcune considerazioni: buon parte degli SCADA e così pure WinCC usano come PROTOCOLLI ModBus/TCP, ETHERNET/IP, DNP3 e OPC per comunicare con PLC, servizi di sistema o sw applicativi. Per ognuno di questi protocolli si potrebbe scrivere tutti i pregi e i difetti, ma son già stati affrontati in molti siti. Qui noi tratteremo solo le vulnerabilità e le falle sulla sicurezza.

Cominciamo con il sottolineare che in WinCC non viene usata:

  1. Nessuna Autenticazione
  2. Nessuna Firma
  3. Nessuna Cifratura

Un’altra vulnerabiltià è che le comunicazioni sono regolate da protocolli (alcuni documentati) da Siemens o da standard come l’OPC: questo per abbattere i costi e per una maggiore interoperabilità di prodotti.

WinCC mette a disposizione interfacce WEB: per la famiglia WinCC 6.x il WEB-Navigator.
Spesso queste utility sono usate con troppa leggerezza in quanto possono essere vittime di backdoor o accessi non autorizzati.
Oltre ad attacchi via OPC (nel caso sia attivato il server OPC), son possibili attacchi direttamente all’SQL Server Microsoft.
L’autenticazione è banale e si può accedere in remoto per modificare tutti i dati e le tabelle contenute nel database con query replicabili. Inoltre i server SQL sono raggiungibili facilmente grazie e dei tool per il WEB che attraverso dei semplici ping (ad sempio SQLPing) possono trovare nella rete il motore di database e accedere facilmente in quanto il metodo di autenticazione è sempre lo stesso !

La sicurezza viene di solito data dal sistema operativo del PC e dai software applicativi installati, nel nostro caso Windows, SQL  Server e applicazioni DCOM e OPC dipendenti. Ma come ben sapete tutti questi sw sono vulnerabili se non vengono in qualche modo protettti.

Riassumiamo qui alcuni punti che si dovrebbero tenere a mente quando si installa una rete PLC-SCADA:

  1. Il PC di gestione con lo SCADA sia possibilmente l’unico ad avere accesso al PLC
  2. Tenere il sistema operativo e lo SCADA aggiornato con i Service Pack e gli aggiornamenti che vengono rilasciati dalla casa madre
  3. Possibilmente il PC con lo SCADA sia facente parte di una rete diversa da quella aziendale collegata alla rete internet.
  4. Installare i migliori Firewall e Antivirus in commercio: nelle riviste specializzate vengono sempre stilate le classifiche dei migliori antivirus.
  5. Accertarsi che periodicamente venga fatta la manutenzione al PC, per controllare lo stato dei dischi, dell’ HW e dello stesso software . Sul sito della Siemens è disponibile una sezione per il download di tutte le nuove patch.
  6. La fase di organizzazione della security dovrebbe essere studiata all’inizio, ovvero nella fase di progettazione.
  7. E’ molto utile l’opzione per WinCC che attiva la ridondanza.

Inoltre il fattore umano ha la sua importanza. Spesso il PC di gestione viene usato come un semplice Personal computer.

Non è una novità che alcuni operatori utilizzano il computer di gestione per guardare DVD, giocare o effettuare altre attività che possono compromettere la stabilità e l’efficenza del sistema.

A questo punto ricordiamo una cosa, per ogni rischio VIRTUALE corrisponde un rischio REALE, spesso il rischio reale ha conseguenze e rischi ben più gravi di un PC mal funzionante.

Vale proprio la pena di rischiare?

(MB)

Categorie
Comunicati

Ricerca sponsor

Un’azienda si è offerta per collaborare e aiutare economicamente questo sito.

Ci fa piacere che in così breve tempo ci si interessi a noi e alla nostra umile iniziativa

Le trattative sono in corso ma se altre aziende desiderano farsi avanti ovvio che sono ben accette.

Ovviamente le novità verranno comunicate esclusivamente tramite queste pagine.

Categorie
BasicScript Esempi WinCC

Accedere alle Tag da VBScript oggetto COM WinCC

E’ possibile che ci sia l’esigenza di accedere alle tag di WinCC e/o impostare il valore di una tag dal linguaggio VBScript.

VBScript è usato nella programmazione di pagine HTML formattate secondo lo standard Microsoft ASP.

La tecnica descritta puo’ essere usata anche nel linguaggio di scripting di Windows denominato WSH e ovviamente in VisualBasic.

Più in generale in tutti i linguaggi che prevedono l’uso della funzione

createobject

Quello che in definitiva ci manca è il nome del riferimento WinCC all’oggetto COM

Di seguito un esempio di codice per leggere una Tag

set mcp = createobject(“Wincc-Runtime-Project”)

var1=mcp.getvalue(“NewTag”) 

Di seguito un esempio per scrivere una Tag di WinCC

set mcp = createobject(“Wincc-Runtime-Project”)

var1=mcp.setvalue(“NewTag_1”,123)

Questo da la possibilità di produrre in una pagina HTML i valori delle Tag ed eventualmente settarne il valore.

formattando opportunaente con il codice HTML la rappresentazione si possono creare dei rapporti di stato presentabili con un browser.

Categorie
BasicScript Documentazione Esempi WinCC

WinCC & Data Mining: insieme per migliorare la produzione

WinCC & Data Mining: insieme per migliorare la produzione.

La domanda che ci si pone spesso è la seguente: “Ma da tutti quei dati che lo SCADA raccoglie, si può trarre qualche informazione?”. Beh, la risposta è sicuramente e senza ombra di dubbio, SI !

Ci sono delle tecniche statistiche studiatissime in molti ambiti e oramai ben sviluppate anche su computer, per estrarre informazioni su grandi moli di dati. Queste tecniche sono raggruppate sotto la disciplina del Data Mining.

Quindi quello che ora vi chiederete è: ma che informazioni posso trarre dai dati? Quello che si trova dall’uso di queste tecniche non sono spesso informazioni scontate, ma ben si, tempi, procedure e decisioni sul come comportarsi per migliorare il processo produttivo.

Qui non voglio dilungarmi troppo su queste temi che sono ampiamente usati in ambiti dirigenziali, ma vorrei solo proporre una integrazione tra il WinCC e il Data Miner per Server SQL di Microsoft.

Una volta letto questo articolo vorrei che fosse chiaro come possono interagire due prodotti che sembrerebbero non avere niente da dirsi, ma che in realtà possono coesistere ed essere molto utili in ambito decisionale. Si pensi, ad esempio, alla direzione di una azienda che vuole monitorare la produzione di una propria linea produttiva, o più semplicemente controllare i fermi macchina, i tempi di lavorazione, le cause di guasto e monitorare i tempi di ciclo di un certo prodotto di una certa filiera di produzione.   

Avendo a disposizione uno SCADA professionale, configurato e pienamente funzionale si avrà a disposizione un DATABASE fornitissimo di dati. Ricordiamo che WinCC viene venduto con la licenza di SQL Server: uno dei migliori DBMS di casa Microsoft.
Ovviamente le variabili di interesse devono essere memorizzate in modo tale da poter essere reperibili: ricordiamo che la Siemens non lascia libero accesso a tutte le variabili. Questo discorso viene rimandato in altra sede, oppure leggetevi l’articolo WinCC & ADO reperibile in questo sito.

Una volta che sia hanno a disposizione i dati, possiamo cominciare la fase di DATA MINING sui dati, ovvero “scavare” nei dati per cercare di capire quali informazioni possono venire utili. Useremo per questa fase il Data Mining Engine di casa Microsoft.

Procediamo con il connettersi al sistema di servizio dei Servizi di Analisi che usa la metodologia  ADO standard. La macchina client deve avere i Servizi di Analisi OLE per il provider di DB (MSOLAP90.DLL) installato come viene spiegato nelle guide. Questo sistema di servizio deve essere configurato ad accettare sessioni per l’utilizzo di modelli per il data mining, e l’utente deve avere almeno dei permessi su un database sul sistema di servizio.

Il nostro esempio sarà incentrato sulla costruzione di un modello per prevedere l’andamento di una serie temporale: ad esempio la produzione tra 2 mesi piuttosto che il numero di fermi macchina previsti tra 6 mesi.

Con VBA programmiamo ADO per connetterci al servizio di sistema:

Dim conn As New ADODB.Connection
Conn.Open “Provider=MSOLAP90;Location=MyServer;” & _“Initial Catalog=MyDatabase”

A questo punto bisognerà creare una classe di TimeSeriesMining che serve per la creazione del modello. Il modello creato in questo esempio ha una colonna per ogni colonna (o fila) nella selezione di dati. Per questo modello ovviamente la Chiave sarà il Tempo ed ogni altra colonna avranno il tipo contenuto “Continuo” e uso “Predice”.

CREATE MINING MODEL TimeSeriesModel
(
[Date] DATETIME KEY TIME,
[Retail Food Total] DOUBLE CONTINUOUS PREDICT,
[Retail Food] DOUBLE CONTINUOUS PREDICT
) USING Microsoft_Time_Series

Qui di seguito propongo uno script da utilizzare sotto MS Excel oppure da utilizzare sotto WinCC se pur con qualche accorgimento.
 

‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
Public Sub CreateModel(ModelName As String, Key As String, _
DataRange As Range, RowsAsRows As Boolean)

‘ Creazione di un modello per la time series mining da Excel
‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
‘ inizializza variabili
On Error GoTo onerror
Dim strCreate As String
Dim strInsert As String
Dim cmd As New ADODB.Command
Dim param As ADODB.Parameter
Dim i As Integer
Dim xmla As New XMLARowsetGen
m_strModelName = ModelName

‘ Creo XMLA rowset a partire da un specifico range
xmla.FillRowset DataRange, RowsAsRows

‘ inizializzo, creo e inseriscoi comandi
strCreate = “CREATE SESSION MINING MODEL “ & ModelName & “( “
strInsert = “INSERT INTO “ & ModelName & “ ( “

‘ Add columns.
For i = 0 To xmla.ColumnCount – 1
If i > 0 Then
strCreate = strCreate & “ ,”
strInsert = strInsert & “ ,”
End If
strCreate = strCreate & _
“[“ & NormalizeName(xmla.ColumnName(i)) & “]”
strInsert = strInsert & “[“ & NormalizeName(xmla.ColumnName(i)) & “]”
strCreate = strCreate & “ “ & BuildOLEDBDMType(xmla.ColumnType(i))

If Key = xmla.ColumnName(i) Then
strCreate = strCreate & “ KEY TIME”
Else
strCreate = strCreate & “ CONTINUOUS PREDICT”
End If
Next
‘ Completo la creazione del modello
strCreate = strCreate & “) USING Microsoft_Time_Series”
‘ Completo il commando di inserzione.
strInsert = strInsert & “) @InputRowset”
‘ Eseguo il comando
cmd.ActiveConnection = m_cnAS
cmd.CommandText = strCreate
cmd.Execute
‘ Eseguo la interrogazione.
cmd.CommandText = strInsert
cmd.NamedParameters = True
cmd.Execute
End If
End Sub

Questo script darà in output una serie di valori che potranno essere visualizzati  in qualche grafico anche sotto WinCC.

(MB)

Categorie
Corsi

Workshop introduttivo di programmazione WinCC V.6

Con l’intento di istruire i propri clienti, Siemens organizza, presso la propria sede, workshop introduttivi di programmazione gratuiti sui prodotti WinCC.

Mattina:

  • Panoramica WinCC
  • Creazione di un progetto, interfacciamento con PLC, tag interne e esterne
  • Editor grafico
  • User administrator (gestione accessi)
  • Gestione allarmi
  • Varie ed eventuali

Pomeriggio:

  • Gestione trend storici
  • Global script (utilizzo base)
  • Cenni ai pacchetti opzionali e add-ons di WinCC
  • Cenni allo scambio dati fra WinCC e altre applicazioni in ambiente Windows
  • Varie ed eventuali

Sede:

  • Siemens SpA Viale Piero e Alberto Pirelli, 10
    20126 Milano

Orario:

  • Dalle 09:30 Alle 17:00 circa

Quando:

  • martedì 15 aprile
  • martedì 20 maggio
  • martedì 17 giugno
  • martedì 15 luglio
  • martedì 16 settembre

Partecipazione gratuita previa iscrizione

Il modulo di iscrizione si puo’ trovare sul sito Siemens

(LL)

Categorie
Riviste

Simatic IT Club (9)

Numero 9 pubblicato nel febbraio 2008 della rivista Siemens Simatic IT Club

MES Innovation and news Magazine Febraio 2008

 (in inglese)

Categorie
BasicScript Esempi WinCC

Usare Microsoft Forms 2.0 ComboBox Control

Microsoft Forms 2.0 ComboBox Control è presente se è installato Microsoft Office.

Può essere utile perche’ WinCC non dispone dell’oggetto ComboBox

Per popolare l’oggetto serve usare il metodo .AddItem

Dim combo1
Set combo1 = ScreenItems(“combo1”)
combo1.AddItem “Red”

Inoltre il ComboBox puo’ essere configurato per usare colonne multiple. Per popolare le colonne aggiuntive serve usare la proprietà .List (laproprietà ha due parametri colonne e righe)

Dim combo1
Set combo1 = ScreenItems(“combo1”)
combo1.AddItem “Red”
combo1.List(0,1) = “Blue”

Infine ricordate che la proprietà .List è allineata a zero. Significa che il primo elemento ha come indice dell’array 0

Un esempio tratto dal sito WinCC.net è disponibile qui

Categorie
BasicScript cScript

Scrivere un file da script

Per scrivere un file usando BasicScript

Dim fso, MyFile
Set fso = CreateObject(“Scripting.FileSystemObject”)
Set MyFile = fso.CreateTextFile(“c:\testfile.txt”, True)

MyFile.WriteLine(CStr(Time)&” , “&CStr(HMIRuntime.Tags(“Tag1”).Read))
MyFile.Close

Diversamente in cScript si possono usare le funzioni standard

{
FILE * fp;
DWORD dw;
float fl;

fp = fopen(“C:\\variables.txt”,”w”);
if (fp!=NULL)
{
dw=GetTagDouble(“DwordTag”);
fl=GetTagFloat(“FloatTag”);
fprintf(fp,”%d\r\n”,dw);
fprintf(fp,”%f\r\n”,fl);
fclose(fp);
}
else printf(“%s”,”File failed”);
}

Categorie
BasicScript DataBase Esempi WinCC

Manipolare database da WinCC

Dal sito WinCC.net un prezioso esempio su come effettuare query su database dall’interno di WinCC utilizzando BasicScript.

(SG)

Categorie
Documentazione

Compatibilità di WinCC 6.x

Una delle primissime cose che si deve stare molto attenti nel progettare con WinCC è la sua compatibilità con i vari sistemi operativi microsoft e la combinazione con tutti gli altri pacchetti ed opzioni di Siemens

Esiste una tavola con le compatibilità tenuta costantemente aggiornata.

Eesiste anche una tavola delle compatibilità delle security patch di microsoft con WinCC

Importante è anche la sequenza di installazione (WinCC sempre per ultimo) e la presenza di WinCC flexible (sembra che i due pacchetti condividono alcune DLL) e l’uso del SimaticNET (se necessario) incluso con WinCC e non con la scheda di comuniczione.

In definitiva un ambiente “pulito” è la miglior piattaforma per evitare problemi di funzionamento.

Fortuna che le moderne tecniche di virtualizzazione ci vengono in aiuto per riscreare in laboratorio combinazioni di software installato presso l’impianto senza dover ogni volta disporre di un pc o una partizione per effettuare modifiche o test.

Categorie
Alarm Logging cScript

Conoscere il numero di allarmi attivi

Spesso e’ utile conoscere se ci sono allarmi attivi e anche il loro numero.

Con il seguente codice cScript è possibile conoscere il numero di allarmi nella coda degli alllarmi.

DWORD dwMsgService, dwMsgs;
MSRTStartMsgService( &dwMsgService, NULL, NULL, 0, NULL, NULL );
MSRTGetMsgActual( &dwMsgs, NULL );
MSRTStopMsgService( dwMsgService, NULL );
SetTagWord(“TagName”,dwMsgs);

Le funzioni sono documentate nell’ODK

Categorie
cScript DataBase

Connessioni ADO da cScript

Di seguito un esempio di codice su come effettuare connessioni ADO utilizzando cScript

__object *cn, *rs;
int i,fields=10;
cn=__object_create(“ADODB.Connection”);
rs=__object_create(“ADODB.RecordSet”);
// Connect
cn->Open(“Provider=SQLOLEDB.1;Integrated Security=SSPI;Initial Catalog=Northwind;Data Source=(local)\\WinCC”);
if (cn->State == 0) printf (“DB Connect failed\n”);
else
{
rs->Open(“Select * FROM Products”,cn,1);
rs->MoveFirst;
while(!rs->eof) {
for(i=0;i<fields;i++) {printf(rs->Fields(i)->Value); printf (” “); }
printf(“\r\n”);
rs->MoveNext;
}
rs->Close;
cn->Close;
}

Anche se è piu’ agevole in BasicScript talvolta puo’ esssere necessario avere la chiamata al database nell’ambiente cScript

Categorie
cScript

Disabilitare i tasti speciali di Windows

E’ sempre noioso dovere abilitare e disabilitare i tasti speciali tipo CTRL+AL+CANC oppure CTRL+ESC

Se è molto utile che siano bloccati nell’uso quotidiano con il runtime a tutto schermo e’ altrettanto disagevole averli bloccati durante una sessione di teleassistenza o quando si pretende di avere il controllo totale sel Sistema Operativo per manutenzione.

Copio di seguito un frammento di codice che permette di abilitare e disabilitare queste combinazioni di tasti tramite una Action triggherata su tag interna globale @CurrentUser

#pragma code (“UseAdmin.DLL”)
#include “pwrt_api.h”
#pragma code()
#pragma code (“ALMXGINA.DLL”)
BOOL SetXGinaValue(unsigned int uiKey, BOOL *pbEnable, DWORD dwSize);
#pragma code()
BOOL bEnable;
BOOL bOK;
#define XGINA_ALLOW_SHUTDOWN 1
#define XGINA_ALLOW_LOGOUT 2
#define XGINA_ALLOW_CTL_ALT_DEL 3
#define XGINA_ALLOW_CTL_ESC 4
#define XGINA_ALLOW_ALT_ESC 5
#define XGINA_ALLOW_ALT_TAB 6

bEnable = PWRTCheckPermission(36, TRUE);
bOK = SetXGinaValue(XGINA_ALLOW_SHUTDOWN , &bEnable , sizeof(bEnable ));
bOK = SetXGinaValue(XGINA_ALLOW_LOGOUT , &bEnable , sizeof(bEnable ));
bOK = SetXGinaValue(XGINA_ALLOW_CTL_ALT_DEL , &bEnable , sizeof(bEnable ));
bOK = SetXGinaValue(XGINA_ALLOW_CTL_ESC , &bEnable , sizeof(bEnable ));
bOK = SetXGinaValue(XGINA_ALLOW_ALT_ESC , &bEnable , sizeof(bEnable ));
bOK = SetXGinaValue(XGINA_ALLOW_ALT_TAB , &bEnable , sizeof(bEnable ));

Quando l’utente si loggherà nella security di WinCC se ha il pallino rosso di abilitazione nella riga 36 i tasti speciali vengono abilitati, altrimenti vengono diabilitati.

Prestare attenzione alla riga seguente

bEnable = PWRTCheckPermission(36, TRUE);

ritorna lo stato dell’abilitazione 36 (in questo esempio).

Utile anche per sapere da codice se l’utente ha una determinata abilitazione (per esempio per nascondere determinati pulsanti in funzione delle abilitazioni)

Categorie
BasicScript DataBase Text Libray

Accesso alla textlibrary di WinCC tramite ADO di Microsoft

Uno dei problemi che un utente avanzato di WinCC può imbattersi è affrontare la gestione di dati all’interno del proprio progetto.

Ad esempio per monitorare con software esterni l’andamento della produzione piuttosto che controllare dei fermi macchina.

Le Tag, o variabili, di WinCC vengono memorizzate all’interno di uno dei migliori DBMS (Data Base Management System) in commercio: ovvero l’ SQL Server di Microsoft. Ma chi ha provato leggere tali dati avrà scoperto che tantissime variabili sono criptate: ovvero illegibili dall’utente finale.

Quindi le soluzioni che si prospettano sono 2:

  1. Attraverso il Connectivity Pack di Siemens si accedono ai dati, ma richiede l’acquisto di una licenza a parte.
  2. Si memorizzano i dati direttamente da una pagina Runtime di WinCC attraverso l’uso di ADO della Microsoft, verso un qualsiasi DBMS (MySQL,Access,…)

ADO è un acronimo che stà per ActiveX Data Objects.

E’ stato concepito per fornire un’interfaccia API di alto livello per lavorare con OLE-DB. Esistono anche altri tipi di collegamento con un DB, ma viene preso in esame questo, per la facilità con cui verrà fatta l’integrazione in WinCC. Infatti con ADO la sequenza di comandi che il programmatore deve fare è molto semplice. L’utente genera direttamente un “command” da inviare all’oggetto ActiveX passando le informazioni necessarie direttamente all’oggetto. Per semplicità e praticità migliore, la maggior parte degli sviluppatori per essere tranquilli creano un oggetto di tipo “command” separato.

Ma vediamo come integrare il tutto in WinCC. In particolare vediamo ora come connetterci ad un database e fare le prima interrogazioni.

PASSO 1

Nel VBS Editor del Global Script Editor è bene creare delle funzioni che verrano richiamate per la connessione con il DB. Questo per quanto detto prima: mantenere un certo ordine nei “command” che verrano passati all’oggetto ADO.
Ovviamente la connessione potevo farla ogni volta che devo mandare un command ma non è consigliato.

Creiamo una funzione di tipo sub con al solita sintassi:

Sub ConnesioneDB

End Sub

All’interno della Sub creo 2 oggetti: uno per il collegamento con l’oggetto ADO e un altro oggetto per i maneggiare i RECORD…

Set oggettoADO = CreateObject(“ADODB.Connection”)
Set oggettoRECORD = CreateObject(“ADODB.Recordset”)

Una volta creati gli oggetti abbiamo bisogno della stringa di connessione: questa ha una sintassi ben definita: ovvero come primo parametro va inserito il Provider, secondo la sorgenti dati e alla fine va inserito un parametro per la sicurezza…

Per un database di tipo Access è :

Provider=Microsoft.Jet.OLEDB.4.0
Data Source=path_del_DB + WinCC.mdb;
Persist Security Info = False

Ora, è molto importante creare una nuova funzione vuota, ad esempio:

Sub AttivaHandleDB

End Sub

lo scopo di questa funzione è solo quella di rendere attive le variabili globali che sono state dichiarate nel workspace della funzione richiamata.

PASSO 2

Visualizzazione delle Text Library su di un oggetto in Runtime.
Abbiamo bisogno innanzitutto di sapere dove vengono archiviate le TextLibrary all’interno del DB di WinCC. Navigando all’interno del DB SQL Server di trova un DataBase che porta un nome del tipo:

CC_DB_Manip_Anno_Giorno_Mese_Ora_Minuti_Secondi(_R) dell’ ultima attivazione del progetto.

Cerchiamo quindi “dbo.TXTTable” contenente all’interno tutte le textLibrary del progetto con le relative traduzioni.

A questo punto creata una pagina con il Graphics Designer possiamo creare un pulsante che vada a leggere con una opportuna interrogazione il testo e la lingua che ci interessa. Ad esempio la seguente interrogazione associata ad un pulsante del Runtime WinCC mi restituisce la stringa in italiano associata al pulsante:

Sub OnButtonDown(Byval Item, Byval Flags, Byval x, Byval y)

Dim NoOfRecords
Set NoOfRecords = HMIRuntime.Tags(“NoOfRecords”)
Dim CurrentRec
Set CurrentRec = HMIRuntime.Tags(“CurrentRec”)
Dim TextID
Set TextID = HMIRuntime.Tags(“Testo_Lingua”)

If CurrentRec.Read < NoOfRecords.Read Then
TabellaLingue.MoveNext
TextID.Write TabellaLingue.Fields(0).Value
CurrentRec.Write CurrentRec.Value + 1
End If

End Sub

NoOfRecords è un campo I/O che mostra semplicemente il numero del record che abbiamo correntemente visualizzato. “TabellaLigua” è state precedentemente inizializzata coma la tabella su cui andremo a fare le interrogazioni. Per navigare nelle colonne della tabella si usa la notazione del tipo: “nome_colonna”.Fields(numero_colonna).Value ,ricordando che numero colonna parte da zero come la notazione VBS impone. La variabile CurrentRec serve per mantenere in memoria la posizione della riga che si è andata e leggere.

(MB)

Categorie
cScript

Uso API di Windows da cScript

Se desidero emettere un suono, di fatto suonare un file di tipo WAV, tramite la scheda audio il codice necessario in cScript e’ il seguente.

#pragma code (“Kernel32.dll”)
BOOL Beep( DWORD dwFreq, DWORD dwDuration);
#pragma code()

#pragma code (“Winmm.dll “)
VOID WINAPI PlaySoundA (char* pszSound, char* hmode, DWORD dwflag);
#pragma code()

if (GetTagBit(“Sirena”)>0)
{
PlaySoundA(“C:\\WINDOWS\\Media\\ding.wav”,NULL,1);
}

L’esempio sopra è inserito in una action globale triggherata sulla Tag “Sirena”

Questo è un esempio su come accedere all’uso delle API di Windows dall’interno del cScript di WinCC

Categorie
Graphics Designer

Come non usare il TagPrefix usando il TagPrefix

Se scrivo del codice eseguito all’interno di una pagina visualizzata in una picture con la proprietà TagPrefix settata per esempio al valore “Zona” con il seguente codice leggo il valore della Tag “NomeTag” configurata nella struttura “Zona”:

HMIRuntime.Tags(“NomeTag”)

leggo di fatto la Tag che si chiama “Zona.NomeTag”

Se desidero leggere il valore della Tag “MiaTag” che malauguratamente non fa parte di una struttura devo usare la seguente sintassi

HMIRuntime.Tags(“@local::MiaTag”)

Verrà puntata la Tag senza che venga aggiunto l’impostazione del TagPrefix

Categorie
Documentazione

Forum ufficiale Siemens

Ciao,

forse non tutti sanno che esiste un forum ufficiale di Siemens A&D su WinCC.

Il forum è in inglese o tedesco e necessita di registrazione per poter postare in una discussione.

Alcune discussioni sono molto interessanti e saranno sicuramente fonte di ispirazione per la creazione di un post in questo blog.

Categorie
Comunicati

Il primo blog italiano su Siemens A&D WinCC

Ciao a tutti,

questo è il primo post di un nuovo blog registrato sul dominio www.WinCC.it

Oggi primo febbraio del 2008 nasce un blog che si pone come obiettivo iniziale la pubblicazione di articoli e informazioni il piu’ possibile aggiornate sul noto prodotto SCADA di Siemens A&D

Siamo un gruppo di utilizzatori che desiderano condividere informazioni che potrebbero a nostro parere essere utili anche ad altri utilizzatori del prodotto.

Questo non e’ un sito ufficiale e non ha assolutamente la pretesa di sostituirsi all’eccellente supporto fornito dalla casa madre tramite il sito ufficiale, il gruppo di discussione ufficiale e la knowledge base ufficiale di Siemens A&D.

I costi dell’iniziativa sono sostenuti in modo autonomo e siamo ben disposti ad accogliere proposte di sponsor o donazioni con Aziende o privati che condividono l’iniziativa.

Se ritieni di poter dare il tuo contributo con la stesura di un articolo non esitare a contattarci.

LE INFORMAZIONI CONTENUTE NEL SITO SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA’ IN IMPIEGHI PARTICOLARI. L’UTENTE SI ASSUME L’INTERA RESPONSABILITA’ PER L’UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO IL REDATTORE DELL’ARTICOLO E I PROPRIETARI DEL SITO SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE PREVENTIVAMENTE AVVISATI.

IL CONTENUTO DEL SITO E IL SUO USO IMPLICA LA CONOSCENZA DELLA LICENZA CREATIVE COMMONS:

Attribuzione-Non commerciale-Non opere derivate 2.5 Italia 

Noi speriamo che la nostra iniziativa incontri il gradimento dei visitatori e vi ringraziamo per la visita.