技成培训网 技成学习APP 技成工具箱 技成企业服务

欢迎回到技成培训网

技成培训网

电工题库宝典

技成电工课堂

PLC练习题

技成PLC课堂

变频器故障查询

技成PLC学吧

伺服驱动故障查询

技成PLC网校

当前位置:技成首页 > 文章中心 > 技成百科 > 变量指针程序如何理解?

变量指针程序如何理解?

郑志武 发布于2012-11-29 18:41 168 0 标签:

a#glass_id_auto//手动=1
//a"横向打开到位"
//a"纵向打开到位1"
//a"纵向打开到位2"
//a"玻璃到位检测(顶柱)"
jcnt31
nop0

o"cnt_read_ok"//编码器数据稳定,可以开始检测
//o"t允许玻璃识别延时"
//o"m3工位自动涂胶准备好"
a"对工工位支撑柱玻璃在位"

jcnnt6

set
r#start_timer


l0
t#loop_cnt
nxt3:nop0

opndb[#productdbtmp]
l#loop_cnt
l34
*i
slw3
lar1
ldbd[ar1,p#20.0]
ldbw[ar1,p#28.0]
+d
t#cnt2_cmp_up

ldbd[ar1,p#20.0]
ldbw[ar1,p#28.0]
-d
t#cnt2_cmp_down

ldbd[ar1,p#24.0]
ldbw[ar1,p#28.0]
+d
t#cnt1_cmp_up

ldbd[ar1,p#24.0]
ldbw[ar1,p#28.0]
-d
t#cnt1_cmp_down

a(
l#cntv2_act
//l"tp_cntv2_save"
l#cnt2_cmp_down
>=d
)
a(
l#cntv2_act
//l"tp_cntv2_save"
l#cnt2_cmp_up
<=d
)
a(
l#cntv1_act
//l"tp_cntv1_save"
l#cnt1_cmp_down
>=d
)
a(
l#cntv1_act
//l"tp_cntv1_save"
l#cnt1_cmp_up
<=d
)
jcnnt30
l#loop_cnt
l1
+i
opndb[#assigndbtmp]
tdbb13
ldb32.dbb13
t#glass_type

junt3
nt30:l#loop_cnt
l1
+i
t#loop_cnt
l16
<i
jcnxt3

l0
t#glass_type
tdbb13
s"对中工位玻璃判别失败"

r"对中工位玻璃判别完成"

junt6
//由于和客户沟通后决定,不需要做在自动情况下的自动取消涂胶工艺,故取消下列功能
//opndb[#assigndbtmp]
//adbx8.2//取消涂胶?
//jcnn301//否
//l100//是,将取消涂胶编号100发给机器人,任务100为空操作,只
//t#glass_type
//tdbb13

//n301:nop0//强制涂胶,等待转换到涂胶手动选择
//l0
//t#glass_type
//tdbb13
//junt6

//nt31:nop0
nt31:nop0//手动选择玻璃型号
opndb[#assigndbtmp]
adbx23.4
a"对中横向对中汽缸原位"

a"对中纵向对中1汽缸原位"

a"对中纵向对中2汽缸原位"

a"对中吸盘升降汽缸1上升位"

a"对中吸盘升降汽缸2上升位"

a"对中工位真空吸附完成"

jcnnt3
ldbb12
t#glass_type
tdbb13
nt3:nop0
s"对中工位玻璃判别完成"

r"对中工位玻璃判别失败"

nt6:nop0

这个语句表从nxt3开始的程序不知道如何理解,什么左移三位,变量指针加ar1,麻烦高手指点下该语句表如何理解。不甚感激。

佳答案

这个语句表从nxt3开始的程序不知道如何理解,什么左移三位,变量指针加ar1,麻烦高手指点下该语句表如何理解?
1、首先了解双字指针:
当使用在区域内寄存器间接寻址中时,我们知道这时的ar中的内容只是指明数值单元,因此,区域内寄存器间接寻址时,寄存器中的内容等同于上帖中提及的存储器间接寻址中的双字指针,也就是:  
  其0-2bit,指定bit位,3-18bit指定byte字节。其第31bit固定为0。  
  ar:  
  0000000000000bbbbbbbbbbbbbbbb*  
  例如:当ar=d4(hex)=00000000000000000000000011010100(b),实际上就是等于26.4。 
2、为什么左移三位?
据上述双字指针的格式,将一个32位整形数据转为双字指针,即字节指针,将这个个32位整形数据左移3位(即乘8)就是字节指针。例如:
l#l100//装入32为整形数据100
sld3//左移3位(即乘8)
tld0//ld0得到p#100.0的指针常数。
3、楼主的程序:
nxt3:nop0
opndb[#productdbtmp]//打开用#productdbtmp表示数据块号之db。
l#loop_cnt
l34
*i
slw3//#loop_cntch乘以34的结果,再左移3位(即乘8),形成字节指针。
lar1//将上述运算结果装入指针ar1。
ldbd[ar1,p#20.0]//取指针ar1加上偏移量20.0为地址的那个dbd中的数据。
ldbw[ar1,p#28.0]//取指针ar1加上偏移量28.0为地址的那个dbw中的数据。
+d//将上述两者相加
t#cnt2_cmp_up//将上述两者相加存入#cnt2_cmp_up中。
4、建议楼主系统看看下述两个文档,就全明白了:
、见《关于s7-300和s7-400指针寻址的说明与例程(更新版)(2008.03.04)》下载:
https://www.ad.siemens.com.cn/download/searchresult.aspx?searchtext=f0215
、详见《step7编程之地址概念详解》连接:
https://www.plc365.com/jishu/57.html

若有收获,就点个赞吧!

文章来源于网络及文献如有侵权请联系站长
分享到:

微信扫一扫分享

阅读与本文标签相同的文章

相关推荐

最新文章 热门文章
最新课程 免费课程
PLC资料下载 电工电气资料下载
应用新秀
变频器故障代码查询APP
伺服故障代码查询APP
技成
手机APP
热门标签