Schnittstelle Viper.NET zu Cognex VisionPro

Innerhalb von Viper.NET erhalten einige Bausteine in ToolGroups Sonderfunktionen. Beispielsweise können Ergebnisse eines Tools von Viper.NET an anderer Stelle angezeigt oder Konfigurationsoptionen zum Speichern von Bildern angepasst werden.

Namenskonventionen

Einige Sonderfunktionen sind als Namenskonvention realisiert: Standard-Bausteine, beispielsweise ein CogToolBlock und dessen Terminals, erhalten innerhalb Viper.NET eine Sonderfunktion, sobald deren Name einem Muster entspricht. Je nachdem, um welche Funktion es sich handelt, muss der Name exakt stimmen, oder der Name muss mit dem Muster beginnen. Wenn der Name exakt überstimmen muss, muss der CogToolBlock auf der obersten Ebene angelegt sein (z.B. bei InputDataBlock).

Mit Viper.NET werden Vorlagen für die Namenskonventions-ToolBlocks installiert und über die Cognex VisionPro ToolBox eingebunden:

../../_images/viper-visionpro-namingconventiontoolbox.png

ImagesToolBlock

Bilder die vor der Ausführung der Toolgroup durch den Bildeinzug des Jobs aufgenommen werden, erhält die Toolgroup in einem CogToolBlock mit Namen Images. Jedem Output-Terminal vom Typ ICogImage wird im ToolGroup Item Editor eine Bildquelle: zugeordnet. Wenn die Bildquelle aktiv ist, wird der Terminalwert vor der Ausführung der ToolGroup auf das entsprechende Bild gesetzt.

../../_images/viper-visionpro-imagestoolblock.png

InputBlock

Auf Job-Ebene können BV Parameter zentral verwaltet werden. Definition und Verwendung erfolgt in Form eines CogToolBlock mit Namen InputBlock: die Output-Terminal eines solchen Blocks werden automatisch als Parameter erkannt. Bei Änderungen in der Parametrierung werden die Werte der Terminals angepasst.

../../_images/viper-visionpro-inputblock.png

GlobalVisionParams

Übergreifende Globale Parameter werden in CogToolBlock bereitgestellt, deren Name mit GlobalVisionParams beginnt. Allein die Erstellung eines Ausgabe-Terminals definiert noch keinen neuen Globalen Parameter: Die Konfiguration erfolgt innerhalb des Job-Editors.

../../_images/viper-visionpro-globalvisionparams.png

InputDataBlock

Eingabe-Werte von externen Datenquellen wie einer Steuerung werden als Ausgabe-Terminals in einem CogToolBlock mit Namen InputDataBlock bereitgestellt. Die Verknüpfung von GIO-Daten mit den Terminals erfolgt im Reiter Data des Toolgroup Item Editor. Bei der Ausführung des ToolgroupItems durch einen externen Trigger werden die Werte der Ausgabe-Terminals anhand der konfigurierten Quelle aktualisiert.

Die Input-Terminal-Werte des InputDataBlock werden außerdem zusammen mit den Eingabebildern gespeichert und können bei erneuten Überprüfung mit RunFromDir geladen werden.

Einige Input-Terminals des InputDataBlocks mit vordefinierten Namen können spezielle Eingabe-Werte bereitstellen. Insbesondere können projektspezifische Viper.NET Plugins Eingabedaten für die Bildverarbeitung über solche Terminals bereitstellen.

../../_images/viper-visionpro-inputdatablock.png

JobInputDataBlock

In einem CogToolBlock mit Namen JobInputDataBlock werden Informationen über die Job-Konfiguration in Viper.NET bereitgestellt.

../../_images/viper-visionpro-jobinputdatablock.png

Viper.NET setzt in diesem Toolblock die Werte von Ausgabe-Terminals mit folgenden Namen:

OutputDataBlock

Um Ergebnisse der ToolGroup als Ausgaben an Empfänger wie beispielsweise eine Steuerung weiterzuleiten muss ein CogToolBlock mit Namen OutputDataBlock definiert werden. Daten vom Input-Terminal des ToolBlocks werden durch die Konfiguration im Reiter Data mit Ausgabe-Zielen verknüpft.

../../_images/viper-visionpro-outputdatablock.png

JobDataBlock

Der Ort zum Speichern von Eingabebildern der Toolgroup kann dynamisch angepasst werden. Die Konfiguration erfolgt durch Ausgabe-Terminals des CogToolBlock mit Namen JobDataBlock.

../../_images/viper-visionpro-jobdatablock.png

Folgende Ausgabe-Terminals werden von Viper.NET ausgewertet:

  • ImageNamePrefix [String]: Präfix, das den konstanten Teil des Dateinamens definiert.

  • ImageSubdirectory [String]: Name eines Unterverzeichnisses zum Speichern. Das Verzeichnis wird neu erstellt, falls es nicht existiert.

  • OverrideSaveImageFlags [String]: Erzwingt das Abspeichern unabhängig von den eingestellten Flags in den Globalen Einstellungen.

  • IgnoreScriptErrors [bool]: In Cognex VisionPro werden Kompilierfehler in Skripten ignoriert, die Skripte werden dann einfach nicht ausgeführt. Da das zu ungewolltem Verhalten führen kann, prüft Viper.NET standardmäßig nach der Ausführung alle Tools mit Skripten auf Fehler, und löst einen RunError aus wenn ein Skriptfehler erkannt wird. Mit IgnoreScriptError=true kann diese Prüfung deaktiviert werden.

  • UpdateDisplay [bool]: Kann auf false gesetzt werden, um das Aktualisieren des Displays zu unterdrücken.

