String aus Baustein raus schreiben

merlin

Level-1
Beiträge
184
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Leute

Ich bin gerade am Erstellen eines eigentlich simplen FC´s der mir aber doch mehr Schwirigkeiten bereitet als er sollte.

IN sollte ein String sein. Also kein Verweis auf einen DB wo der String steht sonder eine direkte Zuweisung wie zb 'Teststring'
OUT sollte dann ein Bereich in einem DB angegeben werden wo der String vom IN hinkopiert wird.

Habt ihr sowas schon mal gelöst? Wenn ja wie?

Besten Dank
Thomas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wie würde das aussehen??
bin für jede lösung offen vorausgesetzt ich kann in einem fc einen text 'testtext' auf irgendwas zuweisen was ich später gezielt wo hinkopieren kann.
 
Hallo
ein string kann bis 255 byte lang sein, sps kann mit befehlen L bzw. T maximum 4 byte übertragen, man braucht sfc 20 um die daten zu kopieren.
 
hallo leute

mal danke für die antworten... aber weiterbringen tut mich das alles nicht. wie ich einen datenbereich von x Byte kopiere ist mir schon klar.

versucht doch mal den FC zu erstellen der sich so präsentiert wenn ich ihn aufrufe:

CALL FC1
Fehlertext := 'Das ist mein Testtext'
Ausgabe_DB := P#DB100.DBX0 BYTE 254

Das innenleben des FC1 stellt kein Problem dar!!!

Danke
Thomas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das wird nicht funktionieren. Zitat laut Hans Berger, "Automatisieren mit STEP 7 in AWL und SCL", Kapitel 19.3 Aktualparameter:
"Für die Versorgung der Bausteinparameter vom Datentyp DT oder String sind einzelne Variablen oder Komponenten von Feldern bzw. Strukturen zugelassen, die den gleichen Datentyp aufweisen. Eine Versorgung mit Konstanten ist bei AWL nicht möglich."


Tja, was du da machst ist halt das Einsetzen einer Konstante als Aktualparameter. Aber das sind die dauernden Ärgernisse mit dieser "halben" Programmiersprache STEP 7.
 
Ich habe mir da mal einen kleinen AWL-FC geschrieben, der holt aus einer Variablen den ANY-Pointer raus. Das ist doch in etwa das gesuchte:

FUNCTION "ANY_Generator" : VOID
TITLE =
VERSION : 0.0

VAR_INPUT
Variable : ANY ;
END_VAR
VAR_OUTPUT
Zeiger : ANY ;
END_VAR
VAR_TEMP
Zwischenlager : ANY ;
END_VAR
BEGIN
NETWORK
TITLE =ANY-Zeiger auf die direkt angelegte Variable generieren
L P##Variable;
LAR1 ;
L W [AR1,P#0.0];
T LW 0;
L W [AR1,P#2.0];
T LW 2;
L W [AR1,P#4.0];
T LW 4;
L D [AR1,P#6.0];
T LD 6;
L P##Zeiger;
LAR1 ;
L LW 0;
T W [AR1,P#0.0];
L LW 2;
T W [AR1,P#2.0];
L LW 4;
T W [AR1,P#4.0];
L LD 6;
T W [AR1,P#6.0];
BE ;
END_FUNCTION
 
Nein, sein Problem war, dass er dem FC-Input keinen Eingangstext, zB 'Warum zahlen Kunden immer 2 Tage zu spät' zuordnen kann.
Aber mit Deinem Pointer könnte er einen Text der ab dieser Adresse in einem DB liegt verarbeiten, da es aber schon 8 Monate her ist nehme ich an hat er es anders programmiert.... ;-)
 
Zurück
Oben