Zum Hauptinhalt springen

Siemens S7-300 CP343 / S7-400 CP443 / SIMATIC Manager

Target: "Siemens S7"

Voraussetzungen

Folgende Bausteine und Quellen werden für die Anbindung an den Connector benötigt:

• Alle Bausteine und Quellen im Ordner S7-Programm

Die benötigten Bausteine und Quellen im Ordner S7-Programm

Beachten Sie, dass sich der Baustein «fbSql4Siemens» für die S7-300 und die S7-400 unterscheiden. Der Grund liegt in der Tatsache, dass unterschiedliche Bausteine für die Datenkommunikation verwendet werden müssen.

Aus diesem Grund gibt es für beide Steuerungsfamilien ein eigenes Beispiel-Projekt.

Die Bausteine sind mit SCL programmiert. Alle Konfigurationseinstellungen werden in den Quellen vorgenommen. Dies hat den Vorteil, dass alle Bausteine mit den neuen Einstellungen über das SCL-Script «MakeALL» neu generiert werden. Für die Generierung ist der symbolische Name relevant.

Aufruf fbSQL4Siemens

Der Baustein «fbSql4Siemens» wird zyklisch aufgerufen. Wir empfehlen, dies über einen zeitgesteuerten OB (z.B. OB35, T=10ms) zu tun. Folgende Parameter werden belegt:

Der zyklische Aufruf von fbSql4Siemens mit seinen Parametern

Parameter von fbSQL4Siemens

xExecute : BOOL; // Datenbankanfrage starten
tTimeout : TIME // Timeout in Sekunden
xAbort : BOOL; // Reset
iID : INT; // Eindeutige ID der Verbindung
wLADDR : WORD; // Adresse des CPs
tFbExecTimeLimit : TIME; // Zeit, welche dem Baustein pro Zyklus maximal zur Verfügung steht
xReady : BOOL; // Bereit für eine Datenbankabfrage
xBusy : BOOL; // Datenbankabfrage läuft
xDone : BOOL; // Datenbankabfrage abgeschlossen
xError : BOOL; // Datenbankabfrage endete mit einem Fehler
diResultState : DINT; // Status Datenbankabfrage / Fehlernummer
diResultRows : DINT; // Anz. erhaltene Zeilen aus der Datenbankabfrage
diResultColumns : DINT; // Anz. erhaltene Spalten aus der Datenbankabfrage
tFbExecTimeMax : TIME; // Gemessene maximale Nutzungszeit des Bausteins
tLastRequest : TIME; // Gemessene Zeit der letzten Anfrage

Datenbausteine

idbSql4Siemens – Instanz-Datenbaustein zur internen Verwendung des Funktionsblocks Sql4Siemens.

dbSqlUserData – Benutzerdaten wie Request-String-Array oder Antwort-String-Tabelle

Datentypen (UDT)

utSqlUserRequestST – Enthält das Anfrage-String-Array. Die Größe der Datenstrukturen wird im Baustein «fbSql4Siemens» automatisch ermittelt.

utSqlUserRequestST — Anfrage-String-Array

utSqlUserResponseST – Enthält die Antwort-String-Tabelle. Die Größe der Datenstrukturen wird im Baustein «fbSql4Siemens» automatisch ermittelt.

utSqlUserResponseST — Antwort-String-Tabelle

utSqlRequestBuffer – Datenpuffer zum Senden der SQL-Anfragen. Die Größe der Datenstrukturen wird im Baustein «fbSql4Siemens» automatisch ermittelt.

utSqlRequestBuffer — Datenpuffer zum Senden der SQL-Anfragen

utSqlResponseBuffer – Datenpuffer zum Empfangen der SQL-Antworten. Die Größe der Datenstrukturen wird im Baustein «fbSql4Siemens» automatisch ermittelt.

utSqlResponseBuffer — Datenpuffer zum Empfangen der SQL-Antworten

Diese Datentypen können projektspezifisch angepasst werden. Je nach Größe der zu lesenden oder schreibenden Datenmengen werden hier die Array- bzw. Datenstrukturgrößen definiert.

Konfiguration des Connectors

Bei dem angewählten Siemens-Target im Connector müssen weitere Optionen definiert werden:

  • Empfangspuffer Größe des Empfangspuffers im utSqlResponseBuffer

  • CP 343-1 Interface Aktivieren

  • Fix Buffer Aktivieren

Fix Buffer aktivieren

Einstellen der IP Adresse des CPs

Das Einstellen der IP Adresse des CPs geschieht in der Hardwarekonfiguration.

Das Einstellen der IP Adresse des CPs geschieht in der Hardwarekonfiguration Über Doppelklick auf PN-IO im CP, Eigenschaften wird das Eigenschaftsfenster der PN-IO Schnittstelle des CPs geöffnet

Über Doppelklick auf PN-IO im CP, Eigenschaften wird das Eigenschaftsfenster der PN-IO Schnittstelle des CPs geöffnet. Hier kann die IP-Adresse und Subnetzmaske verändert werden.

Hinzufügen einer neuen Netzwerkverbindung

