职业特工0
级别: 探索解密
精华主题: 0
发帖数量: 62 个
工控威望: 101 点
下载积分: 1018 分
在线时间: 26(小时)
注册时间: 2021-12-08
最后登录: 2022-12-30
查看职业特工0的 主题 / 回贴
楼主  发表于: 2022-03-29 16:20
图片:
如题,那位大神知道问题出在哪里吗?
[ 此帖被职业特工0在2022-03-30 17:19重新编辑 ]
附件: 钢带2线原始程序.rar (162 K) 下载次数:31
网站提示: 请不要用迅雷下载附件,容易出错
zhangqi_1234
级别: 略有小成
精华主题: 0
发帖数量: 336 个
工控威望: 487 点
下载积分: 4001 分
在线时间: 246(小时)
注册时间: 2013-03-22
最后登录: 2024-05-13
查看zhangqi_1234的 主题 / 回贴
1楼  发表于: 2022-03-29 18:25
严格地说,不能这样使用C251,C251是外部高速计数器,采用中断方式工作。普通的内部计数器可以这样使用
zhangqi_1234
级别: 略有小成
精华主题: 0
发帖数量: 336 个
工控威望: 487 点
下载积分: 4001 分
在线时间: 246(小时)
注册时间: 2013-03-22
最后登录: 2024-05-13
查看zhangqi_1234的 主题 / 回贴
2楼  发表于: 2022-03-30 14:23
引用
引用第2楼职业特工0于2022-03-30 08:35发表的  :
一直这样使用的,好几年了,最近才出现这样问题,我觉得程序没问题,不知哪里出问题了?

既然你认为C251这么用没问题,那么你只把这段程序拿出来是几个意思?
zhangqi_1234
级别: 略有小成
精华主题: 0
发帖数量: 336 个
工控威望: 487 点
下载积分: 4001 分
在线时间: 246(小时)
注册时间: 2013-03-22
最后登录: 2024-05-13
查看zhangqi_1234的 主题 / 回贴
3楼  发表于: 2022-03-30 19:45
引用
引用第9楼职业特工0于2022-03-30 17:15发表的  :
整个程序

我看你发的程序,我个人认为,程序设计者使用C251意思是:用它来接收X0和X1端的脉冲。当X0的脉冲超前X1脉冲90度时,进行加计数,当X0脉冲滞后X1脉冲90度时,进行减计数。当计数值等于1时,表明X0端和X1端各自输入了一个脉冲,两个脉冲相差90度,X0端超前X1端90度。然后C251常开触头闭合,C251闭合的第一个扫描周期使D31自加1,然后C251复位,C251常开触头断开。C251重新从零开始计数,计数值等于1又开始上述动作,如此周而复始。然后把D31转存D33,D33转换成实数存D55,D55又经过一系列实数运算,得出的结果可能是某零件的长度。那么你说的C251不断累加计数,而没有复位的这种故障,很有可能是X0端输入的脉冲不是超前X1端脉冲90度,而是滞后X1端90度,结果导致C251减计数,计数结果为负数,始终不等于1,无法实现复位。这个属于PLC的X0端和X1端接编码器的故障 ,不是PLC的故障。还有一种可能,就是这样编程使用C251有个前提条件:X0和X1端输入的脉冲周期不能小于PLC的扫描周期,否则会导致C251不断累加计数而不会复位。另外,需要指出的是,你开始只拿部分程序出来,而不说明PLC的X0和X1端接的什么,别人也很难作出判断。
[ 此帖被zhangqi_1234在2022-03-30 20:02重新编辑 ]
本帖最近评分记录:
  • 下载积分:+1(guochunyi) 热心助人!
    zhangqi_1234
    级别: 略有小成
    精华主题: 0
    发帖数量: 336 个
    工控威望: 487 点
    下载积分: 4001 分
    在线时间: 246(小时)
    注册时间: 2013-03-22
    最后登录: 2024-05-13
    查看zhangqi_1234的 主题 / 回贴
    4楼  发表于: 2022-03-30 20:10
    补充一下,物体运动速度加快,编码器输出脉冲频率升高,脉冲周期缩短。这种编程使用C251的方法,一般只适用于低速运动物体。
    zhangqi_1234
    级别: 略有小成
    精华主题: 0
    发帖数量: 336 个
    工控威望: 487 点
    下载积分: 4001 分
    在线时间: 246(小时)
    注册时间: 2013-03-22
    最后登录: 2024-05-13
    查看zhangqi_1234的 主题 / 回贴
    5楼  发表于: 2022-03-31 11:51
    引用
    引用第12楼职业特工0于2022-03-31 11:03发表的  :

    出问题时候,一直正计数,您说的没错,可能是编码器故障,另外一种情况不会出现,因为出问题前一直这样使用没问,现在用比较指令复位C251,使用没问题,谢谢解答。

    你只是解决了C251不能复位的问题,但是没有彻底解决问题!首先要搞清楚用C251和编码器是干什么的,那是用来作测量的,如果编码器出了故障,或者运动物体运动速度加快,导致计数脉冲频率上升,很可能就会影响测量精度。当然,如果只是用来作粗略测量,不考虑误差,那么还是可以采用区间比较指令代替C251常开触头使C251复位。