Mit dem Step7 Manager und der S7-300/400 und AWL war das kein Problem.
Im TIA-Portal (V13) für die S7-1500 ist der BLOCK_DB als Datentyp nicht mehr zulässig. Als Ersatz wird DB_ANY empfohlen und die Konvertierungsfunktionen DB_ANY_TO_VARIANT oder DB_ANY_TO_UINT. Als SCL-Code sieht die Funktion nun so aus:
Sie lässt sich fehlerfrei übersetzen und laden. Nur leider liefert sie im Einsatz nichts anderes als 0 zurück.
In der Hilfe steht zu DB_ANY_TO_UINT so gut wie nichts. Dafür steht bei DB_ANY_TO_VARIANT etwas, was vermutlich auch auf DB_ANY_TO_UINT zutrifft :
...einen Datenbaustein, der ein Instanz-Datenbaustein eines Funktionsbausteins oder ein globaler Datenbaustein ist. Die Konvertierung der Ausgangsvariablen in den Datentyp VARIANT ist nicht möglich.
Im Klartext: Für die meisten Datenbausteine ist DB_ANY nicht zu gebrauchen. Weiß da jemand eine Lösung?
Es wird zurecht immer wieder empfohlen, rein symbolisch zu programmieren. Dummerweise wird aber immer wieder die Nummer gebraucht. Und mit dem Wegfall der Symboltabelle sind die Nummern nicht mal fest zugeordnet. Seit ich mit TIA arbeiten muss, beginne ich den alten Manager zu lieben.
Code:
FUNCTION "FCNumDB" : VOID
TITLE =DB-Nummer aus Symbol ermitteln
VERSION : 1.0
VAR_INPUT
Sym: BLOCK_DB;
END_VAR
VAR_IN_OUT
Num: INT;
END_VAR
BEGIN
NETWORK
TITLE =
L P#Sym;SRD 16; T #Num;
END_FUNCTION
Code:
FUNCTION "FCNumDB" : Void
TITLE = DB-Nummer aus Symbol ermitteln
VERSION : 0.1
VAR_INPUT
Sym : DB_ANY;
END_VAR
VAR_IN_OUT
Num : INT;
END_VAR
BEGIN
Num := DB_ANY_TO_UINT(#Sym);
END_FUNCTION
In der Hilfe steht zu DB_ANY_TO_UINT so gut wie nichts. Dafür steht bei DB_ANY_TO_VARIANT etwas, was vermutlich auch auf DB_ANY_TO_UINT zutrifft :
...einen Datenbaustein, der ein Instanz-Datenbaustein eines Funktionsbausteins oder ein globaler Datenbaustein ist. Die Konvertierung der Ausgangsvariablen in den Datentyp VARIANT ist nicht möglich.
Im Klartext: Für die meisten Datenbausteine ist DB_ANY nicht zu gebrauchen. Weiß da jemand eine Lösung?
Es wird zurecht immer wieder empfohlen, rein symbolisch zu programmieren. Dummerweise wird aber immer wieder die Nummer gebraucht. Und mit dem Wegfall der Symboltabelle sind die Nummern nicht mal fest zugeordnet. Seit ich mit TIA arbeiten muss, beginne ich den alten Manager zu lieben.