×
Siemens Industry Online Support
Siemens AG
Tipo di articolo: FAQ ID articolo: 26283062, Data articolo: 12/05/2016
(21)
Valuta

In WinCC (TIA Portal) o WinCC flexible come si accede tramite uno script ad un database SQL?

  • Articolo
  • Riguarda prodotto/i
I database SQL sono adatti allo scambio di dati tra livello di processo e livello di controllo in una rete aziendale di ordine superiore. Questa FAQ illustra la configurazione e l'utilizzo della Runtime di WinCC (TIA Portal) o WinCC flexible come client che comunica tramite script con un server SQL.

L'accesso ad un database SQL in WinCC (TIA Portal) / WinCC flexible, ad eccezione dell'archiviazione di variabili o messaggi, avviene mediante script. Per accedere ad un database SQL, nel server SQL deve essere creato un database. La PC Runtime di WinCC (TIA Portal) / WinCC flexible funge da client SQL.

ATTENZIONE

  • Per motivi di sicurezza operativa, le Operational Guidelines for Industrial Securitydi Siemens raccomandano vivamente di non collegare direttamente insieme le reti di produzione e le retti Office, ma di creare una "Zona demilitarizzata" ("DMZ") tra i livelli di rete.
  • Rispettare su questo argomento anche gli altri whitepaper Siemens sui temi Industrial Security, disponibili per il download gratuito sulle pagine web Siemens.

Avvertenze

  • Questa FAQ descrive la procedura in caso d'utilizzo di WinCC (TIA Portal) V13. La procedura con WinCC flexible non è differente.
  • Da un panel basato su Windows CE non è possibile accedere ad un database SQL.

Requisiti

  • SQL Server1
  • La sorgente di dati SQL deve essere creata in Windows
  • WinCC (TIA Portal) oppure WinCC flexible Advanced ES
  • WinCC (TIA Portal) oppure WinCC flexible PC Runtime

1 Il server SQL utilizzato deve essere approvato anche per i sistemi operativi per i quali è approvato WinCC (TIA Portal).

Nota
Questi esempi servono solo come proposte - ovviamente sono possibili anche altre soluzioni.

Avvertenza sulla bibliografia
Ulteriori informazioni sui comandi SQL e per l'accesso ai database SQL sono disponibili in diversa bibliografia e in Internet.

Creazione di una sorgente dati
Si accede al server SQL tramite una sorgente dati OBDC che deve essere creata precedentemente. Viene creata nel pannello di controllo Windows in "Strumenti di amministrazione > Origini dati ODBC". Nell'esempio seguente viene utilizzata la sorgente dati "Database_1", che è collegata con il server SQL "WINCCFLEXIBLE".

Per creare la sorgente dati e il database, vedere l'articolo con ID 24677043.
 


Figura 01

Amministrazione e utilizzo del database SQL
I paragrafi seguenti illustrano l'utilizzo del database SQL sulla base di sezioni di script VB. Questi script sono disponibili anche nel download di progetto del presente articolo.

1.Amministrazione
In un database SQL è possibile creare una o più tabelle identiche o differenti.

  • 1.1 Creazione di un database SQL: Script "Create_database"
    È necessaria l'istruzione "On Error Resume Next" nel caso di un errore nel tempo di runtime. Non appena compare un errore di questo tipo, automaticamente viene eseguita la riga successiva, contenente la routine di errore.

    L'oggetto "ADODB.Connection" è necessario affinché venga realizzata una connessione con una sorgente dati SQL. Con "ADODB.Recordset" si possono ad esempio creare, modificare oppure cancellare database oppure tabelle.

    Per poter aprire una sorgente dati, deve essere noto il provider ed il nome della sorgente dati. La connessione con la sorgente dati avviene tramite il metodo "Open" della variabile oggetto "conn".

    Se stabilendo la connessione compare un errore di runtime, ha luogo la seguente routine di errore, nella quale viene emesso un messaggio di sistema e lo script viene immediatamente terminato.

    Tramite il comando SQL "CREATE DATABASE" e il nome del database, viene creato un nuovo database con il metodo "Execute (SQL-Table)" della variabile oggetto "conn".

    Se il database esiste già, ha luogo la routine di errore già nota. Con il metodo "Close" la connessione con la sorgente dati viene interrotta.
     

    Figura 02
     

    Sintassi SQL
    CREATE DATABASE
  • 1.2 Cancellazione di un database SQL: Script "Delete_database"
    La struttura dello script è sostanzialmente uguale allo script "Create_database". Tramite il comando SQL "DROP DATABASE" e il nome del database, il database viene eliminato.
     

    Figura 03
     

    Sintassi SQL
    DROP DATABASE

