Zusammenfassen von 20 Bytes in INT

ice6461

Level-1
Beiträge
15
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich hab folgendes Problem, wo ich hoffe das ihr mir hier weiter hilft.

In meinen Projekt habe ich einen Datamatrixleser und lese Datamatrix aus. Diese erscheinen dann in 20 Bytes. Wenn ich die Variablentabelle anschaue wird mir der Datamatrix angezeigt.
Und zawr stelle ich dann Zeichen ein.
Jetzt möchte ich gerne diese 20 stellige Nummer vergleichen. Wird zum erkennen von verschiedenen Bauteilen gebraucht.
Mein Problem ist, wie ich die Nummer umwandle und dann in einen String zusammenfasse?

Hoffe ihr könnt mir helfen…

Mit freundlichen Grüßen

Henning
 
Hallo,
so wie ich das kenne kommen deine 20 Zeichen Data-Matrix als String an.
Die kannst du dann aber nicht so einfach in einen INT wandeln. Ein Integer kann nur bis von -32768 bis +32767 darstellen. ein DINT leistet da schon etwas mehr, aber auch der ist bei 2.147.483.647 erschöpft. Da wären aber erst 9,5 Stellen. Was hast du also genau vor ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also bei mir kommen die Daten in Eingangsbyte rein.
Bei mir z.B. EB50...EB69. Ich hab dann immer einen einzelne Zahl pro EB. Ich kann 6 EB wegschneiden, weil ich sie nicht brauche.
Jetzt muß ich die übrigen EB zusammenfassen und vergleichen mit einer 14 stelligen Zahl.
Hoffe so kann man es einfacher verstehen:)
 
in den iec-functions findest du diverses zur stringbearbeitung

fc10 (EQ_STRNG) vergleicht strings auf =
 
In meinen Projekt habe ich einen Datamatrixleser und lese Datamatrix aus. Diese erscheinen dann in 20 Bytes. Wenn ich die Variablentabelle anschaue wird mir der Datamatrix angezeigt.
Und zawr stelle ich dann Zeichen ein.
Jetzt möchte ich gerne diese 20 stellige Nummer vergleichen. Wird zum erkennen von verschiedenen Bauteilen gebraucht.
Mein Problem ist, wie ich die Nummer umwandle und dann in einen String zusammenfasse?

Hallo Henning,

Du könntest die 20 BYTES in eine STRING-Variable kopieren. Diese STRING-Variable kannst Du dann mit der IEC-Funktion FC10 EQ_STRING mit anderen STRING-Variablen vergleichen.

Code:
// FC200 : Datenmatrix
 
      L     20                          // Maximale Länge Datenstring
      T     DB200.DBB    0
 
      L     20                          // Aktuelle Länge Datenstring
      T     DB200.DBB    1
 
      L     EB    50                    // Datenmatrix Byte 1
      T     DB200.DBB    2              // Datenstring_Byte 1
 
      L     EB    51                    // Datenmatrix Byte 2
      T     DB200.DBB    3              // Datenstring_Byte 2
 
      L     EB    52                    // Datenmatrix Byte 3
      T     DB200.DBB    4              // Datenstring_Byte 3
 
      L     EB    53                    // Datenmatrix Byte 4
      T     DB200.DBB    5              // Datenstring_Byte 4
 
      L     EB    54                    // Datenmatrix Byte 5
      T     DB200.DBB    6              // Datenstring_Byte 5
 
      L     EB    55                    // Datenmatrix Byte 6
      T     DB200.DBB    7              // Datenstring_Byte 6
 
      L     EB    56                    // Datenmatrix Byte 7
      T     DB200.DBB    8              // Datenstring_Byte 7
 
      L     EB    57                    // Datenmatrix Byte 8
      T     DB200.DBB    9              // Datenstring_Byte 8
 
      L     EB    58                    // Datenmatrix Byte 9
      T     DB200.DBB   10              // Datenstring_Byte 9
 
      L     EB    59                    // Datenmatrix Byte 10
      T     DB200.DBB   11              // Datenstring_Byte 10
 
      L     EB    60                    // Datenmatrix Byte 11
      T     DB200.DBB   12              // Datenstring_Byte 11
 
      L     EB    61                    // Datenmatrix Byte 12
      T     DB200.DBB   13              // Datenstring_Byte 12
 
      L     EB    62                    // Datenmatrix Byte 13
      T     DB200.DBB   14              // Datenstring_Byte 13
 
      L     EB    63                    // Datenmatrix Byte 14
      T     DB200.DBB   15              // Datenstring_Byte 14
 
      L     EB    64                    // Datenmatrix Byte 15
      T     DB200.DBB   16              // Datenstring_Byte 15
 
      L     EB    65                    // Datenmatrix Byte 16
      T     DB200.DBB   17              // Datenstring_Byte 16
 
      L     EB    66                    // Datenmatrix Byte 17
      T     DB200.DBB   18              // Datenstring_Byte 17
 
      L     EB    67                    // Datenmatrix Byte 18
      T     DB200.DBB   19              // Datenstring_Byte 18
 
      L     EB    68                    // Datenmatrix Byte 19
      T     DB200.DBB   20              // Datenstring_Byte 19
 
      L     EB    69                    // Datenmatrix Byte 20
      T     DB200.DBB   21              // Datenstring_Byte 20

Gruß Kai
 

Anhänge

  • OB1.pdf
    3 KB · Aufrufe: 24
  • FC200.pdf
    4 KB · Aufrufe: 29
  • DB200.pdf
    2,6 KB · Aufrufe: 21
  • VAT.jpg
    VAT.jpg
    250,8 KB · Aufrufe: 30
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn die Reihenfolge stimmt, kann man die 20 Bytes auch mit der Systemfunktion SFC20 BLKMOV kopieren.

Code:
// FC210 : Datenmatrix
 
      L     20                          // Maximale Länge Datenstring
      T     DB200.DBB    0
 
      L     20                          // Aktuelle Länge Datenstring
      T     DB200.DBB    1
 
      CALL  "BLKMOV"
       SRCBLK :=P#E 50.0 BYTE 20        // Datenmatrix Byte 1 - 20
       RET_VAL:=#BLKMOV_RET_VAR
       DSTBLK :=P#DB200.DBX2.0 BYTE 20  // Datenstring Byte 1 - 20

Gruß Kai
 

Anhänge

  • FC210.pdf
    2,8 KB · Aufrufe: 27
Hallo,
was Kai und Volker dir so nett geschrieben haben (und ich einleiten wollte) besagt : Du musst zusehen, dass du einen vernünftigen String erzeugst. Den kannst du dann mit anderen Strings vergleichen. Du kannst es halt nur nicht als Zahl auswerten (auch nicht 14 Stellen ...)
 
Super, Danke für die viele Hilfe. Und ein Kompliment an Kai. Danke dass du mir gleich auch den Lösungsweg gezeigt hast. Werde es gleich heute Nachmittag ausprobieren..
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ja, so ist der kai eben.
der hat scheinbar den ganzen tag nix zu tun und kann die progs für andere schreiben.
ich hab soviel zu tun, das ich dir gerade mal den tip mit der fc10 geben konnte. (das aber noch vor kai :ROFLMAO:)
 
Deswegen hab ich mich ja erst an alle bedankt die mir weitergeholfen haben. Leider bin ich heute nicht dazu gekommen um es auszuprobieren..
Aber ich hoffe es, das ich es morgen schaffe:)
 
Zurück
Oben