Handbuch und Funktionsbeschreibung

 

 

 

           VisionSoftware PatControl

 

                  Software Manual

 

 

 

 

FlexxVisionBanner

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FlexxVisision

Pillnitzer Weg 11

D-13593  Berlin, Germany

Tel: +49 (030) 120 102 26

Fax: +49 (030) 364 044 20

www.FlexxVision.de

Autor: Karsten Michael Schulz

22.12.2014

Dokumentation

[Status] Teil1

 

 

Inhalt

1.0.0 Über dieses Handbuch und der Software. 7

1.0.1 Systemvoraussetzungen. 8

1.0.2 Installation von PatControl 9

1.0.3 Software Verzeichnisse. 10

1.0.4 Software Legitimation. 11

1.0.5 Prinzipbeschreibung. 12

2.0.0 Hardware Kommunikation.. 13

2.0.1 SPS-Kommunikation. 14

2.0.2 SPS PG-Anzahl 15

2.0.3 SPS Datenbausteinvergabe. 16

2.0.4 SPS SCL-Datagramm Vereinbarung. 17

2.0.5 SPS-Einstellungen am VisionServer. 18

2.0.6 WAGO FeldbusController 750 (MODBUS) 20

2.0.7 TCP-Kommunikation. 21

2.0.8 TCP-PatConnect 22

1.2.2 TCP-WebServer. 22

1.2.3 TCP-Einstellungen am VisionServer. 22

2.1.0 Kameras. 23

2.1.1 Unterstützte Kamera-Systeme. 24

2.0.2 CameraLink   [*.CCF] [*.MCF] 25

2.0.3 Allied Vision FireWire(1394)  [*.XML] 25

2.1.4 CMU FireWire(1394)  [*.IDC] 25

2.1.5 GIGE (Network Protokoll Overlay)  [*.GIG] 26

2.1.6 TWAIN  (Scanner aller Hersteller)  [*.SCA] 26

2.2.4 Microsoft DShow (DirectShow)  [*.DXS] 26

2.1.7 FolderScan (PatControl eigenschaft) [*.*] 27

2.1.8 EdiMax (webipcam) [localhost:port] 28

2.1.9 DeskCam (WindowsDesktopCapture) [*.win] 28

2.2.0 Microsoft VFW (VideoForWindows)  [*.VID] 28

2.2.1 AVI MPG JPG BMP TIF GIF  (Bild und Videodateien) [*.*] 28

2.2.2  Leuze LPS36/EN (3D Geometriesensor) [*.LIP*] 29

2.2.3  Tucsen (HS/TS131/130HC) [*.TUC] 29

2.2.5 VisualFilter (ImageFilterNetwork) [*.fpp] 30

3.0.0 Bild Kontrolle. 31

3.0.1 Einzelbilder. 32

3.0.2 Videos. 32

3.0.3 Folders. 32

3.0.4 Digitale Bildgeber. 32

3.1.0 Bild Speichern/Laden. 33

3.1.2 Videospeicherung. 34

4.0.0 Pattern Editieren.. 35

4.0.1 Pattern Anlegen. 36

4.0.2 Pattern Parameter Tree. 37

4.0.3 Pattern Parameter Datei 38

5.0.0 Benutzerdefinierte Parameter Bäume. 39

5.0.1 Mögliche Parameter Felder. 40

5.0.2 Auswahlboxen (Combobox) 40

5.0.3 Schalter (Button) 40

5.0.4 Text  (Edit) 41

5.0.5 Zahlen  (NumEdit) 41

5.0.6 Gruppierer (Seperator) 41

6.0.0 Vermessungs und Kalibriervorrichtung. 42

6.0.1 Bildvergrößerung und Get/Set Calib. 42

6.0.2 Histographische Messbild-Darstellung. 43

6.0.3 Pattern Referenz Marker. 44

6.0.4 Freihand Lupen Marker. 44

6.0.5 Marker Ziehbänder. 45

6.0.6 Messbild Font Auswahl 46

6.0.7 Messstreckenkalibrierung. 47

7.0.0 LUA Skript Prüfplanung.. 48

7.0.1 Debug Konsole (DebugView) 49

7.0.2 LUA-Prüfplaneditor. 50

7.0.3 LUA-Prüfplan Menü. 50

7.0.4 LUA-Prüfplan Haltepunkte. 51

7.0.5 LUA-Prüfplan Tracing. 51

7.0.6 LUA-Prüfplan SyntaxHighlight 51

7.0.7 LUA-Meldungen. 52

7.0.8 LUA-Callbacks. 52

7.0.9 LUA-Pixelsensoren. 52

8.0.0 LUA Textausgabe Funktionen. 53