2. Tabelle
In ogni database SQL si possono creare tabelle che presentano una struttura dati individuale. Nel seguente esempio di codice viene creata la struttura dati della tabella 01.

ColonnaTipo di dati
1SMALLINT
2Char(30)
3SMALLINT
4SMALLINT

Tabella 01 - Struttura dati della tabella

La composizione della struttura dati di una tabella può essere qualsiasi. Il progetto esemplificativo in allegato utilizza anch’esso questa struttura dati.

  • 2.1 Creazione di una tabella: Script "Create_new_table"
    Per aprire una sorgente dati e accedere ad un database di questa sorgente dati, sono necessari nello script gli oggetti "ADODB.Connection" per la creazione della connessione e "ADODB.Recordset" per la modifica della sorgente dati.
    Con il parametro "Initial Catalog" del metodo "Open" viene stabilita la connessione ad un determinato database all'interno della sorgente dati. La sorgente dati "Database_1" creata in Windows viene indicata con il parametro "DSN".
    Una tabella SQL viene creata con l'istruzione SQL "CREATE TABLE" e con il nome e la struttura (struttura dati) della tabella.



    Figura 04
     

    Sintassi SQL
    CREATE TABLE (nome colonna, tipo, ...)

    Avvertenza
    Per questo comando SQL "CREATE TABLE" esistono ulteriori aggiunte al comando.

  • 2.2 Copia di una tabella: Script "Copy_table"
    Per l'accesso sono necessari i due oggetti "ADODB.Connection" e "ADODB.Recordset".

    Con il comando SQL "SELECT * INTO" e l'aggiunta "FROM" tutti i record di dati della tabella corrispondente vengono copiati nella nuova tabella. L'istruzione "SELECT *" è sinonimo del comando "SELECT ALL" e seleziona tutti i record di dati della tabella, che sono indicati con il comando anteposto "FROM". La tabella destinazione viene definita con "INTO".

    Avvertenza

    L'istruzione SQL "SELECT" può, come opzione, essere anche combinata con altri parametri di comando. Ulteriori informazioni sono reperibili nella relativa letteratura tecnica o in Internet.



    Figura 05
     

    Sintassi SQL
    SELECT INTO FROM

    Avvertenza

    Per il comando SQL "SELECT" esistono anche altre combinazioni di comandi.

  • 2.3 Cancellazione di una tabella: Script "Delete_table"
    Per la cancellazione di una tabella deve essere stabilita la connessione alla corrispondente sorgente dati. Con il comando "DROP TABLE" e il nome della tabella, la tabella viene eliminata dal database.



    Figura 06

    Sintassi SQL
    DROP TABLE

    Avvertenza
    Non è prevista una domanda che chiede se la tabella debba essere effettivamente cancellata. Con la cancellazione tutti i dati della tabella vengono irrevocabilmente cancellati.

3. Record di dati
Ogni tabella SQL contiene un determinato numero di record di dati. La struttura dei record di dati dipende dalla struttura dati della tabella.

  • 3.1 Lettura di record di dati: Script "Read_data_record_from_a_table"
    La lettura dei record di dati avviene, come già accennato, tramite i due oggetti ADODB.

    Con l'istruzione SQL "SELECT * FROM" ed il nome della tabella vengono per prima cosa selezionati tutti i record di dati della tabella nel database.


    Colonna 1
    Colonna 2
    Colonna 3
    Dato 10Dato 20Dato 31
    Dato 11Dato 21Dato 32
    Dato 12Dato 22Dato 33

    Tabella 02 -- Effetto del comando SQL "SELECT * FROM". I campi dati visualizzati in grassetto sono selezionati.

    Con l'aggiunta al comando "WHERE" e l'indicazione della combinazione di nome colonna e numero del record di dati viene selezionato solo il record di dati indicato della tabella.

    Colonna 1
    Colonna 2
    Colonna 3
    Dato 10Dato 20Dato 31
    Dato 11Dato 21Dato 32
    Dato 12Dato 22Dato 33

    Tabella 03 -- Effetto dell'aggiunta al comando "WHERE colonna 1 = 11"
     


    Figura 07

    Sintassi SQL
    SELECT FROM WHERE

    Avvertenza
    Per il comando SQL "SELECT" esistono anche altre combinazioni di comandi.
    Con l'istruzione "If" e con "rst.EOF" e "rst.BOF" viene verificato se il record di dati selezionato è presente. In caso sia presente, con "rst.MoveFirst" viene effettuato il reset sul primo record di dati.

    Trasferire i nomi delle colonne con la seguente sintassi (vedi figura 08).
    szColumnName_1 = rst.Fields(1).Name

    Utilizzare la sintassi seguente per accedere ai singoli campi del record di dati:
    nDataRecord_2 = rst.Fields(2).Value
     


    Figura 08

