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)
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.
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. |
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. |
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. |