8.0.1 LUA Prozessinformations Funktionen. 54

8.0.2 SetPatResult 55

8.0.3 SetPatStatus. 56

8.0.4 SetPatCalib. 57

9.0.0 LUA-Callback Events. 58

9.0.1 OnImage. 58

9.0.2 OnPat 58

9.0.3 OnPatCnt 59

9.0.4 OnChangePat 60

9.0.5 OnUsrDat 61

10.0.0 PixelSensoren.. 62

10.0.1 LabelImage. 63

10.0.3 Labeling Parameterdarstellung. 64

10.0.4 Labeling Rechteckverschmelzung. 65

10.1.0 FingerImage statistische Konturerkennung. 66

10.1.1 FingerImage Parameterdarstellung. 67

10.2.0 WormImage Geometrie -Vektorisierung. 68

10.2.1 Worm Event 69

10.2.3 WormImage Parameterdarstellung. 70

10.2.4 Image Recognition.. 71

10.2.5 ImageRecognition Parameterdarstellung. 72

10.3.0 ThresholdImage. 73

10.3.1 ThresholdImage Parameterdarstellung. 73

10.4.0 ColorImage. 74

10.4.1 ColorImage Parameterdarstellung. 74

10.5.0 SigmaImage Schärfensensor. 75

10.5.1 SigmaImage Parameterdarstellung. 75

10.6.0 StartDfs DeepFocusStacking. 76

10.5.1 StartDfs Parameterdarstellung. 77

11.0.0 Alternative Kommunikation.. 78

11.0.1 ComWrite RS232/432. 79

11.0.2 ComWrite Parameterdarstellung. 79

11.0.3 OnCom Event 79

11.1.0 TcpWrite TCP.. 80

11.1.0 TcpWrite Parameterdarstellung. 80

11.1.2 OnTcp Event 80

12.0.0 Process-Logbuch.. 81

12.0.1 Beschreibung einer Logbuchzeile mit 11 Merkmalen: 81

12.0.2 Logbuch Menü:. 82

12.0.3 Logbuch Eigenschaft merken. 83

12.0.4 Logbuch Status: 83

12.0.5 Logbuch Excel Plot-Darstellung: 84

13.0.0 Rotationsprüfpläne. 86

13.0.1 Beispiel eines Rotationsprüfplan : 86

13.0.2 Alternatives Rotations –LUA Skript 87

13.0.3 Rotatorische Programm Infos. 88

14.0.0 3D-Visualisierung (3D-View) 89

14.0.1 3D-View aktivieren. 89

14.0.2 3D-View Textur (Helligkeit Darstellung) 90

14.0.3 3D-View JetColorRoom (Helligkeit Darstellung) 91

14.0.4 3D-View Textur (Höhen Darstellung) 92

14.0.5 3D-View JetColorRoom (Höhen Darstellung) 93

14.0.6 3D-View Parameterbeschreibung. 94

15.0.0 Systemschematische Darstellung.. 95

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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.

 

 

 

 

 

 

 

 

 

 

 

1.0.1 Systemvoraussetzungen

 

 

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.

 

 

 

 

InstallStart.bmp

 

 

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.

 

 

 

 

 

1.0.3 Software Verzeichnisse

 

 

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

 
Folder.bmp

 

 

 

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.

   

 

 

 

 

 

 

 

 

1.0.4 Software Legitimation

 

 

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

 
License.bmp

 

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

 
licensor.bmp

 

 

 

 

 

1.0.5 Prinzipbeschreibung

 

 

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

 

 

 

 

 

 

2.0.0 Hardware Kommunikation

 

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.

 

 

 

 

 

 

 

2.0.1 SPS-Kommunikation

 

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.

 

 

 

 

 

 

2.0.2 SPS PG-Anzahl

 

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

 
PGCpuEigenschaft

 

 

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:

 

SPSBaustein

 

 

 

 

 

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

 
SCL-DBOverlay.bmp

 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.

 

 

 

 

 

 

 

2.0.7 TCP-Kommunikation

 

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.

 

 

2.0.8 TCP-PatConnect

 

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.

 

 

1.2.2 TCP-WebServer

 

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.

 

 

 

 

 

 

2.1.0 Kameras

 

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ü:

 

SelectCamera

 

 

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:

 

 

 


QuickCam.bmp

 

 

 

 

 

 

 

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ü:

 

FolderScan 

 

 

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.

 
VisualFilter

 

 

3.0.0 Bild Kontrolle

 

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

 
ImageControl                                      

 

 

 

 

 

 

 


PatControl Menü:

 

