-> Hier kostenlos registrieren
Hallo zusammen, ich habe folgendes Prob:
ich muss in einem FB von einer DP auslesen. Der FB ist in SCL geschrieben:
Ich möchte nun den Aufruf des SFC14 auch in SCL nachbilden, der in AWL funktioniert!
INPUTS_DRIVES = globaler DB
PD_IN_INDRADRIVE_ADR_5.EK_IN_DCP = Struktur im DB (14 Byte)
Aufruf in SCL geht nicht:
Die Fehlermeldung im SCL Compiler ist "ungültiger Datentyp"
Aufruf in AWL geht:
Kann mir bitte jemand sagen wie ich meinen ANY Pointer im SCL füttern muss damit der Compiler mir ne Freude macht.
Ich habe natürlich schon im Forum gesucht aber noch nicht wirklich die Lösung für mich gefunden.
Ich habe auch folgendes ausprobiert - hat auch nicht funktioniert:
https://www.automation.siemens.com/...how.aspx?PageIndex=1&PostID=27096&Language=de
siehe dort unter:
vielen Dank für eure Hilfe
chris
ich muss in einem FB von einer DP auslesen. Der FB ist in SCL geschrieben:
Ich möchte nun den Aufruf des SFC14 auch in SCL nachbilden, der in AWL funktioniert!
INPUTS_DRIVES = globaler DB
PD_IN_INDRADRIVE_ADR_5.EK_IN_DCP = Struktur im DB (14 Byte)
Aufruf in SCL geht nicht:
Code:
_test := DPWR_DAT (LADDR := W#16#10C, RECORD := INPUTS_DRIVES.PD_IN_INDRADRIVE_ADR_5.EK_IN_DCP );
Aufruf in AWL geht:
Code:
call DPRD_DAT( // call SFC14 (read input peripherie adresses)
LADDR := W#16#10C, // source peripherie adress 268(10) = 10C(16)
RET_VAL:= MW120,
RECORD := INPUTS_DRIVES.PD_IN_INDRADRIVE_ADR_5.EK_IN_DCP // 7 words realtime channel
);
Ich habe natürlich schon im Forum gesucht aber noch nicht wirklich die Lösung für mich gefunden.
Ich habe auch folgendes ausprobiert - hat auch nicht funktioniert:
https://www.automation.siemens.com/...how.aspx?PageIndex=1&PostID=27096&Language=de
siehe dort unter:
Code:
DATA_BLOCK SendeDB und EmpfDB
struct
data_1_32 : array [1..32] of byte
data_33_64 : array [1..32] of byte
end_struct
begin
end_data_block
Die 32-Byte-Einheiten sind nötig, damit SCL den Any-Pointer für den SFC-Aufruf richtig bildet.
Absender:
rv1 := DPWR_DAT (LADDR := W#16#C8, RECORD := SendeDB.data_1_32);
rv2 := DPWR_DAT (LADDR := W#16#E8, RECORD := SendeDB.data_33_64);
Empfänger
rv1 := DPRD_DAT (LADDR := W#16#3E8, RECORD = EmpfDB.data_1_32);
rv2 := DPRD_DAT (LADDR := W#16#408, RECORD = EmpfDB.data_33_64);
chris