NC轴连续单向运动位置溢出分析
在NC轴连续单向运动中,位置是否会溢出是一个重要的问题。本文将从两个方面分析位置溢出的可能性:位置变量的类型和位置反馈的脉冲增量。
位置变量的类型
在TwinCAT NC中,位置是一个长实数LREAL,又称为浮点数。浮点数由三部分组成:符号位S、指数部分E(阶码)和尾数部分M。单精度浮点数占用4个字节32位,其中尾数用23位存储,加上小数点前有一位隐藏的1(IEEE754规定数表达法),2^(23+1) = 16777216。双精度浮点数占用8个字节64位,其中尾数用52位存储,2^(52+1) = 9007199254740992。因此,单精度浮点数的有效位数是7位,双精度浮点数的有效位数是16位。
在NC轴连续单向运动中,电机的位置变量是浮点数类型的。由于浮点数的数值越大分辨率越低,对LREAL来说,有效位16位,表示10^16,分辨率小于等于1。假如一个数值是10^17,则分辨率小于等于10,以此类推。因此,实数很难绝对等于,只能判断差值在某个范围内。
位置反馈的脉冲增量
在位置反馈的环节中,多长时间会溢出呢?答案是:超过5000年。我们知道无论是伺服驱动通过总线还是编码器模块送回TwinCAT的位置反馈,最多都只有4个字节32位。以最常见的单圈20位的反馈来看,电机转动一圈,位置反馈的增量是220,电机转动2^12即4096圈后,编码器送上来的原始值就会溢出。对于3000rpm的电机,就是满速运行一分多钟。
为了避免一分多钟就位置溢出,TwinCAT NC内部用了一个32位整数来记录原始反馈值的圈数,可以记录+-2^31圈。这就允许最大反馈增量+-2^63,允许电机单向以3000rpm的速度运行2932027396分钟而不会溢出,相当于5578年。
在NC轴连续单向运动中,位置溢出是不可能发生的。从位置变量的类型来看,浮点数的数值越大分辨率越低,对LREAL来说,有效位16位,表示10^16,分辨率小于等于1。从位置反馈的脉冲增量来看,电机转动的圈数可以记录+-2^31圈,允许电机单向以3000rpm的速度运行2932027396分钟而不会溢出,相当于5578年。