2 - Siemens Support

Werbung
Deckblatt
WinAC
Anbindung einer SQL-Datenbank
Anwenderdokumentation
V1.20  November 2009
Applikationen & Tools
Answers for industry.
Industry Automation und Drives Technologies Service & Support Portal
Dieser Beitrag stammt aus dem Internet Serviceportal der Siemens AG, Industry
Automation und Drives Technologies. Durch den folgenden Link gelangen Sie
direkt zur Downloadseite dieses Dokuments.
http://support.automation.siemens.com/WW/view/de/48354880
Bei Fragen zu diesem Beitrag wenden Sie sich bitte über folgende E-Mail-Adresse
an uns:
Copyright  Siemens AG 2009 All rights reserved
[email protected]
2
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
s
Copyright  Siemens AG 2009 All rights reserved
SIMATIC
WinAC Anbindung einer SQLDatenbank
Grundlegende
Informationen
1
Übersicht
2
Installation MySQL
3
Installation MsSQL
4
Funktionelle
Beschreibung
5
Detaillierte Beschreibung
der FBs
6
Anwendungsbeispiele
7
Fehlermeldungen
8
Abkürzungsverzeichnis
9
10
Historie
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
3
Gewährleistung und Haftung
Gewährleistung und Haftung
Hinweis
Die Applikationsbeispiele sind unverbindlich und erheben keinen Anspruch auf
Vollständigkeit hinsichtlich Konfiguration und Ausstattung sowie jeglicher
Eventualitäten. Die Applikationsbeispiele stellen keine kundenspezifischen
Lösungen dar, sondern sollen lediglich Hilfestellung bieten bei typischen Aufgabenstellungen. Sie sind für den sachgemäßen Betrieb der beschriebenen
Produkte selbst verantwortlich. Diese Applikationsbeispiele entheben Sie nicht
der Verpflichtung zu sicherem Umgang bei Anwendung, Installation, Betrieb und
Wartung. Durch Nutzung dieser Applikationsbeispiele erkennen Sie an, dass wir
über die beschriebene Haftungsregelung hinaus nicht für etwaige Schäden
haftbar gemacht werden können. Wir behalten uns das Recht vor, Änderungen
an diesen Applikationsbeispielen jederzeit ohne Ankündigung durchzuführen. Bei
Abweichungen zwischen den Vorschlägen in diesem Applikationsbeispiel und
anderen Siemens Publikationen, wie z.B. Katalogen, hat der Inhalt der anderen
Dokumentation Vorrang.
Für die in diesem Dokument enthaltenen Informationen übernehmen wir keine
Gewähr.
Copyright  Siemens AG 2009 All rights reserved
Unsere Haftung, gleich aus welchem Rechtsgrund, für durch die Verwendung der
in diesem Applikationsbeispiel beschriebenen Beispiele, Hinweise, Programme,
Projektierungs- und Leistungsdaten usw. verursachte Schäden ist ausgeschlossen,
soweit nicht z.B. nach dem Produkthaftungsgesetz in Fällen des Vorsatzes, der
groben Fahrlässigkeit, wegen der Verletzung des Lebens, des Körpers oder der
Gesundheit, wegen einer Übernahme der Garantie für die Beschaffenheit einer
Sache, wegen des arglistigen Verschweigens eines Mangels oder wegen
Verletzung wesentlicher Vertragspflichten zwingend gehaftet wird. Der Schadensersatz wegen Verletzung wesentlicher Vertragspflichten ist jedoch auf den
vertragstypischen, vorhersehbaren Schaden begrenzt, soweit nicht Vorsatz oder
grobe Fahrlässigkeit vorliegt oder wegen der Verletzung des Lebens, des Körpers
oder der Gesundheit zwingend gehaftet wird. Eine Änderung der Beweislast zu
Ihrem Nachteil ist hiermit nicht verbunden.
Weitergabe oder Vervielfältigung dieser Applikationsbeispiele oder Auszüge
daraus sind nicht gestattet, soweit nicht ausdrücklich von Siemens Industry Sector
zugestanden.
4
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
Inhaltsverzeichnis
Inhaltsverzeichnis
Gewährleistung und Haftung...................................................................................... 4
Einführung .................................................................................................................... 7
1
Grundlegende Informationen ........................................................................... 8
1.1
1.2
1.3
2
Übersicht ............................................................................................................ 9
2.1
2.2
Copyright  Siemens AG 2009 All rights reserved
3
4.2.4
4.2.5
4.3
4.3.1
4.3.2
4.4
Grundlagen......................................................................................... 40
Detaillierte Beschreibung der FBs................................................................. 42
6.1
6.2
6.3
6.4
7
Quickstart mit Beispiel-Projekt ........................................................... 23
Installation des MsSQL Servers und Wiederherstellen des Schemas23
Installieren der MsSQL-Datenbank .................................................... 23
Installation des Microsoft SQL Server Management Studio Express 26
Wiederherstellen des Beispielschemas mit dem SQL Server
Management Studio Express ............................................................. 26
Wichtige Servereinstellungen............................................................. 28
Erstellen einer Anmeldung zum SQL-Server ..................................... 30
Installation WinAC-Treiber auf Runtimerechner ................................ 32
Installation der DLL ............................................................................ 32
Installation und Parametrierung des ODBC-Treibers ........................ 32
Installation WinAC-Treiber auf SIMATIC Engineering Rechner......... 39
Funktionelle Beschreibung ............................................................................ 40
5.1
6
Quickstart mit Beispiel-Projekt ........................................................... 11
Installation des MySQL Servers und Wiederherstellen des Schemas11
Installieren der MySQL-Datenbank .................................................... 11
Wiederherstellen des Beispielschemas ............................................. 14
Installation der GUI-Tools .................................................................. 15
Erstellen eines Benutzers .................................................................. 17
Transaktionssichere Datenübertragung zum MySQL-Server ............ 19
Installation WinAC-Treiber auf Runtimerechner ................................ 19
Installation der DLL ............................................................................ 19
Installation und Parametrierung des ODBC-Treibers ........................ 19
Installation WinAC-Treiber auf SIMATIC Engineering Rechner......... 22
Installation MsSQL .......................................................................................... 23
4.1
4.2
4.2.1
4.2.2
4.2.3
5
Funktionsumfang.................................................................................. 9
Versionsstand des Treibers ................................................................. 9
Installation MySQL .......................................................................................... 11
3.1
3.2
3.2.1
3.2.2
3.2.3
3.2.4
3.2.5
3.3
3.3.1
3.3.2
3.4
4
Aufgabenstellung.................................................................................. 8
Erforderliche Kenntnisse ...................................................................... 8
Referenzsystem ................................................................................... 8
ODK-Initialisierungsbaustein.............................................................. 42
ODBC-Kommunikationsaufbau zur SQL-Datenbank ......................... 45
ODBC-Lese- und Schreibebaustein für SQL-Datenbank................... 49
ODBC-Baustein zum Schließen der Kommunikation......................... 57
Anwendungsbeispiele..................................................................................... 61
7.1
7.1.1
7.1.2
7.2
7.2.1
Verwenden vom STEP 7-Beispielprojekt ........................................... 61
Aufbau eines Anwenderprogramms................................................... 61
Absetzten einer SELECT-Anweisung mit der Variablentabelle
“Steuern“ ............................................................................................ 62
Anpassen des STEP 7 Beispiels an eigene Anforderungen.............. 62
Andere SQL-Anweisungen als im Beispielprojekt.............................. 62
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
5
Inhaltsverzeichnis
8
Fehlermeldungen............................................................................................. 63
8.1
8.1.1
8.1.2
8.2
8.2.1
8.2.2
8.2.3
8.2.4
Fehlermeldungen vom WinAC ODK 4.1 ............................................ 63
Fehlermeldungen für SFB65001 → STATUS_ODK_CREA_CON .... 63
Fehlermeldungen für SFB65002 STATUS_ODK_CON/EXEC .......... 64
Spezielle Fehlermeldungen des SQL-DB Treibers ............................ 64
ODK-Function Returns ....................................................................... 64
Function-Code Numbers .................................................................... 66
ODBC-Function Errors ....................................................................... 67
SQL-Statements................................................................................. 67
Abkürzungsverzeichnis .................................................................................. 71
10
Historie.............................................................................................................. 72
Copyright  Siemens AG 2009 All rights reserved
9
6
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
0 Einführung
Einführung
Ziel der Applikation:
Copyright  Siemens AG 2009 All rights reserved
Dieses Dokument beschreibt den WinAC Treiber für eine SQLDatenbankanbindung über einen ODBC-Treiber an die WinAC RTX.
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
7
1 Grundlegende Informationen
1
Grundlegende Informationen
1.1
Aufgabenstellung
Entwicklung eines WinAC RTX Treibers für eine direkte Verbindung zu einer SQL
Datenbank.
Es können vier (SELECT, UPDATE, INSERT, DELETE) SQL-Anweisungen in
beliebiger sinnvoller Reihenfolge abgesetzt werden.
Dieses Dokument beschreibt wie mit Hilfe des Treibers SQL-Anweisungen an den
SQL-Server abgesetzt und Daten abgeholt werden können.
Grundsätzlich kann der Treiber für Datenbanken mit einem ODBC-Treiber
verwendet werden.
Hinweis
Copyright  Siemens AG 2009 All rights reserved
1.2
Erforderliche Kenntnisse
Für das Verständnis der vorliegenden Dokumentation wird die Kenntnis der
folgenden Unterlagen vorausgesetzt.
Tabelle 1-1 Vorausgesetzte Dokumente
Kentnisse
1.3
8
Dokument
STEP 7
S7prv54_d.pdf
MsSQL
http://technet.microsoft.com/dede/library/ms165706.aspx
MySQL
DokuMySQL-5.1-de.a4.pdf
Referenzsystem

SIMATIC Microbox PC 427B (1 GHz, 512 MB RAM, 1 GB Flash) mit Windows
XP embedded SP2

WinAC RTX 2009

SIMATIC NET V6.3 + HF1

STEP 7 V5.4 + SP4

SQL-Server odbc 03.85.1117

Microsoft SQL 2005 Server Express Edition-Version 9.00.1399.06.06

SQL Server Management Studio Express

mysql-connector-odbc-3.51.14-win32

mysql-5.0.37-win32

mysql-gui-tools-5.0-r11a-win32
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
2 Übersicht
2
Übersicht
2.1
Funktionsumfang
Folgende Funktionen der SQL-Datenbankverbindung werden mit Hilfe des Treibers
unterstützt:


