cyh1986
级别: 家园常客
精华主题: 0
发帖数量: 368 个
工控威望: 740 点
下载积分: 727 分
在线时间: 300(小时)
注册时间: 2009-04-28
最后登录: 2024-11-26
查看cyh1986的 主题 / 回贴
楼主  发表于: 2017-12-21 18:32
以前使用三菱的时候,直接读取C251的数值,然后换成成距离。C251过零之后应该是继续减计数变成负值。现在手头有个工控板,防三菱的那种。他的C251是循环计数的,当C251超过65535的时,又继续从0开始计数。当减计数超过0的时候,在继续从65535开始减计数。编码器是增量编码器
请问大家这个在编程时怎么处理呢?
以前用过绝对值编码,感觉意思上差不多。之前用的是单圈的绝对值编码器,在做多圈用的时候,比较麻烦,后来是找的某一个点,判断是正过圈还是反过圈,然后设置一个圈数,最后来计算距离的。感觉好麻烦,不知道大家只怎么处理这种的。
1421448580
级别: 略有小成
精华主题: 0
发帖数量: 228 个
工控威望: 332 点
下载积分: 13348 分
在线时间: 867(小时)
注册时间: 2015-10-10
最后登录: 2024-11-29
查看1421448580的 主题 / 回贴
1楼  发表于: 2017-12-22 19:41
说一个思路:
高速记数转移到一个寄存器,然后除以一个数字(或者直接用原始数据),确保这个商值在PLC的每个运行周期间的变化不会太大,然后取相邻周期商值
变化 类似求导 如果结果是负值,位置直接减这个负值表示的距离 得到当前位置,如果结果是相当大的一个正数 那么 也是反转
直接把这个正数减一个寄存器里可能的最大值 得到一个负数,当前位置减这个负数表示的距离为当前位置。
类似有正转的的判断和处理