TIA Mit einem Kamera QR-Code lesen

inancolak

Level-2
Beiträge
35
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich habe ein Problem beim Lesen von QR-Codes mit einer Kamera. Ich kann zwar die Ergebnisse vom QR-Code im TIA-Portal lesen, sie liegen jedoch als 128-Byte-Hexadezimalwerte vor. Ich möchte diese Werte in einen String umwandeln und die Ergebnisse auf dem HMI anzeigen lassen. Kann mir jemand vielleicht helfen, wie ich meinen Datenbaustein entwerfen soll?

Meine Idee ist, aus den Ergebnissen, bei denen jedes einzelne Byte in einer Adresse geschrieben ist, ein Array zu erstellen und mit diesem Array einen Textsatz auf dem HMI zu schreiben.
 
Ich verstehe die Frage nicht wirklich - deine 128 Hex-Werte sind bereits ein Array (wenn du es passend deklarierst) und die Hex-Werte darin entsprechen alle den Zeichen eines Strings ... wo genau hängst du da denn nun ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Liegt dein Ergebnis als Array of Byte vor? Wahrscheinlich.
Wenn ja dann einfach in einer Schleife von Byte zu Char umwandeln und dann Chars_TO_Strg nutzen.
Die maximale Länge von 255 Zeichen beim String aber beachten.

Ansonsten gilt generell:
- CPU nennen, idealerweise mit Artikelnummer und Firmware
- Entwicklungsumgebung (TIA Version)
- Artikelnummer anderer betreffender Hardware
- Anbindungstyp (Profinet, Modbus, Profibus, etc..)

Dann kann dir gezielter geholfen werden. Screenshots tun auch gut, dann muss ich nicht noch Bilder in meiner Glaskugel erzeugen ;)

wrwqpnnm4ip.gif
 
Ich habe bis jetzt noch nie mit Array gearbeitet. Ich habe in einer PLC-Variablentabelle insgesamt 128 Variablen definiert und für jede Variable eine Adresse angegeben. Jetzt habe ich also 128 Variablen. Ich weiß nicht, wie ich eine Array-Variable erstellen kann, da jedes Byte nur unter einer Adresse gespeichert werden kann.
 
Du kannst dir auch einfach eine UDT anlegen mit Array[0..127] of Byte, diese dann in deiner Variablentabelle benutzen.
Ich pesönlich bin sowieso ein Freund davon, Schnittstellen direkt als UDT abzubilden.

Ansonsten gilt generell:
- CPU nennen, idealerweise mit Artikelnummer und Firmware
- Entwicklungsumgebung (TIA Version)
- Artikelnummer anderer betreffender Hardware
- Anbindungstyp (Profinet, Modbus, Profibus, etc..)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Liegt dein Ergebnis als Array of Byte vor? Wahrscheinlich.
Wenn ja dann einfach in einer Schleife von Byte zu Char umwandeln und dann Chars_TO_Strg nutzen.
Die maximale Länge von 255 Zeichen beim String aber beachten.

Ansonsten gilt generell:
- CPU nennen, idealerweise mit Artikelnummer und Firmware
- Entwicklungsumgebung (TIA Version)
- Artikelnummer anderer betreffender Hardware
- Anbindungstyp (Profinet, Modbus, Profibus, etc..)

Dann kann dir gezielter geholfen werden. Screenshots tun auch gut, dann muss ich nicht noch Bilder in meiner Glaskugel erzeugen ;)

wrwqpnnm4ip.gif
Nein, ich habe unten ein Photo von den Variablen hinzugefügt.

6ES7 516-3FN02-0AB0, V2.9
Tia-V17
Cognex Kamera 2800 series
Profinet
 

Anhänge

  • Unbenannt.PNG
    Unbenannt.PNG
    91,1 KB · Aufrufe: 36
Nein, ich habe unten ein Photo von den Variablen hinzugefügt.

6ES7 516-3FN02-0AB0, V2.9
Tia-V17
Cognex Kamera 2800 series
Profinet
Übernimmst du auch die Implementierung der Insight 2800?