2.2
Übermitteln von SQL-Anweisungen mit flexiblen Argumenten
mögliche Anweisungen:
–
SELECT
–
INSERT
–
UPDATE
–
DELETE
Empfangen von gelesen Daten aus SQL-Datenbank
Versionsstand des Treibers
Treiber-Version unter Windows ermitteln
Copyright  Siemens AG 2009 All rights reserved
Die registrierte Treiber-DLL liegt im Systemverzeichnis, z.B.
C:\WINNT\system32\dll oder
C:\Windows\system32\dll
Die Version der Treiber-DLL kann man im Windows-Explorer über die
Dateieigenschaften erfahren (rechte Maustaste  Eigenschaften).
Abbildung 2-1 Versionsstand der Treiber- DLL
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
9
2 Übersicht
Treiber-Version im STEP 7 Projekt ermitteln
Im Instanz-DB von SQL_CON (DBI_SQL_CON) kann die Version der STEP 7Bausteine ermittelt werden:
Version der STEP 7-Treiber-SW
Copyright  Siemens AG 2009 All rights reserved
C_IF.STEP 7_VERSION
10
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
3 Installation MySQL
3
Installation MySQL
3.1
Quickstart mit Beispiel-Projekt


Copyright  Siemens AG 2009 All rights reserved

Datenbankserver
–
Installieren des Datenbanksystems MySQL auf dem Datenbankserver
–
Installieren der mysql-gui-tools
–
Wiederherstellung des Scales Machine Schemas in der MySQLDatenbank
–
Erstellen einer SQL Server-Anmeldung
Runtime-System
–
Installieren der DLL mit der DLL_Install.bat-Datei auf dem Runtime-System
–
Installieren des MyODBC-Treibers auf dem Runtime-System
–
Parametrieren des auf dem Runtime-System installierten ODBC-Treibers
auf die Scales Machine Datenbank
SIMATIC Engineering Rechner
–
Dearchivieren des MySQL_BspPrj STEP 7-Projektes auf dem SIMATIC
Engineering Rechner
–
Anpassen der ODBC-Verbindungsdaten im DB10
–
Übertragen des STEP 7-Projekts in WinAC RTX (Runtime-System)
Optional können die mysql-gui-toolsMySQL-5.0-r11a-win32 installiert werden.
3.2
Installation des MySQL Servers und Wiederherstellen
des Schemas
3.2.1
Installieren der MySQL-Datenbank
Auf dem Datenbankserver wird das Datenbanksystem “mysql-5.0.37-win32“
installiert. Um die Datenbank zu installieren, wird die gepackte Datei “mysql-5.0.37win32.zip“ entpackt und die Setup.exe ausgeführt. Während der Installation wird
der Setup-Type “Typical“ oder “Complete“ ausgewählt. Nach der Installation wird
gefragt, ob ein MySQL-Account erzeugt werden soll. Ausgewählt wird “Skip SignUp“.
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
11
3 Installation MySQL
Copyright  Siemens AG 2009 All rights reserved
Abbildung 3-1 Skip MySQL-Account
Anschließend kann der MySQL-Server konfiguriert werden. Für das
Applikationsbeispiel wird die Standardkonfiguration ausgewählt.
Abbildung 3-2 MySQL Konfiguration
Danach wird die Server-Instanzkonfiguration durchgeführt. Im folgenden Bild sind
die entsprechenden Einstellungen für die Beispielapplikation gezeigt.
12
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
3 Installation MySQL
Copyright  Siemens AG 2009 All rights reserved
Abbildung 3-3 Server Instanz Konfigurationen
Im nächsten Bild kann ein root-Passwort für den Server vergeben werden.
Im Anschluss werden die durchgeführten Konfigurationen von der Datenbank
ausgeführt.
Nach der Installation wird ein MySQL Command Line Client zur Verfügung gestellt,
um die Datenbank Administrieren und SQL-Anweisungen übergeben zu können.
Für eine grafische Administration, d.h. erstellen und verwalten von Datenbanken,
können die MySQL GUI Tools verwendet werden (siehe Installationen auf dem
SIMATIC Engineering Rechner).
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
13
3 Installation MySQL
3.2.2
Wiederherstellen des Beispielschemas
Um das gespeicherte Projekt wieder in die Datenbank einzufügen, wird der MySQL
Administrator ausgeführt. Um eine Verbindung zum MySQL-Server aufzubauen,
wird zuerst nach den Login-Daten gefragt. Im folgenden Bild ist ein Beispiel für
eine “localhost“-Verbindung dargestellt.
Copyright  Siemens AG 2009 All rights reserved
Abbildung 3-4 MySQL Administrator localhost Verbindung
Im nächsten Bild wird eine Verbindung über TCP/IP dargestellt. Es ist zu beachten,
dass bestimmte Administrationen nur über “localhost“ möglich sind.
Abbildung 3-5 MySQL Administrator TCP/IP Verbindung
14
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
3 Installation MySQL
Im nächsten Schritt öffnet sich das Fenster für die Datenbankadministration. Für
eine Wiederherstellung wird der entsprechende Reiter benutzt. Anschließend wird
über “Datei öffnen“ die Datei “Scales_MachineV1.0.sql“ aus dem Beispielprojekt
ausgewählt und geöffnet. Die Wiederherstellung wird mit der Schaltfläche „Starten“
initiiert.
Copyright  Siemens AG 2009 All rights reserved
Abbildung 3-6 MySQL Wiederherstellung
3.2.3
Installation der GUI-Tools
Damit das Beispielprojekt verwendet werden kann, müssen zusätzliche
Administrierungstools der MySQL-Datenbank installiert werden. Um die Tools zu
installieren wird die Datei “mysql-gui-toolsMySQL-5.0-r11a-win32.msi“ ausgeführt.
Nach der Installation stehen vier Programme zur Datenbankanwendung zur
Verfügung.

MySQL Administrator

MySQL Migration Toolkit

MySQL Query Browser

MySQL System Tray Monitor
Mit dem MySQL Administrator kann die Administration der Datenbank erfolgen.
Mit dem MySQL Migration Toolkit können unterschiedliche Schemas und Daten in
MySQL-Datenbanken migriert werden.
Der Browser wird verwendet, um unter Anderem Daten in einer Tabelle grafisch
darzustellen.
Mit dem System Tray Monitor können verschiedene Laufzeitereignisse dargestellt
und die Serverinstanz ein- und ausgeschaltet werden.
Um die GUI-Tools zu installieren, wird die Datei “mysql-gui-toolsMySQL-5.0-r11awin32.msi“ ausgeführt. Nachdem der Installationspfad ausgewählt wurde, kann
zwischen einer vollständigen oder einer benutzerdefinierten Installation
entschieden werden.
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
15
3 Installation MySQL
Copyright  Siemens AG 2009 All rights reserved
Abbildung 3-7 Auswahl der Installationsart
Wenn die benutzerdefinierte Installation gewählt wird, können einzelne Tools
abgewählt werden. Es wird jedoch empfohlen alle Tools zu installieren.
Abbildung 3-8 GUI-Komponenten
Nachdem die Installation abgeschlossen wurde, sollte der MySQL System Tray
Monitor in den Autostart gelegt werden, um die Datenbank über das Icon in der
Taskleiste starten und stoppen zu können.
16
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
3 Installation MySQL
3.2.4
Erstellen eines Benutzers
Um eine Verbindung zur Datenbank über TCP/IP zu erstellen, muss ein Benutzer
mit zugewiesenen Rechten angelegt werden. Um einen Benutzer anlegen zu
können, muss auf der Entwicklungsumgebung zuerst die MySQL-GUI Tools
installiert worden sein (siehe Kapitel 3.2.3).
Als erstes wird der MySQL Administrator gestartet. Unter der Benutzerverwaltung
kann ein neuer Benutzer mit dem Taste “Neuen Nutzer anlegen“ angelegt werden.
Copyright  Siemens AG 2009 All rights reserved
Abbildung 3-9 Benutzer anlegen
Um den Benutzer in die Datenbank zu übernehmen wird die Taste Anwenden
benutzt.
Unter dem Reiter Schema-Berechtigungen müssen dann die Zugriffsrechte der
Schemata für den entsprechenden Benutzer parametriert werden.
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
17
3 Installation MySQL
Copyright  Siemens AG 2009 All rights reserved
Abbildung 3-10 Schema Berechtigungen
Unter dem Reiter Ressourcen können die Benutzerressourcen beschränkt werden.
Abbildung 3-11 Benutzerressourcen
18
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
3 Installation MySQL
3.2.5
Transaktionssichere Datenübertragung zum MySQL-Server
Standardmäßig läuft MySQL im Autocommit-Modus. Das bedeutet, dass, sobald
eine Anweisung ausgeführt wird, die eine Tabelle aktualisiert (also ändert), MySQL
diese Änderung auf der Festplatte speichert.
Wenn aber mit Transaktionssicherer Datenübertragung und Sperrbefehlen
gearbeitet werden sollen, wird auf das Kapitel in der MySQL-Dokumentation
“Transaktionale und Sperrbefehle von MySQL“ verwiesen.
3.3
Installation WinAC-Treiber auf Runtimerechner
3.3.1
Installation der DLL
Die Installation des WinAC Treibers für die SQL-Datenbankverbindung beschränkt
sich auf das Ausführen der DLL-Install.bat. Die DLL muss sich bei der Installation
im selben Verzeichnis wie die bat-Datei befinden.
Zusätzlich muss der MyODBC-Treiber installiert und parametriert werden.
Copyright  Siemens AG 2009 All rights reserved
3.3.2
Installation und Parametrierung des ODBC-Treibers
Der ODBC-Treiber wird verwendet, um die Verbindung zur SQL-Datenbank
herzustellen. Der Treiber wird mit der “mysql-connector-odbc-3.51.14-win32“Installationsdatei installiert. Während der Installation wird der Setup-Typ “Typical“
oder “Complete“ ausgewählt. Nach der vollständigen Installation des MyODBCTreibers muss die Datenbankschnittstelle parametriert werden. Unter
Systemsteuerung\Verwaltung\Datenquellen(ODBC) befindet sich die ODBC
Administration. Diese befindet sich auf einem englisch eingerichteten
Betriebssystem unter Start -> Settings -> Control Panel -> Administrative Tools ->
Data Sources (ODBC). In der Rubrik “System DSN“ können neue Schnittstellen
erstellt werden. Es ist vorteilhaft die ODBC-Parametrierung erst nach der
Erstellung der SQL-Datenbank durchzuführen. Es folgt die Beschreibung für die
ODBC-Parametrierung.
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
19
3 Installation MySQL
Copyright  Siemens AG 2009 All rights reserved
Abbildung 3-12 ODBC-Schnittstelle erstellen
Wie im Bildausschnitt zu erkennen ist, sind schon mehrere parametrierte
Schnittstellen vorhanden. Um eine neue hinzuzufügen, wird die Taste “Add“
gedrückt.
Im folgenden Menü können verschieden Treiber ausgewählt werden. In unserer
Anwendung wird ein MySQL ODBC 3.51 Driver verwendet.
Abbildung 3-13 ODBC-Treiber auswählen
20
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
3 Installation MySQL
Im anschließenden Fenster werden die benötigten Parametrierungen
vorgenommen. Hier wird der Data Source Name, Server, User, Passwort vergeben
und die Datenbank ausgewählt. Jetzt ist der Grund ersichtlich, weshalb die
Datenbank als erstes erstellt werden soll, denn der Treiber schlägt direkt nach, was
für Datenbanken bereitgestellt werden. Anschließend wird getestet, ob die
Verbindung aufgebaut werden kann. Im folgenden Bild ist eine
Beispielparametrierung für eine “localhost“ Anwendung.
Copyright  Siemens AG 2009 All rights reserved
Abbildung 3-14 ODBC Treiber (localhost) parametrieren
Im nächsten Bild wird der ODBC-Treiber für eine TCP/IP Verbindung parametriert.
ACHTUNG
Um über TCP/IP auf die SQL-Datenbank zuzugreifen, muss vorher ein
Benutzer im DBMS angelegt werden, der in diesem Fall unter den Namen
“WinAC“ erstellt worden ist (siehe Kapitel 3.2.3).
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
21
3 Installation MySQL
Copyright  Siemens AG 2009 All rights reserved
Abbildung 3-15 ODBC-Treiber (TCP/IP) parametrieren
3.4
Installation WinAC-Treiber auf SIMATIC Engineering
Rechner
Auf dem SIMATIC Engineering Rechner werden diese Dokumentation sowie das
STEP 7-Beispielprojekt benötigt. Diesem Demo-Projekt können die erforderlichen
FBs für das STEP 7-Programm des Anwenders entnommen werden.
ACHTUNG
Es müssen die ODBC-Verbindungsdaten im STEP 7-Projekt im DB10
angepasst werden (DSN, User, Passwort). Diese Parameter müssen
angegeben werden, da mehrere ODBC-Verbindungen parametriert werden
können. Bei der Namensvergebung ist auf Groß- und Kleinschreibung zu
achten.
13h – UDP unterstützt.
22
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
4 Installation MsSQL
4
Installation MsSQL
4.1
Quickstart mit Beispiel-Projekt