3.2 Scrittura di record di dati: Script "Write_data_record_into_a_table"
L'accesso avviene tramite gli stessi oggetti utilizzati nella lettura del record di dati in una tabella SQL.
Con il comando SQL "SELECT * FROM" insieme al nome della tabella e all'aggiunta "WHERE" viene selezionato il record di dati corrispondente, sempre che esso esista.


Figura 09
 
Sintassi SQL
SELECT FROM WHERE

Avvertenza
Per il comando SQL "SELECT" sono possibili anche altre combinazioni di comandi.

Se il record di dati non esiste, il puntatore viene resettato sulla prima voce della tabella.

Il controllo se un record di dati è già presente avviene, come già indicato in 3.1, tramite la verifica di "rst.EOF" e "rst.BOF".

Per aggiungere un record di dati, sono necessari il comando SQL "INSERT INTO" e il nome della tabella SQL. Inoltre con l'aggiunta "VALUES" devono essere indicati, separati da una virgola, tutti i parametri che sono registrati nella tabella.
L'istruzione SQL viene eseguita con il metodo "Execute" della variabile oggetto "conn".
 


Figura 10
 

Sintassi SQL
INSERT INTO VALUES

3.3 Modifica di record di dati: Script "Edit_data_record"
Requisito per l'accesso alla sorgente dati sono i due oggetti ADODB. Dopo che il database viene aperto con il metodo "open", ha luogo la selezione del record di dati indicato, sempre che esso sia presente.


Figura 11
 

Sintassi SQL
SELECT FROM WHERE

Avvertenza
Per il comando SQL "SELECT" sono possibili anche altre combinazioni di comandi.

Se con l'interrogazione "EOF" e "BOF" è stata garantita la presenza del record di dati, nello script vengono per prima cosa trasferiti i nomi delle colonne della tabella.
Con l'istruzione SQL "UPDATE" e con il nome della tabella SQL con l'aggiunta del comando "Set" vengono poi trasferiti gli elementi del record di dati. L'esecuzione dell'istruzione SQL avviene tramite "conn.Execute (SQL_Table)".


Figura 12
 

Sintassi SQL
UPDATE SET

Avvertenza

Per questo comando SQL esiste ancora l'aggiunta al comando "WHERE < >".

3.4 Cancellazione di record di dati: Script "Delete_data_record"
Per l'accoppiamento al database SQL sono necessari i due oggetti ADODB.
Per cancellare un record di dati da un database, occorre aprire questo database SQL. Per la cancellazione di un record di dati è necessaria la combinazione di comandi "DELETE FROM" con l'indicazione della tabella SQL e dell'estensione "WHERE" con il confronto del numero del record di dati con la corrispondente colonna. In collegamento con l'istruzione "conn.Execute (SQL-Table)" il record di dati indicato viene cancellato.
 


Figura 13
 

Sintassi SQL
DELETE FROM WHERE

Avvertenza

Il record di dati selezionato viene cancellato irrevocabilmente senza richiesta di conferma.

