Come funziona?

Requisiti di sistema

Sono necessari i seguenti requisiti di sistema:

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

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

  • Database, creato con SQL Client (ad esempio MySQL Workbench)

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

  • Libreria 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 la 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.