Copyright  Siemens AG 2009 All rights reserved

Datenbankserver
–
Installieren des Datenbanksystems MsSQL auf dem Datenbankserver
–
Installieren des Microsoft SQL Server Management Studio Express
–
Wiederherstellung des Scales Machine Schemas in der MsSQLDatenbank
–
Erstellen einer SQL Server-Anmeldung
Runtime-System
–
Installieren der DLL mit der DLL_Install.bat-Datei auf dem Runtime-System
–
Parametrieren des SQL-Server ODBC-Treibers auf die Scales Machine
Datenbank
SIMATIC Engineering Rechner
–
Dearchivieren des MSSQL_BspPrj STEP 7-Projektes auf dem SIMATIC
Engineering Rechner
–
Anpassen der ODBC-Verbindungsdaten im DB10
–
Übertragen des STEP 7-Projekts in WinAC RTX (Runtime-System)
Für eine grafische Parametrierung der MsSQL Datenbank kann das SQL Server
Management Studio Express verwendet werden.
4.2
Installation des MsSQL Servers und Wiederherstellen
des Schemas
4.2.1
Installieren der MsSQL-Datenbank
Auf dem Datenbankserver wird das Datenbanksystem “Microsoft SQL 2005 Server
Express Edition“ installiert. Um die Datenbank zu installieren, wird die Datei
SQLEXPR_GER.exe ausgeführt. In dem Fenster Featureauswahl werden die
Programmfeatures, wie in Abbildung 3-1 dargestellt, ausgewählt.
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
23
4 Installation MsSQL
Copyright  Siemens AG 2009 All rights reserved
Abbildung 4-1 Featureauswahl
Der Instanzname wird für das Beispielprojekt beibehalten.
Abbildung 4-2 Instanzname
24
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
4 Installation MsSQL
Bei den Dienstkontoeinstellungen wird der Netzwerkdienst ausgewählt. Bei den zu
startenden Diensten wird nur der SQL-Server für das Beispielprojekt benötigt.
Copyright  Siemens AG 2009 All rights reserved
Abbildung 4-3 Dienstkonto
Für den Authentifizierungsmodus wird der gemischte ausgewählt, sodass eine
Windows sowie eine Server Authentifizierung möglich ist. Jetzt muss noch eine
Kennwortvergabe erfolgen für den Standardbenutzernamen “sa“.
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
25
4 Installation MsSQL
Copyright  Siemens AG 2009 All rights reserved
Abbildung 4-4 Authentifizierungsmodus
Die folgenden Installationsschritte können ohne Änderungen übernommen werden.
Nach der Installation kann über die Eingabeaufforderung von DOS mit dem Tool
SQLCMD eine Konsole geöffnet werden, mit dem die Datenbank Administriert
werden kann. Für eine grafische Administration, d.h. erstellen und verwalten von
Datenbanken, kann das SQL Server Management Studio Express verwendet
werden.
4.2.2
Installation des Microsoft SQL Server Management Studio Express
Für die Installation vom Microsoft SQL Server Management Studio Express wird
die Datei SQLServer2005_SSMSEE.msi benötigt. Zum installieren wird die Datei
ausgeführt und die folgenden Installationsschritte durchgeführt.
4.2.3
Wiederherstellen des Beispielschemas mit dem SQL Server
Management Studio Express
Um die gespeicherte Datenbank wiederherzustellen, wird das SQL Server
Management Studio Express gestartet. Localhost wird sich im WindowsAuthentifizierungsmodus angemeldet, ein Kennwort wird nicht benötigt. Zunächst
muss eine neue Datenbank mit dem Namen “scales_machine_mig“ angelegt
werden. Anschließend wird mit einem Rechtsklick auf den Ordner der neu
angelegten Datenbank unter Tasks -> Wiederherstellen -> Datenbank die
archivierte Datenbank wieder
hergestellt. Das folgende Bild veranschaulicht die Einstellungen.
26
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
4 Installation MsSQL
Copyright  Siemens AG 2009 All rights reserved
Abbildung 4-5 Datenbank Wiederherstellung
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
27
4 Installation MsSQL
4.2.4
Wichtige Servereinstellungen
Copyright  Siemens AG 2009 All rights reserved
Nachdem der MsSQL Server Express installiert wurde, müssen im SQL Server
Configuration Manager Einstellungen vorgenommen werden. Der Configurations
Manager wird unter Start -> Programme -> Microsoft SQL Server 2005 ->
Konfigurationstools gestartet.
Unter SQL Server 2005-Dienste kann eingesehen werden welche Dienste gestartet
wurden sind. Bei dem verwendeten Beispielprogramm, benötigen wir
ausschließlich den SQL Server Dienst.
28
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
4 Installation MsSQL
Copyright  Siemens AG 2009 All rights reserved
Unter der SQL Server 2005-Netzwerkkonfiguration erscheinen die verfügbaren
Protokolle. Da über TCP/IP eine Verbindung aufgebaut werden soll, muss der
entsprechende Dienst parametriert werden. Dies geschieht mit einem rechten
Mausklick -> Eigenschaften.
Unter dem Reiter IP-Adressen werden alle Felder für Dynamische TCP-Ports
gelöscht und in den Feldern TCP-Ports wird der Port 2301 eingetragen.
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
29
4 Installation MsSQL
Copyright  Siemens AG 2009 All rights reserved
Nach dem bestätigen der Einstellungen muss das Protokoll aktiviert und der SQLServer neu gestartet werden.
4.2.5
Erstellen einer Anmeldung zum SQL-Server
Die Verbindung zum SQL-Server kann über die Windows-Authentifizierung oder
über eine SQL Server-Authentifizierung erfolgen. Für eine Remote-Verbindung
über TCP/IP wird die SQL Server-Authentifizierung benötigt. Dafür muss eine
Benutzeranmeldung erstellt werden.
Um eine Anmeldung zu erstellen, wird das SQL Server Management Studio
Express geöffnet und sich mit der Windows-Authentifizierung angemeldet. Im
linken Teil des Fensters wird der Ordner Sichert geöffnet und mit einem rechten
Mausklick auf Anmeldung -> neue Anmeldung eine neue Anmeldung erstellt.
Im geöffneten Fenster muss die SQL Server-Authentifizierung angewählt werden.
Anschließend werden Anmeldename und Kennwort vergeben. Als Standard
Datenbank wird im Beispielprojekt die wiederhergestellte Datenbank ausgewählt.
30
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
Copyright  Siemens AG 2009 All rights reserved
4 Installation MsSQL
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
31
4 Installation MsSQL
Copyright  Siemens AG 2009 All rights reserved
Unter dem Reiter Benutzerzuordnung muss für die Standard Datenbank noch die
jeweiligen Rechte vergeben werden um Zugriff zu erhalten. Abschließend wird auf
OK gedrückt um die neue Anmeldung zu erstellen.
4.3
Installation WinAC-Treiber auf Runtimerechner
4.3.1
Installation der DLL
Die Installation des WinAC Treibers für die SQL-Datenbankverbindung beschränkt
sich auf das Ausführen der DLL-Install.bat. Die DLL muss sich bei der Installation
im selben Verzeichnis wie die bat-Datei befinden.
Zusätzlich muss der SQL-Server ODBC-Treiber parametriert werden.
4.3.2
Installation und Parametrierung des ODBC-Treibers
Der ODBC-Treiber wird verwendet, um die Verbindung zur SQL-Datenbank
herzustellen. Unter Systemsteuerung\Verwaltung\Datenquellen(ODBC) befindet
sich die ODBC Administration. Diese befindet sich auf einem englisch
eingerichteten Betriebssystem unter Start -> Settings -> Control Panel ->
Administrative Tools -> Data Sources (ODBC). In der Rubrik “System DSN“
können neue Schnittstellen erstellt werden. Es ist vorteilhaft die ODBCParametrierung erst nach der Erstellung der SQL-Datenbank durchzuführen. Es
folgt die Beschreibung für die ODBC-Parametrierung.
32
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
4 Installation MsSQL
Copyright  Siemens AG 2009 All rights reserved
Abbildung 4-6 ODBC-Schnittstelle erstellen
Wie im Bildausschnitt zu erkennen, sind schon mehrere parametrierte
Schnittstellen vorhanden. Um eine neue hinzuzufügen, wird die Taste “Add“
gedrückt.
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
33
4 Installation MsSQL
Im folgenden Menü können verschieden Treiber ausgewählt werden. In unserer
Anwendung wird der SQL Server verwendet.
Copyright  Siemens AG 2009 All rights reserved
Abbildung 4-7 ODBC-Treiber auswählen
Im anschließenden Fenster werden die benötigten Parametrierungen
vorgenommen. Hier wird der Data Source Name, die Beschreibung und der Server
eingetragen.
Abbildung 4-8 ODBC Treiber (TCP_IP) parametrieren
34
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
4 Installation MsSQL
Im nächsten Bild wird als Authentizität für den SQL-Server die
Benutzername/Kennwort Anmeldung ausgewählt. Anschließend muss der
Benutzername und das Kennwort eingetragen werden, um eine Anmeldung zu
ermöglichen. Als Benutzernamen wird der bereits im Kapitel 3.2.5 erstellte
Anmeldename verwendet.
Da vorher im SQL Server Configuration Manager in den Einstellungen des TCP/IP
Protokolls ein fester Port eingetragen wurde, muss hier in den
Clientkonfigurationen auch der Port 2301 festgelegt werden.
Copyright  Siemens AG 2009 All rights reserved
Abbildung 4-9 Serveranmeldung
ACHTUNG
Um über TCP/IP auf die SQL-Datenbank zuzugreifen, muss vorher ein
Benutzer im DBMS angelegt werden.
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
35
4 Installation MsSQL
In den nächsten zwei Schritten können die Einstellungen für das Beispielprojekt
ohne Veränderungen übernommen werden.
Copyright  Siemens AG 2009 All rights reserved
Abbildung 4-10 DSN Konfigurationen
Abbildung 4-11 DSN Spracheinstellungen
36
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
4 Installation MsSQL
Nach abgeschlossener Parametrierung wird eine Zusammenfassung der ODBCKonfigurationen angezeigt, in der die Verbindung zum SQL-Server gestestet
werden kann.
Copyright  Siemens AG 2009 All rights reserved
Abbildung 4-12 DSN Zusammenfassung
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
37
4 Installation MsSQL
Anschließend werden die Testergebnisse in einem Fenster angezeigt.
Copyright  Siemens AG 2009 All rights reserved
Abbildung 4-13 DSN Test
38
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
4 Installation MsSQL
4.4
Installation WinAC-Treiber auf SIMATIC Engineering
Rechner
Auf dem SIMATIC Engineering Rechner werden diese Dokumentation sowie das
STEP 7-Beispielprojekt benötigt. Diesem Demo-Projekt können die erforderlichen
FBs für das STEP 7-Programm des Anwenders entnommen werden.
Es müssen die ODBC-Verbindungsdaten im STEP 7-Projekt im DB10
angepasst werden (DSN, User, Passwort). Diese Parameter müssen
angegeben werden, da mehrere ODBC-Verbindungen parametriert werden
können. Bei der Namensvergebung ist auf Groß- und Kleinschreibung zu
achten.
Copyright  Siemens AG 2009 All rights reserved
ACHTUNG
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
39
5 Funktionelle Beschreibung
5
Funktionelle Beschreibung
Nach der Installation wird in diesem Kapitel grob auf den Aufbau der Verbindung
zum SQL-Datenbankserver und die möglichen Funktionen eingegangen.
5.1
Grundlagen
Für die Verwendung einer SQL-Datenbank in der WinAC RTX stehen vier
Funktionsbausteine zur Verfügung. Mit diesen Funktionsbausteinen wird:
Copyright  Siemens AG 2009 All rights reserved
ACHTUNG

