Step 7 Fehler bei Stringverarbeitung

Tobi0100

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
ich glaube das ist meine erste Anfrage im Forum ;)

Ich bin im Thema "Stringverabeitung" unter TIA nicht besonders bewandert. Sollte ich etwas falsch interpretieren, bitte ich Vorab um Entschuldigung!
Wir hatten vor kurzer Zeit einen Anlagenausfall an einer Etikettier Anlage--> CPU-Stopp (CPU 1517-3 PN/DP). Der CPU Fehlerspeicher hat uns dann zu sonderbaren Einträgen in einem Datenbaustein geführt. siehe Anhang

DB10006.DBX1816.0 --> String [254]
Beobachtungwert:
X#(00 14 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00)

Dieser DB dient als Eingang für Chargendaten, die von einem übergeordnetem System an die SPS übertragen werden.
Von dort werden ausgewählte Daten (meist als String) in einen anderen Datenbaustein übertragen. Hier wird der "S_Move" Befehl genutzt. Der ZielDB ist fast gleich aufgebaut. Auch String [254]
Stoppursache: "Der adressierte String hat eine falsche Längenangabe!

Nach kurzer Einarbeitung könnte der Beobachtungswert eine Ascii folge sein??.
In anderen Beiträgen habe ich gelesen dass die ersten Ziffern die länge des Strings angeben. Dann die Zeichenfolge. Bin ich hier auf der richtigen Spur und könnte mir Vll. kann mir jemand einen Tip geben ob ich ich das im Netz genauer nachlesen kann? Vll. kennt auch jemand das Problem.

Alternativ denke ich darüber nach ob es sich bei diesem Wert um eine Speicher Adresse handelt. Der S_Move Befehl wird (glaube Standartmäßig bei Strings mit mehreren Zeichen) mit einem Pointer beschrieben!

Die Fehlersuche läuft noch. Ich denke dass dieser DB nur von „Extern" über OPC-UA beschrieben wird. Das kann ich zum jetzigen Zeitpunkt aber noch nicht sagen. Meine Kollegen die sich um das Scada System kümmern, sagten dass es nahezu ausgeschlossen ist, dass diese Werte von Scada kommen.
In Folge werden wir auch versuchen im Fehlerfall die SPS nicht in Stop Laufen zu lassen. Das ist aber ein anders Thema.

Schon mal vielen Dank für eure Hilfe
Gruß Tobias
 

Anhänge

  • StringFehler.JPG
    StringFehler.JPG
    214,2 KB · Aufrufe: 36
Zuletzt bearbeitet:
Im ersten Byte steht die maximale Länge des Strings, also normalerweise bei dir mit 254 dann eben ein 16#FE. Mit der Länge prüfen die Stringfunktionen beim kopieren, ob der Zielstring überhaupt lang genug ist.
Wenn du sagst, dass der String über OPC geschrieben wird, dann wird vermutlich diese Länge nicht oder überschrieben.

Was früher bei den 300/400er CPU schon mal ein Fehler war, wenn man einen String im Temp-Bereich angelegt hatte, dann muss einmal eine Zeile mit myString := ''; geschrieben werden, weil ansonsten die Länge ebenfalls nicht gesetzt war. Da weiß ich nicht ob TIA das bei den neuen CPUs immer korrekt initialisiert. Falls du auch so einen Fall mit Strings im Temp hast, würde ich da auch nochmal nachsehen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das erste Byte (00 hex) ist offensichtlich falsch und darf nicht kleiner sein als das zweite Byte.
Das zweite Byte (14 hex = 20 dez) passt zu den folgenden 20 Bytes, die je 1 Leerzeichen enthalten.
Bitte mal das erste Byte mit FE hex (= 254 dez) überschreiben und prüfen, wo im Programm es wieder gelöscht wird.
 
Zurück
Oben