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)
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)
Simatic IT Club (9)
Numero 9 pubblicato nel febbraio 2008 della rivista Siemens Simatic IT Club
(in inglese)
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
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”);
}
Manipolare database da WinCC
Dal sito WinCC.net un prezioso esempio su come effettuare query su database dall’interno di WinCC utilizzando BasicScript.
(SG)
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.
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
Loading ...