Zum Hauptinhalt springen

HORST / SQL4HORST

Target: "Standard"

Einrichtung Grafisch

Einfache Abfragen aus der Datenbank können in der grafischen Programmierung realisiert werden.

  1. Für jede Abfrage wird eine eigene Funktion angelegt:
  • Neue Funktion anlegen
Neue Funktion anlegen
  • Funktions-Name vergeben und „Textuell“ wählen
Funktions-Name vergeben und „Textuell“ wählen
  • Code-Schnipsel aus dem Beispiel-Projekt einfügen
var Request — hier die SQL-Abfrage eingeben

var Request Hier die SQL-Abfrage eingeben

var IPAddress IP-Adresse des Connector

var Port Port-Nummer des Connector-Links

  • Nach der Abfrage stehen die Daten in Form einer Tabelle zur Verfügung.

Die Daten werden am Ende der Funktion (Zeile 270) in die gewünschten Variablen kopiert.

DataTable[0..n][0..n] enthält die Daten der Abfrage. Der erste Index ist der Datensatz (Row)

DataTable[0..n][0..n] enthält die Daten der Abfrage. Der erste Index ist der Datensatz (Row),

der zweite Index die Spalte (Column).

Bsp.: DataTable[0][2] ist der Wert aus dem 1. Datensatz in der Spalte 3

  1. Variable für das Ziel anlegen:
  • Neue Variable anlegen
Neue Variable anlegen
  • Typ wählen und Name vergeben
Typ wählen und Name vergeben
  1. Datenbankabfrage im Programm aufrufen:
  • Neue Aktion hinzufügen
Neue Aktion hinzufügen
  • „Funktions-Aufruf“ wählen
„Funktions-Aufruf“ wählen
  • Funktion auswählen und zum Programm hinzufügen
Funktion auswählen und zum Programm hinzufügen Funktion auswählen und zum Programm hinzufügen
  • Funktion an die richtige Stelle im Ablauf verschieben
Funktion an die richtige Stelle im Ablauf verschieben
  1. Programm starten:
  • Die Datenbankabfrage wird fehlerfrei ausgeführt
Die Datenbankabfrage wird fehlerfrei ausgeführt Die Abfrage liefert keine Daten
  • Die Abfrage liefert keine Daten
Die Abfrage liefert keine Daten
  • Die Datenbankabfrage ist fehlerhaft
Die Datenbankabfrage ist fehlerhaft
  • Info-Meldungen ausblenden für den normalen Programmablauf
Die Zeilen in der Funktion helfen bei der Analyse der Datenbank-Abfrage

Die Zeilen in der Funktion helfen bei der Analyse der Datenbank-Abfrage.

Für den normalen Programmablauf können diese auskommentiert werden.

Alle weiteren Meldungen in der Funktion sollten aktiv bleiben, damit ein evtl. auftretendes

Fehlverhalten erkannt wird.

Einrichtung textuell

Für umfangreichere Abfragen aus der Datenbank empfiehlt es sich, das Programm im textuellen Mode zu erstellen.

  1. Code-Schnipsel aus dem Beispiel-Projekt in das Programm einfügen:
  • Variablen am Anfang des Programms einfügen
Variablen am Anfang des Programms einfügen
  • Funktion SQL4HORST am Ende des Programms einfügen
Funktion SQL4HORST am Ende des Programms einfügen var IPAddress — IP-Adresse des Connector

var IPAddress IP-Adresse des Connector

var Port Port-Nummer des Connector-Links

  1. Datenbankabfrage ausführen
  • Datenbank-Aufruf an der gewünschten Stelle im Programm einfügen
Der Funktion beim Aufruf die SQL-Abfrage übergeben. Die Funktion liefert als Return Informationen zur Abfrage

Der Funktion beim Aufruf die SQL-Abfrage übergeben. Die Funktion liefert als Return

Informationen zur Abfrage.

  • Return zur Abfrage auswerten
Nach der Abfrage stehen die Daten in Form einer Tabelle zur Verfügung

Nach der Abfrage stehen die Daten in Form einer Tabelle zur Verfügung.

DataTable[0..n][0..n] enthält die Daten der Abfrage. Der erste Index ist der Datensatz (Row),

der zweite Index die Spalte (Column).

Bsp.: DataTable[0][2] ist der Wert aus dem 1. Datensatz in der Spalte 3.

Die Daten bleiben in der DataTable solange gespeichert, bis eine neue Abfrage ausgeführt wird.

  1. Programm starten
  • Die Datenbankabfrage wird fehlerfrei ausgeführt
Die Datenbankabfrage wird fehlerfrei ausgeführt Die Abfrage liefert keine Daten
  • Die Abfrage liefert keine Daten
Die Abfrage liefert keine Daten
  • Die Datenbankabfrage ist fehlerhaft
Die Datenbankabfrage ist fehlerhaft
  • Info-Meldungen ausblenden für den normalen Programmablauf
