恭喜,你发布的帖子
发布于 2016-10-29 22:25:12
1楼
S7300 400超麻烦。这是我的程序里对OpDwCmd的处理。要处理高低字节,要使用AT:
VAR_IN_OUT
OP_dwCmd {S7_m_c:='true'} : DWORD :=0; // control word wincc
END_VAR
VAR
OPdwCmdHMI : DWORD := 16#0; // Operator Commands in HMI format
OPabyCmdHMI AT OPdwCmdHMI : ARRAY [0..3] OF BYTE; // look at HMI command byte-wise
OPdwCmdPLC : DWORD := 16#0; // Operator Commands in PLC format
OPabyCmdPLC AT OPdwCmdPLC : ARRAY [0..3] OF BYTE; // look at plc command byte-wise
OPabCmdPLC AT OPdwCmdPLC : ARRAY [0..31] OF BOOL; // look at plc command bit-wise
END_VAR
Begin
OPdwCmdHMI := OP_dwCmd;
OPabyCmdPLC[0] := OPabyCmdHMI[3];
OPabyCmdPLC[1] := OPabyCmdHMI[2];
OPabyCmdPLC[2] := OPabyCmdHMI[1];
OPabyCmdPLC[3] := OPabyCmdHMI[0];
// MANUAL / AUTOMATIC Operation 使用实例
IF (QREMOTE AND LIOP AND MAN_L AND NOT AUT_L) OR OPabCmdPLC[16] THEN
QMAN_AUT := FALSE;
ELSIF (QREMOTE AND LIOP AND AUT_L AND NOT MAN_L) OR OPabCmdPLC[17] THEN
QMAN_AUT := TRUE;
END_IF;
请填写推广理由:
分享
只看
楼主