Principe

Configuration système requise

La configuration système requise est la suivante :

  • Serveur SQL (par exemple, MySQL, non fourni par Schneider Electric)

  • Client SQL (par exemple, MySQL Workbench, non fourni par Schneider Electric)

  • Base de données créée avec le client SQL (par exemple, MySQL Workbench)

  • SQL Gateway (installation séparée sur le DVD de EcoStruxure Machine Expert)

  • Bibliothèque SqlRemoteAccess (incluse dans l'installation de EcoStruxure Machine Expert)

Transfert de données via SQL Gateway entre le contrôleur et une base de données quelconque

Pour pouvoir transférer les données, la connexion SQL doit être établie avec la SQL Gateway. Pour plus d'informations, consultez le document SQL Gateway - Guide utilisateur.

Les blocs fonction intervenant dans l'échange de données nécessitent l'adresse IP de la SQL Gateway et son port d'écoute. En outre, il convient de fournir au bloc fonction le nom de connexion par lequel la connexion à la base de données SQL est configurée au sein de la passerelle.

NOTE : La syntaxe SQL dans les exemples de code présentés correspond à un serveur MySQL. Si vous utilisez un autre serveur SQL, les commandes peuvent être différentes.

Ecriture de données depuis un contrôleur vers la base de données à l'aide d'une connexion TCP sécurisée

Déclaration :

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

Mise en œuvre :

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

Désignation des paramètres utilisés

Étape

Action

1

Dans la configuration de ST_ExtendedConnectionSettings, indiquez le nom de connexion (wsDbConnectionName) défini dans la SQL Gateway, par exemple ConnectionCountry.

2

Dans la configuration de ST_ExtendedConnectionSettings, indiquez l'adresse IP (wsGwIpAddress) du PC sur lequel la passerelle s'exécute, par exemple 10.128.154.47.

3

Dans la configuration de ST_ExtendedConnectionSettings, indiquez le port (wGwPort) de la passerelle (par défaut : 3458).

4

Dans la configuration de ST_ExtendedConnectionSettings, indiquez le timeout (timSqlTimeout), par exemple T#5s.

5

Dans la configuration de ST_ExtendedConnectionSettings, indiquez le timeout (timSqlConnectionTimeout), par exemple T#10s.

6

Définissez l'entrée i_etSqlRequest sur SE_SQL.ET_SqlRequest.Write.

7

Formulez votre requête d'écriture dans refRequestWstring, par exemple INSERT INTO world.countries (Country) values ('France').

8

Pour i_uiNumOfWstrings, indiquez les lignes de refRequestWstring, par exemple 2.

9

Appelez le bloc fonction FB_SqlDbRequest avec les paramètres/variables ci-dessus.

NOTE : Il n'est possible d'envoyer qu'une seule requête par appel de bloc fonction.

Lecture dans une base de données depuis un contrôleur via une connexion TCP sécurisée

Déclaration :

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

Mise en œuvre :

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

Désignation des paramètres utilisés

Étape

Action

1

Dans la configuration de ST_ExtendedConnectionSettings, indiquez le nom de connexion (wsDbConnectionName) défini dans la SQL Gateway, par exemple ConnectionCountry.

2

Dans la configuration de ST_ExtendedConnectionSettings, indiquez l'adresse IP (wsGwIpAddress) du PC sur lequel la SQL Gateway s'exécute, par exemple 10.128.154.47.

3

Dans la configuration de ST_ExtendedConnectionSettings, indiquez le port (wGwPort) de la passerelle (par défaut : 3458).

4

Dans la configuration de ST_ExtendedConnectionSettings, indiquez le timeout (timSqlTimeout), par exemple T#5s.

5

Dans la configuration de ST_ExtendedConnectionSettings, indiquez le timeout (timSqlConnectionTimeout ), par exemple T#10s.

6

Définissez l'entrée i_etSqlRequest sur SE_SQL.ET_SqlRequest.Read.

7

Formulez votre requête de lecture dans refRequestWstring, par exemple SELECT * FROM world.countries.

8

Pour i_uiNumOfWstrings, indiquez les lignes de refRequestWstring, par exemple 1.

9

Dans la configuration de i_refUserData, indiquez votre tableau UserData.

10

Appelez le bloc fonction FB_SqlDbRequest avec les paramètres/variables ci-dessus.

Paramètres avancés du tampon de données/de la requête avec les paramètres globaux

NOTE : Le Gestionnaire de bibliothèques vous permet de modifier les paramètres avancés en fonction de votre projet.

Étape

Action

1

Dans Gc_uiMaxRows, configurez le nombre maximum de lignes du tableau ARRAY of UserData (requis uniquement pour FB_SqlDbRead), par exemple 20.

Résultat : 20 lignes de la base de données configurée peuvent être lues.

2

Dans Gc_uiMaxColumns, configurez le nombre maximum de colonnes du tableau ARRAY of UserData (requis uniquement pour FB_SqlDbRead), par exemple 10.

Résultat : 10 colonnes de la base de données configurée peuvent être lues.

3

Dans Gc_uiTableWstringLength, configurez le nombre maximum de caractères du tableau ARRAY of UserData à double entrée (requis uniquement pour FB_SqlDbRead), par exemple 200.

Résultat : il est possible de lire un champ de 200 caractères dans la base de données configurée.

4

Dans Gc_uiMaxRequest, configurez le nombre maximum de lignes du tableau ARRAY of RequestWstring, par exemple 20.

Résultat : la requête peut être divisée en 20 lignes du tableau WSTRINGs.

5

Dans Gc_uiRequestWstringLength, configurez le nombre maximum de caractères du tableau ARRAY of RequestWstring, par exemple 200.

Résultat : une ligne de requête peut comprendre 200 caractères.