F_VN_GradeBarcode
Grades a 1D barcode according to ISO / IEC 15416:2016. Requires uniform illumination, good focus and the image sensor plane parallel to the code plane to achieve meaningful results.
Syntax
Definition:
FUNCTION F_VN_GradeBarcode : HRESULT
VAR_INPUT
ipSrcImage : ITcVnImage;
ipDecodedData : Reference To ITcVnContainer;
END_VAR
VAR_IN_OUT
stCodeGrades : TcVnCodeGrades1D;
END_VAR
VAR_INPUT
eBarcodeType : ETcVnBarcodeType;
hrPrev : HRESULT;
END_VAR
VAR_OUTPUT
fAngleDeg : REAL;
END_VAR
Inputs
|
Name |
Type |
Description |
|---|---|---|
|
ipSrcImage |
Source image, only containing the horizontally aligned barcode region (USINT, 1 channel, including quiet zones on left and right, excluding Text or empty space on more than 10% total height on top or bottom) | |
|
ipDecodedData |
Reference To ITcVnContainer |
Returns the decoded data (ContainerType_String_SINT) |
|
eBarcodeType |
Type of the barcode (supported: CODE39, CODE128, EAN8, EAN13, ITF, UPCA, UPCE) | |
|
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 approximate clockwise rotation angle in degree |
Weiterführende Informationen
Die Funktion F_VN_GradeBarcode ermittelt die Druckqualität von Strichcodes nach dem Standard ISO/IEC 15416:2016.
Algorithmus
Die Funktion sucht zunächst nach horizontal ausgerichteten Codes und anschließend nach vertikal ausgerichteten Codes im Bild.
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. Der Strichcode muss horizontal oder vertikal ausgerichtet sein und darf keinen Text oder Leerraum auf mehr als 10% der Gesamthöhe ober- oder unterhalb aufweisen. Die Ruhezonen befinden sich bei horizontaler Ausrichtung links und rechts vom Code.
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 Strichstärke hoch genug sein. Bei Strichcodes sollte die minimale Strichbreite mit mindestens 3 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 TcVnCodeGrades1D enthält die ermittelten Einzelergebnisse und ein Gesamtsamtergebnis fOverall. Die Qualitätseinstufung erfolgt von 0 (sehr schlecht) bis 4 (sehr gut). Die Ergebnisse werden über mehrere Scanlinien gemittelt.
Parameter | Beschreibung |
|---|---|
fDecode | Bewertet, ob der Code mit dem Referenzalgorithmus dekodiert werden konnte. |
fSymbolContrast | Bewertet den globalen Symbolkontrast, d.h. die Differenz zwischen dem hellsten und dunkelsten Wert auf der gesamten Scanlinie. |
fMinReflectance | Bewertet das Verhältnis vom dunkelsten zum hellsten Wert der Scanlinien. |
fMinEdgeContrast | Bewertet den minimalen lokalen Kontrast benachbarter Elemente der Scanlinien. |
fModulation | Bewertet das Verhältnis zwischen dem minimalen lokalen Kontrast und dem globalen Symbolkontrast. |
fDefects | Bewertet Unregelmäßigkeiten innerhalb von Elementen und Ruhezonen. |
fDecodability | Bewertet, wie verlässlich der Code mit dem Referenzalgorithmus dekodiert werden kann. |
fOverall | Die Gesamtnote des Codes ist die niedrigste erreichte Note der Einzelprüfungen, gemittelt über alle Scanlinien. Führen verschiedene Scanlinien zu unterschiedlichen dekodierten Daten, ist die Gesamtnote 0. |
Barcode-Typ
Der Parameter eBarcodeType definiert den Barcode-Typ, dessen Druckqualität beurteilt werden soll. Die folgenden Barcode-Typen aus dem Enum ETcVnBarcodeType werden unterstützt:
TCVN_BT_CODE39TCVN_BT_CODE128TCVN_BT_EAN8TCVN_BT_EAN13TCVN_BT_ITFTCVN_BT_UPCATCVN_BT_UPCE
Drehwinkel (Rückgabewert)
fAngleDeg gibt den Drehwinkel im Uhrzeigersinn in 90°-Schritten zurück.
Expert-Parameter
Die Expert-Variante F_VN_GradeBarcodeExp enthält zusätzliche Parameter.
Anwendung
Die Druckqualität von einem Barcode kann z.B. so ermittelt werden:
hr := F_VN_GradeBarcode(
ipSrcImage := ipSrcImage,
ipDecodedData := ipDecodedData,
stCodeGrades := stCodeGrades,
eBarcodeType := eBarcodeType,
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 min. PL50, e.g. Intel 4-core Atom CPU | Tc3_Vision |