CounterData

In einer CogToolGroup namens CounterData werden Zusatzinformationen für Zähler angegeben.

../../_images/viper-visionpro-counterdata.png

Insbesondere kann mit CounterGroups gesteuert werden, welche Zählergruppen inkrementiert werden. Mit PartInfo können Zusatzinformationen in die Datenbank gespeichert werden. Die Funktion wird unter Zähler erläutert.

SaveImagesEx

Das benutzerdefinierte Abspeichern beliebiger Bildern kann in Viper.NET durch einen CogToolBlock realisiert, dessen Name mit SaveImagesEx beginnt. Gespeichert werden können sowohl Bilddaten aus dem Ablauf, als auch Bild-Anzeigen aus Ansichten und SubDisplays inklusive überlagerter Grafiken. Konfigurationsparameter können durch Terminals dynamisch verändert werden.

Um Bilder aus dem Ablauf zu speichern, werden Input-Terminals vom Typ ICogImage angelegt. In der Standardeinstellung wird der Name des Terminals Bestandteil des Ausgabedateinamens.

Um Bilder aus Bild-Anzeigen zu speichern, werden Input-Terminals vom Typ System.Int32 angelegt, deren Namen mit FromSubdisplay beginnt. Viper.NET interpretiert den Wert dieser Terminals als ID eines SubDisplays aus der Konfiguration. Das SubDisplay wird einschließlich der überlagerten Grafiken in eine Bilddatei gespeichert, wobei der erzeugte Dateiname in der Standardeinstellung den Namen des Terminals enthält.

Hinweis

Die Gefasoft VisionPro Tools enthalten ein Tool-Template mit einem Eingabe-Bild-Terminal und Terminals für alle unterstützten Konfigurationsvariablen.

../../_images/viper-visionpro-saveimagesex.png