die DLL in den Adressraum der WinAC RTX geladen

erforderliche Daten initialisiert

die Verbindung zum SQL-Server aufgebaut

SQL-Anweisungen übertragen

eventuell abgerufene Daten bereitgestellt

die Datenbankverbindung geschlossen.
Um mögliche Pufferüberläufe zu vermeiden, muss die SQL-Datenbank
immer mit dem entsprechenden Funktionsbaustein geschlossen werden.
Dies sollte auch im Fehlerfall gegeben sein.
Die aufgelisteten Funktionen werden den Funktionsbausteinen wie in folgender
Tabelle zugeordnet:
40
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
5 Funktionelle Beschreibung
Tabelle 5-1 Übersicht der FBs
Bild
Name
SQL_INIT
Copyright  Siemens AG 2009 All rights reserved
SQL_CON
SQL_EXEC
SQL_DISCON
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
Funktion

DLL in Adressraum der
WinAC RTX laden

initialisieren der
erforderlichen Daten

Verbindung zum SQLServer aufbauen

SQL-Anweisungen
übertragen

Eventuell abgerufene
Daten bereitstellen

Datenbankverbindung
schließen
41
6 Detaillierte Beschreibung der FBs
6
Detaillierte Beschreibung der FBs
6.1
ODK-Initialisierungsbaustein
Der ODK-Initialisierungsbaustein ist der erste Baustein, der in der Schrittkette
durchlaufen werden muss. Er lädt die DLL-Datei in den Adressraum der WinAC
RTX und verteilt das zurück gelieferte Handle an die anderen ODBC-FBs.
Außerdem initialisiert er alle Fehlerspeicher und remanenten Daten in den
verschiedenen Instanzdatenbausteinen (DI) der ODBC-FBs, einschließlich des
eigenen DIs. Der Initialisierungsbaustein und der FB, der die Verbindung zum
SQL-Server herstellt, wurden beabsichtigt getrennt. Der Vorteil der Trennung ist
eine bessere Auswertung der in der Schrittkette auftretenden Fehler. Es kann der
Fall auftreten, dass die DLL bereits in den Adressbereich der WinAC geladen
wurde, aber die SQL-Serververbindung unterbrochen wird und wiederholt
aufgebaut werden muss. Die DLL muss nach der erfolgreichen Handle-Rückgabe
an den CREA_COM nicht noch einmal in den Adressraum geladen werden,
lediglich die Verbindung zum SQL-Server muss neu hergestellt werden.
Copyright  Siemens AG 2009 All rights reserved
Um sicher zu stellen, dass der SQL_INIT nur einmal am Anfang durchlaufen wird,
sollte dieser Baustein vom OB100 (zuständig für den Warmstart in der WinAC) aus
aufgerufen werden.
Abbildung 6-1 ODK-Initialisierung
SQL_INIT
42
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
6 Detaillierte Beschreibung der FBs
Bevor genauer auf den syntaktischen Teil des Bausteins eingegangen wird,
werden zuerst die Schnittstellen beschrieben.
Eingangsparameter SQL_INIT

Übergabe der Instanzdatenbausteinnummer
Die folgenden DI-Eingänge müssen die DI-Nummern von den drei anderen
Funktionsbausteinen, die zu den ODBC-FBs gehören, zugewiesen bekommen,
damit der SQL_INIT erkennt, welche DIs initialisiert werden müssen.

First Call
Mit dem First_Call wird bestimmt, ob ein Handle für den
Kommunikationsaufbau generiert werden muss oder ob lediglich die
Datenbausteine neu initialisiert werden sollen.
Ausgangsparameter SQL_INIT

Status des CREA_COM
Copyright  Siemens AG 2009 All rights reserved
Der Ausgang STATUS_ODK_CREA_COM liefert die Handle-Nummer oder bei
einem fehlgeschlagenem Aufbau einen entsprechenden Fehlercode zurück.
Der Fehlercode ist in dem WinAC ODK User Manual hinterlegt und kann dort
nachgeschlagen werden. Das Datenformat der Ausgangsvariable muss WORD
entsprechen.

ERROR
Das ERROR-Bit gibt an, ob der SQL_INIT erfolgreich durchlaufen oder mit
einem Fehler unterbrochen wurde. Bei Ausgabe von TRUE ist im Durchlauf ein
Fehler aufgetreten.
In dem folgendem Blockdiagramm wird der syntaktische Ablauf dargestellt.
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
43
6 Detaillierte Beschreibung der FBs
Abbildung 6-2 Ablaufplan vom SQL_INIT
Aufruf von SQL_INIT
Copyright  Siemens AG 2009 All rights reserved
TRUE
First Call
FALSE
Init Handles
von allen DIs
Alle Daten der
DIs
initialisieren
Init Status von
CREA COM
BEA
Handle erzeugen
DLL initialisieren
Handle erzeugt
Handles auf
DIs verteilen
Status
CREA_COM
Handle Error
BEA
Alle Daten der
DIs
initialisieren
BEA
44
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
6 Detaillierte Beschreibung der FBs
6.2
ODBC-Kommunikationsaufbau zur SQL-Datenbank
Der ODBC-Con_SQL_DB-Funktionsbaustein ist zuständig für den Aufbau zur
ODBC-Schnittstelle. Er wird aufgerufen, um eine Verbindung zu einem MySQLDBMS herzustellen. Er wird in der Schrittkette vor dem Aufbau zum DBMS nur
einmal aufgerufen. Ist die Verbindung erfolgreich aufgebaut, wird der Baustein erst
wieder durchlaufen, nachdem die Verbindung zum DBMS unterbrochen oder
getrennt wird. Um eine Verbindung zu einem DBMS herzustellen, müssen SystemDSN, User-Name und Passwort übergeben werden. Dies erfolgt über einen DB,
der diese Daten in String-Form hinterlegt hat. Der Baustein wird asynchron zum
laufenden SPS-Zyklus abgearbeitet, d.h. es wird ein Thread angestoßen, der nach
einer festgelegten Zeit (Timeout) die Verbindung aufgebaut haben muss. Da ein
Verbindungsaufbau zum Server über eine TCP/IP Verbindung zeitlich stark
fluktuieren kann, aber der SPS-Zyklus keine längeren Zeiträume unterbrochen
werden darf, ist es vorteilhaft die Abarbeitung des SQLDatenbankverbindungsaufrufs in einer asynchronen Abarbeitung zum SPS-Zyklus
zu durchlaufen.
Copyright  Siemens AG 2009 All rights reserved
Hinweis
Eine SQL-Datenbankverbindung wird unterstützt. Bei einem erneuten
Verbindungsaufbau erfolgt eine Fehlermeldung.
Abbildung 6-3 ODBC Connection-Baustein
SQL_CON
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
45
6 Detaillierte Beschreibung der FBs
Bevor genauer auf den syntaktischen Teil des Bausteins eingegangen wird,
werden zuerst die Schnittstellen beschrieben.
Der EN-Eingang und der ENO-Ausgang werden nicht parametriert.
ACHTUNG
Eingangsparameter SQL_CON

REQ
Der Eingang REQ ist der Ein- und Aus-Schalter am FB. Liegt eine logische
Eins an dem Eingang an, wird der Baustein durchlaufen.

Timeout
An diesen Eingang wird ein Integer-Wert gelegt, der die maximale asynchrone
Bearbeitungszeit des Bausteins in Sekunden angibt.

