TIA 8 Byte nach ULINT (64-Bit-Ganzzahlen) kopieren

Was steht in jedem Byte drin? Eine Ziffer (evtl. auch Buchstaben?) als ASCII-Zeichen oder BCD oder binär? Oder liefert der RFID-Leser schon die komplette Seriennummer als ULINT?
Hast Du mal ein Beispiel mit dem Inhalt der 8 Bytes und welche Seriennummer da herauskommen soll?

Harald
 
1625655291243.png

in EB1 bis EB8 steht die Seriennumer. Diese möchte in die Variable "UID" (Datentyp ULINT umkopieren.
Am Ende Soll es einen einfachen Vergleich geben ob die Soll UID der eingelesen UID entspricht.

Danke, Schrödingersbit
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin Schrödingersbit,

da Du absolut arbeitest, wäre es doch am einfachsten, einfach die Bytes in Bytes zu kopieren, oder?

Code:
UID.%b0 := eb1;
UID.%b1 := eb2;
UID.%b2 := eb3;
UID.%b3 := eb4;
UID.%b4 := eb5;
UID.%b5 := eb6;
UID.%b6 := eb7;
UID.%b7 := eb8;

VG

MFreiberger
 
Du könntest Dir auch eine Variable direkt im Format ULInt definieren, die den Eingangsbereich zusätzlich überdeckt:
1625657504579.png
In dem Beispiel oben könntest Du dann direkt auf euli800 zugreifen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Anhang anzeigen 55324

in EB1 bis EB8 steht die Seriennumer. Diese möchte in die Variable "UID" (Datentyp ULINT umkopieren.
Am Ende Soll es einen einfachen Vergleich geben ob die Soll UID der eingelesen UID entspricht.
Was für eine Seriennummer soll das ergeben? 2.814.469.702.506.022.857 ?

ULINT-Variablen können nicht im Speicherbereich der Eingänge/Ausgänge/Merker angelegt werden (oder geht das in V16?). Du müsstest Deine ULINT Variable in einen DB legen. Aus dem Bereich der Eingänge könntest Du dann z.B. in 4-Byte-Häppchen in die ULINT-Variable kopieren:
Code:
"MyDB".UID.%D1 := %ED1;
"MyDB".UID.%D0 := %ED5;

#xUID_ist_gleich := "MyDB".UID = 2_814_469_702_506_022_857;
//oder
#xUID_ist_gleich := "MyDB".UID = #Soll_UID;

Harald
 
ULINT-Variablen können nicht im Speicherbereich der Eingänge/Ausgänge/Merker angelegt werden (oder geht das in V16?).
Mit V16 geht das. Habe ich ja gemacht:
1625662164703.png

In SCL kann man das auch leicht auslesen und vergleichen:
1625662227585.png
Ein paar Verbesserungen gibt es dann doch zwischen den einzelnen TIA-Versionen, auch wenn sie eher homöopathisch sind ;)
 
Zuletzt bearbeitet:
Jetzt käme es mal wieder auf die Mitarbeit des Fragestellers/OP @Schroedingersbit an, was denn bei seinem Beispiel als Seriennummer herauskommen soll. Vielleicht kann man eh' nicht die 64 Bit/8 Byte als Ganzes ansprechen und müsste die Bytes einzeln verarbeiten (Bytes tauschen und/oder noch irgendwie umrechnen)?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Je nachdem, was man mit den Teilwörter, Bytes, etc. der Seriennummer machen möchte, könnte man sogar mit einem selbstdefiniertem Typen auf den Eingangsbereich zugreifen:
1625665367830.png
Hier mal als Beispiel ein UDT "type_ULInt" mit zwei DINT.

Ist vieleicht schon offtopic, aber das kann das Leben auch erleichtern, da es einiges an Umkopieren von Daten ersparen kann.
 
Die Auflösung des Rätsels preiszugeben, wie die zugehörige Serien-Nr zu den in #5 gezeigten EinzelBytes aussieht, würde das/unser Leben noch drastischer erleichtern ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was für eine Seriennummer soll das ergeben? 2.814.469.702.506.022.857 ?

ULINT-Variablen können nicht im Speicherbereich der Eingänge/Ausgänge/Merker angelegt werden (oder geht das in V16?). Du müsstest Deine ULINT Variable in einen DB legen. Aus dem Bereich der Eingänge könntest Du dann z.B. in 4-Byte-Häppchen in die ULINT-Variable kopieren:
Code:
"MyDB".UID.%D1 := %ED1;
"MyDB".UID.%D0 := %ED5;

#xUID_ist_gleich := "MyDB".UID = 2_814_469_702_506_022_857;
//oder
#xUID_ist_gleich := "MyDB".UID = #Soll_UID;

Harald
(y) Habs jetzt so bei mir umgesetzt. Absoluten Zugriff kannte ich so noch nicht.....Danke
 
Die Auflösung des Rätsels preiszugeben, wie die zugehörige Serien-Nr zu den in #5 gezeigten EinzelBytes aussieht, würde das/unser Leben noch drastischer erleichtern ...
Das ist ein RFID Datenträger von Balluff. Wie sich dass Balluff gedacht hat wie die Seriennummer nun genau aussehen soll weiss ich leider nicht 😬.
Die Doku gibt an dass die UID 8 Byte lang ist - Wie sie nun aber wirklich aussieht weiss ich nicht weil sie z.b nicht auf dem Datenträger aufgedruckt ist oder ich sie sonst irgendwie auslesen kann.

Für meinen Fall reicht dass aber weil ich ja jetzt die 8 Bytes in mein ULINT umkopieren kann und einfach Ist UID mit Soll UID vergleichen kann.
Wenn ich noch Infos von Balluff kriegen kann wie die Nummer zu den Einzelbytes aussieht werd ichs noch posten.

Danke, Schrödingersbit
 
Wie sie nun aber wirklich aussieht weiss ich nicht weil sie z.b nicht auf dem Datenträger aufgedruckt ist oder ich sie sonst irgendwie auslesen kann.

Für meinen Fall reicht dass aber weil ich ja jetzt ... einfach Ist UID mit Soll UID vergleichen kann.
Ist-UID ist die jeweils eingelesene Nr und Soll-UID die ... ? Wenn sie weder auf dem Datenträger aufgedruckt noch sonst wie zu ermitteln ist, woher nehmen, um sie mit der eingelesenen zu vergleichen?
Vermutlich, willst Du sie "nur" wiedererkennen, wenn Du sie zum 2. Mal oder x. Mal wieder einliest? Und es kann Dir dabei egal sein, welche Serien-Nr tatsächlich dahintersteckt?
 
Ist-UID ist die jeweils eingelesene Nr und Soll-UID die ... ? Wenn sie weder auf dem Datenträger aufgedruckt noch sonst wie zu ermitteln ist, woher nehmen, um sie mit der eingelesenen zu vergleichen?
Vermutlich, willst Du sie "nur" wiedererkennen, wenn Du sie zum 2. Mal oder x. Mal wieder einliest? Und es kann Dir dabei egal sein, welche Serien-Nr tatsächlich dahintersteckt?
Genauso ist das bei mir. Ich muss sie nur einmal einlesen und dann wiedererkennen. Die Datenträger kleben bei mir auf Transportbehältern, wenn ich also die ID des Datenträgers kann ich auf den Behälter schliessen. Dass reicht bei mir.
Zusätzlich hat der Datenträger noch einen Anwenderdatenbereich. Der kann über die Balluffbibliothek mit Anwenderdaten beschrieben / gelesen werden.

Schrödingersbit
 
Zurück
Oben