-> Hier kostenlos registrieren
Hallo,
ich arbeite das erste Mal mit VARIANT, hab aber durchaus Erfahrung mit dem Aufbau des Any-Zeigers
Ich will hier in einem FB aus SCL einen temporären VARIANT mittels MOVE_BLK_VARIANT durch einen Eingangs-Variant belegen. Jedoch bekomm ich beim Übersetzen den Fehler "Ungültiger Datentyp". Ich hab dann versucht, den Variant mittels P#M0.0 INT 1 vorzubelegen, jedoch kein Erfolg. Was verstehe ich hier nicht?
Gruß,
Neibeck
EDIT: Ich denke ich werde das Ganze wieder per Any-Zeiger lösen. Meine Intention war eigentlich, dass ich den Datentyp im Zeiger variabel gestalten könnte, jedoch scheint das nicht so ganz nach meiner Idee nach hinzuhaun. Was ich derzeit nicht ganz verstehe ist, wozu es überhaupt möglich ist (scheinbar) einen VARIANT als temp zu deklarieren. Laut Hans Berger - "Automatisieren mit SIMATIC S7-1500" ist ein solcher nämlich nur als Input, Output oder InOut zulässig.
ich arbeite das erste Mal mit VARIANT, hab aber durchaus Erfahrung mit dem Aufbau des Any-Zeigers
Ich will hier in einem FB aus SCL einen temporären VARIANT mittels MOVE_BLK_VARIANT durch einen Eingangs-Variant belegen. Jedoch bekomm ich beim Übersetzen den Fehler "Ungültiger Datentyp". Ich hab dann versucht, den Variant mittels P#M0.0 INT 1 vorzubelegen, jedoch kein Erfolg. Was verstehe ich hier nicht?
Code:
//Preset variant (Invalid value, will be overwritten below anyway
//#ActualDecadesVariant := P#M0.0 INT 1;
#tmp_result := MOVE_BLK_VARIANT(SRC := #Decades_Line1, COUNT := 1, SRC_INDEX := #Counter1, DEST_INDEX := 0, DEST => #ActualDecadesVariant);
IF #Actual_Line = 1 THEN
#tmp_result := MOVE_BLK_VARIANT(SRC := #Decades_Line2, COUNT := 1, SRC_INDEX := #Counter1, DEST_INDEX := 0, DEST => #ActualDecadesVariant);
ELSIF #Actual_Line = 2 THEN
#tmp_result := MOVE_BLK_VARIANT(SRC := #Decades_Line3, COUNT := 1, SRC_INDEX := #Counter1, DEST_INDEX := 0, DEST => #ActualDecadesVariant);
ELSIF #Actual_Line = 3 THEN
#tmp_result := MOVE_BLK_VARIANT(SRC := #Decades_Line4, COUNT := 1, SRC_INDEX := #Counter1, DEST_INDEX := 0, DEST => #ActualDecadesVariant);
END_IF;
Gruß,
Neibeck
EDIT: Ich denke ich werde das Ganze wieder per Any-Zeiger lösen. Meine Intention war eigentlich, dass ich den Datentyp im Zeiger variabel gestalten könnte, jedoch scheint das nicht so ganz nach meiner Idee nach hinzuhaun. Was ich derzeit nicht ganz verstehe ist, wozu es überhaupt möglich ist (scheinbar) einen VARIANT als temp zu deklarieren. Laut Hans Berger - "Automatisieren mit SIMATIC S7-1500" ist ein solcher nämlich nur als Input, Output oder InOut zulässig.
Zuletzt bearbeitet: