Problem mit STRING_TO_BUF

Mobi

Level-3
Beiträge
1.369
Reaktionspunkte
135
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute,

erstmal ein frohes neues Jahr noch. Hoffe ihr habt nicht all zu doll gefeiert, so dass ihr mein Problem bestimmt schnell lösen könnt.

Also ich nutze FILE_WRITE um etwas in eine TXT zu schreiben, muss aber vorher den String den ich schreiben will in einem Puffer ablegen. Dies mach ich mit STRING_TO_BUF. Aber nun weiß ich nicht welche Parameter welche Werte bekommen, z.B. um "Hello World!" in den Puffer zu schreiben.

Ich nutze übrigens PC WORX 6.00.25 SP 3.73.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke, aber das hatte ich schon u.a.. Da steht auch nicht drin wie genau STRING_TO_BUF belegt werden muss. Am besten wäre ein Beispiel anhand von "Hello World!".
 
Leider habe ich PCWorkx momentan nicht zur Verfügung und ich kenne auch nur String_to_Buffer, dort gilt die folgende Belegung:

Code:
Parameter            Data type   Description

STR_IN               STRING      input string
BUFFER               BYTE        buffer
BUF_LEN              INT         number of characters copied to the buffer
STRING_TO_BUFFER     INT         output value
Code:
VAR
 buffer : ARRAY[0..100] OF BYTE;
 str_in : STRING := "Hallo World!";
 buf_len : INT := 100;
 string_to_byte : INT; // Rückgabewert, Status
END_VAR
Dabei muss das Array groß genug sein um jeden zuerwartenden String aufnehmen zu können.
Vielleicht hilft dir das weiter, wenn nicht sag mal was String_to_Buf für Schnitstellen hat. Aber es sollte ähnlich sein.
 
Ne ne, der heißt schon String_To_Buf. Beim String_To_Buffer weiß ich Bescheid. Den gibts auch.

Parameter von String_To_Buf siehe Anhang.

REQ, DONE, ERROR und STATUS sind mir klar, nur die restlichen nicht.
 

Anhänge

  • Unbenannt.JPG
    Unbenannt.JPG
    21,2 KB · Aufrufe: 16
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok, das Teil kenn ich auch nicht. Hab aber noch ne Kurzbeschreibung da:

Code:
Parameter   Data types        Description
REQ         BOOL              a rising edge starts the copy ac- tion of the function block
BUF_FORMAT  BOOL              a value of TRUE indicates that the buffer data are in MOTO- ROLA format, whereas a value of FALSE indicates that the buffer data are in INTEL format
                              // Motorola-Format = Big-Endian
                              // Intel-Format = Little-Endian

BUF_OFFS   DINT               byte address in the buffer
                              // = 0
BUF_CNT    DINT               amount of bytes to be copied
                              // kann ruhig die Buffergröße sein, die Stringlänge wird von der Funktion erkannt
SRC        * or ARRAY_OF_*    source array or variable of standard data type *
                              // oder String
BUFFER     ANY                destination array (byte stream)
DONE       BOOL               a value of ’TRUE’ indicates that the data are copied
ERROR      BOOL               a value of ’TRUE’ indicates an occurred error
STATUS     INT                indicates the status of the copy process.
 
Ich habs auch auf Deutsch ;), ist ja schließlich in der Hilfe drin.

Aber schön wäre ein Beispiel, da ich auch nich weiß welches Format ich angeben muss und ob mit Bytelänge auch Stringlänge gemeint ist, da die Beschreibung für alle *_TO_BUF Bausteine geschrieben wurde, also auch für REAL_TO_BUF und so, also nur allgemein gehalten.
 
Sag doch gleich das du alles hast.^^
Das Format kannst du ja durchprobieren, es gibt ja nur zwei möglichkeiten. ;)
Ich hab wie gesagt von PhoenixContact nicht so viel Ahnung.

BUF_CNT gibt die Anzahl der zu kopierenden Byte an, der Wert sollte nicht größer als der selbst Buffer sein.
Es ist dabei nicht zwingend erforderlich genau die Stringlänge anzugeben, die "restlichen" Byte's werden dann halt mit Nullen aufgefüllt.

Wenn du die Software da hast kannst du ja mal ein bischen probieren...
Leider kann ich dir kein Bsp. schreiben, da ich selbst die SW nicht habe.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So nun klappt es. Hab selber ein Beispiel direkt auf unseren Server gefunden ;).

Aber wie kann ich den einen neuen Text unter und nicht neben dem alten schreiben? Also wie mache ich ein "Enter".
 
Zurück
Oben