设为首页收藏本站积分获取及使用技巧附件上传须知[求助-西门子PLC300/400]如何在PLC中对编码器的脉冲数做采集归档记录?

追梦工控论坛|工控论坛-专业的Intouch论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

总共8197条微博

动态微博

查看: 6301|回复: 2

[求助-西门子PLC300/400]如何在PLC中对编码器的脉冲数做采集归档记录?

[复制链接]

升级  40.5%

该用户从未签到

发表于 2014-1-21 19:45:23 | 显示全部楼层 |阅读模式

上传分享工控资料得追梦点,下载积分获取办法点击进入 ☆追梦点充值入口
发帖回帖赚金币兑换下载积分。上传附件须知点击进入

×

马上注册,结交更多工控达人,分享经验,让你轻松玩转追梦工控论坛。

已有帐号?  点击登录   或者        

支付宝扫一扫领红包
编码器的单圈分辨率是13位.我想在DB1中,记录每一个脉冲数值,用来分析编码器的输出脉冲是否连续正常。不能用定时采集的方法做,避免丢失脉冲数。
用数值比较的方法始终没成功,不知道为何?</p>

图片说明: 1,程序截图
让我们联手拒绝网络伸手党,下载积分获取办法&附件上传须知 ☆追梦点充值入口





+1
6303°C
2
  • 乐趣数码论坛
  • 凯文
过: 他们

升级  43.5%

该用户从未签到

发表于 2014-1-21 20:54:28 | 显示全部楼层
在网络2中,你的DB1中的每个DBW都赋不同的初值了是吗。
如果是,则因为循环指令是在一个扫描周期内完成的,所以MW50的值在循环期间没有改变。假设第一次执行时MW50为1,进入循环指令后与DBW0(为1)比较相等,则与DBW2(为2)比较,这时不相等则跳出循环了。在第二次扫描周期时MW50为2,进入循环指令后与DBW0比较,不相等则直接跳出循环,此后的每次扫描相当于你的循环都不起作用了。
如果不是,初值都相同(默认为0),则第一次扫描就可能不执行循环,或进入循环后都赋相同的值,并不能起到你想要的结果。
OPN   DB1
      L     MW    50
     T     DBW [MD60]                  
      L    MD60
      L     P#2.0
      +I   
     T     MD60
      L    MD60
     L     80                          
      <I   
      JC    mo1
      L     0
     T     MD60
mo1:  NOP   0
程序没有测试,你可以试一试,只是个思路。在OB100中对MD60赋值0。保存到DB块地址最大为DBW10,若扩大则修改80这个数值。
                                                                                                                                                                                                                                                              
                                                        

升级  33.5%

该用户从未签到

发表于 2014-1-21 21:12:30 | 显示全部楼层
你的程序犯了个错误:你让你的赋值循环5000次都是在PLC的一个扫描周期中完成的,而在这5000次循环中,MW50是始终不变的,执行的结果就是你把MW50放到DB1.DBW0开始的5000个字里面去了,到下一个PLC扫描周期,你同样还是把新的MW50覆盖到DB1中去了。
如果只是连续采集数据,你就不用循环了,直接在OB1里或者放在中断(OB35)中去做,只要定义一个计数值例如MW100,每次扫描加1,同样AR1也增加,这样就可以把编码器值连续采集到DB块里面了。
                                                                                                                                                                                                                                                                                                                                   
                                                                                                                                                                                                            要判断一个编码器是否连续正常,要看编码器的参数。
例如一个单圈8192个脉冲的编码器,A相单圈输出8192个脉冲,Z相输出是1个;不能用定时,只能加一个Z相信号来判断。
                                                                                                                                                                                                                                                                                                                                   
                                                                                                                                                                                                            你的程序犯了个错误:你让你的赋值循环5000次都是在PLC的一个扫描周期中完成的,而在这5000次循环中,MW50是始终不变的,执行的结果就是你把MW50放到DB1.DBW0开始的5000个字里面去了,到下一个PLC扫描周期,你同样还是把新的MW50覆盖到DB1中去了。
OPN   DB1
      L     MW    50
     T     DBW [MD60]                  
      L    MD60
      L     P#2.0
      +I   
     T     MD60
      L    MD60
     L     80                          
      <I   
      JC    mo1
      L     0
     T     MD60
mo1:  NOP   0
程序没有测试,你可以试一试,只是个思路。在OB100中对MD60赋值0。保存到DB块地址最大为DBW10,若扩大则修改80这个数值。
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

请珍惜自己的ID,严禁发布垃圾水贴,诸如adsf......顶......纯表情......多次重复回帖刷积分......轻则删帖警告,重则封禁!★请分享资料、经验或者赞助论坛,贡献一份力量★

关闭

最新活动上一条 /1 下一条

小黑屋|手机版|追梦工控论坛|工控论坛-专业的Intouch论坛 ( 皖ICP备10012005号 )|网站地图

GMT+8, 2025-5-6 04:13 , Processed in 0.328735 second(s), 20 queries , Gzip On, APCu On.

Powered by Dreamyiyi

© 2009-2025 工控论坛

快速回复 返回顶部 返回列表