上一节已经介绍编码器的读取方法,现在介绍下如何解析编码器位置
设置参数:P3-32=2 P3-36=1
读编码器位置 0x1018连续读2个字即可
驱动器监控编码器实际位置,由于数码显示管是5位,高5位数据是P-AS 低5位数据是P-AS.如图
驱动器上电后,监控当前编码器绝对位置:
由驱动器监控界面得知:
P-AS. 进去后数据为1
P-AS 进去后数据为15834
那么编码器当前数据为115834 那么读数据如下:
得到数据是 C4 7A 00 01
我们通过驱动器面板监控得实际编码器位置是115834转成十六进制是1C47A
用4字节序表示就是00 01 C4 7A 也就是实际真实得数据是00 01 C4 7A
我们可以称该32位数据为 1234序字节组合,那么串口软件读出来就是3412序,所以串口软件读出来编码器得数据要进行字节组数据进行变换
比如MCGS进行读32位数据时,我们要设置下:
同样用串口屏进行读编码器位置也要进行变化,可以采用数组变换:
modbusRead(0x01,0x03,0x1018,2,20);
a[1]=modbus.rxBuf[3];
a[2]=modbus.rxBuf[4];
a[3]=modbus.rxBuf[1];
a[4]=modbus.rxBuf[2];
numf21.valf=bytesToInt(a,1,1)
假如编码器的数据是负数,那么读出来是什么?
手转电机轴,把电机编码器位置转到负数位置,驱动器面板监控数据如下:
数据是-214406 使用电脑串口软件读:
读到数据是BA 7A FF FC
将3412序变换成1234 序 那么实际数据是FF FC BA 7A=4294752890(十进制)
无符号32位数据大小是4294967296
有符号32位数据大小-2147483648到2147483647
电脑串口读出来数据是4294752890,而编码器的数据是有符号的,该数据超过了有符号32位,所以该数一定是负数
根据前面介绍负数计算方法,那么编码器的实际位置=4294752890-4294967296=-214406
等于驱动器面板监控的实际编码器位置。
编码器数据如何清零?下面两条指令来演示: