F_VN_GradeDataMatrixCodeExp

F_VN_GradeDataMatrixCodeExp 1:

Grades a Data Matrix code (ECC200) according to ISO / IEC 15415:2011. Requires uniform illumination, good focus and the image sensor plane parallel to the code plane to achieve meaningful results. (expert function)

Syntax

Definition:

FUNCTION F_VN_GradeDataMatrixCodeExp : HRESULT
VAR_INPUT
    ipSrcImage            : ITcVnImage;
    ipDecodedData         : Reference To ITcVnContainer;
END_VAR
VAR_IN_OUT
    stCodeGrades          : TcVnCodeGradesDM;
END_VAR
VAR_INPUT
    fModuleWidth          : REAL;
    ipResultVisualization : Reference To ITcVnImage;
    ipMarginGrades        : Reference To ITcVnContainer;
    ipContour             : Reference To ITcVnContainer;
    hrPrev                : HRESULT;
END_VAR
VAR_OUTPUT
    fAngleDeg             : REAL;
END_VAR

F_VN_GradeDataMatrixCodeExp 2: Inputs

Name

Type

Description

ipSrcImage

ITcVnImage

Source image, only containing the Data Matrix code region (USINT, 1 channel, including quiet zone)

ipDecodedData

Reference To ITcVnContainer

Returns the decoded data (ContainerType_String_SINT)

fModuleWidth

REAL

Minimum module width of the code in the image (in pixels). Must be at least 3, preferably 5 - 8.

ipResultVisualization

Reference To ITcVnImage

Returns a visualization of the scan grid (optional, set to 0 if not required). Module margin grades are color coded: >= 3 as green, >= 2 as light blue, >= 1 as orange, < 1 as red

ipMarginGrades

Reference To ITcVnContainer

Returns the individual margin grade for each module, e.g. to create a custom visualization (optional, set to 0 if not required; ContainerType_Vector_TcVnVector3_REAL, containing [x-position, y-position, grade])

ipContour

Reference To ITcVnContainer

Returns the 4 code corner points, excluding the quiet zone (optional, set to 0 if not required; ContainerType_Vector_TcVnPoint2_DINT)

hrPrev

HRESULT

HRESULT indicating the result of previous operations (If SUCCEEDED(hrPrev) equals false, no operation is executed.)

F_VN_GradeDataMatrixCodeExp 3: In/Outputs

Name

Type

Description

stCodeGrades

TcVnCodeGradesDM

Returns the code grades in the range from 0 (very bad) to 4 (very good)

F_VN_GradeDataMatrixCodeExp 4: Outputs

Name

Type

Description

fAngleDeg

REAL

Returns the clockwise rotation angle in degree

F_VN_GradeDataMatrixCodeExp 5: Return value

HRESULT

Weiterführende Informationen

Die Funktion F_VN_GradeDataMatrixCodeExp ist eine Expert-Variante von F_VN_GradeDataMatrixCode. Sie enthält zusätzliche Parameter.

Parameter

Eingangsbild

Das Eingangsbild ipSrcImage muss ein 1-kanaliges Bild mit Element-Typ USINT (8 Bit) sein. Das Eingangsbild darf nur den zu prüfenden Code, einschließlich der entsprechenden Ruhezonen, beinhalten.

Um aussagekräftige Ergebnisse zu erzielen sind eine gleichmäßige Beleuchtung, nicht unter- oder überbelichtet, eine gute Fokussierung auf die Codeebene und eine dazu parallel ausgerichtete Bildsensorebene erforderlich. Weiterhin muss die Bildauflösung entsprechend der Modulgröße hoch genug sein. Bei 2D-Codes sollte das kleinste Modul mit mindestens 5 Pixeln abgedeckt werden, um gute Ergebnisse zu erhalten.

Gelesene Daten

Die aus dem Code gelesenen Daten werden als String in dem Container ipDecodedData zurückgegeben. Der Container ist dabei vom Typ ContainerType_String_SINT. Wurde der Code erfolgreich gefunden und decodiert kann der Inhalt über die Funktion F_VN_ExportContainer_String in einen String exportiert werden.

hr := F_VN_ExportSubContainer_String(ipDecodedData, sText, nMaxLength, hr);
F_VN_GradeDataMatrixCodeExp 6:

Unterschiedliche Dekodierergebnisse

