请求帮忙看一段西门子语句表程序
FUNCTION "cu_infeed" : VOID
TITLE =cu_infeed
VERSION : 0.1
VAR_INPUT
with_infeed : BOOL ;
cu_udt_re : POINTER ;
cu_udt_se : POINTER ;
cu_pew_adr : INT ;
inf_udt_re : POINTER ;
inf_udt_se : POINTER ;
inf_pew_adr : INT ;
quitt : BOOL ;
sec : BOOL ;
infeed_on : BOOL ;
CU_DI_DO_8 : BOOL ;
END_VAR
VAR_TEMP
pew_paw_pointer : ANY ;
TEMP1 : BYTE ;
TEMP_1 : BYTE ;
TEMP2 : BYTE ;
TEMP0 : BYTE ;
DB_NR : INT ;
alarm_bit : BOOL ;
warn_bit : BOOL ;
alarm_byte : BYTE ;
warn_byte : BYTE ;
Temp_addr : WORD ;
Ret1 : INT ;
END_VAR
BEGIN
NETWORK
TITLE =
L P##cu_udt_re;
LAR1 ;
L W [AR1,P#0.0];
T #DB_NR;
L W#16#1002;
T LW 0;
L 8;
T LW 2;
L #DB_NR;
T LW 4;
L D [AR1,P#2.0];
T LD 6;
L #cu_pew_adr;
T #Temp_addr;
CALL "DPRD_DAT" (
LADDR := #Temp_addr,
RET_VAL := #Ret1,
RECORD := #pew_paw_pointer);
L P##cu_udt_se;
LAR1 ;
L W [AR1,P#0.0];
T #DB_NR;
L W#16#1002;
T LW 0;
L 8;
T LW 2;
L #DB_NR;
T LW 4;
L D [AR1,P#2.0];
T LD 6;
CALL "DPWR_DAT" (
LADDR := #Temp_addr,
RECORD := #pew_paw_pointer,
RET_VAL := #Ret1);
NETWORK
TITLE =
L P##cu_udt_re;
LAR1 ;
L W [AR1,P#0.0];
T #DB_NR;
OPN DB [#DB_NR];
L D [AR1,P#2.0];
LAR1 ;
A DBX [AR1,P#1.3];
= #alarm_bit;
A DBX [AR1,P#1.7];
= #warn_bit;
L DBB [AR1,P#8.0];
T #alarm_byte;
L DBB [AR1,P#9.0];
T #warn_byte;
AN #alarm_bit;
JC a012;
AN #sec;
JC a011;
L #alarm_byte;
L 3;
>I ;
JC a011;
L #alarm_byte;
L 1;
+I ;
T #alarm_byte;
JU a011;
a012: NOP 0;
L 0;
T #alarm_byte;
a011: NOP 0;
AN #warn_bit;
JC a022;
AN #sec;
JC a021;
L #warn_byte;
L 3;
>I ;
JC a021;
L #warn_byte;
L 1;
+I ;
T #warn_byte;
JU a021;
a022: NOP 0;
L 0;
T #warn_byte;
a021: NOP 0;
A #alarm_bit;
A( ;
L #alarm_byte;
L 3;
>=I ;
) ;
= #alarm_bit;
A #warn_bit;
A( ;
L #warn_byte;
L 3;
>=I ;
) ;
= #warn_bit;
L P##cu_udt_re;
LAR1 ;
L W [AR1,P#0.0];
T #DB_NR;
OPN DB [#DB_NR];
L D [AR1,P#2.0];
LAR1 ;
L #alarm_byte;
T DBB [AR1,P#8.0];
L #warn_byte;
T DBB [AR1,P#9.0];
L P##cu_udt_se;
LAR1 ;
L W [AR1,P#0.0];
T #DB_NR;
OPN DB [#DB_NR];
L D [AR1,P#2.0];
LAR1 ;
A #alarm_bit;
= DBX [AR1,P#9.0];
A #warn_bit;
= DBX [AR1,P#9.1];
A "RLO-high";
= DBX [AR1,P#0.2];
A #CU_DI_DO_8;
= DBX [AR1,P#1.2];
A #quitt;
= DBX [AR1,P#1.7];
A #CU_DI_DO_8;
= DBX [AR1,P#3.0];
NETWORK
TITLE =infeed
AN #with_infeed;
JC end1;
L P##inf_udt_re;
LAR1 ;
L W [AR1,P#0.0];
T #DB_NR;
L W#16#1002;
T LW 0;
L 8;
T LW 2;
L #DB_NR;
T LW 4;
L D [AR1,P#2.0];
T LD 6;
L #inf_pew_adr;
T #Temp_addr;
CALL "DPRD_DAT" (
LADDR := #Temp_addr,
RET_VAL := #Ret1,
RECORD := #pew_paw_pointer);
L P##inf_udt_se;
LAR1 ;
L W [AR1,P#0.0];
T #DB_NR;
L W#16#1002;
T LW 0;
L 8;
T LW 2;
L #DB_NR;
T LW 4;
L D [AR1,P#2.0];
T LD 6;
CALL "DPWR_DAT" (
LADDR := #Temp_addr,
RECORD := #pew_paw_pointer,
RET_VAL := #Ret1);
end1: NOP 0;
NETWORK
TITLE =infeed
AN #with_infeed;
JC nend;
L P##inf_udt_re;
LAR1 ;
L W [AR1,P#0.0];
T #DB_NR;
OPN DB [#DB_NR];
L D [AR1,P#2.0];
LAR1 ;
A DBX [AR1,P#1.3];
= #alarm_bit;
A DBX [AR1,P#1.7];
= #warn_bit;
L DBB [AR1,P#8.0];
T #alarm_byte;
L DBB [AR1,P#9.0];
T #warn_byte;
AN #alarm_bit;
JC a112;
AN #sec;
JC a111;
L #alarm_byte;
L 3;
>I ;
JC a111;
L #alarm_byte;
L 1;
+I ;
T #alarm_byte;
JU a111;
a112: NOP 0;
L 0;
T #alarm_byte;
a111: NOP 0;
AN #warn_bit;
JC a122;
AN #sec;
JC a121;
L #warn_byte;
L 3;
>I ;
JC a121;
L #warn_byte;
L 1;
+I ;
T #warn_byte;
JU a121;
a122: NOP 0;
L 0;
T #warn_byte;
a121: NOP 0;
A #alarm_bit;
A( ;
L #alarm_byte;
L 3;
>=I ;
) ;
= #alarm_bit;
A #warn_bit;
A( ;
L #warn_byte;
L 3;
>=I ;
) ;
= #warn_bit;
L P##inf_udt_re;
LAR1 ;
L W [AR1,P#0.0];
T #DB_NR;
OPN DB [#DB_NR];
L D [AR1,P#2.0];
LAR1 ;
L #alarm_byte;
T DBB [AR1,P#8.0];
L #warn_byte;
T DBB [AR1,P#9.0];
L P##inf_udt_se;
LAR1 ;
L W [AR1,P#0.0];
T #DB_NR;
OPN DB [#DB_NR];
L D [AR1,P#2.0];
LAR1 ;
A #alarm_bit;
= DBX [AR1,P#9.0];
A #warn_bit;
= DBX [AR1,P#9.1];
A "RLO-high";
= DBX [AR1,P#0.2];
= DBX [AR1,P#1.1];
A #infeed_on;
= DBX [AR1,P#1.0];
A #quitt;
= DBX [AR1,P#1.7];
nend: NOP 0;
END_FUNCTION
楼主最近还看过
这是西门子一段语句表程序,是一个功能函数,被另外一个块赋值调用,这个块里面基本都是形式参数,这段程序里面调用的是系统功能SFC14和SFC15,里面有一段不是太明白,画横线部分\
L P##cu_udt_re;
LAR1 ;
L W [AR1,P#0.0];
T #DB_NR;
L W#16#1002;
T LW 0;
L 8;
T LW 2;
L #DB_NR;
T LW 4;
L D [AR1,P#2.0];
T LD 6;
L #cu_pew_adr;
T #Temp_addr;
CALL "DPRD_DAT" (
LADDR := #Temp_addr,
RET_VAL := #Ret1,
RECORD := #pew_paw_pointer);