当前位置: 主页 > PLC控制

S7300 STL 语句含义

SET
SAVE
=L66.1
L#IN0
L0
>=I
JCNM001
L#IN0
ITD
DTR
T#TEMP20[1]
JUM002
M001:L0.000000e+000
T#TEMP20[1]
16个赋值程序,字数限制,省略了。
——————————————————————
M020:L1
T#TEMP22
M021:L#TEMP22
L8
<=I
JCNM022
L#TEMP22
ITD
LL#1
>=D
AL66.1
=L66.1
TAK
LL#8
<=D
AL66.1
=L66.1
TAK
LL#-1
+D
LL#32
*D
TAR2
+D
L#TEMP22
ITD
TAK
TLD68
TAK
LL#1
>=D
AL66.1
=L66.1
TAK
LL#8
<=D
AL66.1
=L66.1
TAK
LL#-1
+D
LL#32
*D
L#TEMP22
ITD
TAK
TLD72
TAK
LL#1
>=D
AL66.1
=L66.1
TAK
LL#8
<=D
AL66.1
=L66.1
TAK
LL#-1
+D
LL#32
*D
TAR2
+D
LAR1LD72
LLD[AR1,P#0.0]
TAK
LAR1
TAK
LDID[AR1,P#96.0]
*R
L2.764800e+004
/R
LAR1LD68
TDID[AR1,P#32.0]
L#TEMP22
ITD
LL#1
>=D
AL66.1
=L66.1
TAK
LL#8
<=D
AL66.1
=L66.1
TAK
LL#-1
+D
LL#32
*D
TAR2
+D
L#TEMP22
ITD
TAK
TLD68
TAK
LL#1
>=D
AL66.1
=L66.1
TAK
LL#8
<=D
AL66.1
=L66.1
TAK
LL#-1
+D
LL#32
*D
L#TEMP22
ITD
TAK
TLD72
TAK
LL#1
>=D
AL66.1
=L66.1
TAK
LL#8
<=D
AL66.1
=L66.1
TAK
LL#-1
+D
LL#32
*D
TAR2
+D
LAR1LD72
LLD[AR1,P#32.0]
TAK
LAR1
TAK
LDID[AR1,P#128.0]
*R
L2.764800e+004
/R
LAR1LD68
TDID[AR1,P#64.0]
L#TEMP22
L1
+I
T#TEMP22
JUM021
M022:CLR
AL66.1
SAVE
BE
以上是程序,程序是读取16个模拟量值,并将其转换为实际值,存入DB1001.DBD32至DBD92中,后半段程序只能看明白是在做地址偏移,但不是很明白,望高手解答。

最佳答案

太长了,写了一部分,可供参考

SET//将RLO置位
SAVE//将RLO存入BR位
=L66.1//操作成功,L66.1=1
L#IN0//将#INO装载入累加器1,ACC1=#IN0
L0//将累加器1的值存入累加器2,然后将0存入累加器1,执行后,ACC2=#IN0,ACC1=0
>=I//ACC2>=ACC1,则RL0=1;
JCNM001//若RLO=0,则跳转到M001;
L#IN0
ITD//将#IN0转为32位整数;
DTR//将#IN0转为32位浮点数;
T#TEMP20[1]//将#IN0存储在#TEMP20[1]中;
JUM002//无条件跳转到M002;
M001:L0.000000e+000//ACC1=0.0;
T#TEMP20[1]//#TEMP20[1]=ACC1;
16个赋值程序,字数限制,省略了。
——————————————————————
M020:L1//将1载入到累加器1;ACC1=1
T#TEMP22//将累加器1的值传送到#TEMP22;
M021:L#TEMP22//将#TEMP22载入到累加器1;ACC1=#TEMP22;
L8//将累加器1的值存入累加器2,然后将8载入到累加器1;ACC1=8;
<=I//ACC2<=ACC1,则RL0=1
JCNM022//若RLO=0,则跳转到M022
L#TEMP22
ITD//将#TEMP22转为32位整数;
LL#1//载入长整数1
>=D//ACC2>=ACC1,则RLO=1;
AL66.1
=L66.1//L66.1=1,则L66.1=1;
TAK//累加器1的值与累加器2的值互换;指令执行后,ACC1=#TEMP22,ACC2=1;
LL#8//将累加器1的值存入累加器2,然后将8载入到累加器1
<=D//ACC2<=ACC1,则RL0=1
AL66.1
=L66.1//L66.1=1,则L66.1=1;
TAK//累加器1的值与累加器2的值互换;指令执行后,ACC1=#TEMP22,ACC2=8
LL#-1//将累加器1的值存入累加器2,然后将-1载入到累加器1
+D//累加器1的值与累加器2的值相加,结果保存在累加器1中;
LL#32//将累加器1的值存入累加器2,然后将32载入到累加器1;ACC1=32
*D//累加器1的值与累加器2的值相乘,结果保存在累加器1中
TAR2//将地址寄存器AR2的内容传送到累加器1中,累加器1的值传送到累加器2中;
+D//累加器1的值与累加器2的值相加,结果保存在累加器1中;

提问者对于答案的评价:
回复晚了,谢谢了兄台!

  • 关注微信

猜你喜欢

微信公众号