Problem Stringvariable in S7 schreiben

Hallo Kommune,

ich nutze IPSymcon unter anderem auch im industriellen Umfeld. Aktuell habe ich die Aufgabe, einen Scanner per USB an ein PC-System mit IPS anzubinden und den gescannten Code an eine Siemens SPS Steuerung zu übermitteln. Über einen Cutter nebst Registervariable bekomme ich den ASCII String des Scanners auch problemlos in das IPS System.
Das Lesen einer Stringvariable aus der SPS Steuerung funktioniert ebenfalls, jedoch das Schreiben funktioniert nicht.

Hat von Euch jemand bereits Erfahrung mit dem Schreiben einer Stringvariable in eine S7 gemacht?.

Beste Grüße aus Lauffen

Armin

Ist das Problem noch aktuell?

paresy

Fände gut wenn es gehen würde

Es gibt diese Funktion ja bereits. Hast du die mal getestet?

paresy

Hallo paresy,

das Problem ist nach wie vor aktuell. Das Schreiben einer Stringvariable funktioniert nicht. Das Lesen nur über einen Umweg, in dem die Länge des gelesenen Strings ermittelt wird und in das 2. Headerbyte geschrieben wird. Eine Variable vom Typ String hat in der S7 das nachfolgende Format:
Headerbyte 1: Reservierte Stringlänge in Byte [0…254]
Headerbyte 2: Anzahl der zu interpretierenden Zeichen im String ab Byte 3
Byte 3: 1. Nutzzeichen
Byte 4: 2. Nutzzeichen

Byte 256: 254. Nutzzeichen

Wenn Du aktuell keine S7 zum Testen hast, kann ich Dich gerne dabei unterstützen.

Grüße

Armin

@Astrobin: Ich hatte dir eine PM geschickt, aber bisher keine Antwort erhalten.

paresy

@Astrobin: Ping :slight_smile:

paresy

Hallo Astrobin,
Hallo paresy,

ich habe selbiges Problem und kann dies nachstellen.

ich habe 2 Versuche gemacht:

1x S7 schreiben, in IPS lesen und dann das gelesene in IPS „schalten“
1x IPS "schalten, in S7 lesen und das gelesene nochmal in S7 steuern

Ergebnis siehe Anhang.

Getestet mit aktuellem IPS und Siemens S7 1516 und TIA V15.1

kann man das fixen oder muss ich einen Workaround basteln (ich brauche beide Richtungen, S7 -> IPS und IPS->S7)

Gruß peri

Fix kommt zur 5.5. Wir haben dort den alten String Typ umbenannt zu Array of Char und einen neuen echten Datentyp „String“ hinzugefügt, der das Handling mit den zwei extra Bytes korrekt übernimmt.

paresy

Deswegen immer einen string, bevor du Ihn aus der S7 versendest, in ein Array of Char umwandeln. Dann kommt es auch sauber in IPS an.
Strg_TO_Chars
Das Problem haben wir des öfteren.

Attain

Super, werde das mal testen - und freue mich schon auf die 5.5 - vor allem die Möglichkeit zur Integration von IPSStudio ins Webfront wird spitze