ODBC Parameterübergabe
Copyright  Siemens AG 2009 All rights reserved
An dem ODBCConnDATA wird ein Zeiger auf einen DB übergeben, der die
Verbindungsparameter für die ODBC-Schnittstelle enthält.
Abbildung 6-4 ODBC-Connection Data in einem DB
Wie in Abbildung 5-4 zu erkennen ist, werden die Parameter im String-Format
übergeben, wobei jeder einzelne Parameter in einem eigenen, 254 Zeichen langen
String geschrieben wird. Die Namensgebung der einzelnen Parameter ist somit auf
eine Länge von 254 Zeichen (max. Zeichenlänge in STEP 7) begrenzt. Die
tatsächliche Länge der einzelnen Stringvariable beträgt zwei Byte mehr, da
Informationen für die maximale und tatsächliche Stringvariablenlänge in der
Zeichenkette hinterlegt sind (erstes und zweites Byte). Es ist zu beachten, dass bei
der Parametrierung des Zeigers die gesamte Länge des Strings angegeben wird,
da sonst bei der Übertragung Zeichen abgeschnitten werden. Als Referenzwert
kann die angegebene Adresse im DB unter dem letzten String verwendet werden.
Ausgangsparameter SQL_CON

Status des EXEC_COM
Im STATUS_ODK_CON werden Fehlermeldungen vom EXEC_COM
zurückgeliefert. Bei erfolgreichem Aufruf und Abarbeitung wird eine Null
ausgangseitig ausgegeben, bei einem Fehler wird ein entsprechender
Fehlercode zurückgeliefert. Der Fehlercode ist in dem WinAC ODK User
Manual hinterlegt und kann dort nachgeschlagen werden. Das Datenformat der
Ausgangsvariable muss WORD entsprechen.
46
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
6 Detaillierte Beschreibung der FBs

ERROR
Das ERROR-Bit gibt an, ob der SQL_CON erfolgreich durchlaufen oder mit
einem Fehler unterbrochen wurde. Bei Ausgabe einer Eins ist im Durchlauf ein
Fehler aufgetreten.

DONE
Sobald die gesamten Durchläufe durch den SQL_CON beendet sind, wird der
DONE-Ausgang auf TRUE gesetzt. Das geschieht auch, wenn er durch einen
Fehler unterbrochen wird. Da der letzte Durchlauf definiert abgeschlossen ist,
wird DONE trotzdem auf TRUE gesetzt mit der zusätzlichen Information
ERROR gleich TRUE

BUSY
Da mehrere Bausteinaufrufe notwendig sind, muss der Baustein anzeigen, ob
er noch in der Abarbeitungsphase ist, d.h. das BUSY-Bit ist während der
gesamten Bearbeitung des Bausteins auf TRUE gesetzt und wird erst nach
endgültiger Beendigung des Bausteins wieder auf FALSE zurückgesetzt.
Copyright  Siemens AG 2009 All rights reserved

Fehlerpuffer für ODBC-Fehlermeldungen
Der Ausgang OdkSqlErrorMsg entspricht einer Struktur, die mehrere Fehlercodes aus der DLL enthalten kann. Um diese Daten an einen DB
weiterzureichen, wird ein User Defined Datatype (UDT) benötigt. Dieser UDT
ist wie in Abbildung 5-5 aufgebaut:
Abbildung 6-5 UDT-Aufbau vom Error-Struct
Wenn nun in einem DB dieser UDT erzeugt wurde, wird diese Adresse an den
Ausgang vom SQL_CON angelegt. Die Fehlermeldungen werden anschließend in
den DB übertragen. Für die einzelnen Fehlernummern und Errorstatements sind im
Anhang als Referenz in den Tabelle 7-3 bis 7-6 die entsprechenden Erklärungen
hinterlegt.
In dem folgendem Blockdiagramm wird der syntaktische Ablauf dargestellt.
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
47
6 Detaillierte Beschreibung der FBs
Copyright  Siemens AG 2009 All rights reserved
Abbildung 6-6 Ablaufplan vom SQL_CON
48
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
6 Detaillierte Beschreibung der FBs
6.3
ODBC-Lese- und Schreibebaustein für SQL-Datenbank
Der zentrale Baustein SQL_EXEC übernimmt alle Funktionen, die für das Senden
der SQL-Manipulationsbefehle und das Empfangen der eventuellen angeforderten
Daten benötigt werden. Nach der erfolgreichen Verbindung zur SQL-Datenbank
wird der SQL_EXEC zur Bearbeitung der Datenbank ausgeführt. Dieser Baustein
kann beliebig oft aufgerufen werden, um SELECT-, UPDATE-, INSERT- oder
DELETE-Anweisungen auszuführen. Eine Anweisung wird asynchron bearbeitet,
um keine Zykluszeitüberschreitung der WinAC zu provozieren. Es werden mehrere
Zyklen durchlaufen, um den SQL_EXEC abzuarbeiten und zu beenden. Um eine
maximale Wartezeit für die Bearbeitung der asynchronen Threads festzulegen,
wird ein Timeout am Baustein festgelegt. Nach Ablauf der angegebenen Zeit, wird
der Baustein unterbrochen und eine Fehlermeldung ausgegeben.
SQL-Anweisungen bestehen aus zwei Teilen; dem SQL-String und dem SQLArgument. In dem SQL-String werden die eigentlichen Befehle verpackt, wie z.B.
Copyright  Siemens AG 2009 All rights reserved
SELECT spaltentitel1, spaltentitel2
FROM tabellentitel.
Da es möglich sein soll, bestimmte Bereiche aus der Datenbank zu verändern oder
zu lesen, muss der SQL-String variierbar sein, sodass nach unterschiedlichen
Kriterien ausgewählt werden kann. Es soll z.B. nur nach Daten gesucht werden,
die in einem bestimmten Zeitraum gespeichert worden sind. Die erste Abfrage
würde im Zeitraum zwischen den Monaten Mai und Juli suchen und die nächste
zwischen Oktober und Dezember. Das wird mit den Argumenten ermöglicht, die
getrennt vom SQL-String eingelesen und im SQL_EXEC mit dem SQL-String
kombiniert werden. Als zusätzliche Freiheit können für die Argumente auch
unterschiedliche Datenformate verwendet werden. Möglich sind:
SMALLINT-, INTEGER-, REAL- und CHAR-Datentypen.
Beispiel: eine Anweisung könnte lauten:
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
49
6 Detaillierte Beschreibung der FBs
SELECT year, test
FROM %s
WHERE titleid < %d
wobei “%s“ und “%d“ die Platzhalter für die kommenden Argumente sind, die
entsprechend lauten könnten:
UDT STRING(254)
UDT SMALLINT
=> titles
=> 5
Die vollständige Anweisung für die Datenbank würde dann folgendermaßen
interpretiert werden:
SELECT year, test
FROM titles
WHERE titleid < 5
Copyright  Siemens AG 2009 All rights reserved
Es werden für die entsprechenden Platzhalter die Argumente eingesetzt, wobei die
Länge der einzelnen Argumente auf den jeweiligen Datentyp begrenzt ist. In dem
Sonderfall STRING können bis zu 254 Zeichen pro Argument verwendet werden.
Bei den Argumenten ist darauf zu achten, dass sie in der gleichen Reihenfolge wie
die Platzhalter angeordnet sind. Es werden Fehler ausgegeben, sobald der
Datentyp mit dem Platzhalter nicht übereinstimmt. In der folgenden Tabelle werden
die korrespondierenden Platzhalter und Datentypen veranschaulicht.
Tabelle 6-1 korrespondierende Datentypen und Platzhalter
Datentypen Platzhalter
definierte
Datentypnummer
INTEGER
%d
1
SMALLINT
%d
2
REAL
%f
4
CHAR
(STRING)
%s
5
Ebenfalls muss die Anzahl der Platzhalter mit den Argumenten übereinstimmen.
Um eine Konformität zu erreichen, müssen vier vordefinierte UDTs verwendet
werden, die den oben erwähnten Datentypen entsprechen. Die UDTs enthalten als
erste Information den Datentyp als eine definierte Nummer, wobei die “1“
INTEGER, die “2“ SMALLINT, die “4“ REAL und die “5“ CHAR (STRING)
entspricht. Die “3“ ist für den Typ DOUBLE (64Bit) reserviert, der aber von der
WinAC nicht unterstützt wird und deshalb in REAL (32Bit) umgewandelt wird. Als
zweite Information wird in dem entsprechenden Datenformat der Wert des
Arguments hinterlegt. In der folgenden Abbildung wird der eigene definierte
Datentyp UDT-STRING abgebildet.
50
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
6 Detaillierte Beschreibung der FBs
Abbildung 6-7 UDT4 String
Copyright  Siemens AG 2009 All rights reserved
Wenn eine SELECT-Anweisung ausgeführt wird, werden zurückgelieferte Daten
vom Baustein erwartet. Für diese Daten muss ein DB mit passenden Datentypen
bereitgestellt werden. Die Datentypen entsprechen den UDTs der Argumente und
werden deshalb für die Speicherung der Daten verwendet. Die UDTs im DB
müssen in derselben Reihenfolge vorhanden sein, wie die Daten vom Baustein
geliefert werden. D.h. der Baustein puffert die angeforderten Daten in einer
bestimmten Reihenfolge, die bekannt sein muss. Wenn die angeforderten Daten
mit den bereitgestellten Daten nicht übereinstimmen, wird eine Fehlermeldung
ausgegeben. Auch bei zu wenig oder zu viel bereitgestellten UDTs werden
Fehlermeldungen zurückgeliefert. Eine SQL-Datenbank unterstützt mehrere
Datentypen. Folgende SQL-Datentypen werden von der Applikation unterstützt:

CHAR

NUMERIC

DECIMAL

VARCHAR

INTEGER

SMALLINT

FLOAT

REAL

DOUBLE
Die Datentypen DOUBLE und REAL auf der SQL Seite bestehen aus 64Bit. Diese werden von
STEP 7 nicht unterstützt und in STEP 7-REAL(32Bit) umgewandelt. Durch die Umwandlung von
einer 64Bit Zahl in eine 32Bit Zahl geht die Genauigkeit vom Wert verloren.
ACHTUNG
Hinweis
Bei der Verwendung vom Datentyp DOUBLE oder REAL auf SQL-Ebene
werden die Daten in der WinAC in STEP 7-REAL umgewandelt. Die
Konsequenz ist der Verlust der Genauigkeit vom umgewandelten Wert.
Der Datentyp FLOAT in der SQL-Ebene entspricht dem Datentyp REAL auf der
STEP 7 Ebene.
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
51
6 Detaillierte Beschreibung der FBs
Abbildung 6-8 ODBC-READ and WRITE Baustein
Copyright  Siemens AG 2009 All rights reserved
SQL_EXEC
Bevor genauer auf den syntaktischen Teil des Bausteins eingegangen wird,
kommen wir erst wieder zu den Ein- und Ausgangsparametern:
Der EN-Eingang und der ENO-Ausgang werden nicht parametriert.
ACHTUNG
Eingangsparameter SQL_EXEC

