Cómo transferir datos mediante SQL Gateway entre el controlador y cualquier base de datos

 

¿Cómo funciona?

Requisitos del sistema

Los siguientes requisitos del sistema son necesarios:

oServidor SQL (por ejemplo, MySQL, no suministrado por Schneider Electric)

oCliente SQL (por ejemplo, MySQL Workbench, no suministrado por Schneider Electric)

obase de datos, creada con el cliente SQL (por ejemplo, MySQL Workbench)

oSQL Gateway (una instalación separada del DVD de EcoStruxure Machine Expert)

oBiblioteca SqlRemoteAccess (parte de la instalación de EcoStruxure Machine Expert)

Cómo transferir datos mediante SQL Gateway entre el controlador y cualquier base de datos

Antes de transferir los datos, debe crear la conexión SQL con la SQL Gateway. Para obtener más información, consulte la SQL Gateway User Guide.

Los bloques de funciones de intercambio de datos requieren la dirección IP de SQL Gateway y el puerto en el que escucha. Además, debe proporcionarse al bloque de funciones el nombre de la conexión, con el que se configura la conexión a la base de datos SQL en la pasarela.

NOTA: La sintaxis SQL en los ejemplos de código de esta descripción depende de un servidor MySQL; si utiliza otro servidor SQL, los comandos pueden variar.

Escribir datos de un controlador en la base de datos con una conexión TCP segura

Declaración:

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

Implementación:

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

Descripción de los parámetros utilizados

Paso

Acción

1

En ST_ExtendedConnectionSettings, defina el nombre de la conexión (wsDbConnectionName) que se configura en la SQL Gateway. Por ejemplo, ConnectionCountry.

2

En ST_ExtendedConnectionSettings, defina la dirección IP (wsGwIpAddress) del PC en el que se está ejecutando la pasarela. Por ejemplo, 10.128.154.47.

3

En ST_ExtendedConnectionSettings, defina el puerto de la pasarela (wGwPort); el puerto predeterminado es 3458.

4

En ST_ExtendedConnectionSettings, defina el tiempo de espera (timSqlTimeout). Por ejemplo, T#5s.

5

En ST_ExtendedConnectionSettings, defina el tiempo de espera (timSqlConnectionTimeout ). Por ejemplo, T#10s.

6

Defina la entrada i_etSqlRequest de SE_SQL.ET_SqlRequest.Write.

7

Escriba su petición para escribir en refRequestWstring. Por ejemplo, INSERT INTO world.countries (Country) values ('France').

8

En i_uiNumOfWstrings, defina sus líneas en refRequestWstring. Por ejemplo, 2.

9

Llame a FB_SqlDbRequest con los ajustes/parámetros/variables anteriores.

NOTA: Sólo se puede enviar una petición por llamada del bloque de funciones.

Leer datos con un controlador de una base de datos con una conexión TCP segura

Declaración:

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

Implementación:

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

Descripción de los parámetros utilizados

Paso

Acción

1

En ST_ExtendedConnectionSettings, defina el nombre de la conexión (wsDbConnectionName) que se configura en la SQL Gateway. Por ejemplo, ConnectionCountry.

2

En ST_ExtendedConnectionSettings, defina la dirección IP (wsGwIpAddress) del PC en el que se está ejecutando la SQL Gateway. Por ejemplo, 10.128.154.47.

3

En ST_ExtendedConnectionSettings, defina el puerto de la pasarela (wGwPort); el puerto predeterminado es 3458.

4

En ST_ExtendedConnectionSettings, defina el tiempo de espera (timSqlTimeout). Por ejemplo, T#5s.

5

En ST_ExtendedConnectionSettings, defina el tiempo de espera (timSqlConnectionTimeout ). Por ejemplo, T#10s.

6

Defina la entrada i_etSqlRequest de SE_SQL.ET_SqlRequest.Read.

7

Escriba su petición de lectura en refRequestWstring. Por ejemplo, SELECT * FROM world.countries.

8

En i_uiNumOfWstrings, defina sus líneas en refRequestWstring. Por ejemplo, 1.

9

En i_refUserData, defina su matriz de UserData.

10

Llame a FB_SqlDbRequest con los ajustes/parámetros/variables anteriores.

Configuración avanzada del búfer de datos/Petición con los parámetros globales

NOTA: La configuración avanzada se puede sobrescribir de forma específica para su proyecto en el Administrador de bibliotecas.

Paso

Acción

1

En Gc_uiMaxRows, defina el número máximo de filas de la ARRAY of UserData (solo es necesario para FB_SqlDbRead). Por ejemplo, 20.

Resultado: Se pueden leer 20 filas de la base de datos configurada.

2

En Gc_uiMaxColumns, defina el número máximo de columnas de la ARRAY of UserData (solo es necesario para FB_SqlDbRead). Por ejemplo, 10.

Resultado: Se pueden leer 10 columnas de la base de datos configurada.

3

En Gc_uiTableWstringLength, defina el número máximo de caracteres de la ARRAY of UserData bidimensional (solo es necesario para FB_SqlDbRead). Por ejemplo, 200.

Resultado: Se puede leer un campo de 200 caracteres de la base de datos configurada.

4

En Gc_uiMaxRequest, defina el número máximo de líneas de la ARRAY of RequestWstring. Por ejemplo, 20.

Resultado: La petición se puede dividir en 20 líneas de WSTRINGs.

5

En Gc_uiRequestWstringLength, defina el número máximo de caracteres en la ARRAY of RequestWstring. Por ejemplo, 200.

Resultado: Una línea de petición puede incluir 200 caracteres.