Die Dekodierung mit dem jeweiligen Referenzalgorithmus kann zu abweichenden Ergebnissen führen. Daher ist es möglich, dass der Codeinhalt von anderen Geräten oder Funktionen gelesen werden kann, der Referenzalgorithmus aber fehlschlägt.

Rückgabe der Qualitätsbewertung

Der Rückgabewert stCodeGrades vom Type TcVnCodeGradesDM enthält die ermittelten Einzelergebnisse und ein Gesamtsamtergebnis nOverall. Die Qualitätseinstufung erfolgt von 0 (sehr schlecht) bis 4 (sehr gut).

Parameter

Beschreibung

nDecode

Bewertet, ob der Code mit dem Referenzalgorithmus dekodiert werden konnte.

nSymbolContrast

Bewertet den globalen Symbolkontrast, d.h. die Differenz zwischen dem hellsten und dunkelsten Wert im Prüfbereich.

nModulation

Bewertet die Gleichmäßigkeit der dunklen bzw. hellen Module.

nReflectanceMargin

Bewertet, wie gut jedes Modul im Vergleich zum globalen Schwellenwert korrekt als hell oder dunkel unterschieden werden kann.

nFixedPatternDamage

Bewertet die verschiedenen fixen Codebestandteile wie z.B. das Finder- oder Alignment Pattern.

nAxialNonuniformity

Bewertet die gleichmäßige Skalierung des Codes.

nGridNonuniformity

Bewertet Abweichungen des Codegitters.

nUnusedErrorCorrection

Bewertet die verbleibende Kapazität der Fehlerkorrektur.

nOverall

Gesamtnote des Codes, ist die niedrigste erreichte Note der Einzelprüfungen.

Mindestmodulbreite

Mit fModuleWidth wird die erwartete Mindestmodulbreite des Codes in Pixel vorgegeben. Wenn die Modulgröße im Bild stärker davon abweicht, kann dies zu ungenauen oder gar keinen Ergebnissen und einer erhöhten Rechenzeit führen.

Ergebnisdarstellung

ipResultVisualization gibt ein Bild mit der Visualisierung des Scanrasters und den jeweiligen Bewertungsergebnissen zurück. Die Module sind entsprechend der einzelnen Bewertungen farblich kodiert: >= 3 als grün, >= 2 als hellblau, >= 1 als orange, < 1 als rot. Dieser Parameter ist optional und kann auf 0 gesetzt werden, wenn er nicht benötigt wird.

Margin Informationen

ipMarginGrades liefert zusätzliche Informationen zu den individuellen Margin Bewertungen jedes Moduls für eine detailliertere Auswertung zurück. Der Rückgabevektor vom Typ ContainerType_Vector_TcVnVector3_REAL beinhaltet die X- und Y-Position der Mittelpunkte und die Note für jedes Modul. Dieser Parameter ist optional und kann auf 0 gesetzt werden, wenn er nicht benötigt wird.

Position des Codes

Der Parameter ipContour gibt die Code-Eckpunkte als vier Konturpunkte vom Typ ContainerType_Vector_TcVnPoint2_DINT zurück. Die Eckpunkte liegen am Rand der äußeren Module. Die Kontur kann z.B. direkt mit F_VN_DrawContours gezeichnet oder mit den Funktionen zur Contour Analysis weiter analysiert werden. Dieser Parameter ist optional und kann auf 0 gesetzt werden, wenn er nicht benötigt wird.

Drehwinkel (Rückgabewert)

fAngleDeg gibt den Drehwinkel im Uhrzeigersinn in Grad zurück.

Anwendung

Die Druckqualität von einem Data Matrix Code kann z.B. so ermittelt werden:

hr := F_VN_GradeDataMatrixCodeExp(
    ipSrcImage              := ipSrcImage,
    ipDecodedData           := ipDecodedData,
    stCodeGrades            := stCodeGrades,
    fModuleWidth            := fModuleWidth,
    ipResultVisualization   := ipResultVisualization,
    ipMarginGrades          := ipMarginGrades,
    ipContour               := ipContour,
    hrPrev                  := hr,
    fAngleDeg               => fAngleDeg);

Required License

TC3 Vision Code Quality

System Requirements

Development environment

Target platform

PLC libraries to include

TwinCAT V3.1.4024.59 or later

PC or CX (x64) with PL50, e.g. Intel 4-core Atom CPU

Tc3_Vision