-> Hier kostenlos registrieren
Moin, moin.
Bin z.Z. am Umsteigen von Step7 (5.5) auf TIA und quäle mich mit den vielen BUGs und nicht vorhanden Dingen von "früher" - so wie viele andere ja leider auch:-x!!
grad eben hab ich mal wieder ein migrationsproblem gefunden:
so war es bisher möglich in SCL per Blockmove unterschiedliche datentypen aufeinander zu schieben, z.B. eine Struct auf ein Array (immer vorrausgesetzt das die längen und Datentypen selbstverständlich gleich sind)
hier ein Bsp:
VAR_IN_OUT
Akt : STRUCT
Auto : STRUCT
Out_1: BOOL;Out_2: BOOL;Out_3: BOOL;Out_4: BOOL;Out_5: Bool;Out_6: Bool;Out_7: Bool;Out_8: Bool;
Out_9: BOOL;Out_10: BOOL;Out_11: Bool;Out_12: Bool;Out_13: Bool;Out_14: Bool;Out_15: BOOL;Out_16: BOOL;
END_STRUCT ;
Hand : STRUCT
Out_1: BOOL;Out_2: BOOL;Out_3: BOOL;Out_4: BOOL;Out_5: Bool;Out_6: Bool;Out_7: Bool;Out_8: Bool;
Out_9: BOOL;Out_10: BOOL;Out_11: Bool;Out_12: Bool;Out_13: Bool;Out_14: Bool;Out_15: BOOL;Out_16: BOOL;
END_STRUCT ;
END_STRUCT ;
END_VAR
VAR_TEMP
n :INT; //Laufvariable
m :INT; //Laufvariable
Akt_tmp : STRUCT //Übertrage AktorikStatus auf tmp-Var für manipulation in FC
Auto :ARRAY [1..16] OF BOOL;
Hand :ARRAY [1..16] OF BOOL;
END_STRUCT ;
Temp_INT :INT;
Off_All :ARRAY [1..64] OF BOOL;
ret :BOOL; // FC Übergabewert
END_VAR
n := 64; WHILE n > 0 DO Off_All[n] := false; n := n-1; END_WHILE; //erzeuge 'Leerschablone' für Resetzwecke
// die folgende Anweisungen wurden nun ohne Probleme ausgeführt.
Temp_INT := BLKMOV(SRCBLK := Akt.Auto ,DSTBLK := Akt_tmp.Hand ); //übertrage gegenwärtigen Auto-Aktorikstatus auf Hand
Temp_INT := BLKMOV(SRCBLK := Off_All ,DSTBLK := Akt.Auto ); // setzt dann AutoAktorik auf 0 (XOR hand<->auto)
Temp_INT := BLKMOV(SRCBLK := Akt_tmp.Hand ,DSTBLK := Akt.Hand );
Temp_INT := BLKMOV(SRCBLK := Akt.Hand ,DSTBLK := Stat_Data.Akt_at_Start );
im TIA-Portal wird das so nicht mehr akzeptiert. (wahrscheinlich weil eine Struct eben kein Array ist, selbst wenn länge und Datentyp identisch sind) (AdR: nur die 'Götter' von Siemens wissen welchen Sinn ein Blockmove noch macht, wenn so einfache und logische Dinge nicht mehr möglich sind)
Hat vielleicht jemand eine alternative Idee?
Bin z.Z. am Umsteigen von Step7 (5.5) auf TIA und quäle mich mit den vielen BUGs und nicht vorhanden Dingen von "früher" - so wie viele andere ja leider auch:-x!!
grad eben hab ich mal wieder ein migrationsproblem gefunden:
so war es bisher möglich in SCL per Blockmove unterschiedliche datentypen aufeinander zu schieben, z.B. eine Struct auf ein Array (immer vorrausgesetzt das die längen und Datentypen selbstverständlich gleich sind)
hier ein Bsp:
VAR_IN_OUT
Akt : STRUCT
Auto : STRUCT
Out_1: BOOL;Out_2: BOOL;Out_3: BOOL;Out_4: BOOL;Out_5: Bool;Out_6: Bool;Out_7: Bool;Out_8: Bool;
Out_9: BOOL;Out_10: BOOL;Out_11: Bool;Out_12: Bool;Out_13: Bool;Out_14: Bool;Out_15: BOOL;Out_16: BOOL;
END_STRUCT ;
Hand : STRUCT
Out_1: BOOL;Out_2: BOOL;Out_3: BOOL;Out_4: BOOL;Out_5: Bool;Out_6: Bool;Out_7: Bool;Out_8: Bool;
Out_9: BOOL;Out_10: BOOL;Out_11: Bool;Out_12: Bool;Out_13: Bool;Out_14: Bool;Out_15: BOOL;Out_16: BOOL;
END_STRUCT ;
END_STRUCT ;
END_VAR
VAR_TEMP
n :INT; //Laufvariable
m :INT; //Laufvariable
Akt_tmp : STRUCT //Übertrage AktorikStatus auf tmp-Var für manipulation in FC
Auto :ARRAY [1..16] OF BOOL;
Hand :ARRAY [1..16] OF BOOL;
END_STRUCT ;
Temp_INT :INT;
Off_All :ARRAY [1..64] OF BOOL;
ret :BOOL; // FC Übergabewert
END_VAR
n := 64; WHILE n > 0 DO Off_All[n] := false; n := n-1; END_WHILE; //erzeuge 'Leerschablone' für Resetzwecke
// die folgende Anweisungen wurden nun ohne Probleme ausgeführt.
Temp_INT := BLKMOV(SRCBLK := Akt.Auto ,DSTBLK := Akt_tmp.Hand ); //übertrage gegenwärtigen Auto-Aktorikstatus auf Hand
Temp_INT := BLKMOV(SRCBLK := Off_All ,DSTBLK := Akt.Auto ); // setzt dann AutoAktorik auf 0 (XOR hand<->auto)
Temp_INT := BLKMOV(SRCBLK := Akt_tmp.Hand ,DSTBLK := Akt.Hand );
Temp_INT := BLKMOV(SRCBLK := Akt.Hand ,DSTBLK := Stat_Data.Akt_at_Start );
im TIA-Portal wird das so nicht mehr akzeptiert. (wahrscheinlich weil eine Struct eben kein Array ist, selbst wenn länge und Datentyp identisch sind) (AdR: nur die 'Götter' von Siemens wissen welchen Sinn ein Blockmove noch macht, wenn so einfache und logische Dinge nicht mehr möglich sind)
Hat vielleicht jemand eine alternative Idee?