-> Hier kostenlos registrieren
Hallo zusammen!
Ich habe mal eine Frage: Ich habe einem Kunden einen S7-Klassik Baustein auf TIA 15.1 migriert.
Dort waren eine ganze Menge AWL Aufrufe mit drin, welche z.B. via blockmove Daten verschoben haben.
In TIA habe ich den FB auf optimiert umgestellt. Und siehe da auf einmal hab ich ne ganze Menge Fehler.
Eigentlich habe ich bis auf zwei alle beseitigt.
Beides sind blockmoves. Und beide haben den gleichen Fehler:
Es wird beim Ersten Aufruf ein Datenbereich der viel zu groß ist in einen kleineren geschoben
und beim nächsten ein kleiner Datenbereich in einen größeren.
TIA meldet nun, dass die Längen unterschiedlich sind. Soweit ist das logisch.
Wie kann man das aber geschickt lösen. Es sind beides keine UDTs, selbst wenn sie es wären müsste das große ja aus zwei Teilen bestehen, damit man nur den ersten Teil kopieren kann
Gibt es eine elegante Lösung um innerhalb eines Fbs die Daten vernünftig zu schieben!? Meine Alternativlösung ist alle Variablen einzeln zuzuweisen, was nicht ganz so toll ist.
So sieht das im Original aus:
#IN/#OUT => sagen wir mal 100 Worte lang unterschiedlicher Datentypen
#Visu_Status.Von_Roboter/#Visu_Status.An_Roboter => sagen wir mal 60 Worte unterschiedlicher Datentypen
Die ersten 60 Worte verschiedener Dtaentypen sind aber identisch!
Freue mich, wenn es was eleganteres gibt, als alles von Hand zu Fuß zu machen.
Ich habe mal eine Frage: Ich habe einem Kunden einen S7-Klassik Baustein auf TIA 15.1 migriert.
Dort waren eine ganze Menge AWL Aufrufe mit drin, welche z.B. via blockmove Daten verschoben haben.
In TIA habe ich den FB auf optimiert umgestellt. Und siehe da auf einmal hab ich ne ganze Menge Fehler.
Eigentlich habe ich bis auf zwei alle beseitigt.
Beides sind blockmoves. Und beide haben den gleichen Fehler:
Es wird beim Ersten Aufruf ein Datenbereich der viel zu groß ist in einen kleineren geschoben
und beim nächsten ein kleiner Datenbereich in einen größeren.
TIA meldet nun, dass die Längen unterschiedlich sind. Soweit ist das logisch.
Wie kann man das aber geschickt lösen. Es sind beides keine UDTs, selbst wenn sie es wären müsste das große ja aus zwei Teilen bestehen, damit man nur den ersten Teil kopieren kann
Gibt es eine elegante Lösung um innerhalb eines Fbs die Daten vernünftig zu schieben!? Meine Alternativlösung ist alle Variablen einzeln zuzuweisen, was nicht ganz so toll ist.
So sieht das im Original aus:
#IN/#OUT => sagen wir mal 100 Worte lang unterschiedlicher Datentypen
#Visu_Status.Von_Roboter/#Visu_Status.An_Roboter => sagen wir mal 60 Worte unterschiedlicher Datentypen
Die ersten 60 Worte verschiedener Dtaentypen sind aber identisch!
Code:
// Kopieren Ausgansbereich des Roboter // in Bereich der Visu
CALL BLKMOV
blk_type:=Any
SRCBLK :=#IN
RET_VAL :=#Temp_RET_VAL_IN
DSTBLK :=#Visu_Status.Von_Roboter
// Kopiere Eingangsbereich des Roboters
// in den Bereich der Visu
CALL BLKMOV
blk_type:=Any
SRCBLK :=#OUT
RET_VAL :=#Temp_RET_VAL_OUT
DSTBLK :=#Visu_Status.An_Roboter
Freue mich, wenn es was eleganteres gibt, als alles von Hand zu Fuß zu machen.