Die Zeilen in der Funktion helfen bei der Analyse der Datenbank-Abfrage

Die Zeilen in der Funktion helfen bei der Analyse der Datenbank-Abfrage.

Für den normalen Programmablauf können diese auskommentiert werden.

Alle weiteren Meldungen in der Funktion sollten aktiv bleiben, damit ein evtl. auftretendes

Fehlverhalten erkannt wird.

Beispiel-Projekt „SQL4HORST_MoveExample“

Das Beispiel-Programm SQL4HORST_MoveExample fährt eine Bahn mit beliebig vielen Positionen ab.

Das Beispiel-Programm SQL4HORST_MoveExample fährt eine Bahn mit beliebig vielen Positionen abDas Beispiel-Programm SQL4HORST_MoveExample fährt eine Bahn mit beliebig vielen Positionen abDas Beispiel-Programm SQL4HORST_MoveExample fährt eine Bahn mit beliebig vielen Positionen ab

Aufbau der Datenbank (MariaDB)

Aufbau der Datenbank (MariaDB)
  • Die Bahnpunkte sind in der Tabelle tPositionen angelegt.
Jeder Bahnpunkt hat einen eindeutigen Namen (Position), die X/Y/Z Koordinaten (in mm) und die Euler-Winkel RX/RY/RZ (in Grad)…

Jeder Bahnpunkt hat einen eindeutigen Namen (Position), die X/Y/Z Koordinaten (in mm) und die Euler-Winkel RX/RY/RZ (in Grad). Weiter ist definiert, in welcher Relation der Punkt steht (ABSOLUTE oder RELATIVE).

  • Der Ablauf der Bewegung ist in der Tabelle tSequences angelegt.
Ein Bewegungsablauf hat einen Namen (Sequence) und mehrere Schritte (Step). Pro Schritt wird die anzufahrende Position…

Ein Bewegungsablauf hat einen Namen (Sequence) und mehrere Schritte (Step). Pro Schritt wird die anzufahrende Position mit dem Namen aus der Tabelle tPositionen referenziert. Dabei kommen noch Informationen dazu wie die Offset-Position in Z-Richtung (ApproxZ), die Beschleunigung (Accl..), Geschwindigkeit (Vmax…) und das Überschleifen (Blend…) und die Art wie der Punkt angefahren wird (MoveType).

  • Welcher Job ausgeführt wird, steht in der Tabelle tJobs.
Jeder Roboter (Station) hat einen Job (Sequence). Mit Repetitions kann der Ablauf mehrmals ausgeführt werden. Zudem kann…

Jeder Roboter (Station) hat einen Job (Sequence). Mit Repetitions kann der Ablauf mehrmals ausgeführt werden. Zudem kann eine globale Geschwindigkeit (Speed) für den ganzen Ablauf festgelegt werden.

Der Roboter soll am Ende der Ausführung die Start-Zeit und End-Zeit für die Ausführung der Bewegung in die Tabelle eintragen.

  • Ein wesentlicher Vorteil einer SQL-Datenbank ist u.a. die Möglichkeit, Prozeduren in der Datenbank anzulegen.

Referenz der drei Tabellen

Sortieren nach Step-Nummer

Filtern nach Station

Umrechnung von mm in Meter für HORST

Die Prozedur spGetJobData liefert uns mit der Angabe der Station alle erforderlichen Informationen aus den drei Tabellen, zusammengefasst in eine Antwort.

Die Prozedur spGetJobData liefert uns mit der Angabe der Station alle erforderlichen Informationen aus den drei Tabellen…

Aufbau des Programms

  • Im ersten Teil sind die globalen Variablen angelegt.

  • Mit der Variable Station wird der Stations-Name des Roboters abgelegt, welcher mehrmals verwendet wird.

  • Die erste SQL-Abfrage ermittelt die Anzahl Repetitions und den Speed für den aktuellen Job.

Es wird genau 1 Datensatz erwartet

  • Die zweite Abfrage liest alle Bewegungsdaten für den aktuellen Job ein.

  • Sind Daten vorhanden, werden diese mit der Funktion MovePos in einer Wiederholschlaufe abgefahren.

Sind Daten vorhanden, werden diese mit der Funktion MovePos in einer Wiederholschlaufe abgefahren
  • Der Funktion MovePos wird jeweils ein Datensatz übergeben

Verrechnung der Offset-Position in Z-Richtung

Spaltenwerte aus dem Datensatz mit Typ-Umwandlung

Geschwindigkeit aus der ersten Abfrage

Spaltenwerte aus dem Datensatz

  • Vor und nach der Bewegung wird das Datum und die Zeit gespeichert (var Start, var End).

  • Beide Zeiten werden formatiert und mit der dritten Abfrage in die Tabelle tJobs eingetragen.

Beide Zeiten werden formatiert und mit der dritten Abfrage in die Tabelle tJobs eingetragen