由于在984LL中没有32位数的运算功能块直接使用,原来考虑使用的“EMTH”块只允许操作数为32位,而结果不能超出65536,所以无法直接应用。
在某项目中,编码器的数值变化范围为126000左右,超出65536,所以考虑分高低位来进行计算,即通过判断编码器实际值与初始值的高位是相等、不等分别进行计算,计算结果可以满足实际需要。
以左油缸行程为例说明计算过程,油缸全收回时,编码器数值为33232271(对应油缸行程为
If %300022=%4000324 then
Left = (%300021-%400323)/13.428=(%300021-%400323)*1000/13428;
If %300022>%4000324 then
Left = [(%300021-%400323)+(%300022-%4000324)*65536]/13.428
=(%300021-%400323)*1000/13428+(%300022-%4000324)*4880.55
≈(%300022-%4000324)*4880+%300021*1000/13428-%400323*1000/13428