Handbuch
und Funktionsbeschreibung
VisionSoftware
PatControl
FlexxVisision Pillnitzer Weg 11 D-13593 Berlin, Germany Tel: +49 (030) 120 102 26 Fax: +49 (030) 364 044 20 |
Autor: Karsten Michael Schulz 22.12.2014 Dokumentation |
|
Inhalt
1.0.0 Über dieses Handbuch und der Software
1.0.2 Installation von PatControl
2.0.3 SPS Datenbausteinvergabe
2.0.4 SPS SCL-Datagramm Vereinbarung
2.0.5 SPS-Einstellungen am VisionServer
2.0.6 WAGO FeldbusController 750 (MODBUS)
1.2.3 TCP-Einstellungen am VisionServer
2.1.1 Unterstützte Kamera-Systeme
2.0.2 CameraLink [*.CCF] [*.MCF]
2.0.3 Allied Vision
FireWire(1394) [*.XML]
2.1.4 CMU FireWire(1394) [*.IDC]
2.1.5 GIGE (Network Protokoll Overlay)
[*.GIG]
2.1.6 TWAIN (Scanner aller Hersteller) [*.SCA]
2.2.4 Microsoft DShow
(DirectShow) [*.DXS]
2.1.7 FolderScan (PatControl eigenschaft)
[*.*]
2.1.8 EdiMax (webipcam) [localhost:port]
2.1.9 DeskCam (WindowsDesktopCapture) [*.win]
2.2.0 Microsoft VFW
(VideoForWindows) [*.VID]
2.2.1 AVI MPG JPG BMP TIF GIF (Bild und Videodateien) [*.*]
2.2.2
Leuze LPS36/EN (3D Geometriesensor) [*.LIP*]
2.2.3
Tucsen (HS/TS131/130HC) [*.TUC]
2.2.5 VisualFilter (ImageFilterNetwork)
[*.fpp]
5.0.0 Benutzerdefinierte Parameter Bäume
5.0.1 Mögliche Parameter Felder
6.0.0 Vermessungs und
Kalibriervorrichtung
6.0.1 Bildvergrößerung und Get/Set
Calib
6.0.2 Histographische
Messbild-Darstellung
6.0.7 Messstreckenkalibrierung
7.0.1 Debug Konsole (DebugView)
7.0.4 LUA-Prüfplan Haltepunkte
7.0.6 LUA-Prüfplan SyntaxHighlight
8.0.0 LUA Textausgabe Funktionen
8.0.1 LUA Prozessinformations
Funktionen
10.0.3
Labeling
Parameterdarstellung
10.0.4
Labeling
Rechteckverschmelzung
10.1.0 FingerImage statistische Konturerkennung
10.1.1
FingerImage
Parameterdarstellung
10.2.0 WormImage Geometrie -Vektorisierung
10.2.3
WormImage
Parameterdarstellung
10.2.5
ImageRecognition Parameterdarstellung.
10.3.1 ThresholdImage
Parameterdarstellung
10.4.1
ColorImage
Parameterdarstellung
10.5.0 SigmaImage Schärfensensor
10.5.1
SigmaImage
Parameterdarstellung
10.6.0 StartDfs DeepFocusStacking
10.5.1
StartDfs
Parameterdarstellung
11.0.0 Alternative Kommunikation
11.0.2 ComWrite
Parameterdarstellung
11.1.0 TcpWrite
Parameterdarstellung
12.0.1 Beschreibung einer Logbuchzeile mit
11 Merkmalen:
12.0.3 Logbuch Eigenschaft merken
12.0.5 Logbuch Excel Plot-Darstellung:
13.0.1 Beispiel eines Rotationsprüfplan :
13.0.2 Alternatives Rotations –LUA Skript
13.0.3 Rotatorische Programm Infos
14.0.0 3D-Visualisierung
(3D-View)
14.0.2 3D-View Textur (Helligkeit
Darstellung)
14.0.3 3D-View JetColorRoom (Helligkeit
Darstellung)
14.0.4 3D-View Textur (Höhen Darstellung)
14.0.5 3D-View JetColorRoom (Höhen
Darstellung)
14.0.6 3D-View Parameterbeschreibung
15.0.0 Systemschematische
Darstellung
1.0.0 Über dieses Handbuch und der
Software
Willkommen zum Handbuch und der
Funktionsbeschreibung der Software PatControl
von FlexxVision. Die Software hat zur Aufgabe Maschinen das „sehen“ zu
ermöglichen,
und erkannte Objektinformationen schnellstmöglich
an eine Prozessleitstelle zu übertragen. Das sind Vorgänge die bisweilen mit
hochspezialisierten Einzellösungen und der Beteiligung vieler externer
Softwareteile anderer Anbieter ermöglicht wird.
Wenn sich die Erkennungs- Bedingungen
einer Maschine verändern weil Teile sich im Zuge der Weiterentwickelung ändern,
muss nicht selten die vorhandene Bilderkennung umgebaut oder angepasst werden,
Produktionsstopps sind die Folge. PatControl
entschärft diese Situation, nicht nur deswegen weil alle Komponenten der
Software von FlexxVision entwickelt
wurden und keine fremden Softwarekomponenten bis hin zur Prozessleitstellen
–Kommunikation Bestandteil des Konzeptes sind, sondern weil es ermöglicht wird zur
Produktionslaufszeit ohne Anhalten der Maschinenprozesse Änderungen am
laufenden Programm durchzuführen zu können
So kann direkt auf die Bilderkennung gewirkt werden ohne kostspielige
Maschinenpausen bei jeder Teile -Änderung einzuräumen.
Jeder Ingenieur ist in der Lage mit
der eingebauten Skriptsprache LUA
eigene Prüfpläne zu erstellen, und auch die Benutzereingabe –Felder für den
Operator/Anwender Anzulegen sowie diese
mit Hinweistexten transparent darzustellen. Selbstverständlich können
wir hier mit langer Erfahrung diese Aufgaben unterstützen, oder ganze
Messabläufe in Form angepasster Prüfpläne liefern.
In den folgenden Abschnitten möchten
wir die Verfahren und detaillierten Vorgänge der Software –Konfiguration und Prüfplanung beschreiben
so dass Sie auch selber befähigt werden mehr Kontrolle über Ihre Prozesse zu
erlangen. Das gesamte Konzept der Software ist die freie Konfigurierbarkeit und
Anpassungsfähigkeit so dass für fast
jede Aufgabe eine Lösung implementiert werden kann.
Die Installation liefert
Beispielprojekte aus denen hervorgeht, wie die Prüfplandetails aufgebaut sind,
so können daraus eigene Messabläufe abgeleitet werden.
Zudem finden sich im SDK –Bereich
Kompilierbare Projekte für die Microsoft Entwicklungsumgebung VisualStudio 2013, die aufzeigen wie
mit Ihrer bestehenden Software eine direkte Datenverbindung zum VisionServer PatControl hergestellt
werden kann. Die Software ist in der Lage auch autark im Hintergrund abzulaufen
und lediglich mit der Prozessleitstelle zu kommunizieren. Oder gänzlich alleine
Daten zu erheben, um eine statistische Datenverfolgung parallel zu einem bestehen
Vision System zu Qualifizieren.
FlexxVision stellt mit dieser Software erhebliche Systemanforderungen an das 32/64Bit Windows System, bei umfangreichen Rotationsprüfplänen mit
Echtzeit 3D –Darstellung.
Aber auch mit geringeren
System -Anforderungen bei kleinen Messaufgaben die bereits auf einem 2Kern
embedded Schaltschrank -PC ablaufen, kann die Software betrieben werden.
Unterstützte
Betriebssysteme:
Microsoft Windows 8
Microsoft Windows 7
Microsoft
Windows Vista (SP2)
Hardware Maximal:
3000 MB
Arbeitsspeicher
2000 MB freien
Festplattenspeicherplatz
Netzwerkkarte (Intel
Chipsatz)
3D
Leistungs-Grafikkarte (2000 MB)
Intel i7 4-6 Kern
3.5Ghz
Monitor
1920x1200
Sound
Mono (Text to Voice via LUA)
Hardware
Minimal:
1000 MB
Arbeitsspeicher
500 MB freien Festplattenspeicherplatz
Netzwerkkarte (On
Board)
2D
Leistungs-Grafikkarte (256 MB)(On Board)(3D ist dann offline)
AMD Athlon 2Kern
1.9Ghz
Software:
Microsoft Internet
Explorer 9 oder höher
Microsoft Excel
(optional)
Microsoft
VisualStudio 20013 (optional)
Texteditor (zebu. Ultraedit optional)
TeamViewer (Desktop
Fernwartung optional)
1.0.2 Installation von PatControl
Die Installation erfolgt über einen
Standard Windows Installer (InstallShield)
der Vorgang
Ist bekannt und Voraussetzung
grundliegender Systemhandhabe. Die Datei die alle
Daten enthält lautet PatControl.msi ein Doppelklick löst den
Installationsvorgang aus.
Im Anschluss besteht die Möglichkeit
den Speicherort konform zu verändern, für Wartung und Support wird die
Voreinstellung empfohlen.
Am Ende der Installation wird gefragt,
ob die Anwendung gestartet werden soll, dies wird empfohlen da hierdurch
weitere Ersteinstellungen im Hintergrund erfolgen, und die Software
Legitimation erfolgen kann.
Für die Deinstallation können sie das
Setup erneut anklicken oder im Programme –Menü als auch über die
Systemsteuerung Die Software entfernen. Ein Update kann einfach erneut über die
bestehende Software installiert werden, das letzte Datum können sie auf unserer
Downloadseite entnehmen.
Nach der Installation hat der
Setupprozess einige Verzeichnisse am Zielort angelegt.
Das Wurzelverzeichnis der Bestandteile
trägt den Namen FlexxVision und
darin
befindet sich Verzeichnis das den
Produktnamen darstellt PatControl
Folgende
Verzeichnisstruktur bildet sich ab:
C/C++ Excel Beispiele Beispiel Prüfpläne Dokumente Kamera Initialdateien
Insbesondere das Verzeichnis Config enthält die Dateien die
notwendig sind um eine Kamera auszuwählen, der Vorgang wird unter Kameras beschrieben
Im Verzeichnis Doc befindet sich auch diese Dokumentation als PDF Datei.
Das Verzeichnis Projects enthält viele Beispiele und Bilder/Videos zum nachstellen
von Prüfplanungen mit Skripten für LUA und benutzerdefinierte Parameterbäume.
Im Verzeichnis SDK finden sich
Beispiele für die Integration der Software PatControl
in bestehende Projekte, auch ein Excel
VBS Beispiel ist dabei um Logbuchdateien zu visualisieren es wird empfohlen
diese für die Logbücher einzusetzen.
Für die Herstellung eines eigenen
Prüfplanes kopieren sie ein Beispiel das am besten für Ihre Aufgabe geeignet
scheint, und arbeiten sie mit dieser Kopie. Dies gilt generell auch für die Kamera
Initalisierungsdateien.
Die Softwarelegitimation erfolgt nur
in der freien Version, bei einem Programmstart wird die Software einen Dialog
anzeigen indem sie Ihren Software –Schlüssel eingeben den sie über die Online
Registrierung per E-Mail erhalten haben.
Ohne diese Legitimation funktioniert PatControl dennoch, und fragt
gelegentlich nach einer Registrierung .
Softwareschlüssel
Eingabe
Nach einem Klick auf Accept wir der der Request über den
Standard WebPort 80 an den FlexxVision
Server übertragen und dort die Software in einer Datenbank verzeichnet.
Wir wissen dass in einer
Produktionsstätte oder im Prüffeld keine Verbindung zum Internet besteht, und
bieten für die Vollversion einen Dongle von Wibu KeySystems an, dem führenden Hersteller von
Softwarelegitimationen. Den Dongle können sie separat über das Kontakt -Formular
oder per E-Mail sowie telefonisch anfordern um damit die Software gegen
Rechnungslegung zu erwerben. Den Lizenzdialog können sie auch später über das Menü
Erreichen.
Lizenz
-Dialog aufrufen
PatControl ist eine Bildverarbeitungssoftware
die Merkmale in Bildern erkennt und diese als Ergebnis auf eine angeschlossene
Hardware ausgeben kann.
Als
Datenquelle werden Bildgebende -Geräte unterstützt wie Digitalkameras, Scanner,
Bilddateien und Videos. Verzeichnisse mit Bildern werden ebenso als Geräte
verstanden, und ermöglichen früher aufgenommene Fotografien seriell erneut
abzuspielen.
Ein Bildgebendes
-Gerät liefert an PatControl einen Trigger, die Dimension (Höhe,Breite,Bittiefe) und eine Bildnummer sowie die Pixelbitmap.
Die gesamte
Ablaufsteuerung wird über den Bildtrigger
ausgelöst, jedes neue Bild stößt einen dazu angelegten Prüfplan an, der durch
den Benutzer festgelegte Informationen auf die verfügbaren Pixelsensoren anwendet.
Pixelsensoren sind Messoperationen die auf das
Eingangsbild wirken, und Informationen über die Eigenschaften eines
Bildbereiches liefern.
Die Pixelsensoren werden mit der Skriptsprache
LUA aufgerufen, und ermöglichen
durch
umfangreiche Parametrisierung der Funktionen auf unterschiedlichste
Anforderungen in einem Messbild zu reagieren.
Nachdem im LUA -Skript die nötigen Informationen
beschafft wurden, können
diese auf die
grafische Darstellung des Messbildes übertragen werden um die
entsprechenden
Bereiche in der
Ansicht für den Betrachter markiert anzuzeigen.
Die
Übertragung der grafischen Informationen sowie die damit verbunden Steuer und
Regelausgänge werden über Ergebnispakete transportiert genannt Patterns, die auch zur Namensgabe der
Software beitrugen.
Die für jede
Messung benötigten Parameter des Anwenders, stammen aus einem
vom Prüfplaner
definierten XML-Parameter -Baum.
Hier können Felder des Prüfplans angelegt werden, z.B. für Eingriffsgrenzen Warngrenzen
Schwellwerte und Bemaßungen. Diese Informationen können während
des Betriebes erfolgen Änderungen wirken direkt auf den LUA-Skript-Prüfplan zur Prozesszeit ohne die Anlage anhalten zu
müssen.
Ein Prüfplan
besteht aus folgenden Bestandteilen.
1) Kamera/Bild/Video
–Geräte -Initialisierungsdatei.
2) Standard-Setupdatei
als Bindeglied für die Kommunikation. *.set
3) Benutzerdefinierter
Parameter -Baum. *.xml
4) Lua –Skript. *.lua
Mit der Weiterleitung
von Messergebnissen auf die Peripherie z.B. Prozessleitstellen
von Siemens (SPS) oder FeldbusController (WAGO750) ist die Software einsatzfähig
für die industrielle Messtechnik. Zusätzlich werden auch TCP Protokollverbindungen unterstützt. Es ist auch möglich direkt
aus dem LUA –Interface eine Serielle
RS232/432 Verbindung mit einem Mikrocontroller
herzustellen.
Datenverbindungen
werden in der Datei *.set eines
Prüfplans definiert, indem dort
Die
Verbindungsinformationen IP-Adresse und Port eingetragen werden. Für die SPS Verbindung werden zudem noch der
SpsSockel sowie die Datenbausteinnummer definiert.
Prozessrelevante
-Funktionsparameter sind also nur über einen Editor veränderlich.
In der
Prüfplankonfigurationsdatei *.set wird unter anderem festgelegt, ob
überhaupt eine Benutzeroberfläche dem Operator gezeigt werden soll. Ausgelegt
ist die Software als VisionServer
der minimiert seine Abläufe im Hintergrund ausführt und von einer übergeordneten
Prozessteuerung visualisiert wird.
Alle Informationen des VisionServers
sind also auf einer Plattform wie z.B. WinCC
/ VB / Net darstellbar.
Die
einfachste Möglichkeit der optischen stichprobenartigen Betrachtung der Messereignisse
kann über den integrierten WebServer erfolgen.
Wird dieser aktiviert, kann mit jedem „pluginbrowser“ Einsicht auf das letzte
Messbild genommen werden.
Für eine
Echtzeit -Abbildung des Messbildes, wird die ActiveX Komponente PatConnect
in die eigene Anwendung integriert, selbst auf einem Excel-Sheet kann das aktuelle Messbild damit in Echtzeit eingesehen
werden, während der VisionServer
minimiert arbeitet.
PatConnect verkapselt das SDK-Beispiel PatConnectTest,
hier wird genau aufgeschlüsselt wie das Datagramm
des VisionServers via C/C++ funktioniert.
In vielen
Fällen reicht es aus den VisionServer als
getrennte Anwendung mit seinen Darstellungsfähigkeiten ohne weitere Integration
des Messbildes ablaufen zu lassen.
Der VisionServer wird über einen
eingehenden Kameratrigger
angestoßen.
(Es ist
nicht vorgesehen das eine Kamera im „Freerun“ unentwegt Bilder sendet, jedem
Ereignis geht also im protokolliertem Messablauf ein Trigger der Kamera voraus!)
Der VisionServer benötigt >10[ms]
um eine Bewertung des Kamerabildes zu erzeugen und dieses an die Prozesssteuerung zu leiten.
Im Folgenden
wird die Kommunikation mit der Siemens Prozessleitstelle S7, dem WAGO750 FeldbusController.
und der direkten TCP Verbindung und
dessen Visualisierung beschrieben.
Für die SPS basierende Kommunikation gilt ein
Ablaufplan der bei der Schrittketten- Erstellung der S7 Programmierung zur Anwendung kommt. Weiter unten werden
Die genauen Abläufe
des Protokolls dargestellt.
Der VisionServer nimmt nicht teil am Feldbus, sondern schreibt die
beschafften
Informationen
mit Geschwindigkeitsvorteil direkt in einen Datenbaustein (DB) der S7 pro
ausgelösten Messzyklus. Die Kommunikation erfolgt ausschließlich über den TCP-Port. Hier gilt das
eine SPS mit TCP-Frontsteckverbindung
schneller ist als gleiche mit einem Ansteckmodul.
Die SPS benötigt folgende
Strukturdefinition die einen DB
überlagert, daher muss der DB in der
Projektplanung mindestens 286 Bytes
lang sein:
5 x INT =
2Bytes = 10 Bytes
1 x REAL
=
4Bytes = 14 Bytes
3 x DWORD = 4Bytes = 26
Bytes
128 x INT
= 2Bytes = 282 Bytes
Benötigte DB Size = 282 Bytes
=========
Datenstruktur
für einen beliebigen extra angelegten DB(Datenbaustein) :
STRUCT
Measure : INT;
//Messen Start
Command : INT;
//Befehlsnummer kann im Prüfplan verwendet werden
Acknowledge : INT;
//Messen-Ok ist
immer dann 1 wenn PatControl fertig
Width : INT;
//Info Messbereichsweite (Zusatzinfo
über die Bildbreite)
Height : INT;
//Info Messbereichshöhe (Zusatzinfo
über die Bildhöhe)
Calib : REAL;
//float Kalibrierungsfaktor multiplikator
nach Mikrometer
Trigger : DWORD;
//der Kamera
Trigger steigt mit jedem Bildtrigger
Size : DWORD;
//Anzahl der befüllten Datenfelder
0-127
ProcessClock :
DWORD;
//Anzahl der Millisekunden seit SystemStart
Data : ARRAY[0..128] OF INT;//enthält dem
Prüfplan entsprechende Daten.
END_STRUCT;
Diese
Datenstruktur muss 1:1 kopiert und
in einem Funktionsbaustein untergebracht werden. Der Speicherbereich des DB(n) kann mit der Struktur überlagert
werden um die Datenfelder im Simatic-Manager
als Variablen in Echtzeit einsehen zu
können. Es ist erforderlich mindestens +1 PG-Gerät
in der Konfiguration zu erlauben. Der VisionServer
loggt sich als PG in die
Prozesssteuerung ein. Nach einem Reset der
SPS versucht der VisionServer bei einem Kameratrigger
sich erneut einzuloggen ohne dass dieser neu gestartet werden muss.
Im Folgenden
wird dargestellt wie eine Projektierung der SPS aussehen kann.
Es werden in
diesem Fall 3 DB’s von 3 parallel
laufenden VisionServern vereinbart.
DB201 DB202 und DB203 Außerdem wird in Bild
1 gezeigt wo die Anzahl der PG’s
voreingestellt wird und wie die Datenstruktur
im Funktionsbaustein aussieht.
In den SPS CPU-Einstellungen
muss die Anzahl der PG –Geräte > 2
sein damit
fremde Anrufer akzeptiert werden.
Eigenschaft Simatic –Manager CPU
Konfiguration:
Anzahl
erlaubter PG -Teilnehmer
Es wird die
empfohlen die SPS direkt mit einem Industrie-Splitter zu verbinden damit
nicht nur der VisionServer sondern
auch Wartungs-Laptops angeschlossen werden können.
Immer weitere
Zugriffe wie Datenbank Logger und grafische Visualisierungen reduzieren
die Latenzen,
dennoch hat sich die Kommunikation über direkte TCP -> DB Beschreibung
als effektiv erwiesen.
2.0.3 SPS Datenbausteinvergabe
Für jeden VisionServer (dieser kann mehr als
einmal ablaufen) wird ein eigener Datenbaustein definiert der mindestens so
lang in Bytes ist, wie die Datagramm –Struktur
es vorgibt.
Diese DB’s können dann aus einem
Funktionsbaustein gelesen/beschrieben werden.
Eigenschaft Simatic –Manager
Projektierung:
Angelegte
Datenbausteine für die VisionServer -Kommunikation
2.0.4 SPS SCL-Datagramm Vereinbarung
In einem
Funktionsbaustein kann die oben beschriebene Datagramm –Struktur zur
Kommunikation mit den VisionServern angelegt
werden, jeder Prüfplan enthält in der Datei *.set die Nummer des DB’s
in den dieser schreiben/lesen wird.
Eigenschaft Simatic –Manager
Funktionsbaustein:
Datentype
und Variablen -Definition. Ein INT hat in der SPS 16Bit entsprechend
liefert der VisionServer 16Bit Integer’s Strukturdefinition
in einem SCL Baustein
Ende Strukturdefinition
2.0.5 SPS-Einstellungen am
VisionServer
Der VisionServer wird durch seine
Prüfplandatei die mit *.set endet
für die SPS-Konfiguration passend zu
den obigen Beispielen wie folgt konfiguriert.
In der Datei
finden sich unter dem Schlüssel [Frameinfo]
folgende Einträge die angepasst werden müssen.
[FrameInfo]
SpsChan = 201 //Der Datenbaustein für R/W
SpsIp
= 192.168.2.100 //Die IP der SPS im Intranet
SpsSlot = 2 //Der Slot für PG-Geräte normal = 2
SpsAccon= 0 //DELTALOGIC AGLink Unterstützung
Über den
Schalter SpsAccon=1 kann optional
die Unterstützung der SPS-Kommunikation über das AGLink-Interface erfolgen.
Diese externe
Software benötigt einen vom Hersteller Gelieferten Dongle für das WIBU –System.
Alternativ
dazu kann die im Setup befindliche AGLink.dll
durch die AGLink-Demo.dll
ausgetauscht werden um die Verbindung ohne einen Dongle zu testen.
Nach dem speichern der
Prüfplankonfiguration *.set und dem
Neustart des VisionServers wird
dieser versuchen die Verbindung herzustellen.
Betrachten sie während der Verbindung/Messvorgänge die
Debug-Ausgaben
mit dem Tool DebugView.exe aus dem Installations-Verzeichnis.
2.0.6 SPS-Protokollablauf
Ist die Verbindung hergestellt, und eine Kamera angeschlossen
die im Triggerfall bereits jetzt ein Bild auf dem VisionServer abbildet, kann eine Kommunikationsschrittkette in
einem Funktionsbaustein wie folgt angelegt werden:
1) Sps setzt Measure = 1 //Prüfplannummer
2) Sps setzt Command =
0 //freier Hilfsparameter für Prüfplanung
3) Sps Triggert Kamera
//VisionServer bekommt jetzt ein Bild
4) VisionServer setzt Measure = 0 //Bestätigung für Trigger erhalten
5) Sps setzt Acknowledge = 0 //VisionServer darf DB beschreiben
6) VisionServer setzt Acknowledge = 1 //VisionServer hat DB fertig beschrieben
Nach Schritt (6) hat der VisionServer alle Daten bereitgestellt, nicht nur daran zu erkennen
das Acknowledge auf 1 steht sondern auch das das Datenfeld ProcessClock immer einen
Anderen Wert
enthält als zuvor. Das Datenfeld Size
gibt Auskunft wie viele der möglichen
127 Werte gesetzt wurden. Der Eintrag Data[0] ist ein Generalmarker für
Messfehler, ist
dieser Wert >
0 wurde ein Messfehler festgestellt oder das Teil ist nicht bewertbar bzw.
Fehlerhaft. Ein Wert von Data[0] = 0 besagt das die Messung erfolgreich war und alle
Dateninhalte
den Prüfbedingungen entsprechen.
Je nach Umfang des Prüfplans ist mit folgenden Latenzen zu
rechnen:
(3) – (4)
1 - >5[ms]
(4) – (6)
10 - >100[ms]
Wie die Daten vom VisionServer
aufgestellt werden wird im Kapitel LUA-Prüfplanung
beschrieben.
2.0.6 WAGO FeldbusController 750
(MODBUS)
Für die
Kommunikation mit dem FeldbusController
750 wird das Protokoll durch die Modbus
-Adressierung verkapselt. Die Kommunikation funktioniert in dieser Fassung ausgehend.
Es können IO-Ports der Breite 8 und 16 beschrieben werden, das Ausgeben analoger Messwerte im 16 Bit Modus ist möglich. Die maximale
Busbreite beträgt 128 WORDS(16Bit)
Das
entspricht z.B. 16 x 8Bit IO Module oder 8 x
16Bit Analogmodule.
Die Module
die der VisionServer verwendet
sollen zuerst auf der Hutschiene gesteckt werden. In der Folge : Digital -outputs
’s vor Analog -outputs.
Folgende Module werden unterstützt:
1) 750-536
Digital Ausgang x8
2) 750-563
Analog Ausgang 2x16
Andere Module wurden nicht dauerhaft getestet.
1.1.1 MODBUS-Einstellungen am
VisionServer
Der VisionServer wird durch seine
Prüfplandatei die mit *.set endet
für die Modbus-Konfiguration wie folgt konfiguriert.
In der Datei
finden sich unter dem Schlüssel [Frameinfo]
folgende Einträge die angepasst werden müssen.
[FrameInfo]
Modport
= 502 //Standard
Modbusport
SpsIp
= 192.168.2.100 //Die IP des
Feldbuscontrollers
Nach dem speichern der
Prüfplankonfiguration *.set und dem
Neustart des VisionServers wird
dieser versuchen die Verbindung herzustellen.
Betrachten sie während der Verbindung/Messvorgänge die
Debug-Ausgaben
mit dem Tool DebugView.exe aus dem
Installations-Verzeichnis.
Wie die Daten vom VisionServer
aufgestellt werden wird im Kapitel LUA-Prüfplanung
beschrieben.
Für die
Kommunikation mit einem oder mehreren Teilnehmern über TCP unterliegt der Datenaustausch einer protokollierten Verbindung,
in der ein Datagramm (Datenstruktur) beidseitig ausgetauscht wird. Die Struktur
hat dieselbe Form wie schon im Thema SPS
dargestellt, bildet sich aber für den C/C++ Programmierer wie folgt ab:
typedef struct ProcessStatus
{
short Measure; //StartMeasure
short Command; //Command
short
Acknowledge; //MeasureReady
short Width; //Detect
Width
short Height; //Detect
Width
float Calib; //calibfactor
multipiler
DWORD Trigger;
//Systemtime after restart
DWORD Size;
//amount of transfered elements
DWORD ProcessClock; //ProcessClock
short
Data[DATALEN];//Different datas
}PRCSTAT;
Die
Kommunikation über diese Datenstruktur mit dem VisionServer wurde bereits auf Kleincomputern ARM unter Linux implementiert sowie über einen in
Windows erstellten Klienten. Beide Beispiele befinden sich im SDK der Software und werden dort im
Detail genau dargestellt. Eine direkte Kommunikation erfordert die
Implementierung der dortigen
Beispiele.
Über das Datagramm werden also nicht nur die Messdaten des VisionServers übertragen sondern auch
ein Signal das anzeigt das alle folgenden Daten mit der Länge Size Bestandteil eines JPEG komprimierten Bildes sind.
Das Signal das zum Empfang eines bevorstehend anliegenden Bild
-Datenblockes hinweist tritt auf wenn Command
= -1 ist. Ab dann gilt das Size Bytes gelesen werden müssen bevor
der nächste Datenblock wieder dem Datagramm entspricht.
Es ist möglich mit einer nur vom System begrenzten Anzahl von
Anrufern auf diese Daten zuzugreifen da sie an alle verbunden Teilnehmer
ausgesendet werden. Verbindlich getestet in der Produktion wurden drei
Klienten.
Das Datenfeld Calib enthält
einen durch den Prüfplaner hergestellten Kalibrier-Multiplikator mit dem es
möglich ist von Pixel auf Mikrometer umzurechnen alle Daten werden also als
Pixel Aus dem Verhältnis Width
: Height geliefert. Um
einen Messwert aus Data[n] in
Mikrometer umzurechnen gilt:
X = XMesswert * Calib
Y = YMesswert *
(1 + ( 1-(Height/Width) )) * Calib
Dem
Server kann mit dem Text "SENDIMG=1"
mitgeteilt werden, das Bilder gesendet werden sollen, außerdem kann mit "TESTPLAN=3" festgelegt werden das
z.B. Prüfplan 3 für den folgenden Trigger aktiviert werden soll, diese
Nachrichten können zu jeder Zeit übermittelt werden. Rotationsprüfpläne werden
unten noch beschrieben.
Für WinCC / Basic / Net oder Excel VBS -Programmierer gibt es eine
Verkapselung der Beispiele aus dem SDK
zu einer ActiveX -Com basierenden
Lösung, mit der eine TCP Verbindung
ohne detaillierte Programmierung in C/C++
hergestellt werden kann um das Echtzeitmessbild in eigenen Anwendungen
verwenden zu können. In Excel kann
Über das Menü- Einfügen/Object eine Liste verfügbarer im System registrierter ActiveX Objekte geöffnet werden In der
sich das Objekt PatConnect befindet.
Hier kann die Methode Connect verwendet
werden, um eine Verbindung zum laufenden Messbild herzustellen.
Alternativ
kann auf das Messbild und auch auf die Konfiguration des Prüfplans über einen
eignen WebServer zugegriffen werden.
Somit wird ermöglicht Stichprobenartig das letzte Messbild und die
dazugehörigen Prüfplan-Felder aus dem Benutzer definierten Parameter Baum
einzusehen und zu verändern. Jeder Prüfplan verfügt über das Verzeichnis Web indem eine
Freiland editierbare Version einer HTML
Seite namens index.htm vorliegt in
der
der Inhalt
beliebig erweitert werden kann. Die Datei Setup.htm
wird bei jeder Eingabe im Benutzerdefinierten Parameterbaum neu erzeugt, ein
Editieren hat also keine Auswirkung da diese Datei immer überschreiben wird.
Wenn ungültige Seiten auf dem Webserver aufgerufen
werden wird die Fehlerseite error.htm
angezeigt.
1.2.3 TCP-Einstellungen am
VisionServer
Der VisionServer wird durch seine
Prüfplandatei die mit *.set endet
für die TCP-Kommunikation wie folgt
konfiguriert.
In der Datei
finden sich unter dem Schlüssel [Frameinfo]
folgende Einträge die angepasst werden müssen.
[FrameInfo]
Tcpport
= 888 //Port auf dem der
VisionServer wartet
Webport
= 8080 //alternativ mit Webserver
oder 0 kein Webserver
Nach dem speichern der
Prüfplankonfiguration *.set und dem
Neustart des VisionServers wird
dieser auf eingehende Verbindungen von Anrufern auf dem jeweiligen Port warten.
Betrachten sie während der Verbindung/Messvorgänge die Debug-Ausgaben mit dem Tool DebugView.exe aus dem
Installations-Verzeichnis.
Wie die Daten vom VisionServer
aufgestellt werden wird im Kapitel LUA-Prüfplanung
beschrieben.
PatControl unterstützt
zu fast jedem bekannten Verfahren eine oder mehrere Kameras,
dennoch kommt es vor, dass einige Hersteller eigene Verfahren
herleiten oder bestehende Verfahren sich ändern. Aus diesem Grunde werden alle
Bildgebenden Geräte auf
5 Eigenschaften reduziert die diese alle gemeinsam haben.
Dadurch ist es möglich, PatControl von
den unterschiedlichen Verfahren zu isolieren, und für jede Gruppe eine eigene
Handhabe in einer *.DLL zu
implementieren. Auch nachträglich oder auf Kundenwunsch
können neue Systeme einfach zu den bestehenden hinzu Integriert werden.
Gemeinsamkeiten aller Geräte:
1) Optionen
Dialog
2) Trigger
an/aus
3) Bilddimension
4) Bildinformation
5) Reset
Diese 5 Grund Eigenschaften vermutet PatControl hinter jeder Bildquelle dazu gehören auch Bilder, Videos und Verzeichnisse
mit Bildern. Im Folgenden wird jede Gruppe der
bekannten Geräte
erklärt. Es gibt noch eine weitere wichtige Gemeinsamkeit, alle Hersteller
liefern für Ihre Geräte nicht nur einen Treiber sondern auch ein SDK -(SourceDevloperKit) um die Geräte
öffnen und Benutzen zu können.
Diese SDK’s werden von FlexxVision in *.DLL’s verkapselt.
Außerdem haben alle Hersteller eine sog. API-Anwendung
die eine Konfigurationsdatei, in der alle Einstellungen verzeichnet sind
speichern kann. Diese enden mit einer vom Hersteller vergeben Dateiendung
anhand PatControl entscheidet welche
DLL zu dieser Endung passt.
Zum öffnen einer Kamera verwenden sie das Menü/Camera/Select/SelectCamera
PatControl
Menü:
Beachten
sie die Möglichkeit im Dateidialog die Erweiterungen unten rechts zu öffnen.
2.1.1
Unterstützte Kamera-Systeme
1) CameraLink
(Dalsa,SiliconSoftware,ViewWorks)
2) FireWire
(1394 Allied Sony u.a)
3) CMU
(1394 Digital Camera Driver)
4) GigE
(Network Protokoll Overlay)
5) USB
(VideoForWindows [VWF])
6) Twain
(Scanner aller Hersteller)
7) FolderScan
(Bilder werden via Folderscan als Kamera verstanden)
8)
EdiMax (IP-WebCam)
9)
DeskCam (DesktopVideoCapture)
10)
AVI,MPG,JPG,BMP,TIF,GIF (Dateien die als Kamera verstanden werden)
11)
LIP (Leuze LPS36/EN 3D
Geometriesensor via UDP)
12)
TUC (Tucsen USB-Kamera
Unterstützung HS/TS131/130HC)
13)
VisualFilter (ImageProcessFilterNetwork)
14)
DShow (DirectShow 9)
Kameras
werden über Ihre Dateiendung
ausgewählt, im Verzeichnis Config
der Installation befinden sich zu den beschrieben Typen die entsprechenden
Beispieldateien.
Im Folgen werden die unterschiedlichen Systeme in dieser Folge
genauer erklärt und auf jeweilige Einzelheiten eingegangen. Neben dem Titel,
wird die Dateiendung aufgeführt über die
PatControl die Hardware
identifiziert und öffnet.
QuickCamera Windows
unterstützt 3 Arten von bildgebenden Geräten direkt, es ist möglich ohne
besondere Konfiguration eine angeschlossene Kamera für DirectShow,Twain oder VFW „schnell“ zu öffnen, über den
Menupunkt: Camera/Select/QuickCamera:
2.0.2 CameraLink
[*.CCF] [*.MCF]
CamerLink
ist ein Industrie-Standard der auf FrameGrabber
basiert, hiermit ist es möglich erhebliche Datenmengen direkt in den
Arbeitsspeicher über das PCIe
Bussystem zu schreiben. Nur so können derartige Datenmengen über LVDS(LoVoltageDifferentSignal)
sicher übermittelt werden. Hier werden zwei Anbieter unterstützt
zum einen SiliconSoftware
die ihre Konfigurationsdateien mit der Endung *.mcf speichern und Teledyne –DALSA
die als Dateiendung *.ccf
verwenden. Eine derartige Kamera wird also mit deren Firmware genau
spezifiziert und Parametrisiert. PatControl
öffnet diese fest eingestellten Systeme und ermöglicht es nicht auf deren
Parameter zu zugreifen. Dies ist für die Betriebssicherheit
ein wichtiger Faktor die Hardware nicht während des Messbetriebes
verstellen zu können.
2.0.3
Allied Vision FireWire(1394) [*.XML]
Liefert neben dem SDK
-FirePackage auch ein Konfigurations-
Tool mit dem einige Grundfunktionen auf dem Flashspeicher der Kamera abgelegt
werden. Diese Informationen bleiben auch über die Stromlosigkeit erhalten,
während einige andere Parameter wie Shutter
und Gain über einen von PatControl bereitgestellten Dialog
verändert werden können.
FireWire-Kameras
von AlliedVision bilden sich als Netzwerk von Kameras ab, so
können z.B. auch mehrere Kameras in einem System zum Einsatz kommen. Nach der
Konfiguration mit der FirmWare SmartView.exe aus der FirePackage werden die Einstellungen
gespeichert, hierfür wird von diesem Programm eine Datei mit der Endung *.xml erzeugt in der vor allem die
eindeutige ID der Kamera zu finden
ist: GUID="A57023A0F8CA7"
Sollte die Datei leer sein oder die GUID
nicht existieren, wird die zuerst gefundene Kamera aus dem 1394 Netz verwendet.
2.1.4
CMU FireWire(1394) [*.IDC]
CMU
1394 Digital Camera Driver ist ein Universaltreiber der alle 1394 Kameras ohne deren spezielle FirmWare ansprechen kann. So können
auch Digitalkameras aus dem Consumer -Bereich einfach mit PatControl z.B. am Mikroskop verwendet werden, auch Industrie-Kameras
von AlliedVision werden so
alternativ unterstützt. Dabei ist kein Zugriff auf die "Future‘s" der
jeweiligen Hardware möglich. Diese müssen vorher mit der jeweiligen Firmware
als UserSet im Flashspeicher der Geräte hinterlegt werden. In der dazugehörigen
Datei *.idc wird lediglich ein handerstellter
Eintrag hergestellt der Auskunft über das zu verwendende Bildformat ermöglicht.
Inhalt der *.idc
Datei:
Board
= 0 //Welche der gefunden Kameras
Format = 7
//Freies Bildformat 7
Mode
= 0 //Na
Bpp
= 24 //Bittiefe
2.1.5
GIGE (Network
Protokoll Overlay)
[*.GIG]
GigE
-Kameras werden bisweilen nur von Herstellern unterstützt, die das SDK
mit der Parametersoftware SampleViewer.exe
enthalten. Dieses Tool erzeugt eine
Parameterdatei mit der Endung *.gig
und kann nur dann von PatControl
verwendet werden, wenn alle Einträge gemäß des Formates enthalten sind.
Außerdem ist es erforderlich eine auf IntelChipsatz
basierende Netzwerkkarte im System vorzuhalten die mit einem sog. Protokolloverlay hohe Übertragungsraten
gewährleistet. Da nun die Bilder als gepufferter Stream eintreffen war es bei
Substrat -Scannern nicht möglich auf einer Trigger folge die dazugehörige
Anzahl von Bildern mit der Aufnahmeposition zu synchronisieren.
2.1.6
TWAIN (Scanner aller Hersteller) [*.SCA]
TWAIN
ist ein 1992 von den Unternehmen Aldus Corporation, Eastman-Kodak,
Hewlett-Packard und Logitech festgelegter Standard zum Austausch von Daten
zwischen Bildeingabegeräten (Scanner, Digitalkameras etc.) und Programmen für
Microsoft Windows und Apple Macintosh. Die Dateiendung *.sca signalisiert PatControl
zu versuchen das Scanner-Systeminterface zu öffnen, und bietet über das Menü
Camera/Options erweiterte Einstellungen der jeweiligen Hersteller.
2.2.4
Microsoft DShow (DirectShow) [*.DXS]
Das
VFW Interface von Microsoft wurde insbesondere ab Windows 10 durch
DirectShow
abgelöst. In der Steuerdatei mit der Endung *.dxs kann die zu öffnende
Gerätenummer die Auflösung und ein Zeitschlitz angegeben werden. Die
DirectShow
Wiedergabegeschwindigkeit
kann durch Angabe des Zeitwertes PollTime in der *.dxs Datei
verlangsamt
oder beschleunigt werden. (Voreingestellt 10Millisekunden).
Inhalt
der Steuerungsdatei *.dxs
[Camera]
Id=1
//Nummer der Kamera
PollTime=10
//Zeitschlitz zur Bildratenanpassung
Width=640
//Bild soll breite
Height=480
//Bild soll Höhe
Bpp=16
//Anzahl der Bits pro Pixel
Sollte
die Auflösung Width/Height/Bpp nicht bei der Iteration der Kamera gefunden
werden
können diese aus dem DebugView nach dem öffnen der Kamera eingesehen
oder
über den Property Dialog neu ausgesucht werden. Es wird sonst die Standard
Auflösung
der Kamera bevorzugt.
2.1.7 FolderScan (PatControl eigenschaft)
[*.*]
Wird
versucht eine Kamera ohne Dateiname zu öffnen verwendet PatControl den FolderScan, dies bedeutet das ein Verzeichnis iteriert wird
und alle darin vorkommen Dateien als Bildquelle sequentiell als virtuelle
Kamera dem System „vorgespielt“ werden.
Zum öffnen der FolderCam
verwenden sie das Menü/Camera/Select/SelectScanFolder
PatControl
Menü:
Diese
Eigenschaft kommt insbesondere zur Anwendung, wenn durch das Logbuch(Logging)
Raw -unkomprimierte Bitmapbilder in das Logbuchverzeichnis optional geschrieben
wurden.
Es kann
ein ganzer Durchgang von Messungen wieder historisch korrekt abgespielt werden,
um eine Prozessoptimierung oder Diagnose durchführen zu können auch ohne die Messvorrichtung/Maschine in der Nähe haben zu müssen.
Weitere Details unter Data-Logging.
2.1.8 EdiMax (webipcam) [localhost:port]
Erwartet
als Dateiname eine IP -Adresse und öffnet dann eine Edimax IP-WEB-Camera.
Diese Art
von Kameras haben kein standardisiertes Verfahren zur
Ansprechung, hier
wurden
Datenpakete direkt aus dem JPG –Stream wieder in Einzelbilder zurück gewonnen.
Dieser
Kameratype ist nur unter Vorbehalt unterstützt. Auf Anfrage können hier jedoch Kundenspezifische Integrationen durchgeführt werden.
2.1.9 DeskCam (WindowsDesktopCapture) [*.win]
Es ist
mit diesem Kameratype möglich den Desktop als Kamera zu verwenden und ständig das Bild
nach PatControl zu überbringen. Dies kann für Wartung oder Diagnose -Zwecke verwendet werden, auch Kamerabilder für die
keine Behandlung vorliegt können so erfasst werden. Im Zusammenhang mit dem
Webserver kann so der Arbeitsplatz
grafisch übertragen, und auf einer HTML –Seite abgebildet eine Fernbetrachtung ermöglichen.
2.2.0
Microsoft VFW (VideoForWindows) [*.VID]
Auch moderne USB-Web -Kameras liefern heute mit CMOS-Sensoren akzeptable Bilder die auch für die Bildverarbeitung
verwendet werden können. Die Einschränkung sind starre Optiken und ein
höheres Rauschverhalten, oder Betriebsparameter die nach der Stromlosigkeit
verloren gehen. Dennoch ist VFW
eines der ältesten Windowsartefakte auf der schlussendlich auch andersnamige
Interfaces wie DirectShow basierten.
Oft werden Kameras über USB2.0 mit
horrenden Auflösungen angeboten, dies ist jedoch eine Filtertechnik die per
Software auf der Rechnerseite erreicht wird. Die Sensorgröße ist meist 1/8“ und liefert selten mehr als 640x480 physikalische Pixel.
2.2.1
AVI MPG JPG BMP TIF GIF (Bild und Videodateien) [*.*]
Bilder
sowie Videos vom Type AVI oder MPG können als Kamera über ihre jeweilige Dateiendung geladen
werden. PatControl findet dann alle Eigenschaften einer Kamera in diesen Daten, auch der Trigger im Zusammenhang mit vor/rück tasten wirkt auf die Verarbeitung.
Wird
ein Bild geladen so wird der Prüfplan nur einmal angestoßen, gerne möchte man dass
dieser ständig mit diesem Bild aufgerufen wird. In diesem Fall kann der Bild –Trigger abschaltet werden. und es wird damit erreicht dass
das Bild ständig an den Prüfplan übermittelt wird. Dies gilt auch für ein Video -Bild das gerade auf Pause steht.
Trigger
und Vor/Rück/Pause wird weiter unten beschrieben.
2.2.2 Leuze
LPS36/EN (3D Geometriesensor) [*.LIP*]
Die 3D
–Sensoren von Leuze liefern über die Lasertriangulation z.B. 100 Zeilen/Sekunde
mit 340
WORD Werte an Höheninformation. Diese Daten werden vom ImageWrapper
(Kameraverkapselung) als 32Bit RGBA Bild zurück geliefert indem die Messwerte
in den
ersten 16Bit
untergebracht werden, und im Alphakanal eine Grauwertinterpolation
abgespeichert wird. Diese Technik ist nur mit Kundenabsprache für spezielle
Lösungen
verfügbar
und liefert für die Standardbewertung im Prüfplan nicht ohne Anpassung Daten.
2.2.3 Tucsen (HS/TS131/130HC) [*.TUC]
Ist ein Chinesischer
primär Hersteller von Kamerasystemen die in vielen Anwendungen z.B. in der
Mikroskopie zum Einsatz kommen. Das Repertoire an Kamerasystemen ist umfassend
und es gibt viele verschiedene Treiber und SDK’s einige davon
unterstützt PatControl dazu gehören die Kameras aus der HS-Serie
sowie die 1.3MP Versionen TS131 und die 130HC.
Kundenspezifische Integrationen von weiteren Versionen sind auf Anfrage
jederzeit möglich.
2.2.5
VisualFilter (ImageFilterNetwork) [*.fpp]
PatControl
unterstützt
pro Anwendung nur eine Kamera. PatControl ist dahin optimiert mehrmals auf dem Desktop in
der Taskbar als VisionServer kommunikativ ablaufen zu können, dann auch mit unterschiedlichen
Kameras gleichzeitig in jedem Prozess verkapselt.
PatControl verwendet keine direkten Bildfilter vor der
Auswertung, dies übernehmen die PixelSensoren intern. Dennoch kann es wichtig sein Bilder vor
der Zuführung zur Berechnung über Standard Matrixfilter zu verändern um Merkmale zu verstärken oder
abzuschwächen.
In beiden Fällen
wirkt VisualFilter.exe Das Programm ist Teil des Setups und kann mehrere
Bildquellen miteinander mischen und auch unterschiedlichste
Filterketten herstellen. Damit ist es möglich stereografische oder quadgrafische
Überlagerungen verschiedener Kameras herzustellen und dessen Bildausgaben
weiter durch Bandfilter mit Matrizen zu multiplizieren.
Dies kann so weit
gehen, dass ein ganzes Netz von Filterketten hergestellt wird an dessen
Ende ein hoch approximiertes
Ausgabebild steht.
VisualFilter.exe ist also ein Editor der das BildProzessFilterNetzwerk
abbildet das mit der Maus einfach hergestellt werden kann. Nach dem Speichern
in eine *.fpp Datei wird das Netzwerk in eine interne Datenbank abgelegt
die über die in der *.fpp Datei stehenden Schlüssel wieder
hervorgebracht werden kann, ohne das Programm VisualFilter.exe überhaupt
noch einmal starten zu müssen.
PatControl kann das finale Ausgangsbild der Filterkette über
die Dateiendung *.fpp als Kamera „verstehen“ und diese Information wie
eine normale Kamera weiterverarbeiten.
Im SDK Bereich
sind C/C++ Beispiele die verdeutlichen wie mit VisualStudio eine
solche Filterkette auch in eigenen Anwendungen integriert werden kann, dort hat
man die Möglichkeit auf jede Stufe der Filterkette separat zuzugreifen.
Auch dieses Verfahren
ist nicht starr und kann durch Kundenwünsche ergänzt werden.
Dies betrifft alle
Komponenten von PatControl.
Bildnetzwerk als Virtuelle Kamera, das
Verfahren wird im Anhang beschrieben
Projektierung
mehrerer virtueller Kameras als Bildnetzwerk.
Unter Bild Kontrolle
versteht PatControl die klassischen „Schalter“ für Bildlauf Vor/Rück/Pause/Play,
Standbild, Speichern, Laden, Anstoßen(Triggern) .
Da die Software
zwischen Video, Kamera und Einzelbild keine Unterschiede macht
Bildet sich ein überlagerndes
Verhalten bei der Bild Kontrolle ab. Diese Verhalten werden im Einzelnen
aufgeführt.
Toolbar Buttons:
Optionen
PatControl
Menü:
Bildnummern und Zähler zurücksetzen
Zeitbasierender Trigger
Einzelbilder stammen
aus einer Datei. Nach dem Laden des Bildes wird der Prüfplan einmal ausgeführt.
Möchte man dass ein Einzelbild ständig den Prüfplan ausführt um z.B. den
Programmablauf zu beobachten und die Ergebnisse der Modifizierungen in Echtzeit
zu betrachten muss der Bildtrigger ausgeschaltet werden. Bei
Einzelbildern sind die Schalter zur Bildsteuerung Left/Right/Pause/Play
deaktiv. Einzelbilder haben keinen Optionsdialog.
Bildquellen vom Type
Video werden in jetziger Version nur vom Format *.avi unterstützt.
Bei Videos wirken die
Schaltflächen Left/Right/Pause/Play der Trigger hat keine
Auswirkung auf die Bildwiederholung, dafür bedarf es einer
Einzelbildabspeicherung über die Logging -Funktionalität bezüglich Raw-Images.
Beschrieben wird der Vorgang im Thema Prozess-Logbuch Aufzeichnung. Das
Rückblättern der Bilder im Video erzeugt eine Dekrementierung des
Bildtriggerzählers. Videos haben keinen Optionsdialog.
Das durchlaufen eines
Folders/Verzeichnisses funktioniert am besten wenn dort alle Bilder dieselbe
Dimension haben. Außerdem ist es vorteilhaft und schneller ein
unkomprimiertes *.bmp zu laden anstatt einer *.jpg Version. In
fast allen Beispielen wird aus Speicherplatz gründen in den Projekten der Dateitype
*.jpg bevorzugt.
Left/Right/Pause/Play wirken wie bei einem Video, mit dem
Unterschied das ein nicht pausierter Folderscan mit Trigger = „on“ auf der aktuellen Position den Prüfplan
rotatorisch auslöst. Wenn der Trigger ausgeschaltet ist funktioniert der
automatische Verzeichnis -Vorlauf nicht. Ein Folderscan der auf Pause
steht wird weder getriggert noch durchlaufen, man kann jedoch mit Left/Right
durch das Verzeichnis schreiten. Das rückblättern
im Folderscan erzeugt eine Dekrementierung des Bildtriggerzählers. Folderscan’s
haben keinen Optionsdialog.
Für den Typ Kamera
wirkt lediglich der Bildtrigger. Die Schaltflächen Left/Right/Pause/Play
Sind deaktiviert.
Industriekameras werden über ein TTL/LVDS –Signal getriggert. Darauf ist
PatControl ausgerichtet. Webcams/Scanner sind Dauerläufer hier
wirkt der Trigger zum blocken der andauernden Bilderzeugung. Für alle Vorgänge
kann der Time gesteuerte Trigger verwendet werden, dieser lässt
neue Bilder erst dann durch, wenn ein TimeOut in Millisekunden
verstrichen ist. Diese Option kann insbesondere nützlich sein, wenn eine
Physikalisch getriggerte Kamera zusätzlich durch den Timeout -Trigger
geblockt wird. Dies bremst die Protokoll -Kommunikation mit einer Prozessleitstelle
soweit ab, das die gesamte Produktion dadurch im Einzelschritt ablaufen
kann. Je nach Kamera haben diese einen Optionen -Dialog dazu gehören
alle Kameras von Allied Vision sowie die von Tucsen, Twain
und sämtliche über VFW eingebunden Geräte
PatControl unterscheidet generell 2 Arten von Bildern, Prozess-Bilder
und Raw-Bilder.
Prozess-Bilder enthalten bereits erzeugte Grafiken und
Schriften. Diese Bilder werden immer im *.jpg Format gespeichert. Raw-Bilder
entsprechen der Bildquelle und dürfen nicht verändert werden um die
Möglichkeit zu haben gespeicherte Bilder unverändert erneut der Bewertung zu
unterziehen. Raw-Bilder können pro Bild sehr schnell 10[MB]
Speicher auf dem Datenträger belegen. Insbesondere 32Bit RGBA hochauflösende
Farbkamerabilder sind Speicherlastig. Prozess-Bilder werden bei
aktiviertem Webserver ständig erzeugt und auch versendet. Oft ist die Dateigröße
kleiner 100[Kb].
Zum Speichern des
aktuellen Messbildes werden immer zwei Versionen gespeichert, das auslösen der Speicherung eines Messbildes erfolgt mit der
rechten Maustaste auf das PopUp Menü des sichtbaren Messbildes.
Messbild PopUp Menü:
Verstecken
der Toolbar Speichern
des aktuellen Bildes Überladen
des aktuellen Bildes
Default wird der
Dateiname Shot angezeigt der beliebig verändert werden kann, und den
Namen der Raw-Bild Version bezeichnet. Automatisch dazu wird eine zweite
Version im *.jpg Format gespeichert mit der Textverlängerung „Dat“ in dem Fall : ShotDat.jpg
Die zweite Version
enthält die Messinformationen und Texte aus dem Messbild.
Die automatische
Speicherung von Prozess-Bildern und/oder Raw-Bildern wird unter
Prozesslogbuch-Speicherung beschrieben.
Jede
Bildquelle kann automatisch für jede Bilderneuerung als unkomprimierter
Videostream gespeichert werden. Dabei entstehen beträchtliche Dateigrößen die
ab 2[GB] aufgesplittert werden in dem jede weitere >2[GB] Datei eine numerische Kennung im Dateinamen
erhält.
Ausschließlich
erfolgt die Speicherung im *.avi Format dies kann später nachbearbeitet werden,
dient aber im Rahmen der Messbildverarbeitung hier als Ur-Datenquelle die inhaltlich nicht verändert behandelt wird.
Alle Videokompressoren reduzieren zwar die Dateigröße aber auch beträchtlich
die Qualität was hier einem Datenverlust gleichkommt.
Der
Dateiname wird aus dem entsprechenden Kamerakonfigurationsnamen gewonnen, auch
das Datenziel ist dasselbe Verzeichnis in dem auch die Kamera-Initialisierungsdatei liegt.
Beispiel:
C:\Programme\FlexxVision\PatControl\config\Kamera.xml
So wird
das Video den Dateinamen Kamera001.avi im selben Verzeichnis erhalten.
Zum Starten
der Aufzeichnung kann jederzeit der Menüpunkt Camera/Video/Start ausgelöst werden. Zum Anhalten der Aufzeichnung
wird Camera/Video/Stop ausgelöst.
PatControl
Menü:
Menü Video Start/Stop
Das
Abspielen erfolgt mit einem Mediaplayer oder über PatControl wie oben dargestellt.
Ein bereits ablaufendes Video kann nicht als
Video erneut gespeichert werden.
4.0.0 Pattern Editieren
In
einem zu untersuchenden Messbild ist nicht grundsätzlich das gesamte Foto von
Interesse zumeist gibt es bestimmte Bereiche in denen eine genaue Untersuchung der
Bildinformation
erfolgen
soll. Eine Bildbereichsuntersuchung kann erhebliche Prozessor lasten erzeugen,
es kann vorkommen das jeder Pixel mit anderen in eine Berechnung einbezogen
wird.
Der
Bezug auf Patterns spiegelt sich auch in der Namensgabe der Software wieder.
Ein Pattern ist ein durch den Prüfplaner erzeugtes Rechteck
mit einem eindeutigen Namen und
einem
Set von Standardparametern die in der Prüfplanung zur Parameterübertragung in
den Prüfplan dienen. Diese Parameter sind also Bild-Lokal es gibt auch
Benutzerdefinierte Bild-Globale Parameter auf die im Thema Benutzerdefinierte
Parameterbäume eingegangen wird.
Alle in
einem Pattern vorkommenden Variablen erhalten nur vom Prüfplaner im Lua-Skript eine Bedeutung. PatControl verwendet keinen dieser Parameter für eigene
Vorgänge.
Der Zweck
dieser Parameter die zu jedem Pattern geführt werden ist, das im Prüfplan zwischen den einzelnen Bildbereichen Daten zur
Hand sind die nur für diesen Bereich gelten.
Das
Messbild enthält zwei Betriebsarten den Darstellungsmodus und den Editormodus.
Nur im
Editormodus können Pattern erzeugt, gelöscht oder in der Größe verändert
werden.
Zum
umschalten in den Editormodus verwenden sie im Messbild die rechte Maustaste um
das PopUp-Menü hervorzubringen.
Toolbar Buttons
Parameterbäume verstecken
Betriebsmodus
Umschalten
Messbild PopUp Menü:
Um ein
Pattern anzulegen ist es sinnvoll wenn bereits ein aktuelles Kamerabild
angezeigt wird, die Pattern Bereiche sind durchsichtig und ermöglichen
eine genaue Überlagerung mit dem Bildbereich den man „einfangen“ möchte. Zum Anlegen
eines neuen Patterns verwenden sie im Messbild die rechte Maustaste um das PopUp-Menü hervorzubringen.
Messbild PopUp Menü:
Bestehendes
Pattern löschen Bild
Berechnung verwerfen Bild
neu berechnen Neues Pattern hinzufügen
Messbild Neues Pattern:
Aktive
Pattern’s besitzen einen Kontaktrand
Das neue Pattern wird als kleines Rechteck dargestellt das
nun mit der Maus in Position und Größe dem gewünschten Messbereich angepasst
wird. Dazu werden mit der Maus die Standard -Kontaktpunkte die das Pattern umranden bewegt,
Bzw. insgesamt verschoben, wenn der Mauscursor durch anklicken des Bereiches zu
einem 4 Richtungszeiger wird.
Das Pattern hat automatisch einen
neuen Namen erhalten, und eine unveränderliche GUID Das Namensfeld lautet Alias dieser Aliasname kann frei verändert werden und
wird in der weiteren Prüfplanung als einziger Bezeichner zur Unterscheidung der vorhanden
Messbereiche dienen.
Zum löschen eines Pattern wird immer das gerade
aktive Pattern über das Menü gelöscht
Der
feste Satz an Standard-Parametern hat sich im Laufe der Zeit entwickelt und
deckt verschiedene Information ab, die ein benutzerdefinierter Messbereich
benötigt.
Lokale
Pattern-Parameter
PatControl
Sidebar:
Globale
Prüf-Parameter Freie
Verfahrensauswahl Höhen
Schwellwert Breiten
Schwellwert Höhen
Vorgabe Breiten Vorgabe Freie
Ladungszahl Maximale
Ergebnisanzahl Freie
Winkelangabe Schwellenwert
Vorgabe Unterscheidung
Farbe Messbereich
Alias Name GUID
unveränderlich Timeout
Grenze Matching
Schwelle Parameter-Beschreibung
Jede
Veränderung der Parameter löst im LUA-Prüfplan ein Event aus, das alle Inhalte an das
LUA-Skript überträgt, die Aufnahme der Daten wird unter LUA-Prüfplanung
beschrieben.
Die
Parameter jedes Pattern finden sich in der Prüfplandatei *.set für jedes angelegte Pattern getrennt aufgelistet
wieder, diese können dort mit einem Texteditor verändert werden.
Parameter
Auszug aus der Datei *.set
[86F3-4B8E-AD36-1768]
Alias=Pattern A
PatScore=5.000000e-001
Time=3000
Rgb=3329330
Threshold=111
Degree=0.000000e+000
MaxFind=1
Clutter=1.000000e+000
Width=0
Height=0
TWidth=0
THeight=0
Algorythm=0
Die vom
Prüfplaner vorgegebene Dimension jedes Patterns ist unter dem Schlüssel
[Rect] in der Datei *.set gespeichert und sind in der gleichen Reihenfolge
zu den Parametern der Patterns angeordnet.
Parameter
Auszug aus der Datei *.set
[Rect]
Pos(0)=560;1008;136;664,20;460;144;612
5.0.0 Benutzerdefinierte Parameter Bäume
Eine Bildauswertung benötigt weiterführende vom Bediener/Operator eingeb bare Informationen die Global für den gesamten Messablauf gültig sind. Hierzu
gehören Bemaßungsangaben, Längen, Breiten, Warngrenzen, Eingriffsgrenzen, obere OT und untere Grenzen UT. Es werden Schwellwerte und Aktionsschalter sowie Auswahlboxen für unterschiedlichste Verfahren benötig die der
Prüfplaner für das LUA-Interface implementieren kann. Diese Prüfplanbedingten globalen Parameter sind für jede Messaufagbe unterschiedlich.
PatControl ermöglicht zur Prozesslaufzeit Datenfelder
hinzuzufügen oder zu verändern. Jeder Prüfplan führt neben seiner *.set Datei eine gleichnamige Datei mit der Endung *.xml Hier befinden sich die Steueranweisungen für den Parameterbaum-Interpreter.
Die
verschiedenen Parameter können in Gruppen zusammengefasst werden.
Eine
Gruppe wird durch das Schlüsselwort <Root eingeleitet
und durch /Root> beendet. Jedem Parameter und jedem Gruppeneinteiler kann eine Beschreibung beigefügt werden die im Informationsbereich
eines Parameterbaumes angezeigt wird wenn das jeweilige Item mit der Maus angewählt wird.
Beispiel
eines Edit –Eingabefeldes vom Type Integer mit einem Informationstext der im unteren Bildbereich des Parameterbaumes
angezeigt wird.
XML
Steueranweisung für ein Edit-Integerfeld:
<Edit
Format=int
Name=Foreground
Value=130
Type=edit
InfoText="contrast
relation foreground default = 150"
/>
Erscheinungsform
des integer Feldes aus der XML Steueranweisung :
Benutzer
definiertes Datenfeld
Darstellung der Feld Information
im Fußbereich des Parameter-Baumes:
Parameter-Beschreibung
5.0.1 Mögliche Parameter Felder
Folgende
Benutzerdefinierte Felder werden unterstützt:
1) Auswahlboxen (Combobox)
2) Schalter
(Button)
3) Text
(Edit)
4) Zahlen
(Numedit)
5) Gruppierer
(Seperator)
<Combo
Format=int
Name=Verstärkung
Value=0
Type=combo
Index=Eintrag
A,Eintrag B,Eintrag C
InfoText="Feld
Information für den Benutzer"
/>
Das
Feld Name enthält den angezeigten Feldnamen. Der Datentype
Format ist int, der Type des Control’s ist combo und der Default Eintrag Value=0 lässt den ersten „Eintrag A“ als aktives Feld
erscheinen. Hinter dem Eintrag Index folgt durch Komma getrennt jeder weitere in der
Liste aufgeführte Parameter. Das Control liefert an den Prüfplan die Indexnummer des gewählten Listen -Eintrags dass vom Benutzer
ausgewählt wurde. Der Eintrag InfoText enthält die Information die dem Benutzer nach
der Feldauswahl gezeigt wird.
<Button
Format=int
Name=Verstärkung
Value=0
Type=button
InfoText="Feld
Information für den Benutzer"
/>
Das
Feld Name enthält den angezeigten Feldnamen Der Datentype Format ist int, der Type des Control’s ist button und der Default Eintrag Value=0 ist Null. Das Control liefert an den Prüfplan
eine 1 für gerade gedrückt, und eine 0 für nicht gedrückt. Der Eintrag InfoText enthält die Information die dem Benutzer nach
der Feldauswahl gezeigt wird.
<Edit
Format=text
Name=Verstärkung
Value=Textnachricht
Type=
edit
InfoText="Feld
Information für den Benutzer"
/>
Das
Feld Name enthält den angezeigten Feldnamen. Der Datentype
Format ist text, der Type des Control’s ist edit und der Default Eintrag Value=Textnachricht. Das Control liefert an den
Prüfplan einen Text. Der Eintrag InfoText enthält die Information die dem Benutzer nach
der Feldauswahl gezeigt wird.
<Edit
Format=int
Name=Verstärkung
Value=10
Type=
edit
InfoText="Feld
Information für den Benutzer"
/>
Das
Feld Name enthält den angezeigten Feldnamen. Der Datentype
Format ist int, der Type des Control’s ist edit und der Default Eintrag Value=10. Das Control liefert an den Prüfplan ein
integerer Wert. Der Eintrag InfoText enthält die Information die dem Benutzer nach
der Feldauswahl gezeigt wird.
<Root
Format=text
Name=Verstärkung
Value=0
Type=
colapse
InfoText="Feld
Information für den Benutzer"
/>
Das
Feld Name enthält den angezeigten Gruppen –Namen. Der
Datentype Format ist text, der Type des Controls ist colapse. Für eingeklappt oder expand für ausgeklappt, der default Eintrag Value=0 bleibt unbeachtet. Das Control liefert an den
Prüfplan keinen Wert. Der Eintrag InfoText enthält die Information die dem Benutzer nach
der Feldauswahl gezeigt wird.
</Root>
Beendet
die Gruppierung für alle Controls dazwischen.
6.0.0 Vermessungs und Kalibriervorrichtung
Jeder
Pixel eines Bildes entspricht einer Anzahl von Mikrometern, hat ein
Kamerasensor eine Pixelauflösung 3[µm] und eine optische Vergrößerung von 1:1
entsprechen 1000 Pixel :
1000[Pixel] x 3[µm] = 3000[µm] = ~3[mm].
PatControl
unterstützt
Benutzerdefinierte Kalibrierungen, dazu wird ein Band mit Start und Zielmarker
über ein sichtbares Objekt gespannt dessen Länge bekannt ist. Dieser Wert wird
in einer Historie -Eingabebox gespeichert und kann später durch auswählen
wieder aktiviert werden. Daraus ergibt sich für jede Anzahl von Bildpunkten ein
Multiplikationsfaktor der durch die gesamte Prüfplanung gereicht wird, und auch
Bestandteil der Hardwarekommunikation ist. Alle Messwerte werden als Ur-Werte
in Pixel übertragen plus den vom Prüfplaner festgelegten Kalibrierfaktor.
6.0.1 Bildvergrößerung und Get/Set Calib
Das
Messbild kann in zwei Darstellungen angezeigt werden aufgezogen oder Original, ein
aufgezogenes Bild wird von der Bildhardware auf die Fenstergröße gezogen und
entspricht nicht mehr der tatsächlichen Bildformatierung. Für alle Kalibrier und Messvorgänge mit der
Maus muss der Modus Stretch beendet werden. Kalibrierinformationen und Ziehbänder
werden im Modus Stretch nicht dargestellt. Zum Anzeigen der Vergrößerungs-Umschaltung und des
Kalibrier-Eingabe Dialogs verwenden sie im Messbild die rechte Maustaste um das
PopUp-Menü hervorzubringen.
Pixel-Messvorgänge
Messbild PopUp Menü:
Kalibrierung
setzen Kalibrierung
holen Bildvergrößerung Lupe
zeigen Chart
Darstellung
Der
Menüpunkt Stretch wird jetzt abgeschaltet.
6.0.2 Histographische Messbild-Darstellung
Das Messbild kann alle Informationen auch in einer Balken/Torten
–Darstellung abbilden wenn der Prüfplaner hierfür Zusatzinformationen mit SetPatResult überträgt das unter LUA-Prüfplanung näher erklärt wird. Zum Anzeigen der
histographischen -Messbilddarstellung verwenden sie im
Messbild die rechte Maustaste um das PopUp-Menü hervorzubringen.
Messbild PopUp Menü:
Torten
Darstellung Balken
Darstellung
Balken/Torten
-Darstellung:
|
|
Wählbare
Messmerkmale
Für ein
Messbild und all seinen Patterns kann im Edit-Modus des Messbildes ein Referenz -Marker gesetzt
werden. Alle später erkannten Objekte haben zu dessen Position eine Distanz die
in der Prüfplanung als Entfernung zum Referenz-Marker gewertet werden kann.
Um den Referenz-Marker an beliebiger Stelle zu setzen, doppelklicken
sie auf einen nicht durch Patternbereiche überlagerten Bildbereich. Sollte ein
Pattern die Position überlagern muss dieses vorübergehend zur Seite geschoben
werden um den Marker setzen zu können.
Edit
Bereich des Messbildes:
Gesetzte
Referenzmarke
Wie die Referenzposition in der Prüfplanung erhalten
wird, ist unter LUA-Skript
in der Event -Beschreibung OnUsrDat dargestellt.
Ist die
Lupenvergrößerung über das Messbild PopUp Menü Punkt PixelMeasure/ShowLens
Aktiv,
kann der Marker mit der Maus frei verschoben werden um die Fokuslupe pixelgenau
auch mir den Messbändern zusammen Synchron zu bewegen.
Lupenbereich
des Markers:
Freihand
Lupen-Marker Marker
in der Lupe RGB
[R:G:B] Helligkeit T[ 0-255]
Wie die Lupenposition in der Prüfplanung übergeben
wird, ist unter LUA-Skript
in der Event -Beschreibung OnImage dargestellt.
Ziehbänder werden mit der Maus vom Benutzer/Operator oder
Prüfplaner verwendet um mit der Hand Längenbestimmungen im Messbild herstellen zu können. Der LUA-Skript Prüfplan kann mit bestimmten Funktionen Marker
und Kalibrierungen automatisch herstellen.
Dies
wird unter Lua-Prüfplanung noch genauer dargestellt. Zum aktivieren der Ziehbänder
muss der Bildmodus ohne Vergrößerung aktiv sein, außerdem müssen Ziehbänder und
Marker explizit aktiviert werden Default (aktiv). Verwenden sie im Messbild die rechte
Maustaste um das PopUp-Menü hervorzubringen.
Marker
/ Ziehbänder
Messbild PopUp Menü:
Alle
Marker löschen Marker
erlauben Aktiven
Marker löschen
Nachdem
Marker eingeschaltet sind, und die Vergrößerung (Stretch) abgeschaltet, kann mit einem Doppelklick ein
erster Marker positioniert werden. Jeder weitere Doppelklick fügt einen neuen
Markierungspunkt hinzu der mit einer Messlinie den Vorgänger verbindet.
So
können Mess-Gerüßte errichtet werden um in einem Messbild verschiedene
Positionen miteinander vergleichen zu können. Wird ein Marker mit der Maus über einen anderen bewegt und
losgelassen verbinden sich beide zu einem gemeinsamen Messpunkt, so kann ein Mess-Gerüßt geschlossen werden. Ein Marker kann aktiviert werden wenn dieser
angeklickt wird.
Beispiel
: zweier Markierungen mit Angabe der Winkellage und der Entfernung in [µm]
Dynamisch
positionierte Streckeninformation
Das
Messbild unterstützt alternative Fonts, insbesondere wenn sehr viele Ergebnisse
im Messbild angezeigt werden sollen bietet sich die Verkleinerung der Fonts an.
Für die Betrachtung des Messbildes mit großem Abstand zum Monitor ist es
nützlich die Fonts zu vergrößern, oder wenn Mehrere Ergebnistexte mit Umbruch
dargestellt werden kann der
New
Currier Font zur Anwendung kommen. Default ist Consolas. Der Ausgewählte Font
wird
mit dem Speichern des Prüfplanes in der lokalen Windows Registry hinterlegt und ebenso beim Laden dort
gelesen.
Verwenden
sie im Messbild die rechte Maustaste um das PopUp-Menü hervorzubringen.
Font
Auswahldialog aufrufen
Standard
Font -Dialog
6.0.7 Messstreckenkalibrierung
Nachdem
zwei Punkte wie im Bild oben zu sehen markiert sind, kann dieser Strecke eine
bekannte Anzahl Mikrometer zugewiesen werden. Verwenden sie den PopUp-Menüpunkt
Historische
Kalibrierliste
PixelMeasure/SetCalib :
Kalibrierung
abschließen Der
Anzahl der Mikrometer zwischen zwei Punkten kann ein Text als Bemerkung
folgen.
Nach
der Zuweisung werden alle Darstellungen sich auf diese Messgröße beziehen. Die
aktuelle Kalibrierung wird in der Prüfplandatei *.set nach der Speicherung des Prüfplans hinterlegt.
Auszug
aus der Datei *.set
[FrameInfo]
Calib=1.000000e-001
Um eine
bestehende Kalibrierung zu aktivieren Verwenden sie den PopUp-Menüpunkt
PixelMeasure/GetCalib :
Historische
Kalibrierliste
Der
wesentliche Teil der Prüfplanung holt aus einem Messbild Informationen hervor
die an die Prozessleitstelle zeitnahe weitergereicht werden.
Die
modifizierbare Prüfplanerstellung wurde implementiert, um im Klartext aus dem
Messbild die benötigten Informationen zu
gewinnen. Es stellt sich heraus dass immer dieselben Verfahren mit unterschiedlichen
Betriebsparametern auf das Messbild wirken.
Diese
Verfahren der Bildbereichsauswertung werden Bildpunkt/Pixel –Sensoren genannt.
Die Skriptsprache
LUA ist ein auf C basierender Lexikalpaser der aufgrund seiner minimalen
Semantik schnelle Ablaufergebnisse liefert.
PatControl
hat
einen eigenen Editor der mit einem Haltepunkt –Debugger die Kontrolle und
Fehlerdiagnostik über die Prüfplanentwicklung gewährt. PatControl gibt sämtliche Fehlersituationen über eine Debug-Konsole aus, dazu gehören Skriptfehler sowie auch alle
anderen Fehlersituation der gesamten Software, damit sind Zusammenhänge bei
Störungen nachvollziehbar. Fehlermeldungen
werden durch umfangreiche Klartext-Benachrichtigungen ausgegeben. Eine Error-Code Suche entfällt.
Der LUA-Prüfplan erhält während des Programmablaufs
Benachrichtigungen über Ereignisse.
1) Wenn ein
neues Bild geliefert wurde.
2) Der Benutzer
ein Datenfeld verändert.
3) ein Pattern
ausgerechnet werden soll.
4) ein
PixelSensor zusätzliche asynchrone Informationen liefert.
5) Eine LUA
alternative TCP oder RS232/432 Kommunikation Ereignisse meldet.
PatControl
Menü/Toolbar:
Start
des Debug -Views
Start
des LuaPrüfplan -Editors
7.0.1 Debug Konsole (DebugView)
Sämtliche
Fehler und Status –Ausgaben der gesamten Software werden auf einem Separaten Debug-Terminal ausgegeben.
Während
der Prüfplanung und Prozesskommunikation wird empfohlen diese Konsole parallel
zum Hauptprogramm geöffnet zu halten.
Die
Ausgaben sind Systemglobal auch über externe Event-Logger empfangbar. Jedes LUA
Skript wird den Status der Kompilierung, und ggf. Fehlermeldungen mit
Zeilennummern als System-Event Senden die mit dem Programm DebugView.exe eingesehen und auch gespeichert werden können. DebugView fügt jedem Ereignis eine Zeit in Millisekunden
an, um den zeitlichen Ablauf der Messvorgänge einsehen zu können. Hiermit lässt
sich also auch das Laufzeitverhalten z.B. bei der SPS –Kommunikation nachweisen. Nach einem Programmstart von PatControl werden zuerst Informationen über die Laufwerke
des Systems angezeigt sowie über den Status der Programm-Initialisierung.
DebugView.exe
Logbereich
DebugView:
Historie
löschen Schlüsselwörter
suchen
Historie
speichern
Der
integrierte LUA-Editor ist direkt mit dem aktuellen Prüfplan gekoppelt. Das zu einem Prüfplan
gehörende LUA-Skript hat immer den Dateinamen des Prüfplans, jedoch ist die Dateiendung
nicht *.set sondern *.lua Der Menüpunkt Save wirkt direkt auf den aktiven Prüfplan und löst
eine Kompilierung des Textlichen Inhaltes aus.
Es wird
empfohlen vor der Veränderung eines Skriptes dieses mit dem Menüpnkt SaveAS über das EditorMenü zu sichern. Danach wird eine
Kopie des Skriptes erzeugt, der Editor beschreibt dann die Kopie und wirkt
nicht mehr auf das Original, es erfolgt dann keine Kompilierung, da der neue
Dateiname nicht dem des Prüfplans entspricht.
Dateiname
und Fehlerinfobereich
Zeilennummern
LuaEditor:
Aktiver
Haltepunkt Inaktiver
Haltepunkt Programmcode
Standard
Edit Operationen
Tracing
aktivieren DebugView starten Version Lua Onlinehilfe
Standard
Speicher Operationen
7.0.4 LUA-Prüfplan Haltepunkte
Wenn
ein Prüfplan abläuft, also einkommende Bilder den Prüfplan anstoßen/triggern
ist es möglich einen Haltepunkt auf einer Programmzeile zu positionieren.
Dazu
wird mir der Maus eine Programmzeile selektiert, und die Funktionstaste F9 gedrückt.
Am
linken Bildschirmrand des Editors erscheint eine rote Markierung. Wenn der Interpreter diese Zeile verarbeitet
wird dieser dort den Programmablauf stoppen, damit wird auch die Beschaffung
neuer Bilder und sämtlicher Aktionen der Messsoftware angehalten.
Mit dem
Mauscursor ist es an dieser Stelle möglich den Inhalt lokaler Variablen
anzeigen zu lassen indem der Mauscursor über eine lokale Variable bewegt wird.
Mit der
Taste F5 wird der Programmablauf wieder freigegeben bis der Interpreter den
markierten Haltepunkt erneut erreicht. Es ist möglich mehrere Haltepunkte zu
setzen.
Im
Prüfplaneditor kann der Programmablauf Zwangs gestoppt werden, indem
Eine
Ausnahme ausgelöst wird durch gleich zeitiges drücken der Tasten
LCONTROL + LSHIFT +C
Um
einen historischen Durchlauf aller Variablen im DebugView ausgeben zu lassen, kann unter erheblicher
Rechenlast der Menüpunkt Help/DbgTrace aktiviert werden.
Alle
Variablen -Inhalte die während des durchlaufen des Prüfplanes aufkommen werden
in der Eventausgabe des DebugView angezeigt. Alternativ dazu können zusätzlich
Haltepunkte den Durchlauf an diesen Stellen anhalten, und mit F5 fortgesetzt werden.
7.0.6 LUA-Prüfplan SyntaxHighlight
Im
Programmverzeichnis der PatControl Installation befindet sich eine Steuerdatei für
den Syntaxparser des Editors mit dem Namen: LuaEdit.xml hier ist es möglich die Farbgebung und schematische
Darstellung der Programmtexte ggf. anzupassen.
Alle
bekannten Funktionen die vom LUA-Skripthost unterstützt werden sind dort aufgeführt.
Das
löschen der Datei oder die Fehleingabe von Direktiven kann erhebliche
Programmstörungen bewirken. Änderungen sollten nur unter Vorbehalt der
Originalkopie durchgeführt werden.
Der
Prüfplaner kann Meldungen im DebugView ausgeben, oder eine PopUp Nachricht erscheinen lassen, sowie
Messergebnisse an den VisionServer senden, der diese Visualisiert. Außerdem ist es
möglich Texte Warnungen oder Hinweise mit der Sprachsynthese auszugeben, um z.B. bei der Einrichtung einer Kamera Informationen akustisch zu
melden ohne den Bildschirm sehen zu müssen. Meldungen an den VisionServer erfolgen insbesondere durch die
Ergebnisübermittlung mit PatResult und PatStatus diese Ergebnisübermittler übertragen auch
grafische Markierungs-Informationen.
1)
Print (Textausgabe
auf dem DebugView)
2)
Say (Akustische
–Textausgabe)
3)
PopMsg (Animiertere
Text -Schildnachricht auslösen)
4)
SetPatResult (Ergebnis an den VisionServer senden)
5)
PatStatus (Status an den VisionServer senden)
6)
SetPatCalib (Messkalibrierung
an den VisionServer senden)
Callbacks
sind Aufrufe des VisionServers an das Lua-Skript diese gliedern sich in 8 Gruppen:
1)
Neues
Bild trifft ein.
2)
Pattern
soll berechnet werden.
3)
Operator
ändert Daten in den Pattern-Parameterbaum.
4)
Operator
ändert Daten im Benutzer-Parameterbaum.
5)
Ein
PixelSensor meldet eine Staffel von Ergebnissen.
6)
Parallele
TCP-Verbindung liefert Daten.
7)
Parallele
RS232/432 Verbindung liefert Daten.
8)
Zählerstand
abfragen für Good/Bad/Amount
PixelSensoren wirken direkt auf das Messbild und geben
numerische Informationen über die Eigenschaften von Bereichen die frei wählbar
sind, und auch insbesondere auf einen vom Prüfplaner eingestellten PatternBereich ausgerichtet werden können.
1)
LabelImage (Liefert zusammenhängende PixelObjekte)
2)
FingerImage (Statistische Vektor -suche nach
Übergängen)
3)
WormImage (Kantenverfolgung zur Geometrie
Vektorisierung)
4)
SigmaImage (Schärfenwert Sigma -Rauschen eines
Bildteils)
5)
ThresholdImage (Helligkeit eines Bildbereiches)
6)
StartDfs (Pyramidial Tiefenpixelanalyse)
Parameter
die in rechteckigen Klammern angegeben sind, sind optional.
Wird ein
optionaler Parameter angegeben, müssen alle optionalen Parameter übergeben
werden. Im Folgen wird die Parametrisierung aller Funktionen tabellarisch
dargestellt.
8.0.0 LUA Textausgabe Funktionen
Um
während der Prüfplanung den Inhalt von Daten oder Aktionen zu signalisieren ist
die Funktion Print() integriert. Hiermit werden Textnachrichten im DebugView ausgegeben.
Print |
Parameter |
Rückgabe |
Print("Hallo
Welt") |
msgtext
(string) |
(nil) |
Für
Tonausgaben während der Prüfplanung oder der Kameraeinrichtung ist es nicht
immer möglich den Bildschirm einsehen zu können Say() Erzeugt eine Audioausgabe, die den Übergabe-
Text in Phoneme wandelt, und akustisch über das Soundsystem ausgibt.
Say |
Parameter |
Rückgabe |
Say("Hallo
Welt") |
msgtext
(string) |
(nil) |
Hinweise
oder Ereignisse die dem Betrachter des Messbildes erscheinen sollen werden mit PopMsg Dargestellt. Hierbei kann Breite, Höhe und Meldungstext
sowie die Anzeigezeit in Millisekunden
angegeben werden plus eine Verzögerung bis das PopMsg erscheint.
PopMsg |
Parameter |
Rückgabe |
PopMsg(“Hallo
Welt“,320,200,1000,0) |
msgtext, (string) width,
(number) height,
(number) showtime, (number) delaytime (number) |
(nil) |
8.0.1 LUA Prozessinformations Funktionen
SetPatResult
ist
eine von zwei möglichen Versionen einen Prozessstatus auf das Messbild zu geben, als auch auf die
Hardware zu leiten. Hierfür werden verschiedene Modifizierer als Parameter verwendet
um die Darstellungsform auf dem Messbild zu bestimmen, und den Index und die Wertigkeit einer Messinformation in die Transferstruktur eintragen
zu lassen.
Die Prozessdatenstruktur ist oben unter Kommunikation aufgeführt. Diese
Transferstruktur dient ausschließlich der Daten-Übertragung an die Peripherie
und kann bis zu 128 Einträge pro Messbild enthalten.
Der
Eintrag Data[0] der Datenübertragungsstruktur soll dem Prozessstatus vorbehalten
sein, und kann nur mit der Funktion SetPatStatus gesetzt
werden. Das bedeutet dass mit SetPatResult nur die Einträge Data[1-127] beschreibbar sind. Überschreitung oder
Unterschreitung des Parameter Index löst eine Fehlermeldung aus.
Die
Funktion dient auch dazu, ein Rechteck und einen Text zu übermitteln der auf
dem Messbild angezeigt wird, hierzu kann für das Rechteck und die Farbe bestimmt
werden. Zusätzlich kann das Rechteck
verwendet werden, um damit einen Kreis zu zeichnen oder Start und Endposition
zweier Marker zu übertragen die dann mit der Messstrecken-Vorrichtung eine
Spannlinie mit Längenangabe und Winkelgrad erzeugt. Außerdem kann für die Histographische
Darstellung im alternativen Messbild der Name des Messsegmentes bezeichnet
werden ohne diesen Namen wird kein Segment in dieser Darstellung gezeigt.
Jedes SetPatResult wirkt auf ein Pattern das zuvor im MessbildEditor angelegt worden ist.
Dessen Alias-Name wird dem Prüfplan mitgeteilt, und muss vom
Prüfplaner vorgehalten werden oder als Konstante im Parameter alias des SetPatResults eingetragen sein, damit die Messdaten mit diesem
Pattern intern verbunden werden können.
Beispiel
einiger RGB Farben:
RED = 0x0000ff
GREEN
= 0x00ff00
YELLOW = 0x00ffff
BLUE = 0xff0000
GRAY = 0xaaaaaa
Mögliche
Darstellungen:
PAT_BOX = 0
(Zeichnet eine Box)
PAT_ANGLEDRAW
= 8 (Zeichnet eine Winkelfunktion)
PAT_LINE = 24
(Zeichnet eine Linie zwischen den PatResults)
PAT_CROSS = 32
(Setzt einen rotes Markierungskreuz)
PAT_CIRCLE = 64
(Zeichnet einen Kreis)
PAT_LFTTXT = 256
(Textausrichtung zur Darstellung)
PAT_RIGTXT = 512
(Textausrichtung zur Darstellung)
PAT_TOPTXT = 1024
(Textausrichtung zur Darstellung)
PAT_BOTTXT = 2048
(Textausrichtung zur Darstellung)
PAT_MEASURE = 4096 (setzt einen Messstrecken Markierung)
SetPatResult
hat verschiedenste Kombinationen von Parametern
ein Standardfall kann wie folgt aussehen, es ist an dieser Stelle hilfreich in
die Prüfpläne der Beispiele nachzusehen welche anderen Aufrufversionen für die jeweilige
Messaufagbe am besten geeignet scheint.
Das
Messwerte-Rechteck geht hier von 100,100 bis 200,200 und ist 100[Pixel²] groß.
Der
Messwert ist 4711 und soll im Index 1 der
Transferstruktur abgelegt werden.
SetPatResult |
Parameter |
Rückgabe |
SetPatResult(“1Pat”,100,100,200,200,PAT_BOX,”Hallo
Welt“,”Balken1”,1,4711,GREEN) SetPatResult(“1Pat”,100,100,200,200, PAT_ANGLEDRAW,”Hallo Welt“,”Balken1”, 1,4711, GREEN) PatResult(“1Pat”,100,100,200,200,PAT_CROSS,”HalloWelt“,”Balken1”, 1,4711, GREEN) |
alias,
(string) left,
(number) top,
(number) right,
(number) bottom,
(number) status,
(number) infomsg,
(string) infoname,
(string) index,
(number) infoval,
(number) color
(number) |
(nil) |
8.0.3 SetPatStatus
SetPatStatus
signalisiert
den Generalstatus der Messung, dieser kann im oberen Teil des Messbildes eine
Textausgabe darstellen die zumeist IO oder NIO lautet :
(In
Ordnung/Nicht in Ordnung oder PASS Bzw. FAIL).
Die
Farben für die Texthintergründe werden automatisch erzeug, für den NIO Fall rot, und für den IO Fall grün.
Der
Generalstatus einer Messung gibt Auskunft darüber ob eine Messung überhaupt
erfolgreich war und nachfolgende Werte gültige Messwerte enthalten. Würde ein
Objekt den Messbereich verdecken, könnten die pixelbasierenden Sensoren
Maximale Ausschläge liefern die nicht mehr in einer statistischen Verarbeitung
verwendet werden dürfen.
Der
Fehlercode wird in der Transferstruktur im Element Data[0] abgelegt, ein Wert größer
Null
erzeugt eine rote Textausgabe sonst eine grüne. Somit kann nicht nur
übermittelt werden ob das Teil außerhalb der Toleranz liegt sondern auch ob die
Messung überhaupt gültig ist, diese muss vom Prüfplaner mit der
Prozessleitstelle abgesprochen werden.
Der
Parameter errmsgstr bezeichnet den Namen des Fehlers, der Parameter description bezeichnet den Status OK / NOT OK / NIO / IO als Text.
SetPatStatus |
Parameter |
Rückgabe |
SetPatStatus(“1Pat”,4711," MEASURE SUCCSEED "," [OK]
") SetPatStatus(“1Pat”,4711," MEASURE FAILED"," [NOT OK] ") |
alias,
(string) errcode,
(number) errmsgstr,
(string) description (string) |
(nil) |
SetPatCalib Setzt einen neuen Kalibrierfaktor
für einen Pixel, das bedeutet das nach zwei
Messpunkt Erkennungen deren Strecke bekannt ist z.B. 122[µm]
die Pixelstrecke zwischen linke obere und rechte untere Ecke kann wie
folgt aussehen:
left = 528
top = 478
right = 650
bottom = 478
Durch folgenden Rechengang beschafft wird die Messstrecke:
Xlen =
right-left
Ylen =
bottom-top
Pixelstrecke = Math.sqrt(
xlen*xlen + ylen*ylen )
calibnumber = 122[µm] / Pixelstrecke ergibt den neuen Kalibrierwert pro Pixel.