REQ
Der Eingang REQ ist der Ein- und Aus-Schalter am FB. Liegt eine logische
Eins an dem Eingang an, wird der Baustein durchlaufen.

Timeout
An diesen Eingang wird ein Integer-Wert gelegt, der die maximale asynchrone
Bearbeitungszeit des Bausteins in Sekunden angibt.

SQL_STRING
Hier wird ein Zeiger auf einen DB übergeben. Der DB enthält vier Strings, in
denen der SQL-String geschrieben wird. Die maximale Länge eines SQLStrings beträgt 1016 Zeichen. Es ist darauf zu achten, dass an den Zeiger die
korrekte Länge übergeben wird. Als Referenzwert kann die letzte aufgeführte
Adresse in der Adressspalte des DBs verwendet werden.
52
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
6 Detaillierte Beschreibung der FBs
Abbildung 6-9 DB für SQL-String

SQL_ARGUMENTS
Die Argumente werden über einen Zeiger, der auf ein DB zeigt, übertragen.
Bei den Argumenten ist darauf zu achten, dass sie in der gleichen Reihenfolge
wie die Platzhalter angeordnet sind. Ebenfalls muss die Anzahl der Platzhalter
mit den Argumenten übereinstimmen. Es können beliebig viele Argumente
eingelesen werden. Zudem können auch unterschiedliche Datentypen in einem
String auftreten. Es ist darauf zu achten, dass an den Zeiger die korrekte
Länge übergeben wird. Als Referenzwert kann die letzte aufgeführte Adresse
in der Adressspalte des DBs verwendet werden.
Die maximale Menge, die an Argumenten verwendet werden kann ist mit
der maximalen Datenspeicherung in einem DB (65 Kbyte) und durch eine
maximale Anzahl von 1000 Argumenten begrenzt.
Copyright  Siemens AG 2009 All rights reserved
ACHTUNG
Abbildung 6-10 DB für SQL-Argumente

SQL_RECEIVED_DATA
Es wird ein Zeiger übergeben, der auf einen DB zeigt, der eine bestimmte
Anzahl an UDTs enthält, in denen die gelesen Daten gespeichert werden
können. Deshalb ist der SQL_RECEIVE_DATA im eigentlichen Sinn ein
Ausgang, da gelesene Daten bereitgestellt werden. Die UDTs im DB müssen
in derselben Reihenfolge vorhanden sein, wie die Daten vom Baustein geliefert
werden. Zudem muss die Anzahl der gelieferten Daten mit den bereitgestellten
UDTs übereinstimmen. Es ist darauf zu achten, dass an den Pointer die
korrekte Länge übergeben wird. Als Referenzwert kann die letzte aufgeführte
Adresse in der Adressspalte des DBs verwendet werden. In der folgenden
Abbildung ist ein Receive für vier Werte bereitgestellt. Die UDTs sind in dieser
Reihenfolge angeordnet: INTEGER; CHAR; INTEGER; CHAR. Es werden
Daten in genau dieser Reihenfolge erwartet.
ACHTUNG
Die maximale Menge an Werten, die in einer Abfrage zurück gelieferten
werden kann, ist mit der maximalen Datenspeicherung in einem DB (65
Kbyte) und durch eine maximale Anzahl von 1000 Werten begrenzt.
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
53
6 Detaillierte Beschreibung der FBs
Abbildung 6-11 DB für SQL-Receive
Ausgangsparameter SQL_EXEC

Status des EXEC_COM
Im STATUS_ODK_CON werden Fehlermeldungen vom EXEC_COM
zurückgeliefert. Bei erfolgreichem Aufruf und Abarbeitung wird eine Null
ausgangseitig ausgegeben, bei einem Fehler wird ein entsprechender
Fehlercode zurückgeliefert. Der Fehlercode ist in dem WinAC ODK User
Manual hinterlegt und kann dort nachgeschlagen werden. Das Datenformat der
Ausgangsvariable muss WORD entsprechen.
Copyright  Siemens AG 2009 All rights reserved

ERROR
Das ERROR-Bit gibt an, ob der EXEC_COM erfolgreich durchlaufen oder mit
einem Fehler unterbrochen wurde. Bei Ausgabe einer Eins ist im Durchlauf ein
Fehler aufgetreten.

DONE
Sobald die gesamten Durchläufe durch den EXEC_COM beendet sind, wird
der DONE-Ausgang auf TRUE gesetzt. Das geschieht auch, wenn er durch
einen Fehler unterbrochen wird. Da der letzte Durchlauf definiert
abgeschlossen ist, wird DONE trotzdem auf TRUE gesetzt mit der zusätzlichen
Information ERROR gleich TRUE

BUSY
Da mehrere Bausteinaufrufe notwendig sind, muss der Baustein anzeigen, ob
er noch in der Abarbeitungsphase ist, d.h. das BUSY-Bit ist während der
gesamten Bearbeitung des Bausteins auf TRUE gesetzt und wird erst nach
endgültiger Beendigung des Bausteins wieder auf FALSE zurückgesetzt.
Zudem wird es benötigt um sicherzustellen, dass immer nur ein SQLStatement gleichzeitig bearbeitet wird. Es muss immer das BUSY-Bit
abgewartet werden, bis das nächste SQL-Statement abgesetzt werden kann.

Fehlerpuffer für ODBC-Fehlermeldungen
Der Ausgang OdkSqlErrorMsg entspricht einer Struktur, die mehrere
Fehlercodes aus der DLL enthalten kann. Um diese Daten an einen DB
weiterzureichen wird ein User Defined Datatype (UDT) benötigt. Dieser UDT ist
wie in Abbildung 5-12 aufgebaut:
54
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
6 Detaillierte Beschreibung der FBs
Copyright  Siemens AG 2009 All rights reserved
Abbildung 6-12 UDT-Aufbau vom Error-Struct
Wenn nun in einem DB dieser UDT erzeugt wurde, wird diese Adresse an den
Ausgang vom SQL_EXEC angelegt. Die Fehlermeldungen werden anschließend in
den DB übertragen. Für die einzelnen Fehlernummern und Errorstatements sind im
Anhang als Referenz in den Tabelle 7-3 bis 7-6 die entsprechenden Erklärungen
hinterlegt.
In dem folgendem Blockdiagramm wird der syntaktische Ablauf dargestellt:
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
55
56
BEA
FALSE
Wenn Fehler
Kopieren
der Fehlermeldungen
TRUE
Rücksetze
n der
Schrittkette
BEA
BEA
TRUE
Wenn Fehler
Kopieren
der Fehlermeldungen
BEA
BEA
Rücksetzen der
Schrittkette
TRUE
Aufruf des Cmd4
>ODBCExecute_
Event_Trace
Laden der
Timeout
Zeit
Aufruf des Cmd6
>ODBCReceive
Errorhandling
Rücksetzen der
Schrittkette
BEA
FALSE
TRUE
FALSE
TRUE
STEP3
STEP2
STEP1
FALSE
Wenn Fehler
Kopieren
der Fehlermeldungen
Aufruf des Cmd5
>ODBCReceive
SQL-Data
Pointer
Zuweisung
TRUE
FALSE
FALSE
Copyright  Siemens AG 2009 All rights reserved
Pointer
Zuweisung
BEA
FALSE
Wenn Fehler
Kopieren
der Fehlermeldungen
Aufruf des Cmd3
>read SQLArguments
Pointer
Zuweisung
FALSE
Wenn Fehler
Kopieren
der Fehlermeldungen
Aufruf des Cmd2
>read SQLString
TRUE
REQ
Aufruf von
SQL_EXEC
TRUE
TRUE
BEA
Rücksetzen der
Schrittkette
BEA
Rücksetzen der
Schrittkette
BEA
Rücksetzen der
Statusbits
FALSE
6 Detaillierte Beschreibung der FBs
Abbildung 6-13 Ablaufplan vom ODBC-READ_WRITE
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
6 Detaillierte Beschreibung der FBs
6.4
ODBC-Baustein zum Schließen der Kommunikation
Der letzte Baustein in der Schrittkette ist der SQL_DISCON. Er ist zuständig für
das sichere Schließen der Datenbank. Wenn eine Verbindung zu einer SQLDatenbank nicht mehr gebraucht wird, muss sie mit diesem Baustein wieder
geschlossen werden. Wenn die Verbindung nicht wieder geschlossen wird, werden
die aufgebauten Verbindungen im SQL-Server nicht beendet. Dadurch können
Fehler auftreten wie z.B. Zu viele Client-Verbindungen aktiv. Es kann auch ein
Buffer Overflow entstehen, da für die Verbindungen mehrere allokierten
Speicherbereiche benötigt werden, die ohne durchlaufen des SQL_DISCON nicht
sauber wieder geschlossen werden. Es sollte also in jedem Fall der Aufruf des
SQL_DISCON gegeben sein.
Abbildung 6-14 ODBC-CLOSE Baustein
Copyright  Siemens AG 2009 All rights reserved
SQL_DISCON
Bevor genauer auf den syntaktischen Teil des Bausteins eingegangen wird,
kommen wir erneut auf die Ein- und Ausgangsparametern zurück:
Der EN-Eingang und der ENO-Ausgang werden nicht parametriert.
ACHTUNG
Eingangsparameter SQL_DISCON

REQ
Der Eingang REQ ist der Ein- und Aus-Schalter am FB. Liegt eine logische
Eins an dem Eingang an, wird der Baustein durchlaufen.

Timeout
An diesen Eingang wird ein Integer-Wert gelegt, der die maximale asynchrone
Bearbeitungszeit des Bausteins in Sekunden angibt.
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
57
6 Detaillierte Beschreibung der FBs
Ausgangsparameter SQL_DISCON

Status des EXEC_COM
Im STATUS_ODK_CON werden Fehlermeldungen vom EXEC_COM
zurückgeliefert. Bei erfolgreichem Aufruf und Abarbeitung wird eine Null
ausgangseitig ausgegeben, bei einem Fehler wird ein entsprechender
Fehlercode zurückgeliefert. Der Fehlercode ist in dem WinAC ODK User
Manual hinterlegt und kann dort interpretiert werden. Das Datenformat der
Ausgangsvariable muss WORD entsprechen.

ERROR
Das ERROR-Bit gibt an, ob der SQL_DISCON erfolgreich durchlaufen oder mit
einem Fehler unterbrochen wurde. Bei Ausgabe einer Eins ist im Durchlauf ein
Fehler aufgetreten.