Mit folgenden Terminals kann das Verhalten beim Speichern gesteuert werden:

  • Enabled (bool): Nur wenn der Wert True ist, werden Bilder gespeichert.

  • Synchronous (bool): Wenn der Wert True ist, erfolgt das Speichern synchron innerhalb des Ablaufes. In diesem Fall führen Fehler beim Speichern zu einem NIO-Status des ToolBlocks.

  • OverwriteImage (bool): Wenn der Wert True ist und werden potentiell existierende Dateien am Zielort überschrieben.

  • ImageSubdirectory (String): Optionaler Pfad eines Unterverzeichnisses, in welchem die Bilder gespeichert werden sollen. Der Pfad wird relativ zum eingestellten Bilderausgabeverzeichniss des *Jobs* interpretiert.

  • UsePrefixAsImageName (bool): Falls True entspricht der Ausgabedateinamen exakt dem ImageNamePrefix. Andernfalls wird der Name dynamisch gemäß dem ImageNamePattern erzeugt.

  • ImageNamePrefix (String): Bestandteil des erzeugten Ausgabedateinamens. Die Erzeugung des Dateinamens wird von den Parametern UsePrefixAsImageName und ImageNamePattern bestimmt.

  • OverrideSaveImageFlags (bool): Falls True werden die Globalen Bedingungen zum Speichern von Bildern ignoriert und immer gespeichert, wenn die lokalen Bedingungen erfüllt sind.

  • OutputFormat (String): Definiert das Ausgabedateiformat in Form der Dateinamenserweiterung. Gültige Werte sind, unabhängig von der Großschreibung: bmp, png, jpg, jpeg, tif, tiff, idb, cdb

  • Compression (Integer): Falls als Dateiformat png oder jp(e)g eingestellt ist, kann der Kompressionsgrad angepasst werden: 0 bedeutet maximale Kompression (mit höchstem Qualitätsverlust bei jp(e)g, 100 minimale Kompression.

  • TextToWriteInImage (String): Falls gesetzt, wird der gegebene Text als Overlay in das Ausgabebild gezeichnet.

  • TextToWriteInImageFontSize (Double): Schriftgröße des TextToWriteInImage.

  • AppendTerminalNameToTxt (String): Falls TextToWriteInImage nicht leer ist, wird zu diesem der Terminal-Name des Bildes hinzugefügt.

  • SaveInputData/SaveResultData (bool): Wenn der Wert True ist, werden neben den Bildern auch die Eingabe- beziehungsweise Ergebnisdaten abgespeichert. Die Dateinamen werden vom Dateinamen des jeweils ersten Bildes des SaveImagesEx-Blocks abgeleitet.

  • ImageNamePattern (string): Definiert den Dateinamen der Ausgabebilder mit Hilfe von Platzhaltern (solange nicht UsePrefixAsImageName aktiv ist). Zur Laufzeit werden die Dateinamen erzeugt, indem die Platzhalter durch entsprechende Werte ersetzt werden. Folgende Platzhalter werden unterstützt:

    • $(ImgName): Name des bildgebenden Input-Terminal im SaveImagesEx

    • $(Job): Der Name des Jobs. Enthält der Job ein ToolgroupArray, so wird ein zusammengesetzter Name erzeugt: „<Job Name>.<Toolgroup-Item Name>“. Ein Beispiel: „JobTopside.01_CheckCracks“

    • $(Timestamp): Zeitstempel des Erzeugungszeitpunktes in der Form: yyyyMMdd_HHmmssfff

    • $(ResultInfo): Ergebnis-Status der Toolgroup am Ende der Ausführung als Zeichenkette: „pass“, „warn“ oder „fail“

    • $(Prefix) Der Wert des „ImageNamePrefix“

  • SaveImagesPass, SaveImagesWarn und SaveImagesFail (bool): Abhängig vom Ergebnis-Status der Toolgroup (IO,*Warnung*,*NIO*) werden die Bilder nur gespeichert, falls die jeweils entsprechende Einstellung auf True ist. Zugleich kann, abhängig von OverrideSaveImageFlags, das Verhalten auch von globalen Flags beeinflusst werden.

Hinweis

In der Standardkonfiguration erfolgt das Speichern von Bildern mit SaveImagesEx asynchron nach abgeschlossener Ausführung des Jobs. Die Ausführungszeit des Ablaufes bleibt somit unbeeinflusst von der benötigten Zeit des eigentlichen Speichervorganges (siehe auch WorkerStoreImage).

Hinweis

Beim Ausführen des Jobs im Rahmen des RunFromDir werden Bilder nur dann gespeichert, wenn dies eingestellt ist.

ValueBlock

Ein CogToolBlock dessen Namen mit ValueBlock beginnt, sammelt Ergebnisse für Visualisierung und Analyse, zum Beispiel gemessene Bauteilgrößen.

../../_images/viper-visionpro-valueblock.png

Alle Eingabeterminals mit primitiven Systemtypen, zum Beispiel int, double oder string, werden als Werte erfasst. Die Werte können zum Beispiel zu Trends oder Ansichten und SubDisplays hinzugefügt werden.

TrendResults

ToolgroupItems können einen CogToolBlock mit Namen TrendResults nutzen, um Werte in einen Trend aufzunehmen und die Erfassung von Trenddaten zu steuern. Der Block muss sich in der Toolblock-Hierarchie unmittelbar innerhalb der Toolgroup befinden.

../../_images/viper-visionpro-trendresultblock.png

Alle Output-Terminals vom Typ double werden als Trend-Ergebnisse erfasst. Der Terminal-Name dient als Identifikations-Schlüssel des Trend Eintrags. Besondere Terminals steuern das Verhalten der Trend-Daten-Erfassung:

  • Enabled [bool]: (De-)Aktiviert die Erfassung der Trend-Werte einer Ausführung. Zum Beispiel können so Werte nur dann erfasst werden, wenn der Triggermodus „ePlc“ aktiv ist.

  • PartInfo [string]: Optionale Informationen zum Bauteil. Der Text wird als ToolTip der Trend-Datenpunkte angezeigt.

Hinweis

Werte, die in einem CogDataAnalysisTool ausgewertet werden, sind automatisch als Trend-Einträge verfügbar und müssen nicht separat in einem TrendResults Block erfasst werden.

Hinweis

Auch mit ValueBlock Toolblöcken können Werte in Trends erfasst werden. Im Gegensatz zum TrendResults Block können diese auch in verschachtelten Toolgroups- oder Toolblöcken angelegt werden und werden zu diesem Zweck empfohlen. Der TrendResults Block sollte bevorzugt nur mehr zur Konfiguration der Daten-Erfassung verwendet.

Spezielle VisionPro Tools

CogDataAnalysisTool

Messwerte oder Ergebnisse von Bildverarbeitungs-Tools sind in der Regel ohne Bewertung an einem Ausgabe-Terminal verfügbar. Innerhalb Viper.NET wird empfohlen, die Ergebnis-Bewertungen als IO, NIO oder Warnung mit einem CogDataAnalysisTool zu realisieren.

Alle Einträge aus allen CogDataAnalysisTools einer ToolGroup werden in die Analyse (Grenzwertprüfung) aufgenommen.

../../_images/viper-visionpro-cogdataanalysistool.png

Zur Definition eines Ergebnisses muss zunächst im Editor des Tools ein neuer Kanal hinzugefügt und konfiguriert werden. Im ToolGroup Editor muss dann über das Kontextmenü ein Input-Terminal für den Wert (CurrentValue) des Kanals hinzugefügt werden, um ihn sichtbar zu machen.

Warnung

Das Ändern der Namen von Kanälen hat Auswirkung auf die Zuordnung zu den Terminals. Daher müssen nach einer Änderung betroffene Terminals des CogDataAnalysisTools entfernt und neu hinzugefügt werden.