-> Hier kostenlos registrieren
Hallo zusammen
Ich bin gerade dabei unsere Standard Bausteine auf TIA umzustellen. In einigen Bausteinen greife ich dabei auf abgelegte Parameterdaten in Datenbausteinen zurück die ich im jeweiligen FB dann in die Lokaldaten lade. Dem FB gebe ich dabei mit um welchen Parameter DB es sich handelt und welche Parametersatznummer. Die Länge des UDT sind immer 50 Byte je Parametersatz. Seither habe ich mir im FB jetzt die Adresse zusammengebastelt aus DB Nummer und und Parametersatznummer um mit einem Blockmove dann die entsprechenden Bereich zu kopieren.
Bsp. Code S7
//Ermittlung der Anfangsadresse des Parametersatzes
//->Die Startadresse des ersten Parametersatzes im Speicher DB
//->beginnt bei 50 und hat eine feste Länge von 50 Byte
L #II_Parametersatz
L 50
*I
ITD
T #Startadress_Parametersatz
//ANY-Pointer bilden Startsadresse des Parametersatzes
LAR1 P##Pionter_Start //Lade den ANYPointer in AR1
L BYTE#16#10 //Lade die SyntaxID und
T LB [ AR1 , P#0.0 ] //transferiere sie in den ANYPointer
L BYTE#16#02 //Lade Datentyp Byte und
T LB [ AR1 , P#1.0 ] //Transferiere ihn in den ANYPointer
L 50 //Lade Anzahl Bytes und
T LW [ AR1 , P#2.0 ] //transferiere sie in den ANYPointer
L #DB_Nr_Parametersatz //Lade DB Nummer
T LW [ AR1 , P#4.0 ]
L P#DBX0.0 //Nummer des 1. einzutragenden Bytes laden
L #Startadress_Parametersatz
SLD 3
+D
T LD [ AR1 , P#6.0 ]
//Neu ausgewählten Parametersatz
//in Arbeitsbereich laden
CALL BLKMOV
blk_type:=Variant
SRCBLK :=#Pionter_Start
RET_VAL :=#Return_Value
DSTBLK :=#SP_PS_Aktuell.PS_Aktuell
Ich habe nun versucht das über den neuen MOVE_BLK_VARIANT zu machen was mir auch geglückt ist nach Umstellung der Datenablage der UDTs Parameter DBs auf Arrays.
Ich scheitere aber jetzt daran, den DB aus dem gelesen werden soll, über meine IN Variable DB Nummer variabel zu machen: wie geht das?
Bsp.
CALL MOVE_BLK_VARIANT
SRC :="DB753 - Analog 01 Parameter".Paramtersatz[0]
COUNT :=1
SRC_INDEX :=#Nr_Parametersatz
DEST_INDEX :=0
Ret_Val :=#Return_Value
DEST :=#SP_PS_Aktuell[0]
"DB753 - Analog 01 Parameter" möchte ich variabel machen.
.Paramtersatz[0] ist die Startadresse die immer gleich ist.
Kann mir jemand helfen wie das geht oder ob ich generell so auf dem richtigen Weg bin den S7 Code auf TIA zu übertragen.
Ich weiß, viel Text, aber vielleicht besser als zu wenig
Gruß
Fritz4
Ich bin gerade dabei unsere Standard Bausteine auf TIA umzustellen. In einigen Bausteinen greife ich dabei auf abgelegte Parameterdaten in Datenbausteinen zurück die ich im jeweiligen FB dann in die Lokaldaten lade. Dem FB gebe ich dabei mit um welchen Parameter DB es sich handelt und welche Parametersatznummer. Die Länge des UDT sind immer 50 Byte je Parametersatz. Seither habe ich mir im FB jetzt die Adresse zusammengebastelt aus DB Nummer und und Parametersatznummer um mit einem Blockmove dann die entsprechenden Bereich zu kopieren.
Bsp. Code S7
//Ermittlung der Anfangsadresse des Parametersatzes
//->Die Startadresse des ersten Parametersatzes im Speicher DB
//->beginnt bei 50 und hat eine feste Länge von 50 Byte
L #II_Parametersatz
L 50
*I
ITD
T #Startadress_Parametersatz
//ANY-Pointer bilden Startsadresse des Parametersatzes
LAR1 P##Pionter_Start //Lade den ANYPointer in AR1
L BYTE#16#10 //Lade die SyntaxID und
T LB [ AR1 , P#0.0 ] //transferiere sie in den ANYPointer
L BYTE#16#02 //Lade Datentyp Byte und
T LB [ AR1 , P#1.0 ] //Transferiere ihn in den ANYPointer
L 50 //Lade Anzahl Bytes und
T LW [ AR1 , P#2.0 ] //transferiere sie in den ANYPointer
L #DB_Nr_Parametersatz //Lade DB Nummer
T LW [ AR1 , P#4.0 ]
L P#DBX0.0 //Nummer des 1. einzutragenden Bytes laden
L #Startadress_Parametersatz
SLD 3
+D
T LD [ AR1 , P#6.0 ]
//Neu ausgewählten Parametersatz
//in Arbeitsbereich laden
CALL BLKMOV
blk_type:=Variant
SRCBLK :=#Pionter_Start
RET_VAL :=#Return_Value
DSTBLK :=#SP_PS_Aktuell.PS_Aktuell
Ich habe nun versucht das über den neuen MOVE_BLK_VARIANT zu machen was mir auch geglückt ist nach Umstellung der Datenablage der UDTs Parameter DBs auf Arrays.
Ich scheitere aber jetzt daran, den DB aus dem gelesen werden soll, über meine IN Variable DB Nummer variabel zu machen: wie geht das?
Bsp.
CALL MOVE_BLK_VARIANT
SRC :="DB753 - Analog 01 Parameter".Paramtersatz[0]
COUNT :=1
SRC_INDEX :=#Nr_Parametersatz
DEST_INDEX :=0
Ret_Val :=#Return_Value
DEST :=#SP_PS_Aktuell[0]
"DB753 - Analog 01 Parameter" möchte ich variabel machen.
.Paramtersatz[0] ist die Startadresse die immer gleich ist.
Kann mir jemand helfen wie das geht oder ob ich generell so auf dem richtigen Weg bin den S7 Code auf TIA zu übertragen.
Ich weiß, viel Text, aber vielleicht besser als zu wenig
Gruß
Fritz4