Variablen Namen in Variable schreiben

Vogei

Level-1
Beiträge
38
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!:p

Ist es möglich, dass ich eine Variable anlege und denn Namen der Variablen mit einer Funktion dann in einer Stringvariable schreibe?

Danke!
 
nein, den die "NAMEN" sind im späteren Kompilat schall und rauch nach meinem wissen, aber was ist die eigentliche aufgabenstellung? welchen kontroller nutzt du?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das geht evtl. mit Strukturvariablen, aber etwas umständlich:
Code:
FUNCTION_BLOCK FB_Handling
VAR_INPUT
    pStruct: POINTER TO ST_TypeGeneric;
END_VAR
VAR_OUTPUT
    BoolVal: BOOL;
    RealVal: REAL;
END_VAR
VAR
    pRealStruct: POINTER TO ST_TypeReal;
    pBoolStruct: POINTER TO ST_TypeBool;
END_VAR

pBoolStruct:= pRealStruct:= pStruct;
IF pStruct^.typename = 'BOOL' THEN
    BoolVal:= pBoolStruct^.BoolVal;
ELSIF pStruct^.typename = 'REAL' THEN
    RealVal:= pRealStruct^.RealVal;
END_IF
END_FUNCTION_BLOCK

TYPE ST_TypeGeneric :
STRUCT
    typename: STRING(31);
END_STRUCT
END_TYPE

TYPE ST_TypeBool :
STRUCT
    typename: STRING(31):= 'BOOL';
    BoolVal: BOOL;
END_STRUCT
END_TYPE

TYPE ST_TypeReal :
STRUCT
    typename: STRING(31):= 'REAL';
    RealVal: REAL;
END_STRUCT
END_TYPE
 
Danke Leute habs nun! Es gibt einen Funktionsbaustein von Beckhoff, der ist im XML Serverpaket enthalten, mit dem der Name der Variable ermittelt werden kann. => FB_SymNameByAddr:D

Danke trotzdem:ROFLMAO:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es gibt einen Funktionsbaustein von Beckhoff, der ist im XML Serverpaket enthalten, mit dem der Name der Variable ermittelt werden kann. => FB_SymNameByAddr
Ein undokumentierter FB, nicht schlecht!
Nur Vorsicht bei Memory Shared Variablen. Ich hab den Baustein direkt mal ausprobiert und festgestellt, dass dann der alphabetisch erste Variablenname ermittelt wird.
Gruß
witkatz
 
Variablen deren Adressen sich überschneiden, z.B. so was in der Art:
nStateDword AT%IB0: DWORD;
byStateByte AT%IB0: ARRAY [0..3] OF BYTE;
bStateError AT%IX0.0: BOOL;
bStateOP AT%IX0.1: BOOL;
 
Zuletzt bearbeitet:
Zurück
Oben