Step 7 Array of Byte to String mit HTA

acid

Level-1
Beiträge
785
Reaktionspunkte
240
Zuviel Werbung?
-> Hier kostenlos registrieren
Servus!

Ich habe heute versucht ein Array of Byte mittels HTA in einen String zu konvertieren, grundsätzlich klappt das auch, mit einem seltsamen Problem:

Byte0: 03
Byte1: 3E
Byte2: 17
...

Das Ergebnis der Konvertierung sieht so aus '33E17', das heißt, die führende 0 des ersten Bytes ist verschwunden.
Unter TIA auf einer 1500er mache ich genau das gleiche, dort funktioniert es wie gewünscht.

Mache ich etwas falsch, ist das ein Bug, oder ist das einfach so?

Step7 5.5, S7 315 2PN/DP (genaue MLFB und FW habe ich gerade nicht zur Hand)
 
Zuletzt bearbeitet:
Das Ergebnis der Konvertierung sieht so aus ' 33E17', das heißt, die führende 0 des ersten Bytes ist verschwunden.
Sieht eher so aus, als sei die verschwundene '0' durch ein ' ' (Leerzeichen) ersetzt worden. Das war wohl mehr als Feature denn als Bug geplant und da hätte sich der Programmierer das Mitdenken lieber ausnahmsweise verkneifen sollen. :ROFLMAO:
 
Ah, das war ein Tippfehler von mir :rolleyes:
Tippfehler hier im Forum oder in Deinem Programm? Ist das Problem nun gelöst?

Wenn nicht: Ich vermute, Du hast den Pointer am OUT falsch angegeben (vielleicht falsches AT in SCL gebastelt?) Wie sieht Dein Programmcode um das HTA aus?
Gibt es einen Fehlercode vom HTA?

HTA wandelt nicht in einen String sondern in eine Zeichenkette. Dem HTA ist es egal, ob der Ausgabebereich irgendwo in einem String oder sonstwo im Speicher liegt.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein hier im Forum.

Beschaltung z.B. IN:=P#DB100.DBX0.0, N:=8, OUT:=DB200.DBX0.0

IN ist ein Array [0..7] of Byte
OUT ein String '16'

Das ganze funktioniert witzigerweise exakt gleich beschaltet auf der TIA-Anlage.
Ich bin leider fast gezwungen den HTA zu verwenden, weil "ich mich am vorhandenen Programm orientieren soll".
 
Beschaltung z.B. IN:=P#DB100.DBX0.0, N:=8, OUT:=DB200.DBX0.0
Wenn Dein OUT ein STRING ist, dann liegt das erste Zeichen des Strings bei DBB2 - dort müsste Deine vermisste '0' zu liegen kommen. Probiere OUT:=P#DB200.DBX2.0
Wie ich schon schrieb: es schert den HTA wenig, ob der OUT ein String oder irgendeine Speicheradresse ist.

Der Unterschied des HTA bei S7-1500: am HTA wird kein Pointer sondern ein Variant angegeben.

Harald
 
Harald du bist Gold wert, Danke! Jetzt hab ich auch meinen Denkfehler kapiert und es funktioniert (zumindest im Simulator).
 
Zurück
Oben