Step 7 HMI String (Barcode) in der SPS in anderen DB übergeben

DennisBerger

Level-2
Beiträge
437
Reaktionspunkte
61
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
System: CPU 314
Software: Step 7 V5.6

Wir lesen mit einem Barcodescanner eine Artikelnummer im HMI (TP900C) ein, der 30 Zeichen lange String in HMI wird im DB10 ab Wert 32 für 30 Bits abgelegt.
also DB10.dbx32.0 (1. Zeichen), DB10.dbx32.1 (2. Zeichen), DB10.dbx.32.2. (3. zeichen) usw

Nun soll ich diese 30 Zeichen in den DB20 kopieren.

Wie mache ich das? Bei Tia geht das ja recht einfach, mit Step7 V5.6 und BLKmove finde ich keine Bit/Bytelänge die kopiert werden und keine Startadresse.


jemand der mir da mit code oder anleitung helfen kann?

Danke euch.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
wäre das richtig?
sfc20

CALL ”BLKMOV” SFC20
SRCBLK :=P#DB10.DBX32.0 BYTE 4
RET_VAL :=MW0
DSTBLK :=P#DB20.DBX0.0 BYTE 4

Mike:
in hmi variable als string (30) für DB10
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nun soll ich diese 30 Zeichen in den DB20 kopieren.

Wie mache ich das? Bei Tia geht das ja recht einfach
Wie machst Du das denn in TIA? In Step7 classic sollte das genauso gehen wie in TIA für S7-300.

In AWL/FUP/KOP:
Code:
CALL ”BLKMOV” //SFC20
 SRCBLK :="MeinDB10".String_1
 RET_VAL :=#tempInt
 DSTBLK :="MeinDB20".String_2
oder in SCL:
Code:
"MeinDB20".String_2 := "MeinDB10".String_1;

Harald
 
Zuletzt bearbeitet:
Danke, probier ich mal aus.

edit: danke hat geklappt. vielen dank, wusste nicht, dass ich den string direkt aufrufen kann.

in Tia mache ich das mit right string oder left string
Seriennummer hat 20 Zeichen aber benötige nur die letzten 6, somit kann man den string schneiden.
1652276402407.png
 
Zuletzt bearbeitet:
Wir lesen mit einem Barcodescanner eine Artikelnummer im HMI (TP900C) ein, der 30 Zeichen lange String in HMI wird im DB10 ab Wert 32 für 30 Bits abgelegt.
also DB10.dbx32.0 (1. Zeichen), DB10.dbx32.1 (2. Zeichen), DB10.dbx.32.2. (3. zeichen) usw

Nun soll ich diese 30 Zeichen in den DB20 kopieren.
Warum werde ich das Gefühl nicht los, dass hier die Begriffe Byte und Bit durcheinandergewürfelt bzw. abwechselnd in derselben Bedeutung verwendet werden?
Unter "1 Zeichen" - z.B. auf dem Transport von einem BarCodeScanner in einen DB - stelle ich mir einen PlatzBedarf von 7 bis 8 Bit (oder auch 16 Bit) vor, wenn ich dabei an "druckbare" Zeichen (z.B. ASCII-Code) denke.
Sollte auf diesem Wege eine Information übermittelt werden, die nur aus den Zeichen '0' oder '1' besteht, so lässt natürlich jeweils 1 Zeichen in 1 Bit abspeichern. Aber ist das hier wirklich so gemeint? Irgendwie mag ich das gar nicht glauben ...
BarCode kann doch mehr als nur '0' oder '1'!
Es macht schon einen kleinen Unterschied, ob 30 Zeichen (= 30 Byte oder 30 Worte = 60 Byte) oder 30 Bit ("knapp" 4 Byte) zu kopieren sind ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... weil man ja mit dbx32.0 anspricht und dann dbx32.1
Ja, wobei 32 die ByteAdresse und .0 bzw. .1 die BitAdresse ist.
Welche Informationen bzw. Zeichen bekommst Du denn von dem Scanner geliefert?
Die Zahl 30 Bit macht mich auch ein wenig stutzig. Wenn es hier um BCD-Ziffern bzw. um HexadezimalZahlen geht, dann können wir in 30 Bit mal gerade 7,5 (sieben einhalb) Stellen darstellen. Es bleibt für mich irgendwie merkwürdig.
 
Das hat damals ein Kollege programmiert, der Scanner gibt die Zeichen ins E/A Feld im HMI.
Als Variable hatte er damals dann Sring 30 Zeichenlänge als Variable in WinCC deklariert.
das funktioniert auch sehr gut.

p.s. hat alles geklappt, die Artikelnummer wird nun von DB10 in DB20 transferiert / kopiert.
danke euch
 
Zurück
Oben