Come trasferire i dati tramite SQL Gateway tra controller e qualsiasi database

 

Come funziona?

Requisiti di sistema

Sono necessari i seguenti requisiti di sistema:

oServer SQL (ad esempio MySQL, non fornito da Schneider Electric)

oClient SQL (ad esempio MySQL Workbench, non fornito da Schneider Electric)

oDatabase, creato con SQL Client (ad esempio MySQL Workbench)

oSQL Gateway (è un'installazione separata sul DVD EcoStruxure Machine Expert)

oLibreria SqlRemoteAccess (parte dell'installazione EcoStruxure Machine Expert)

Come trasferire i dati tramite SQL Gateway tra controller e qualsiasi database

Per poter trasferire i dati, è necessario dapprima stabilire la connessione SQL con il SQL Gateway. Per informazioni dettagliate, vedere il documento SQL Gateway - Guida utente.

I blocchi funzione per lo scambio dei dati richiedono l'indirizzo IP del SQL Gateway e la porta su cui avviene l'ascolto. Inoltre, il nome della connessione, per cui è configurata la connessione al database SQL all'interno del gateway, deve essere fornito al blocco funzione.

NOTA: La sintassi SQL negli esempi di codice in questa descrizione dipende da un server MySQL; se si usa un altro server SQL, i comandi possono essere diversi.

Scrittura di dati da un controller nel database mediante connessione TCP sicura

Dichiarazione:

PROGRAM WriteData_Secured
VAR
    fbSqlDbRequest          : SE_SQL.FB_SqlDbRequest;
    stExtConnectionSettings : SE_SQL.ST_ExtendedConnectionSettings;
    refRequestWstring       : SE_SQL.RequestWstring;
    refUserData             : SE_SQL.UserData;
    etSqlRequest            : SE_SQL.ET_SqlRequest;
END_VAR

Implementazione:

stExtConnectionSettings.wsDbConnectionName      := "ConnectionCountry";
stExtConnectionSettings.wsGwIpAddress           := "10.128.154.47";
stExtConnectionSettings.wGwPort                 := 3458;
stExtConnectionSettings.timSqlTimeout           := T#5S;
stExtConnectionSettings.timSqlConnectionTimeout := T#10S;
etSqlRequest                            := SE_SQL.ET_SqlRequest.Write;

// SQL Command to insert a new Country
refRequestWstring[1] := "INSERT INTO world.countries (Country, CapitalCity, Language)";
refRequestWstring[2] := "values ('Germany', 'Berlin', 'german')";

IF NOT fbSqlDbRequest.q_xReady THEN
  fbSqlDbRequest(i_xEnable:= TRUE,
                 i_xExecute:= FALSE,
                 i_etSqlRequest:= etSqlRequest,
                 i_refRequestWstring:= refRequestWstring,
                 i_uiNumOfWstrings:= 2,
                 i_refUserData:= refUserData,
                 iq_stExtendedConnSettings:= stExtConnectionSettings);
ELSE
  fbSqlDbRequest(i_xEnable:= TRUE,
                 i_xExecute:= TRUE,
                 i_etSqlRequest:= etSqlRequest,
                 i_refRequestWstring:= refRequestWstring,
                 i_uiNumOfWstrings:= 2,
                 i_refUserData:= refUserData,
                 iq_stExtendedConnSettings:= stExtConnectionSettings);
END_IF

Descrizione dei parametri utilizzati

Passo

Azione

1

In ST_ExtendedConnectionSettings, impostare il nome della connessione (wsDbConnectionName) configurato nel SQL Gateway, ad esempio ConnectionCountry.

2

In ST_ExtendedConnectionSettings, impostare l'indirizzo IP (wsGwIpAddress) del PC sul quale è in esecuzione il gateway, ad esempio 10.128.154.47.

3

In ST_ExtendedConnectionSettings, impostare la porta (wGwPort) del gateway (impostazione predefinita: 3458).

4

In ST_ExtendedConnectionSettings, impostare il timeout (timSqlTimeout) ad esempio, T#5s.

5

In ST_ExtendedConnectionSettings, impostare il timeout (timSqlConnectionTimeout ) ad esempio, T#10s.

6

Impostare l'ingresso i_etSqlRequest su SE_SQL.ET_SqlRequest.Write.

7

Scrivere la richiesta di scrittura in refRequestWstring, ad esempio INSERT INTO world.countries (Country) values ('France').

8

In i_uiNumOfWstrings, impostare le righe in refRequestWstring, ad esempio, 2.

9

Richiamare FB_SqlDbRequest con impostazioni/parametri/variabili indicati sopra.

NOTA: È possibile utilizzare soltanto una richiesta per chiamata del blocco funzione.

Lettura dei dati con un controller da un database mediante connessione TCP sicura

Dichiarazione:

PROGRAM ReadData_Secured
VAR
    fbSqlDbRequest          : SE_SQL.FB_SqlDbRequest;
    stExtConnectionSettings : SE_SQL.ST_ExtendedConnectionSettings;
    refRequestWstring       : SE_SQL.RequestWstring;
    refUserData             : SE_SQL.UserData;
    etSqlRequest            : SE_SQL.ET_SqlRequest;
END_VAR

Implementazione:

stExtConnectionSettings.wsDbConnectionName      := "ConnectionCountry";
stExtConnectionSettings.wsGwIpAddress           := "10.128.154.47";
stExtConnectionSettings.wGwPort                 := 3458;
stExtConnectionSettings.timSqlTimeout           := T#5S;
stExtConnectionSettings.timSqlConnectionTimeout := T#10S;
etSqlRequest                            := SE_SQL.ET_SqlRequest.Read;

// SQL Command to read all Countries in a database
refRequestWstring[1] := "SELECT * FROM world.countries";

IF NOT fbSqlDbRequest.q_xReady THEN
  fbSqlDbRequest(i_xEnable:= TRUE,
                 i_xExecute:= FALSE,
                 i_etSqlRequest:= etSqlRequest,
                 i_refRequestWstring:= refRequestWstring,
                 i_uiNumOfWstrings:= 1,
                 i_refUserData:= refUserData,
                 iq_stExtendedConnSettings:= stExtConnectionSettings);
ELSE
  fbSqlDbRequest(i_xEnable:= TRUE,
                 i_xExecute:= TRUE,
                 i_etSqlRequest:= etSqlRequest,
                 i_refRequestWstring:= refRequestWstring,
                 i_uiNumOfWstrings:= 1,
                 i_refUserData:= refUserData,
                 iq_stExtendedConnSettings:= stExtConnectionSettings);
END_IF

Descrizione dei parametri utilizzati

Passo

Azione

1

In ST_ExtendedConnectionSettings, impostare il nome della connessione (wsDbConnectionName) configurato nel SQL Gateway, ad esempio ConnectionCountry.

2

In ST_ExtendedConnectionSettings, impostare l'indirizzo IP (wsGwIpAddress) del PC sul quale è in esecuzione SQL Gateway, ad esempio 10.128.154.47

3

In ST_ExtendedConnectionSettings, impostare la porta (wGwPort) del gateway (impostazione predefinita: 3458).

4

In ST_ExtendedConnectionSettings, impostare il timeout (timSqlTimeout), ad esempio, T#5s.

5

In ST_ExtendedConnectionSettings, impostare il timeout (timSqlConnectionTimeout ) ad esempio, T#10s.

6

Impostare l'ingresso i_etSqlRequest su SE_SQL.ET_SqlRequest.Read.

7

Scrivere la richiesta di lettura in refRequestWstring, ad esempio SELECT * FROM world.countries.

8

In i_uiNumOfWstrings, impostare le righe in refRequestWstring, ad esempio, 1.

9

In i_refUserData, impostare l'array UserData.

10

Richiamare FB_SqlDbRequest con impostazioni/parametri/variabili indicati sopra.

Impostazioni avanzate per il buffer dati / Richiesta con i parametri globali

NOTA: Le impostazioni avanzate possono essere sovrascritte specificamente per il progetto nel Gestore libreria.

Passo

Azione

1

In Gc_uiMaxRows impostare il numero max. di righe per l'ARRAY of UserData (necessario solo per FB_SqlDbRead), ad esempio 20.

Risultato: è possibile leggere 20 righe dal database configurato.

2

In Gc_uiMaxColumns impostare il numero max. di colonne per l'ARRAY of UserData (necessario solo per FB_SqlDbRead), ad esempio 10.

Risultato: è possibile leggere 10 colonne dal database configurato.

3

In Gc_uiTableWstringLength impostare il numero max. di caratteri dell'ARRAY of UserData bidimensionale (necessario solo per FB_SqlDbRead), ad esempio 200.

Risultato: è possibile leggere un campo con 200 caratteri dal database configurato.

4

In Gc_uiMaxRequest impostare il numero di righe max. di ARRAY of RequestWstring, ad esempio 20.

Risultato: la richiesta può essere suddivisa in 20 righe di WSTRINGs.

5

In Gc_uiRequestWstringLength impostare il numero max. di caratteri in ARRAY of RequestWstring, ad esempio 200.

Risultato: una riga di richiesta può includere 200 caratteri.