Bibliotheken SQL - Client (sqlarchiv) Lesen und Schreiben von Werten aus / in SQL- Datenbank Datenarchivierung leicht gemacht Enthaltene Typen • • • • • • SQLputBool SQLputInt SQLputFloat SQLputDouble SQLputString SQLget Funktionsweise Diese Bibliothek ermöglicht als MySQL-Client einen lesenden und schreibenden Zugriff auf die plattformunabhängige SQL-Datenbank MySQL (http://www.tcx.se). Mit der Bibliothek können skalare Werte, die im iFBSpro in Form von Instanz-Ports zur Verfügung stehen, via Netzwerk in der Datenbank archiviert werden. Die Anzahl zu archivierender Zeitpunkte und Werte ist frei und online parametrierbar. Das Archiv ist als Umlaufpuffer realisiert. Zu der Datenbank existieren diverse Treiber, mit denen die Werte, z.B. mit MS Excel, ausgelesen und visualisiert werden können. Voraussetzungen • • In der MySQL-Datenbank müssen eine Database „ifbspro“ und ein Benutzer „ifbsproclient“ existieren, der in der Database „ifbspro“ vollen Zugriff auf Tabellen hat. Es muss eine Netzwerkverbindung (TCP/IP) zu dem Rechner bestehen, auf dem die MySQL-Datenbank verfügbar ist. Aufbau Inputs Hidden Outputs ____________________________________________ Hostname AnzW Float Count OldHost Out AnzVerb TabName ConnectOK Die genannten Namen sind eingetragene Warenzeichen der jeweiligen Hersteller ltspc01/fb_database/ TechUnits/SQL Hostname= ltspc10 Ö Tabellenname auf LTSPC10 in Datenbasis iFBSpro: ltspc03$database$SQL$FLOAT Funktion Parametrieren der Eingänge • Hostname Hostname des SQL-Servers Hier wird der Name des Rechners eingegeben, auf dem der MySQL-Server verfügbar ist. Der Hostname kann auch bei ausgeschalteter Instanz eingegeben werden. Beim Setzen des Hostnamens wird in der Datenbank auf dem entsprechenden SQL-Server eine Tabelle in der Database „ifbspro“ angelegt. Der Tabellenname setzt sich wie folgt zusammen: Hostname: Database: Path of Instanz: Type: Hostname iFBSpro-Server Datenbasis-Name iFBSpro-Server Pfad der Instanz im iFBSpro-Server Variablenart der Tabelle Durch diese Struktur lassen sich in einer SQL-Datenbank iFBSpro-Werte von verschiedenen iFBSpro-Servern und Datenbasen eineindeutig speichern. Beispiele: • 1. acplt/ks-Pfad der SQL-Instanz (Name: SQL, Typ: SQLputFloat) ltspc01/fb_database/ TechUnits/SQL Ö Tabellenname: ltspc01$database$SQL$FLOAT • 2. acplt/ks-Pfad der SQL-Instanz (Name: SQL, Typ: SQLputDouble) ltspc01/fb_demodb/ TechUnits/ TEST/testsql Ö Tabellenname: ltspc01$demodb$TEST_testsql$DOUBLE • AnzW Anzahl zu archivierender Zeitpunkte Mit diesem Parameter wird die "Tiefe" des Werte-Archivs gesetzt. Das Archiv ist als Umlaufpuffer realisiert, in dem die ältesten Werte überschrieben werden. Die Anzahl zu archivierender Zeitpunkte ist zur Laufzeit änderbar. Es können maximal 2.592.000 Zeitpunkte archiviert werden (1 Sekunden-Werte über 30 Tage) Beispiel: AnzW = 10 Es werden 10 Zeitpunkte in der Datenbank abgelegt. • Float Dieser Eingang dient als Referenz auf die zu archivierenden Werte. Wird von einem Instanzport eine Verbindung auf diesen Port gelegt, legt der SQL-Typ in der zugehörigen Tabelle eine Spalte an, in der die Werte dieses Ports archiviert werden. Die Verbindungen auf den Port der SQL-Instanz können ausgeschaltet bleiben. Es können mehrere Verbindungen auf diesen Port gelegt werden, so daß in einer Tabelle mehrere Spalten angelegt werden. Wird eine bestehende Verbindung auf den Eingangsport gelöscht, bleibt die entsprechende Spalte in der zugehörigen Tabelle bestehen. Beispiel • ACPLT/KS-Pfad der SQL-Instanz (Name: SQL, Typ: SQLputFloat) • • • ACPLT/KS-Pfad der 1. Instanz, von der der Port "OutS" archiviert werden soll: ltspc01/fb_database/TechUnits/Sinus.OutS ACPLT/KS-Pfad der 2. Instanz, von der der Port "OutS" archiviert werden soll: ltspc01/fb_database/TechUnits/Rampe.OutS ACPLT/KS-Pfad der 3. Instanz, von der der Port "out" archiviert werden soll: ltspc01/fb_database/TechUnits/Beispiel/Sum.out Existieren nun von den Instanzen/Ports 1-3 Verbindungen auf den Float-Port der SQL-Instanz, sieht die Tabelle auf dem SQL-Server wie folgt aus: > select * from LTSPC01$database$SQL$FLOAT; +---+-----------------------------+----------------+---------------+-----------------------+ | nr | time | Rampe1 | Sinus1 | Beispiel_Sum1 | | | | _OutS | _Out | _out | +---+-----------------------------+----------------+---------------+-----------------------+ | 1 | 2000-03-08 14:38:17 | 0.000000 | 5.157080 | 8.355160 | | 2 | 2000-03-08 14:38:18 | 2.000000 | 5.351120 | 5.039430 | | 3 | 2000-03-08 14:38:19 | 4.000000 | 7.320870 | 7.618470 | | 4 | 2000-03-08 14:38:20 | 6.000000 | 10.314000 | 11.871100 | | 5 | 2000-03-08 14:38:21 | 8.000000 | 13.187100 | 16.936899 | | 6 | 2000-03-08 14:38:22 | 10.000000 | 14.842900 | 21.644800 | | 7 | 2000-03-08 14:38:23 | 12.000000 | 14.648900 | 24.960600 | | 8 | 2000-03-08 14:38:14 | 6.000000 | 11.243400 | 17.243500 | | 9 | 2000-03-08 14:38:15 | 4.000000 | 9.686050 | 17.243500 | | 10 | 2000-03-08 14:38:16 | 2.000000 | 6.812880 | 13.063100 | +----+-----------------------------+---------------+---------------+-----------------------+ Hidden und Output-Ports • Count Gibt die aktuelle Zeilennummer an, in die die SQL-Instanz die Werte sichert • OldHost Interner Merker • Out Klartext - Meldungen • AnzVerv Anzahl der Verbindungen auf den Float-Port und damit Anzahl der archivierten Werte • TabName Name der Tabelle in der SQl-Datenbank • ConnectOK Status der Verbinding zum SQL-Server Parametrieren der Instanz • cyctime Die Werte werden mit der Cycletime in das SQL-Archiv geschreieben. Ist die Cycltime z.B. 1 Sec, werden die Werte jede Sekunde geschrieben. • iexreq Die interne Bearbeitungsanforderung sollte auf TRUE gesetzt werden. Bei iexreq = TRUE verhält sich die SQL-Instanz wie ein zyklisches Archiv. Ist iexreq = FALSE und die Verbindungen auf "Float" sind eingeschaltet, verhält sich die SQL-Instanz wie ein änderungsgetriebenes Archiv. . C:\_LTSoft\iFBSpro\info\iFBSpro_sqlarchiv.doc ____________________________________________________________________________________________________________ Geschäftsführer Bankverbindungen Tel. 02237/92869-0 J. Nagelmann Volksbank Kerpen, BLZ 370 691 41, Kto 200 631 9010 Fax 02273/92869-9 HRB 2456 http://www.ltsoft.de Amtsgericht Kerpen e-mail ltsoft @ ltsoft.de Bibliotheken SQL - Client (sqlarchiv) Lesen und Schreiben von Werten aus / in SQL- Datenbank Die genannten Namen sind eingetragene Warenzeichen der jeweiligen Hersteller