DONE
Sobald die gesamten Durchläufe durch den SQL_DISCON beendet sind, wird
der DONE-Ausgang auf TRUE gesetzt. Das geschieht auch, wenn er durch
einen Fehler unterbrochen wird. Da der letzte Durchlauf definiert
abgeschlossen ist, wird DONE trotzdem auf TRUE gesetzt mit der zusätzlichen
Information ERROR gleich TRUE
Copyright  Siemens AG 2009 All rights reserved

BUSY
Da mehrere Bausteinaufrufe notwendig sind, muss der Baustein anzeigen, ob
er noch in der Abarbeitungsphase ist. D.h. das BUSY-Bit ist während der
gesamten Bearbeitung des Bausteins auf TRUE gesetzt und wird erst nach
endgültiger Beendigung des Bausteins wieder auf FALSE zurückgesetzt.

Fehlerpuffer für ODBC-Fehlermeldungen
Der Ausgang OdkSqlErrorMsg entspricht einer Struktur, die mehrere
Fehlercodes aus der DLL enthalten kann. Um diese Daten an einen DB
weiterzureichen wird ein User Defined Datatype (UDT) benötigt. Dieser UDT ist
wie in Abbildung 5-15 aufgebaut:
58
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
6 Detaillierte Beschreibung der FBs
Copyright  Siemens AG 2009 All rights reserved
Abbildung 6-15 UDT-Aufbau vom Error-Struct
Wenn nun in einem DB dieser UDT erzeugt wurde, wird diese Adresse an den
Ausgang vom SQL_DISCON angelegt. Die Fehlermeldungen werden anschließend
in den DB übertragen. Für die einzelnen Fehlernummern und Errorstatements sind
im Anhang als Referenz in den Tabelle 7-3 bis 7-6 die entsprechenden
Erklärungen hinterlegt.
In dem folgendem Blockdiagramm wird der syntaktische Ablauf dargestellt:
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
59
6 Detaillierte Beschreibung der FBs
Abbildung 6-16 Ablaufplan vom SQL_DISCON
Aufruf von
SQL_DISCON
TRUE
FALSE
FALSE
STEP1
STEP2
TRUE
REQ
FALSE
Rücksetzen der
Statusbits
TRUE
Pointer Zuweisung
BEA
Copyright  Siemens AG 2009 All rights reserved
BEA
Laden der
Timeout
Zeit
Aufruf des Cmd7
>ODBCInit
Aufruf des Cmd8
>ODBCClose
Event_Trace
Kopieren
der Fehlermeldungen
Kopieren
der Fehlermeldungen
Wenn Fehler
TRUE
Rücksetzen
von
Schrittkette
FALSE
Rücksetzen
von
Schrittkette
TRUE
Wenn Fehler
BEA
BEA
FALSE
BEA
Rücksetzen
von
Schrittkette
BEA
60
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
7 Anwendungsbeispiele
7
Anwendungsbeispiele
7.1
Verwenden vom STEP 7-Beispielprojekt
Das ausgelieferte STEP 7-Beispielprojekt ist für die folgende Konfiguration
ausgelegt:
ACHTUNG
Copyright  Siemens AG 2009 All rights reserved
7.1.1

Installierte SQL-Datenbank

Wiederherstellen des Scales_Machine Schemas in der SQL-Datenbank

Parametrieren des ODBC-Treibers

Installieren der Datenbank GUI
Gegebenfalls muss im Beispielprojekt die vom Anwender benutzte
Kommunikationsschnittstelle zur WinAC RTX in die HW-Konfiguration
eingefügt und parametriert werden.
Aufbau eines Anwenderprogramms
OB100 Complete Restart
Im OB100 wird lediglich ein Merker für den “First Call“ initialisiert.
OB1 CYCL_EXEC
Im OB1 wird in die entsprechende Funktion gesprungen die in der “Steuern“Variablentabelle unter “Aufruf von einzelnen Funktionsbausteinen“ angewählt
worden ist.
FC1 CALL SQL_INIT
Aufruf von dem SQL_INIT.
FC2 CALL SQL_CON
Aufruf von SQL_CON.
FC3 CALL SQL_EXEC
Aufruf von SQL_EXEC.
FC4 CALL SQL_DISCON
Aufruf von SQL_DISCON.
DB10 ODBC LOGIN DATA
Parametrierung des ODBC Data Source Name (DSN), Username, Passwort
Hinweis
Beim Eintragen der LOGIN DATA auf Groß- und Kleinschreibung achten!
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
61
7 Anwendungsbeispiele
Steuern
Mit dieser Variablentabelle werden die einzelnen Aufrufe gestartet. Für einen
regulären Ablauf werden die Bausteine in folgender Reihenfolge durchlaufen:

CALL MERK SQL_INIT

CALL MERK SQL_CON

CALL MERK SQL_EXEC

Auswählen, was für eine SQL-Anweisung übertragen werden soll

–
CALL SELECT
–
CALL UPDATE
–
CALL INSERT
–
CALL DELETE
CALL MERK SQL_DISCON
Nach dem SQL_CON kann der SQL_EXEC beliebig oft aufgerufen werden, um
verschiedene SQL-Anweisungen abzusetzen.
Copyright  Siemens AG 2009 All rights reserved
Um einen SQL_EXEC Aufruf durchzuführen, muss vorher eine SQL-Anweisung
angewählt werden.
7.1.2
Absetzten einer SELECT-Anweisung mit der Variablentabelle
“Steuern“

Öffnen der Variablentabelle “Steuern“ im SIMATIC MANAGER

Wenn "SQL_INIT First Call" TRUE wird DLL und DBIs von SQL-FBs
initialisiert, bei FALSE werden nur DBIs initialisiert.

Setzten von CALL MERK SQL_INIT

Setzten von CALL MERK SQL_CON

Anwählen von CALL SELECT

Setzten von CALL MERK SQL_EXEC
–

SELECT-Anweisung wird abgesetzt; Daten werden empfangen
Setzten von CALL MERK SQL_DISCON
7.2
Anpassen des STEP 7 Beispiels an eigene
Anforderungen
7.2.1
Andere SQL-Anweisungen als im Beispielprojekt
Werden andere SQL-Anweisungen als im Beispielprojekt benötigt, müssen
folgende Änderungen durchgeführt werden:
62

Die SQL-Strings müssen für die entsprechenden Verwendungen angepasst
werden.

Die UDT’s im Argument-DB müssen mit den Platzhaltern im SQL-String
übereinstimmen.

Die Zeigerübergaben (Längen der Daten die übertragen werden) an den
Funktionsbausteinen müssen mit den Datenlängen in den DB’s
übereinstimmen.
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
8 Fehlermeldungen
8
Fehlermeldungen
Der WinAC SQL-DB Treiber kann verschiedene Klassen von Fehlermeldungen
liefern:

Code im FB-Ausgang STATUS_ODK_CREA_CON / STATUS_ODK_CON
gemäß WinAC-ODK