ImageControl2

 

 

                                                                  Bildnummern und Zähler zurücksetzen

 

                                                             Zeitbasierender Trigger

 

 

 

 

 

3.0.1 Einzelbilder

 

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.

 

3.0.2 Videos

 

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.

 

 

3.0.3 Folders

 

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.

 

 

3.0.4 Digitale Bildgeber

 

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

 

 

 

 

3.1.0 Bild Speichern/Laden

 

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

 
SaveBitmapAs   

 

 

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.

 

 

 

 

 

 

 

 

 

3.1.2 Videospeicherung

 

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ü:

 

VideoStart 

                                                                                                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

 
PatternBarOnOff                                                                                     

 

Messbild PopUp Menü:

 

PatternOnOff

 

 

 

4.0.1 Pattern Anlegen

 

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

 
PatternAdd 

 

 

Messbild Neues Pattern:

Aktive Pattern’s besitzen einen Kontaktrand

 
                                                    

 

PatternNew

 

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

 

 

 

 

 

 

4.0.2 Pattern Parameter Tree

 

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

 
PatternParameter

 

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.

 

 

 

 

4.0.3 Pattern Parameter Datei

 

 

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

 
UserParameterField

 

 

Darstellung der Feld Information im Fußbereich des Parameter-Baumes:

 

Parameter-Beschreibung

 
UserParameterInfo

 

 

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)

 

 

5.0.2 Auswahlboxen (Combobox)

 

<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.

 

 

5.0.3 Schalter (Button)

 

<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.

 

 

 

 

 

 

 

 

5.0.4 Text  (Edit)

 

<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.

 

5.0.5 Zahlen  (NumEdit)

 

<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.

 

5.0.6 Gruppierer (Seperator)

 

<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

 
CalibStretch

 

 

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

 
ChartPopUp                   

 

 

 

 

 


Balken/Torten -Darstellung:

 

ChartB.png

ChartA.png

 

 

 

Wählbare Messmerkmale

 
 

 

 

 

 

 


6.0.3 Pattern Referenz Marker

 

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

 
RefMarker

 

Wie die Referenzposition in der Prüfplanung erhalten wird, ist unter LUA-Skript

in der Event -Beschreibung OnUsrDat dargestellt.

 

 

6.0.4 Freihand Lupen Marker

 

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]

 
LensMarker

 

Wie die Lupenposition in der Prüfplanung übergeben wird, ist unter LUA-Skript

in der Event -Beschreibung OnImage dargestellt.

 

 

6.0.5 Marker Ziehbänder

 

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

 
MarkerEnable

 

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

 
MeasureMarker

 

 

6.0.6 Messbild Font Auswahl

 

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

 
FontPopUp.bmp

 

Standard Font -Dialog

 
FontDlg.bmp

 

 

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.

 
Calib

 

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

 
CalibGet

 

 

7.0.0 LUA Skript Prüfplanung

 

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

 
LuaDbgBar

 

Start des LuaPrüfplan -Editors

 
LuaMenu

 

 

 

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:

 

DebugView 

 

Historie löschen

 

Schlüsselwörter suchen

 
      DebugViewMenuSaveDebugViewMenuClear

 

Historie speichern

 
 

 

 


7.0.2 LUA-Prüfplaneditor

 

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

 
LuaEdit

 

 

7.0.3 LUA-Prüfplan Menü

Standard Edit Operationen

 
 


Tracing aktivieren

 

DebugView starten

 

Version

 

Lua Onlinehilfe

 
LuaFileLuaCutCopyLuaTrace

 

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

 

 

 

7.0.5 LUA-Prüfplan Tracing

 

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.

 

 

 

 

 

 

 

7.0.7 LUA-Meldungen

 

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)

 

7.0.8 LUA-Callbacks

 

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

 

 

7.0.9 LUA-Pixelsensoren

 

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")

 

HelloWorld

 

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)

 

PopMsg

 

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)

 

 

 

 

8.0.2 SetPatResult

 

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

 

SetPatResult(“1Pat”,100,100,200,200,

PAT_ANGLEDRAW,”Hallo Welt“,”Balken1”,

1,4711, GREEN)

 

SetPatResult2

 

PatResult(“1Pat”,100,100,200,200,PAT_CROSS,”HalloWelt“,”Balken1”,

1,4711, GREEN)

 

SetPatResult3

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]      ")

 

SetPatStatus1

 

 

SetPatStatus(“1Pat”,4711,"

MEASURE FAILED","   [NOT OK]      ")

 

SetPatStatus2

 

alias,      (string)

errcode,    (number)

errmsgstr,  (string)

description (string)

(nil)

 

 

 

 

 

 

 

8.0.4 SetPatCalib

 

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.