Funktionsprinzip

Systemanforderungen

Folgende systemspezifische Anforderungen sind zu beachten:

  • SQL-Server (z. B. MySQL, von Schneider Electric nicht bereitgestellt)

  • SQL-Client (z. B. MySQL Workbench, von Schneider Electric nicht bereitgestellt)

  • Datenbank, erstellt mit dem SQL-Client (z. B. MySQL Workbench)

  • SQL Gateway (separate Installation auf der EcoStruxure Machine Expert-DVD)

  • SqlRemoteAccess-Bibliothek (Teil der Installation von EcoStruxure Machine Expert)

Vorgehensweise zur Übertragung von Daten über das SQL Gateway zwischen Steuerung und einer beliebigen Datenbank

Vor der Übertragung von Daten muss die SQL-Verbindung mithilfe des SQL Gateway hergestellt werden. Detaillierte Informationen finden Sie im SQL Gateway - Benutzerhandbuch.

Die Funktionsbausteine für den Datenaustausch erfordern die IP-Adresse des SQL Gateway und den Port, der abgehört wird. Zusätzlich muss der Verbindungsname, über den die Verbindung zur SQL-Datenbank im Gateway konfiguriert wird, dem Funktionsbaustein zur Verfügung gestellt werden.

HINWEIS: Die in den Codebeispielen in dieser Beschreibung verwendete SQL-Syntax beruht auf einem MySQL-Server. Wenn Sie einen anderen SQL-Server verwenden, können die Befehle unterschiedlich ausfallen.

Schreiben von Daten von einer Steuerung in die Datenbank über eine gesicherte TCP-Verbindung

Deklaration:

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

Implementierung:

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

Beschreibung der verwendeten Parameter

Schritt

Aktion

1

Legen Sie in ST_ExtendedConnectionSettings den Verbindungsnamen (wsDbConnectionName) fest, der im SQL Gateway konfiguriert ist, z. B. ConnectionCountry.

2

Stellen Sie in ST_ExtendedConnectionSettings die IP-Adresse (wsGwIpAddress) des PC ein, auf dem das Gateway ausgeführt wird, z. B. 10.128.154.47.

3

Legen Sie in ST_ExtendedConnectionSettings den Port (wGwPort) des Gateways fest (Standard: 3458).

4

Stellen Sie in ST_ExtendedConnectionSettings das Timeout (timSqlTimeout) ein, z. B. T#5s).

5

Stellen Sie in ST_ExtendedConnectionSettings das Timeout (timSqlConnectionTimeout) ein, z. B. T#10s.

6

Setzen Sie den Eingang i_etSqlRequest auf SE_SQL.ET_SqlRequest.Write.

7

Schreiben Sie Ihren Schreibrequest in refRequestWstring. Beispiel: INSERT INTO world.countries (Country) values ('France').

8

Legen Sie in i_uiNumOfWstrings die Zeilen im Feld refRequestWstring fest, z. B. 2.

9

Rufen Sie FB_SqlDbRequest mit den oben aufgeführten Einstellungen/Parametern/Variablen auf.

HINWEIS: Pro Funktionsbausteinaufruf kann nur jeweils ein Request gesendet werden.

Lesen von Daten mit einer Steuerung aus einer Datenbank über eine gesicherte TCP-Verbindung

Deklaration:

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

Implementierung:

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

Beschreibung der verwendeten Parameter

Schritt

Aktion

1

Legen Sie in ST_ExtendedConnectionSettings den Verbindungsnamen (wsDbConnectionName) fest, der im SQL Gateway konfiguriert ist, z. B. ConnectionCountry.

2

Stellen Sie in ST_ExtendedConnectionSettings die IP-Adresse (wsGwIpAddress) des PC ein, auf dem das SQL Gateway ausgeführt wird, z. B. 10.128.154.47.

3

Legen Sie in ST_ExtendedConnectionSettings den Port (wGwPort) des Gateways fest (Standard: 3458).

4

Stellen Sie in ST_ExtendedConnectionSettings das Timeout (timSqlTimeout) ein, z. B. T#5s.

5

Stellen Sie in ST_ExtendedConnectionSettings das Timeout (timSqlConnectionTimeout ) ein, z. B. T#10s.

6

Setzen Sie den Eingang i_etSqlRequest auf SE_SQL.ET_SqlRequest.Read.

7

Schreiben Sie Ihren Leserequest in refRequestWstring, z. B. SELECT * FROM world.countries.

8

Legen Sie in i_uiNumOfWstrings die Zeilen im Feld refRequestWstring fest, z. B. 1.

9

Geben Sie in i_refUserDatadas UserData-Array an.

10

Rufen Sie FB_SqlDbRequest mit den oben aufgeführten Einstellungen/Parametern/Variablen auf.

Erweiterte Einstellungen für den Datenpuffer / Request mit den globalen Parametern

HINWEIS: Die erweiterten Einstellungen können speziell für Ihr Projekt im Bibliotheksverwalter überschrieben werden.

Schritt

Aktion

1

Legen Sie in Gc_uiMaxRows die maximale Anzahl an Zeilen für das ARRAY of UserData fest (nur erforderlich für FB_SqlDbRead). Beispiel: 20.

Ergebnis: Aus der konfigurierten Datenbank können 20 Zeilen ausgelesen werden.

2

Legen Sie in Gc_uiMaxColumns die maximale Anzahl an Spalten für das ARRAY of UserData fest (nur erforderlich für FB_SqlDbRead). Beispiel: 10.

Ergebnis: Aus der konfigurierten Datenbank können 10 Spalten ausgelesen werden.

3

Legen Sie in Gc_uiTableWstringLength die maximale Anzahl an Zeichen im zweidimensionalen ARRAY of UserData fest (nur erforderlich für FB_SqlDbRead). Beispiel: 200.

Ergebnis: Ein Feld mit 200 Zeichen kann aus der konfigurierten Datenbank ausgelesen werden.

4

Legen Sie in Gc_uiMaxRequest die maximale Anzahl an Zeilen für das ARRAY of RequestWstring fest. Beispiel: 20.

Ergebnis: Der Request kann in 20 WSTRINGs-Zeilen aufgeteilt werden.

5

Legen Sie in Gc_uiRequestWstringLength die maximale Anzahl an Zeichen im ARRAY of RequestWstring fest. Beispiel: 200.

Ergebnis: Eine Request-Zeile kann 200 Zeichen umfassen.