Wenn die Kommunikation über einen Kommunikationsprozessor gelöst wird, können nicht wie bei der PN/DP Variante die Verbindungsparameter direkt im Programmcode eingestellt werden, sondern es muss eine neue Netzwerkverbindung erstellt werden.

Es muss eine neue Netzwerkverbindung erstellt werden

Mit Doppelklick auf Ethernet wird die NetPro Konfiguration geöffnet.

Mit Doppelklick auf Ethernet wird die NetPro Konfiguration geöffnet

Hier kann über Rechtsklick auf die CPU, „Neue Verbindung einfügen“, eine neue Verbindung hinzugefügt werden.

Hier kann über Rechtsklick auf die CPU, „Neue Verbindung einfügen“, eine neue Verbindung hinzugefügt werden

In den darauf folgenden Fenstern muss TCP Verbindung, der CP und „Aktiver Verbindungsaufbau“ ausgewählt werden.

In den darauf folgenden Fenstern muss TCP Verbindung, der CP und „Aktiver Verbindungsaufbau“ ausgewählt werden

Im Reiter Adressen werden die IP und der Port des Connector Links eingegeben.

Mit Speichern und übersetzen werden die aktuellen Einstellungen gespeichert und auf Fehler überprüft. Bei Aufruf des SQL4Siemens Bausteins muss die ID der Verbindung und die Adresse des CPs eingetragen werden.

Mit Speichern und übersetzen werden die aktuellen Einstellungen gespeichert und auf Fehler überprüft Bei Aufruf des SQL4Siemens Bausteins muss die ID der Verbindung und die Adresse des CPs eingetragen werden Einstellungen Ethernet-Schnittstelle

Einstellungen Ethernet-Schnittstelle

Um das Programm vom PC auf die Steuerung zu laden muss der Steuerung eine IP vergeben werden.

Um das Programm vom PC auf die Steuerung zu laden muss der Steuerung eine IP vergeben werden

Die IP Adresse der CPU kann in der Hardwarekonfiguration geändert und in die Steuerung geladen werden.

Die IP Adresse der CPU kann in der Hardwarekonfiguration geändert und in die Steuerung geladen werden

Über Doppelklick auf PN-IO, Eigenschaften wird das Eigenschaftsfenster der PN-IO Schnittstelle der CPU geöffnet. Hier kann die IP-Adresse und Subnetzmaske verändert werden.

Über Doppelklick auf PN-IO, Eigenschaften wird das Eigenschaftsfenster der PN-IO Schnittstelle der CPU geöffnet

Durch den Button laden in Baugruppe kann die aktuelle Hardwarekonfiguration in die CPU geladen werden.

Anzeigen/Aktualisieren zeigt alle erreichbaren CPUs an. Gewünschte CPU auswählen und aktuelle Hardwarekonfiguration laden.

Ändern der Bausteinadresse

Falls sich in Ihrem Projekt bereits Bausteine mit derselben Adresse befinden, werden die SQL4automation Bausteine wie folgt auf eine andere Adresse gelegt:

Die SQL4automation Bausteine können wie folgt auf eine andere Adresse gelegt werden

Die Symboltabelle öffnen und die entsprechenden Adressen ändern.

Die Symboltabelle öffnen Die entsprechenden Adressen in der Symboltabelle ändern

Den Objektnamen der zu ändernden Bausteine anpassen.

Den Objektnamen der zu ändernden Bausteine anpassen

Unter Quellen MakeAll öffnen und übersetzen.

Das Beispielprojekt

Das Beispielprogramm von der Webseite ist lauffähig und sollte vor Anpassungen an die eigene Applikation zuerst zum Laufen gebracht werden. Dadurch sind etwaige Fehlerquellen einfacher zu finden.

Passen Sie die IP-Adresse und den Remote-Port beim Aufruf des Sql4Siemens im OB35 an Ihr System an.

Der Aufruf des Sql4Siemens im OB35 mit IP-Adresse und Remote-Port

Der Connector muss gestartet und die Verbindung zur Beispiel-Datenbank „S4A_Test_DB.mdb“ konfiguriert sein.

Wie die Verbindung zur Testdatenbank konfiguriert wird, ist unter Einrichten der Verbindung an die Testdatenbank beschrieben.

Das Beispielprogramm (OB1) zeigt eine Anwendung mit den 4 SQL-Grundbefehlen (SELECT, INSERT, UPDATE, DELETE) sowie den Umgang mit den SQL-Daten. Die einzelnen Funktionen können über folgende Beobachtungstabellen einfach bedient werden:

Die Beobachtungstabellen des Beispielprogramms

Laden des Beispielprogramms

Das Programm kann über den Laden Button geladen werden.

Das Programm kann über den Laden Button geladen werden

Bedienung des Beispielprogramms

Der Beispiel-Code wird aus dem OB1 aufgerufen. Es gibt zwei Bausteine, welche die gleiche Funktionalität aufweisen. Das eine Beispiel ist in SCL, das andere in LAD (KOP) programmiert.

Beobachtungstabelle «Example01_SQL_SELECT»

Beobachtungstabelle Example01_SQL_SELECT

