S7-1200 / TIA V11 - String aus einzelnen Bytes zusammenstellen

smartie

Level-1
Beiträge
298
Reaktionspunkte
22
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich arbeite im Moment an meinem ersten etwas größeren Projekt mit einer S7-1200. - Dabei sollen Daten von einer übergeordneten Steuerung als String empfangen
werden und zusammen mit weiteren Zeichen an eine serielle Schnittstelle übertragen werden.

Das Empfangen und Senden der Daten soll hier erst einmal nicht weiter Thema sein! (Soll heißen: Krieg ich erst mal ohne Hilfe hin, bzw. hab ich schon gemacht).

Probleme habe ich aber beim zusammenbauen meiner Sendedaten. - Folgende Segmente sollen zur Laufzeit zusammengebaut werden:

- 15 Byte - Löschsequenz
- 35 Byte - Kopfdaten
- ?? Byte - Nutzdaten (in unterschiedlicher Länge)
- 17 Byte - Fussdaten

In der S7-300 hätte ich nun die einzelnen Bytes (jeweils in einem STRUCT sortiert) in einem Datenbaustein abgelegt und (um ohne Any-Pointer / AWL arbeiten zu müssen)
in jeweils einen String kopiert. Anschließend würde ich diese Strings nacheinander mit CONCAT verketten und danach die Nutzdaten dieses Gesamt-Strings zum Versenden
in einen weiteren DB (Array of BYTE) kopieren.

Habe ich auch so in der S7-300 schon mehrmals gemacht. - Und ja ich weiß das ich mir das mit den Strings bei dem Einsatz von Pointern sparen könnte, will ich aber
so nicht weil unser "Servicepersonal" mit AWL nix anfangen kann.

Das Problem bei der S7-1200 bzw. TIA V11 besteht nun aber darin das mit der Funktion MOVE_BLK nur Arrays verschoben werden können (und ich keine andere geeignete
Funktion finde.) Siehe: http://support.automation.siemens.c...lib.csinfo&lang=de&objid=42603881&caller=view

- Das Arbeiten mit den Arrays dürfte ja prinzipiell eigentich funktionieren weil es die Funktion CHARS_TO_STRING gibt. Mit der können Arrays vom Datentyp CHAR in einen
String gewandelt werden.

Allerdings kann ich bei einem Array zwar für jedes Byte den Startwert bestimmen, aber weder einen Kommentar eingeben, noch die Symbole der einzelnen Bytes (unterschiedlich)
benennen. - Heisst also ich kann nicht wirklich anständig dokumentieren!

Mein nächster Gedanke wäre also irgenwdie die einzelnen Bytes zur Laufzeit in ein Array zu kopieren. Aber auch das will mir irgendwie nicht gelingen, bzw. ich finde keine
andere Lösung als alle Byte händisch zu kopieren.

Ich hoffe ich habe mich soweit klar ausgedrückt das ihr mein Problem versteht und ihr mir helfen könnt.

Gruß smartie
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Smartie,

konntest Du dein Problem lösen, wir derzeit vor einem ähnlichen stehen. Wir versuchen über eine S7-1200 und einer RS232 Schnittstelle einen externen Thermodrucker anzusteuern. Die Tx Anzeige bei einem extra dafür eingerichteten Druckertest button am KT500 Display leuchtet zwar. Nur kommt nichts aus dem Drucker. Über das Hyperterminal haben von Windows haben wir direkt ein paar Testbuchstaben ausdrucken können, nur klappt es mit der SPS nicht.

Ich denke, dass es sich mit deinem Beitrag vom 10.08.2012, 18:23 überschneidet und du möglicherweise eine Antwort darauf gefunden hast.

Für jede Hilfe bin ich sehr dankbar bzw. jemand der mir weiterhelfen kann.

Viele Grüße
Engpass
 
Zurück
Oben