绝对值编码器的位置计算:
实际位置 = 脉冲数 * 脉冲当量 - 零点的实际位置
或者
实际位置 = (脉冲数 - 零点位置的脉冲数) * 脉冲当量
但是我们在实际应用中, 绝对值编码器会有过零点的问题。就是编码器反馈的脉冲数 == 0 的时候,这个时候实际位置不是0真正的远点, 但是装置还需要继续往一个方向转,这个时候就会出现问题,计算不对。
我想请教的是,一般过零点或者过最大值的时候,编程应该怎么处理比较合适呢。 例如使用S7-300的SM338模块, 这个模块并没有通过输出设置编码的脉冲数为0的功能。
对于带DP功能的编码器,我们可以通过特殊的设置标定编码器的0脉冲数与实际的原点位置相配合。
问题1: 过最大值
就是例如 25bit的编码器,最大的计数脉冲为 2^25 = 33554431, 这个时候如果编码器再往原来方向计数脉冲值是不是就变成又从0开始计数了呢。
是不是就和下面的数值变化一样呢。
33554429 --> 33554430 --> 33554431 --> 0 --> 1 --> 2
问题2:过最小值
又或者,如果编码器往一个方向运动,到某个时候编码器的脉冲数变成了0 ,这个时候如果继续往一个方向转那么是不是编码器的脉冲数就变成了最大的脉冲数, 例如25bit的就又变成了
2 --》 1 ->0 -> 33554431 ---> 33554430 ---> 33554429
也就是说绝对值编码器的计数是不是和汽车的里程数计数一样呢?回重新计数。