F_VN_GradeDataMatrixCode
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.
Syntax
Definition:
FUNCTION F_VN_GradeDataMatrixCode : HRESULT
VAR_INPUT
ipSrcImage : ITcVnImage;
ipDecodedData : Reference To ITcVnContainer;
END_VAR
VAR_IN_OUT
stCodeGrades : TcVnCodeGradesDM;
END_VAR
VAR_INPUT
fModuleWidth : REAL;
hrPrev : HRESULT;
END_VAR
VAR_OUTPUT
fAngleDeg : REAL;
END_VAR
Inputs
Name |
Type |
Description |
---|---|---|
ipSrcImage |
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. |
hrPrev |
HRESULT indicating the result of previous operations (If SUCCEEDED(hrPrev) equals false, no operation is executed.) |
In/Outputs
Name |
Type |
Description |
---|---|---|
stCodeGrades |
Returns the code grades in the range from 0 (very bad) to 4 (very good) |
Outputs
Name |
Type |
Description |
---|---|---|
fAngleDeg |
REAL |
Returns the clockwise rotation angle in degree |
Weiterführende Informationen
Die Funktion F_VN_GradeDataMatrixCode
ermittelt die Druckqualität von ECC200 Data Matrix Codes nach dem Standard ISO/IEC 15415:2011.
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);
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.
Drehwinkel (Rückgabewert)
fAngleDeg
gibt den Drehwinkel im Uhrzeigersinn in Grad zurück.
Expert-Parameter
Die Expert-Variante F_VN_GradeDataMatrixCodeExp enthält zusätzliche Parameter.
Anwendung
Die Druckqualität von einem Data Matrix Code kann z.B. so ermittelt werden:
hr := F_VN_GradeDataMatrixCode(
ipSrcImage := ipSrcImage,
ipDecodedData := ipDecodedData,
stCodeGrades := stCodeGrades,
fModuleWidth := fModuleWidth,
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 |