Durch Setzen der Variable «xSqlSelect» werden die letzten 5 Datensätze aus der Beispiel-Datenbank abgefragt. Bei einer erfolgreichen Abfrage wird der Zähler «diSqlSelectDoneCount» inkrementiert und die Daten (Spaltennamen und Datenfelder) werden angezeigt.

Wurde die Anfrage mit Fehler beendet, wird der Zähler «diSqlSelectErrorCount» inkrementiert. In diesem Fall wird der Fehlercode im Parameter «diResultState» angezeigt. Die Variable «xSqlSelect» muss manuell zurückgesetzt werden.

Beobachtungstabelle «Example02_SQL_INSERT»

Beobachtungstabelle Example02_SQL_INSERT

Durch Setzen der Variable «xSqlInsert» wird ein neuer Datensatz in die Beispiel-Datenbank eingefügt. Die Werte werden über die Parameter «iSqlInsertParam1», «fSqlInsertParam2» und «sSqlInsertText1» vorgegeben.

Bei einer erfolgreichen Ausführung wird der Zähler «diSqlInsertDoneCount» inkrementiert. Unter dem Parameter «diSqlInsertedID» ist ersichtlich, unter welcher ID (Primärschlüssel) der Datensatz in der Datenbank gespeichert wurde.

Wurde der Befehl mit Fehler beendet, wird der Zähler «diSqlInsertErrorCount» inkrementiert. In diesem Fall wird der Fehlercode im Parameter «diResultState» angezeigt. Die Variable «xSqlInsert» muss manuell zurückgesetzt werden.

Beobachtungstabelle «Example03_SQL_UPDATE»

Beobachtungstabelle Example03_SQL_UPDATE

Durch Setzen der Variable «xSqlUpdate» wird ein bestehender Datensatz in der Beispiel-Datenbank aktualisiert. Mit dem Parameter «diSqlUpdateID» muss angegeben werden, welcher Datensatz aktualisiert werden soll. Die neuen Werte werden über die Parameter «iSqlUpdateParam1», «fSqlUpdateParam2» und «sSqlUpdateText1» vorgegeben.

Bei einer erfolgreichen Ausführung wird der Zähler «diSqlUpdateDoneCount» inkrementiert. Unter dem Parameter «diSqlUpdatedRows» ist ersichtlich, wie mancher Datensatz aktualisiert wurde (In diesem Beispiel 0 oder 1).

Wurde der Befehl mit Fehler beendet, wird der Zähler «diSqlUpdateErrorCount» inkrementiert. In diesem Fall wird der Fehlercode im Parameter «diResultState» angezeigt. Die Variable «xSqlUpdate» muss manuell zurückgesetzt werden.

Beobachtungstabelle «Example04_SQL_DELETE»

Beobachtungstabelle Example04_SQL_DELETE

Durch Setzen der Variable «xSqlDelete» werden alle Datensätze in der Beispiel-Datenbank gelöscht, deren Nummer (Primärschlüssel) kleiner oder gleich dem Wert im Parameter «diSqlDeleteID» ist.

Bei einer erfolgreichen Ausführung wird der Zähler «diSqlDeleteDoneCount» inkrementiert. Unter dem Parameter «diSqlDeletedRows» ist ersichtlich, wie mancher Datensatz gelöscht wurde.

Wurde der Befehl mit Fehler beendet, wird der Zähler «diSqlDeleteErrorCount» inkrementiert. In diesem Fall wird der Fehlercode im Parameter «diResultState» angezeigt. Die Variable «xSqlUpdate» muss manuell zurückgesetzt werden.

Fehlercodes Return-Value

Die Variable “diResultState” beschreibt den Fehler.

Fehler-NummerFehler-Beschreibung
1Unbekannter SQL Befehl
2Abfrage ergibt mehr Datensätze als mit MaxRows definiert. Abfrage anpassen oder MaxRows vergrößern
3Abfrage ergibt mehr Spalten als mit MaxColumns definiert. Abfrage anpassen oder MaxColumns vergrößern
4

Abfrage ergibt mehr Daten zurück als die definierte Puffergröße.

Abfrage anpassen oder die Buffer-Größe im Connector und in der Steuerung vergrößern

5

Abfrage gibt min. ein Wert zurück, der größer ist als mit MaxStringLength definiert.

Abfrage anpassen oder MaxStringLength vergrößern

10Interner Connector Fehler
11Interner Connector Fehler, Datenbank kann nicht geöffnet werden
21Keine IP-Adresse definiert
22Keine Portnummer definiert
23Request-String ist leer
24Anzahl MaxRows nicht definiert
25Anzahl MaxColumns nicht definiert
29Größe MaxStringLength ist ungültig
41Keine Verbindung zum SQL4automation-Connector hergestellt. Firewall ausschalten, IP-Adresse und Remote-Port überprüfen
51Fehler beim Senden der Anfrage. Firewall ausschalten, IP-Adresse und Remote-Port überprüfen
91Timeout-Fehler. Keine Antwort vom Connector innerhalb des Zeitfensters
95Fehler beim Empfangen der Daten
>100Fehlernummern der ODBC Datenbankanbindung
40002Allgemeiner Fehler bei der SQL Abfrage. Request-String ist ungültig