TIA 128 Bytes Char versenden

stepper7

Level-2
Beiträge
259
Reaktionspunkte
11
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich brauch mal bitte einen Griff unter die Arme..
Ich muss über Profinet zu einem Teilnehmer einen String von 128 Bytes in Char versenden bzw. den Ausgangsbereich befüllen.
Die Ausgangsadresse wäre 93...222
Wie kann man das am einfachsten lösen ?
Ich hatte überlegt alles in einzelne Dwords über Move zu zerlegen, quasi in 4 Bytes scheibchenweise.
Weil manchmal brauch ich nur 40 Bytes befüllen also je nachdem, aber 128 Bytes wären möglich.
Gibts da eine saubere Lösung ? Mit einem UDT oder so ? Aber wie ?
TIA V18 S7-1516 :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
den sendebereich vorher mit nichts überschreiben da str_to_char nicht die nicht verwendeten zeichen überschreibt sondern nur die länge des strings.
1691407747363.png
 
Ok...das heisst ich lege einfach in der Variablentabelle am Ausgang A93.0 den UDT drauf ? Das funktioniert oder ?
Ja, aber denk nochmal drüber nach: AB93-AB222 => 129 130 Byte (Harald #6 hat recht, ich hatte nur subtrahiert). Du hast 128 geschrieben, da kann nur eins von beiden richtig sein.

Mach den UDT so, dass deine benötigten Bytes da drin stehen, und lege den UDT dann auf dein erstes Bit im gewünschten Ausgangsbereich, dann siehst du auch bis wohin der Bereich geht.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
AB93-AB222 sind 130 Byte. Wenn die als STRING[128] deklariert sind, dann passen da die erwähnten 128 Chars rein. Vermutlich muß man da aber extra dafür sorgen, daß das erste Byte AB93 garantiert den Wert 128 enthält und kann dann mit einer einfachen Stringkopier-Operation seinen String in den Ausgangsbereich kopieren. In welcher Programmiersprache soll das Kopieren in den Ausgangsbereich passieren? SCL, KOP, FUP?

Nachfrage zur Sicherheit: wie ist der Ausgabebereich AB93-AB222 deklariert? Und wie ist der Sendepuffer deklariert, wo die "128 Bytes in Char" zusammengestellt werden? Sollen die zwei String-Header-Bytes mit zum Profinet-Device gesendet werden? Sollen die vom String unbenutzten Bytes auf 0 abgelöscht werden?

Harald
 
Ja ! Danke! Ihr habt Recht das sind 130 Byte. Die ersten zwei Bytes sind Reserviert für die Request Data Size :)
Also AB95-AB222 wären die 128 Bytes an Daten.
Soweit alles klar danke ! So funktioniert es !
 
Zurück
Oben