Dort kann doch glaube ich recht frei gewählt werden, wie die Schnittstelle zur Steuerung aufgebaut ist.
Ansonsten dich mit der zuständigen Person absprechen und gemeinsam UDTs für Input und Output definieren.

Wahrscheinlich macht ihr mit der 2800 aber noch mehr als nur QR zu entziffern.. dafür gibt es ja die Dataman Serie von Cognex, wenn es um rein solche Aufgaben geht.

Ansonsten findest du hier noch Ressourcen für die Insight Produkte und deren Integration:
 
Warum definierst du die Variablen nicht als Char? Dann würden sehr wahrscheinlich die Werte ohne groß nachdenken automatisch als lesbare Zeichen angezeigt.
"Hexadezimal" ist einfach nur eine Ansicht/Darstellungsform. Die Ansicht braucht man nur nach "Zeichen" umstellen und muß nichts umwandeln, insbesondere nicht von Byte nach Char.
Zeige doch mal ein Bild vom Beobachten der Werte der Variablen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du kannst dir auch einfach eine UDT anlegen mit Array[0..127] of Byte, diese dann in deiner Variablentabelle benutzen.
Ich pesönlich bin sowieso ein Freund davon, Schnittstellen direkt als UDT abzubilden
Es hat geklappt. Ich wusste es nicht, dass ich da nur die Anfangsadresse schreiben soll und den Rest automatisch ausgefüllt wird.
 
Warum definierst du die Variablen nicht als Char? Dann würden sehr wahrscheinlich die Werte ohne groß nachdenken automatisch als lesbare Zeichen angezeigt.
"Hexadezimal" ist einfach nur eine Ansicht/Darstellungsform. Die Ansicht braucht man nur nach "Zeichen" umstellen und muß nichts umwandeln, insbesondere nicht von Byte nach Char.
Zeige doch mal ein Bild vom Beobachten der Werte der Variablen.
Die Ergebnisse kann ich leider als Char nicht erhalten, die Ergebnisse kriege ich als Hexadezimel-Wert :/
 
Übernimmst du auch die Implementierung der Insight 2800?

Dort kann doch glaube ich recht frei gewählt werden, wie die Schnittstelle zur Steuerung aufgebaut ist.
Ansonsten dich mit der zuständigen Person absprechen und gemeinsam UDTs für Input und Output definieren.

Wahrscheinlich macht ihr mit der 2800 aber noch mehr als nur QR zu entziffern.. dafür gibt es ja die Dataman Serie von Cognex, wenn es um rein solche Aufgaben geht.

Ansonsten findest du hier noch Ressourcen für die Insight Produkte und deren Integration:
Ich werde es durchlesen, danke schön.
 
Die Ergebnisse kann ich leider als Char nicht erhalten, die Ergebnisse kriege ich als Hexadezimel-Wert :/
Die Ergebnisse erhältst du ziemlich sicher nicht als Hexadezimal-Wert, sondern du schaust sie dir als Hexadezimal-Wert an (gewollt oder ungewollt).
Nochmal: zeige doch mal ein Bild vom Beobachten der "Hexadezimal"-Werte.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Ergebnisse kann ich leider als Char nicht erhalten, die Ergebnisse kriege ich als Hexadezimel-Wert :/
Streng genommen bekommst du die Ergebnisse als eine Serie von 0 und 1. Wie das im TIA Portal dargestellt wird, hängt vom Kontext ab.
 
Die Ergebnisse erhältst du ziemlich sicher nicht als Hexadezimal-Wert, sondern du schaust sie dir als Hexadezimal-Wert an (gewollt oder ungewollt).
Nochmal: zeige doch mal ein Bild vom Beobachten der "Hexadezimal"-Werte.
Ja Genau, du hattest Recht. Man kann einfach die Array-Variablen als Array of Char einstellen und direkt so auf HMI anzeigen lassen. Weil ich am Anfang die Array nicht so richtig eingestellt habe, konnte ich sie als Array of Char nicht einstellen.
Vielen Dank.
 
Zurück
Oben