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