当前位置: 主页 > PLC控制

关于STL语句表一段程序,请教

如下程序,功能是比较实际位置在设定位置与允许偏差间FC块BR位有信号,驱动条件。
下面程序,有三个定义输入ISTPos,SollPos,PosTol,分别是实际位置,设定位置,以及允许偏差。其余全部是临时变量
现在我对Net1和Net3比较不明白,这是做什么用
net1:TAR1#AR1_SAVE
TAR2#AR2_SAVE
LDBNO
T#DB_SAVE
LDINO
T#DI_SAVE
net2:L#IsTPos
L#SollPos
-D
A>=0
JCm001

NEGD

m001:NOP0
L#PosTol
<=D
SAVE
net3:LAR1#AR1_SAVE
LAR2#AR2_SAVE
OPNDB[#DB_SAVE]
OPNDI[#DI_SAVE]

问题补充:
我想知道如果没有Net1和Net3会怎么样,还有第一步传输AR1的值,这个值哪里来的,装载DBNO,这个DBNO又是哪里来的,不都是临时变量吗?

最佳答案

net1:TAR1#AR1_SAVE//将地址寄存器1的数据传给变量#AR1_SAVE
TAR2#AR2_SAVE//将地址寄存器2的数据传给变量#AR2_SAVE
LDBNO
T#DB_SAVE//将DBNO写入#DB_SAVE
LDINO
T#DI_SAVE//将DINO写入#DI_SAVE
net2:L#IstPos
L#SollPos
-D//#IstPos-#SollPos
A>=0
JCm001//如果#IstPos-#SollPos的值大于0就跳转到m001,如果#IstPos-#SollPos的值小于0程序继续执行
NEGD//对#IstPos-#SollPos的数值求补码,这个时候得到的其实就是小于0的负数的绝对值
m001:NOP0
L#PosTol//下装偏差值,
<=D
SAVE//#IstPos-#SollPos的绝对值小于#PosTol就置位BR位
net3:LAR1#AR1_SAVE//将原来保存的数据#AR1_SAVE还给地址寄存器1
LAR2#AR2_SAVE//将原来保存的数据#AR2_SAVE还给地址寄存器2
OPNDB[#DB_SAVE]//打开对应DB块的指令
OPNDI[#DI_SAVE]//打开对应DB块的指令
程序段1和程序段3中的关于地址寄存器的指令,主要是还是编程的规范,在有使用的地址寄存器的场合里,这样做的目的就是保证在调用该块后地址寄存器的值不变,特别是地址寄存器2,在调用fb块时对应的背景数据块的调用都是默认采用AR2的。
可能你的程序不全,除了比较指令外没有看到与DBNO和DINO相关的指令。
参考这个链接:http://www.ad.siemens.com.cn/serviCE/answer/solution.ASpx?Q_ID=140174&cid=1031

提问者对于答案的评价:
给力

  • 关注微信

猜你喜欢

微信公众号