发布于 2012-02-03 11:07:30
1楼
楼主:你的疑惑我帮你看了一下,可参考如下
1、MIN的数据类型是D,那么相当于S7里面的int数据类型(16位整数);
2、 :DO =DBSW
:LW =DWMI
:T FW 250
这段程序的意思是
OPN #DBSW
L P##DWMI
T MW 250
“LW=”这个指令是将后面的数据作为地址指针,P##DWMI是双字指针,装载到累加器中是个32位数据哦。
楼主:我转换了你S5的程序到S7,现在提供一下S5转S7的STL Sources源代码给你参考,也许对你更有帮助!
FUNCTION FC 0 : VOID
NAME: MIN_LOOP // MIN-LOOP
VAR_INPUT
MIN :int; // MIN
DBSW :block_db; // DBSW
DWMI :word; // DWMI
DWMA :word; // DWMA
END_VAR
VAR_TEMP
conv_akku1 :dword;
conv_akku2 :dword;
conv_stw :word;
END_VAR
BEGIN
NETWORK
OPN #DBSW ;
L #DWMI;
// // *** Error in Line 62 (FB 1): Invalid operator, can possibly be replaced with the
statement:\"L P##DWMI\" ***
T MW 250;
LOOP:L #MIN;
T conv_akku1;
L STW;
T conv_stw;
L MB 251;
SLW 4;
LAR1;
L conv_stw;
T STW;
L conv_akku1;
L DBW [ AR1, P#0.0 ];
<=I;
JC INC;
T conv_akku1;
L STW;
T conv_stw;
L MB 251;
SLW 4;
LAR1;
L conv_stw;
T STW;
L conv_akku1;
L DBW [ AR1, P#0.0 ];
L 0;
==I;
JC INC;
T conv_akku1;
TAK;
T conv_akku2;
L STW;
T conv_stw;
L MB 251;
SLW 4;
LAR1;
L conv_stw;
T STW;
L conv_akku2;
L conv_akku1;
T DBW [ AR1, P#0.0 ];
INC: L MW 250;
INC 1;
T MW 250;
L #DWMA;
// // *** Error in Line 111 (FB 1): Invalid operator, can possibly be replaced with the
statement:\"L P##DWMA\" ***
<=I;
JC LOOP;
END_FUNCTION
佛对我说:“你的痛苦来自于你的欲望,没有欲望也就没有痛苦!”