FC16 Integer in String wandeln

peraho

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

nach langem ausprobieren und lesen im Forum, bin zu keinem erfolgreichem ergebnis gekommen.

Daher die Frage: Hat jemand schon mal die Funktion FC16 eingesetzt?
Habe die String Variable mit verschiedenen längen probiert und auch das Kontrollbyte mit der maximalen Läne vorbelegt.
Aber aus der FC16 kommt keine wert raus.

Soweit mal der Aufruf:

CALL "I_STRNG"
I :="Daten_Teil".Tag
RET_VAL:=#sTag

Muss die zu beschreibende Stringvariable genau 1 Byte größer sein (wegen dem Vorzeichen) oder kann die auch beliebig größer sein.
Vielleicht ist es ja nur ne Kleinigkeit.
Danke schon mal.

Gruß peraho
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

nach langem ausprobieren und lesen im Forum, bin zu keinem erfolgreichem ergebnis gekommen.

Daher die Frage: Hat jemand schon mal die Funktion FC16 eingesetzt?
Habe die String Variable mit verschiedenen längen probiert und auch das Kontrollbyte mit der maximalen Läne vorbelegt.
Aber aus der FC16 kommt keine wert raus.

Soweit mal der Aufruf:

CALL "I_STRNG"
I :="Daten_Teil".Tag
RET_VAL:=#sTag

Muss die zu beschreibende Stringvariable genau 1 Byte größer sein (wegen dem Vorzeichen) oder kann die auch beliebig größer sein.
Vielleicht ist es ja nur ne Kleinigkeit.
Danke schon mal.

Gruß peraho

Und wenn du eine Temp-Var benutzt (#sTag), auf jeden Fall Byte 0 und 1 mit max. Länge und tatsächlicher Länge beschreiben, evtl. auch schon mal mit char-Werten befüllen, also die Variable initialisieren. Bin nicht sicher ob das beim Fc16 unbedingt nötig ist, aber wenn nichts geht, versuche das einmal.
 
Hallo marlob,

ich bekomms einfach nicht hin. ich gehe davon aus 2 byte größer als das zu wandelnde Datenformat?

L L#1212
T MW 190

CALL "I_STRNG"
I :=MW190
RET_VAL:=#sTag

Die Variable #sTag hat eine Länge von 18 Zeichen: 16 Zeichen für die Größe der Wort-Variable und 2 Byte für Vorzeichen?

Ich stell mich heut wieder blöd dran.

Gruß peraho
 
Hallo,

keine Ahnung was da noch fehlt oder falsch ist.
Das habe ich ausprobiert:

L P##sTag
LAR1
L 100
T DBB [AR1,P#0.0]

L 'a'
T #sTag[1]
T #sTag[2]
T #sTag[3]
T #sTag[4]
T #sTag[5]
T #sTag[6]
T #sTag[7]
T #sTag[8]
T #sTag[9]
T #sTag[10]
T #sTag[11]
T #sTag[12]
T #sTag[13]
T #sTag[14]
T #sTag[15]
T #sTag[16]
T #sTag[17]
T #sTag[18]
T #sTag[9]
T #sTag[20]


L L#1212
T MW 190

CALL "I_STRNG"
I :=MW190
RET_VAL:=#sTag

Die Variable #sTag hat eine Länge von 100 Zeichen.

Hast da noch eine Idee?

Gruß peraho
 
Hallo,
ich habe die mich mit den meißten der String-FC's schon herum-geärgert. Eines habe sie alle gemeinsam : Sie funktionieren nur (wie schon von Ralle beschrieben) wenn die zu verwendenden String-Variablen initialisiert sind.
Das heißt, das mindestens die Länge der Deklaration in den String-Header einzutragen ist.

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habe die Initialisierung noch von einer Variablen abhängig gemacht, damit die Werte nicht zyklisch geschrieben werden aber das hat auch nicht geholfen.

gruß peraho
 
Das 2. Byte des Strings auch noch beschreiben:
Code:
L P##sTag
LAR1 
L 100
T DBB [AR1,P#0.0]
L  20
T DBB [AR1,P#1.0]
.....
....
 
... ich habe das auch gerade mal nachvollzogen ...
Es ist so, wie von OHGN beschrieben.
Wenn dein sTag allerdings eine TEMP-Variable ist, dann mußt du sie vor jeder Benutzung des FC16 initialisieren ...
 
Wenn deine Variable in einem DB liegt (oder im Merkerbereich) dann würde ein einmaliges initialisieren (z.B. über den OB100) ausreichen.

Und ... das ist nur bei TEMP-Variablen so ...

Gruß
LL
 
Hi LL,

noch ne blöde Frage: Wie adressiere ich den Bereich im DB?

CALL "I_STRNG"
I :=MW190
RET_VAL:=P#DB8.DBX 34.0 BYTE 20

Das funktioniert irgendwie nicht ganz.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi LL,

noch ne blöde Frage: Wie adressiere ich den Bereich im DB?

CALL "I_STRNG"
I :=MW190
RET_VAL:=P#DB8.DBX 34.0 BYTE 20

Das funktioniert irgendwie nicht ganz.

Du kannst das nur symbolisch adressieren.
Also der DB muss in der Symboltabelle definiert werden.
Code:
CALL "I_STRNG"
I :=MW190 
RET_VAL:="DBsymbol".deinString
 
du mußt die Variable im DB symbolisch anlegen (und auch den DB einen Symbolnamen geben). Dann kannst du dies an den FC übergeben.

OHGN war schneller ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

also vom Prinzip her is mir das schon klar aber wie deklariere ich eine Variable in einem DB symbolisch? Komme einfach mit der ganzen Syntax mit Step7 noch nicht so ganz klar. Kommt davon, wenn man jahrelang nix damit gemacht hat und nur TwinCat programmiert hat.

Also der DB ist in der symboltabelle enthalten. wie funzt denn das jetzt noch mit der Variable?

Gruß peraho
 
Zurück
Oben