TIA Variable (Int aus Datenbaustein) einem FC als Pointer übergeben

PoWl

Level-1
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

ich würde mir gerne einen FC schreiben der die Daten aus einem DB manipuliert. Dabei möchte ich dem FC die Daten des DB gerne als Pointer übergeben, so dass ich innerhalb des FCs direkt auf die Daten des DBs zugreifen kann.

Zwar könnte ich dem FC den DB übergeben und separat die Adress-Nummer des zu bearbeitenden Datums, aber besonders elegant ist das nicht. Würde gerne den Symbolnamen verwenden.

Gibt's da in TIA ne Möglichkeit?

lg
 
Moin PoWl,

geht im Prinzip genauso wie im klassischen Step 7:

Du verwendest einfach die SFC20 (BLKMOV). Leider kann hier nicht eine als any deklarierte IN-Variable übergeben werden.
Daher zunächst in eine TEMP-Variable überführen...


Code:
	I_QUELLE	Any	 	T_QUELLE	Any				


	T_Pointer	Struct					
	S7	Byte	0.0				
	Datentyp	Byte	1.0				
	Wiederholfaktor	Int	2.0				
	DB_Nummer	Int	4.0				
	Speicherbereich	Byte	6.0				
	Adresse_2	Byte	7.0				
	Adresse_1	Byte	8.0				
	Adresse_0	Byte	9.0

Code:
//*** AR1-Register retten ***


      TAR1  #Tdw_AR1_rett

//*** Pointer  I_QUELLE auslesen ***


      L     P##I_QUELLE
      LAR1
      L B [ AR1 , P#0.0 ]        //10h für S7
      T     #T_Pointer.S7
      L B [ AR1 , P#1.0 ]        //Datentyp
      T     #T_Pointer.Datentyp
      L W [ AR1 , P#2.0 ]        //Wiederholfaktor
      T     #T_Pointer.Wiederholfaktor
      L W [ AR1 , P#4.0 ]        //DB-Nummmer
      T     #T_Pointer.DB_Nummer
      L B [ AR1 , P#6.0 ]        //Speicherbereich
      T     #T_Pointer.Speicherbereich
      L B [ AR1 , P#7.0 ]
      T     #T_Pointer.Adresse_2
      L B [ AR1 , P#8.0 ]
      T     #T_Pointer.Adresse_1
      L B [ AR1 , P#9.0 ]
      T     #T_Pointer.Adresse_0






//*** Pointer T_QUELLE beschreiben ***


      LAR1  P##T_QUELLE


      L     #T_Pointer.S7
      T B [ AR1 , P#0.0 ]        //10h für S7
      L     #T_Pointer.Datentyp
      T B [ AR1 , P#1.0 ]        //Datentyp
      L     #T_Pointer.Wiederholfaktor
      T W [ AR1 , P#2.0 ]        //Wiederholfaktor
      L     #T_Pointer.DB_Nummer
      T W [ AR1 , P#4.0 ]        //DB-Nummmer
      L     #T_Pointer.Speicherbereich
      T B [ AR1 , P#6.0 ]        //Speicherbereich
      L     #T_Pointer.Adresse_2
      T B [ AR1 , P#7.0 ]
      L     #T_Pointer.Adresse_1
      T B [ AR1 , P#8.0 ]
      L     #T_Pointer.Adresse_0
      T B [ AR1 , P#9.0 ]

Das gleiche für I_ZIEL und T_ZIEL. Dann können T_QUELLE und T_ZIEL direkt an der SFC20 verwendet werden.


Gruß

MFreiberger
 
Zurück
Oben