4. Tabelle di record di dati
Tramite i comandi SQL è anche possibile visualizzare l'intero contenuto oppure più record di dati di una tabella SQL. Requisito per l'accesso ad un database SQL sono gli oggetti "ADODB.Connection" e "ADODB.Recordset".

  • 4.1 Lettura di tutti i dati da una tabella: Script "Show_all_entries_of_a_table"
    I record di dati di un database SQL non devono essere memorizzati in una sequenza cronologica. Per tale motivo la tabella deve essere ordinata, per visualizzare i record di dati nella sequenza corretta. Per ordinare una tabella secondo una colonna, è necessario il nome della colonna. Poiché in questo esempio i nomi delle colonne sono variabili, occorre leggere esplicitamente anche il nome della colonna.

    Per leggere un'intera tabella SQL, la tabella intera viene trasferita con il comando SQL "SELECT * FROM" e il nome della tabella SQL durante l'esecuzione del metodo "Execute".

    Il contenuto della tabella viene assegnato alla variabile oggetto "rst". Tramite questa variabile oggetto si può indicare il nome della colonna secondo la quale si deve ordinare la tabella. Con lo stesso comando SQL con l'aggiunta "ORDER BY" e il nome di colonna, la tabella viene ordinata in ordine crescente.
     


    Figura 14
     

    Sintassi SQL
    SELECT FROM ORDER BY ASC

    Avvertenza
    Con l'istruzione "ASC" l'ordinamento è eseguito in ordine crescente e con "DESC" in ordine decrescente. Senza ulteriori indicazioni l'ordinamento è effettuato in ordine crescente. Il comando SQL "SELECT" può essere combinato con altre istruzioni.

    Con il loop "Do...Loop Until" e l'istruzione "MoveNext" viene rilevato il numero delle voci nella tabella. Quindi il puntatore viene riportato con "MoveFirst" della variabile oggetto "rst" sulla prima voce della tabella.
    Poiché in questo esempio vengono visualizzate contemporaneamente max. sei voci della tabella, la sezione di tabella può essere spostata nel progetto tramite i tasti freccia. Il valore della variabile "Tab" può muoversi tra zero ed il numero delle voci meno il numero dei record di dati da visualizzare. Se la sezione di tabella viene spostata, il puntatore della tabella SQL deve essere anch'esso spostato. Questo avviene con l'istruzione "MoveNext".



    Figura 15
     

    Utilizzare la sintassi seguente per accedere ai singoli campi dei record di dati:
    Value_1_0 = rst.Fields(0).Value
    Value_1_1 = rst.Fields(1).Value
    Value_1_2 = rst.Fields(2).Value
     

    Figura 16
     

    4.2 Scrittura di tutti i dati in una tabella: Script "Write_all_entries_in_a_table"
    Dopo aver aperto la sorgente dati, i singoli record di dati vengono letti tramite il comando SQL "SELECT * FROM" con il nome della tabella e con l'aggiunta al comando "WHERE" e il confronto del contenuto della colonna indicata con l'indicazione del record di dati.
     


    Figura 17
     

    Sintassi SQL
    SELECT FROM WHERE

    Avvertenza
    Il comando SQL "SELECT" può essere combinato con altre istruzioni.

    Se il record di dati è contenuto nella tabella, con il comando SQL "UPDATE" il record di dati viene sovrascritto dai nuovi parametri. Se il record di dati non è contenuto nella tabella, esso viene aggiunto con il comando SQL "INSERT INTO".


    Figura 18
     

    Il controllo se un record di dati è già presente avviene, come già indicato in 3.1, tramite la verifica di "rst.EOF" e "rst.BOF".

Download
I download seguenti contengono progetti esemplificativi per WinCC (TIA Portal) V13 e WinCC flexible 2008, in cui sono contenute tutte le funzioni illustrate, inclusi script.

 Registrierung notwendig  Project WinCC (TIA Portal) V13 (589,0 KB)
Registrazione necessariaProject WinCC flexible 2008 (2,6 MB)

Avvertenze di Security
Siemens offre prodotti e soluzioni con funzioni Industrial Security che supportano il funzionamento sicuro di impianti, soluzioni, macchine, dispositivi e/o reti. Sono componenti importanti in un sistema unitario Industrial Security. I prodotti e le soluzioni Siemens sono continuamente perfezionati sotto questo punto di vista. Siemens raccomanda di informarsi regolarmente sugli aggiornamenti del prodotto.
Per il funzionamento sicuro dei prodotti e delle soluzioni Siemens è necessario adottare idonee misure di protezione (ad es. concetto di protezione della cella) e integrare ogni componente in un concetto Industrial Security unitario che corrisponde allo stato attuale della tecnica. Devono essere considerati anche i prodotti impiegati di altri produttori. Ulteriori informazioni su Industrial Security sono disponibili in
https://www.siemens.com/industrialsecurity.

Per essere informati sempre sugli aggiornamenti del prodotto, nel Siemens Industry Online Support è possibile creare diritti per i prodotti impiegati. Altre informazioni in merito sono disponibili all'indirizzo Supporto prodotto > Salva filtro.

Ricerca complementare
Database, accesso database, Structured Query Language, lingua di interrogazione strutturata

Avvertenze di sicurezza
Per proteggere l’infrastruttura tecnica, i sistemi, i macchinari e le reti da minacce cyber, è necessario implementare (e salvaguardare continuamente) un concetto IT Security complessivo che sia conforme agli standard della tecnica correnti. I prodotti e le soluzioni di Siemens formano solo una parte di tale concetto. Ulteriori informazioni sulla Cyber Security si trovano sotto
https://www.siemens.com/cybersecurity#Ouraspiration.
Valuta articolo
nessuna valutazione
Richieste e feedback
Come vuoi procedere?
Avvertenza: il feedback si riferisce sempre all'articolo/al prodotto attuale. Il tuo messaggio verrà inviato ai redattori dell'Online Support. Se il tuo feedback lo richiede riceverai una risposta entro qualche giorno. Se non sono necessari ulteriori chiarimenti non ti invieremo alcun messaggio.
Sostegno per la statistica
Con questa funzione gli ID del risultato di ricerca saranno visualizzati secondo il numero desiderato (formato .txt)

Generare elenco
Copiare URL
Visualizzzare questa pagina nel nuovo design
Cockpit mySupport