Spezielle Fehlermeldungen des SQL-DB Treibers
Fehler-Typ
Odk Function Return
Odk Error Code
Odbc Function Number
Functions Code
OdbcSqlDefineErrorCode
ODBC Error Code
ODBCSqlDefineErrorStxx
SQL Statements
8.1
Copyright  Siemens AG 2009 All rights reserved
Fehler-Tabelle
Fehlermeldungen vom WinAC ODK 4.1
Der WinAC SQL-DB Treiber wurde mit dem WinAC ODK (Open Development Kit)
entwickelt. Das ODK kann ebenfalls Fehlercodes generieren, die im
OdkSqlErrorMsg der FBs zurückgegeben werden.
8.1.1
Fehlermeldungen für SFB65001 → STATUS_ODK_CREA_CON
Diese Fehlermeldungen können nur vom FB SQL_INIT zurückgegeben werden.
Tabelle 8-1 WinAC ODK Fehlermeldungen für STATUS_ODK_CREA_CON
Code
Symbol
Description
0
NO_ERRORS
Success
0x807F
ERROR_INTERNAL
An internal error occurred.
0x8001
E_EXCEPTION
An exception occurred.
0x8102
E_CLSID_FAILED
The call to CLSIDFromProgID
failed.
0x8103
E_COINITIALIZE_FAILED
The call to CoInitializeEx failed.
0x8104
E_CREATE_INSTANCE_FAILED
The call to CoCreateInstance
failed.
0x8105
E_LOAD_LIBRARY_FAILED
The library failed to load.
0x8106
E_NT_RESPONSE_TIMEOUT
A Windows response timeout
occurred.
0x8107
E_INVALID_OB_STATE
Controller is in an invalid state
for scheduling an OB.
0x8108
E_INVALID_OB_SCHEDULE
Schedule information for OB is
invalid.
0x8109
E_INVALID_INSTANCEID
Instance ID for SFB65001 call is
invalid.
0x810A
E_START_ODKPROXY_FAILED
Controller could not load proxy
DLL.
0x810B
E_CREATE_SHAREMEM_FAILED
The WinAC controller could not
create or initialize shared
memory area.
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
63
8 Fehlermeldungen
Code
0x810C
Symbol
Description
Attempt to access unavailable
option ocurred.
E_OPTION_NOT_AVAILABLE
8.1.2
Fehlermeldungen für SFB65002 STATUS_ODK_CON/EXEC
Diese Fehlermeldungen werden von allen FBs, außer dem SQL_INIT,
zurückgegeben.
Tabelle 8-2 WinAC ODK Fehlermeldungen für STATUS_ODK_CON/EXEC
Copyright  Siemens AG 2009 All rights reserved
Error
Code
Symbol
Description
0
NO_ERRORS
Success
0x807F
ERROR_INTERNAL
An internal error occurred.
0x8001
E_EXCEPTION
An exception occurred.
0x8002
E_NO_VALID_INPUT
Input: the ANY pointer is invalid.
0x8003
E_INPUT_RANGE_INVALID
Input: the ANY pointer range is invalid.
0x8004
E_NO_VALID_OUTPUT
Output: the ANY pointer is invalid.
0x8005
E_OUTPUT_RANGE_INVALID
Output: the ANY pointer range is
invalid.
0x8006
E_OUTPUT_OVERFLOW
More bytes were written into the output
buffer by the extension object than
were allocated.
0x8007
E_NOT_INITIALIZED
ODK system has not been initialized:
no previous call to SFB65001
(CREA_COM).
0x8008
E_HANDLE_OUT_OF_RANGE
The supplied handle value does not
correspond to a valid extension object.
0x8009
E_INPUT_OVERFLOW
More bytes were written into the input
buffer by the extension object than
were allocated.
8.2
Spezielle Fehlermeldungen des SQL-DB Treibers
Neben dem allgemeinen Errorbit der FBs werden im OdkSqlErrorMsg mehrere
spezielle Fehlercodes und Errorstatements geliefert, die die Ursache genauer
beschreiben.
8.2.1
ODK-Function Returns
Tabelle 8-3 ODK-Function Returns
ODKErrorCode
Funktions-Beschreibung
9500
Wrong format specification in STRING for STATEMENT
9501
Read S7 STRING failed
9502
Buffer Overflow in STATEMENT read
9503
Read S7 ARGUMENT TYPE failed
9504
Read S7 ARGUMENT failed by INT
64
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
Copyright  Siemens AG 2009 All rights reserved
8 Fehlermeldungen
9505
Read S7 ARGUMENT failed by SMINT
9506
Read S7 ARGUMENT failed by DOUBLE
9507
Read S7 ARGUMENT failed by REAL
9508
Read S7 ARGUMENT failed by STRING
9509
Wrong S7 ARGUMENT TYPE not defined
9510
No PRINTF ARGUMENT in STRING for reserved ARGUMENT
9511
Read ODBC LOGIN PARA failed
9512
ODBC LOGIN PARA copy failed
9513
Write ODK SQL ERRORBIT failed
9514
Write ODK SQL BUSYBIT failed
9515
Set DATA EVENT failed
9516
Cant create DATA EVENTHANDLE
9517
Data event not yet ready
9518
WAIT FOR SINGLE OBJ failed data event
9519
ODK DATA EVENT eradication failed
9520
BUFFEROVERFLOW in value write
9521
READ S7 VALUETYPE failed
9522
Write S7 VALUE failed by INT
9523
Write S7 VALUE failed by SMINT
9524
Write S7 VALUE failed by DOUBLE
9525
Write S7 VALUE failed by REAL
9526
Write S7 VALUE failed by STRING
9527
Wrong S7 VALUE TYPE not defined
9528
No S7 VALUETYPE for SQLVALUETYPE available
9529
Non conforming VALUETYPE from SQLSERVER to S7 DATABLOCK, expected INT
9530
Non conforming VALUETYPE from SQLSERVER to S7 DATABLOCK, expected SMINT
9531
Non conforming VALUETYPE from SQLSERVER to S7 DATABLOCK, expected DOUBLE
9532
Non conforming VALUETYPE from SQLSERVER to S7 DATABLOCK, expected REAL
9533
Non conforming VALUETYPE from SQLSERVER to S7 DATABLOCK, expected STRING
9534
Event STANDBY TIME to long, no REQUEST from ASYNC THREAD
9535
Set INIT EVENT failed
9536
Cant create ODBC INIT EVENTHANDLE
9537
CLOSE DATA EVENT failed
9538
Not defined WAITFORSINGLEOBJ RETURN in DATA EVENT
9539
ODK ODBC INIT EVENT eradication failed
9540
CLOSE ODBC INIT EVENT failed
9541
ODBC INIT EVENT not yet ready
9542
WAIT FOR SINGLE OBJ failed for ODBC INIT EVENT
9543
Not defined WAITFORSINGLEOBJ RETURN for ODBC INIT EVENT
9544
ODBC INIT EVENT timeout
9545
EXEC EVENT timeout
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
65
Copyright  Siemens AG 2009 All rights reserved
8 Fehlermeldungen
9546
Read timeout TIMEODBCEVENT from S7 failed
9547
Read TIMEOUT TIMEEXEC from S7 failed
9548
Cant create ODBC CLOSEDB EVENTHANDLE
9549
ODBC CLOSEDB EVENT timeout
9550
ODK ODBC CLOSEDB EVENT eradication failed
9551
Close ODBC CLOSEDB EVENT failed
9552
ODBC INIT CLOSEDB not yet ready
9553
WAIT FOR SINGLE OBJ FAILED for ODBC CLOSEDB EVENT
9554
Not defined WAITFORSINGLEOBJ RETURN for ODBC CLOSEDB EVENT
9555
Not defined PRINTF ARGUMENT in STRING
9556
Cant find DLL PATH and FILENAME
9557
Cant read VERSION INFO SIZE
9558
Cant read VERSION INFO
9559
Cant verify query the value
9560
Version Nr. don’t match,
different versions STEP 7 to DLL
8.2.2
Function-Code Numbers
Tabelle 8-4 Function-Code Numbers
Funktions-Code
Funktions-Beschreibung
9000
SQL ALLOC ENVIRONMENT HANDLE
9001
ODBC VERSION ENVIRONMENT ATTRIBUTE
9002
SQL ALLOC CONNECTION HANDLE
9003
CONNECT DATA SOURCE
9004
SQL ALLOC ARGUMENT HANDLE
9005
BUILT SQL STRING
9006
COUNT OF COL
9007
DESCRIBE COL TYPE
9008
BIND COLUMN WHITH VALUETYPE
9009
FETCH ARGUMENT
9010
FREEING ARGUMENT HANDLE
9011
CLOSE CONECTION
9012
FREEING CONNECTION HANDLE
9013
FREEING ENVIRONMENT HANDLE
66
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
8 Fehlermeldungen
8.2.3
ODBC-Function Errors
Tabelle 8-5 ODBC-Function Errors
Copyright  Siemens AG 2009 All rights reserved
ODBC-Error-Code
ODBC-Error-Beschreibung
0000
ODBC FUNCTIONRET ok
8501
ODBC SQL OBJECT CALL initialization failed
8502
ODBC SQL OBJECT call execution failed
8503
ODBC SQL OBJECT call FETCH failed
8504
ODBC SQL OBJECT call CLOSE DATABASE failed
8505
ODBC FETCH ODK buffer Overflow
8506
undefined sql valuetype during create columntype
8507
Sql unknown database columntype
8508
Something wrong by sql database in character set
8509
No data existing
8510
Error in SQLGETDIAGREC
8511
To long STRING CHAR in SQL DB
8512
Database already connected
8550
Success with info
8551
No data
8552
Still executing
8553
Need data
8.2.4
SQL-Statements
Tabelle 8-6 SQL-Statements
SQLSTATE
01000
Error
General warning
01001
Cursor operation conflict
01002
Disconnect error
01003
NULL value eliminated in set function
01004
String data, right truncated
01006
Privilege not revoked
01007
Privilege not granted
01S00
Invalid connection string attribute
01S01
Error in row
01S02
Option value changed
01S06
Attempt to fetch before the result set returned the first rowset
01S07
Fractional truncation
01S08
Error saving File DSN
01S09
Invalid keyword
07001
Wrong number of parameters
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
67
Copyright  Siemens AG 2009 All rights reserved
8 Fehlermeldungen
07002
COUNT field incorrect
07005
Prepared statement not a cursor-specification
07006
Restricted data type attribute violation
07009
Invalid descriptor index
07S01
Invalid use of default parameter
08001
Client unable to establish connection
08002
Connection name in use
08003
Connection does not exist
08004
Server rejected the connection
08007
Connection failure during transaction
08S01
Communication link failure
21S01
Insert value list does not match column list
21S02
Degree of derived table does not match column list
22001
String data, right truncated
22002
Indicator variable required but not supplied
22003
Numeric value out of range
22007
Invalid datetime format
22008
Datetime field overflow
22012
Division by zero
22015
Interval field overflow
22018
Invalid character value for cast specification
22019
Invalid escape character
22025
Invalid escape sequence
22026
String data, length mismatch
23000
Integrity constraint violation
24000
Invalid cursor state
25000
Invalid transaction state
25S01
Transaction state
25S02
Transaction is still active
25S03
Transaction is rolled back
28000
Invalid authorization specification
34000
Invalid cursor name
3C000
Duplicate cursor name
3D000
Invalid catalog name
3F000
Invalid schema name
40001
Serialization failure
40002
Integrity constraint violation
40003
Statement completion unknown
42000
Syntax error or access violation
42S01
Base table or view already exists
42S02
Base table or view not found
68
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
Copyright  Siemens AG 2009 All rights reserved
8 Fehlermeldungen
42S11
Index already exists
42S12
Index not found
42S21
Column already exists
42S22
Column not found
44000
WITH CHECK OPTION violation
HY000
General error
HY001
Memory allocation error
HY003
Invalid application buffer type
HY004
Invalid SQL data type
HY007
Associated statement is not prepared
HY008
Operation canceled
HY009
Invalid use of null pointer
HY010
Function sequence error
HY011
Attribute cannot be set now
HY012
Invalid transaction operation code
HY013
Memory management error
HY014
Limit on the number of handles exceeded
HY015
No cursor name available
HY016
Cannot modify an implementation row descriptor
HY017
Invalid use of an automatically allocated descriptor handle
HY018
Server declined cancel request
HY019
Non-character and non-binary data sent in pieces
HY020
Attempt to concatenate a null value
HY021
Inconsistent descriptor information
HY024
Invalid attribute value
HY090
Invalid string or buffer length
HY091
Invalid descriptor field identifier
HY092
Invalid attribute/option identifier
HY095
Function type out of range
HY096
Invalid information type
HY097
Column type out of range
HY098
Scope type out of range
HY099
Nullable type out of range
HY100
Uniqueness option type out of range
HY101
Accuracy option type out of range
HY103
Invalid retrieval code
HY104
Invalid precision or scale value
HY105
Invalid parameter type
HY106
Fetch type out of range
HY107
Row value out of range
HY109
Invalid cursor position
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
69
Copyright  Siemens AG 2009 All rights reserved
8 Fehlermeldungen
HY110
Invalid driver completion
HY111
Invalid bookmark value
HYC00
Optional feature not implemented
HYT00
Timeout expired
HYT01
Connection timeout expired
IM001
Driver does not support this function
IM002
Data source name not found and no default driver specified
IM003
Specified driver could not be loaded
IM004
Driver’s SQLAllocHandle on SQL_HANDLE_ENV failed
IM005
Driver’s SQLAllocHandle on SQL_HANDLE_DBC failed
IM006
Driver’s SQLSetConnectAttr failed
IM007
No data source or driver specified; dialog prohibited
IM008
Dialog failed
IM009
Unable to load translation DLL
IM010
Data source name too long
IM011
Driver name too long
IM012
DRIVER keyword syntax error
IM013
Trace file error
IM014
Invalid name of File DSN
IM015
Corrupt file data source
70
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
9 Abkürzungsverzeichnis
Abkürzungsverzeichnis
DB
Datenbaustein
FB
Funktionsbaustein
OB
Organisationsbaustein
RTX
Real Time eXtension for Windows
UDT
User defined type (Datentypdefinition in STEP 7)
Copyright  Siemens AG 2009 All rights reserved
9
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
71
10 Historie
10
Historie
Tabelle 10-1
Datum
Bemerkung
V1.20
18.05.06
Getestet RTX 2009
Copyright  Siemens AG 2009 All rights reserved
Version
72
WinAC Anbindung einer SQL-Datenbank
V1.20, Beitrags-ID: 48354880
Herunterladen