TIA Sting an PC senden Fehler 8085

Schützjäger

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Kollegen,
ich will einen Code an einen PC in einem String senden. Die Verbindung steht jedoch bekomme ich die Meldung das der Code zu groß ist. Es spielt keine Rollen ob ich LEN händisch oder über den Baustein eintrage das Ergebnis ist das gleiche. Der String ist inzwischen in einem Struct um eine andere Methode zu testen.Meine Hardware ist eine CPU 1513 diese bekommt die Daten für den Code stellt Ihn zusammen und soll ihn dann weiterleiten. Der eigentliche Code ist 147 Byte lang.
TESEND_LEN.png
Es handelt sich um eine TCP Verbindung die über über den Port 31001 und eine IP Adresse aufgebaut wird.
was habe ich übersehen ?
Habt Ihr Tipps für mich ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
TIA Hilfe zur Anweisung TSEND_C: STATUS (W#16#...) 8085 Parameter LEN ist größer als der größte zulässige Wert.

Der Wert an LEN ist 15. Hast Du in dem String die beiden Header-Bytes initialisiert auf die maximale Länge und die aktuelle Länge? Und beide sind mindestens 15?

Harald
 
Hallo Blockmove die Flanke hat leider auch nicht geholfen.
Parallel habe wurde der String durch ein Struct mit 6 Byte ersetzt diese setzen sich aus einer Bool Varabale Int 14 und Woord 16#FF1 zusammen.
Es wurde mit dem gleichen Fehler quittiert.

PN/DP
Reicht es wenn ich den Max wert 250 ein gebe oder muss ich die genaue Byte Anzahl angeben ?
denn diese Endert sich regelmäßig je nach dem welche Code bestandteile benötigt werden.


Vielen Dank schon mal für eure Schnelle hile
 
Als Max Länge müsstest Du (höchstens) die Länge angeben, mit der der String deklariert wurde. Als Aktuelle Länge sollte die aktuelle oder/bis die max Länge eingetragen werden. Dann bist Du verantwortlich, daß Du an LEN nicht mehr als die tatsächlich gültige Länge angibst. Allerdings habe ich keine Erfahrung, wie man bei S7-1500 Max Länge und Akt. Länge direkt manipuliert. Vermutlich kann man mit MOVE ein Text-Literal zuweisen. (Wie bastelst Du eigentlich den String zusammen? Verwendest Du Methoden wo die aktuelle Länge nicht eingetragen wird?) Und ich weiß nicht was TSEND_C bei S7-1500 macht, wenn man da einen STRING angibt - wird der String-Header mit übertragen? Kann der Empfänger damit umgehen?

Vermutlich ist es besser (und so würde ich es wohl machen), wenn Du die Sende-Zeichenfolge als CHAR-Array oder BYTE-Array deklarierst, und auch so zusammenbastelst oder nach dem Basteln aus dem String in das Array kopierst.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du hattest Recht Harald vielen Dank ich habe den Max wert String[230] angegeben den ich verschicke. Wie ich den aktuellen wert eintrage weis ich auch noch nicht bin mir auch nicht sicher ob ich den unbedingt benötige. Meinen String stelle ich mit concat zusammen. CONCAT.jpg
Die einzelnen Teile werden von verschiedenen CPUS geschickt und dann in der 1500er vereint und dann an den PC gesendet.
ich bin mir nicht sicher ob ein array den Text sauber genug übermittelt so das der PC in lesen und umsetzen kann.

Trotzdem Vielen Dank für die Tipps ich nehme sie mir zu Herzen.
 
Wenn Du CONCAT verwendest, dann wird die akt. Länge automatisch eingetragen. Und die max Länge muß auch groß genug sein, sonst würde CONCAT nicht funktionieren. Du kannst mal testweise mit den Anweisungen MAX_LEN und LEN die maximale und die aktuelle Länge des String #Code0 abfragen, ob die plausibel und beide mindestens 15 sind.

ich bin mir nicht sicher ob ein array den Text sauber genug übermittelt so das der PC in lesen und umsetzen kann.
Ich glaube, daß der Empfänger mit einer Zeichenkette aus einem CHAR-Array genauso gut oder besser klar kommt als mit einer Zeichenkette aus einem S7-STRING. Zumindest würde ich mich da auf der sicheren Seite fühlen. Ich habe aber wie gesagt keine Erfahrung was TSEND mit einem S7-STRING genau macht.

Harald
 
Zurück
Oben