伺服驱动器485控制(8):电脑串口软件如何解析伺服电机编码器位置

上一节已经介绍编码器的读取方法,现在介绍下如何解析编码器位置

设置参数:P3-32=2   P3-36=1  

读编码器位置 0x1018连续读2个字即可

驱动器监控编码器实际位置,由于数码显示管是5位,高5位数据是P-AS 低5位数据是P-AS.如图

d8b39faa699d441daa5d23de79b9281e.png

驱动器上电后,监控当前编码器绝对位置:

f0d475f2c8f24e21bc6bfc2533d76193.png 647cafeb43b9488b8cb4b65798cf2e99.png 

7d404e6ea46d4896adc65070d0f010ac.png 5dfbe4aa229343ed8b64ab1e546fee2b.png

由驱动器监控界面得知:

P-AS. 进去后数据为1

P-AS 进去后数据为15834   

那么编码器当前数据为115834  那么读数据如下:

a21d3212b76d4c75af6f5efaee3ef59a.png得到数据是 C4 7A  00 01

我们通过驱动器面板监控得实际编码器位置是115834转成十六进制是1C47A

用4字节序表示就是00 01 C4  7A  也就是实际真实得数据是00 01 C4  7A 

我们可以称该32位数据为 1234序字节组合,那么串口软件读出来就是3412序,所以串口软件读出来编码器得数据要进行字节组数据进行变换

比如MCGS进行读32位数据时,我们要设置下:

ea167009de744a87b6da3b5f6e124b30.png

同样用串口屏进行读编码器位置也要进行变化,可以采用数组变换:

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)

假如编码器的数据是负数,那么读出来是什么?

手转电机轴,把电机编码器位置转到负数位置,驱动器面板监控数据如下:

3da471edf12344e49e135c833738857b.png 28f94c70a81044718d7b42f3ae5ec1a9.png

66b53f909728405fbdcb18c2f03480c6.png 147684ffce534a80b9277839a42de9ce.png

数据是-214406     使用电脑串口软件读:

6898472626f04777af0c4f112eaa331b.png

读到数据是BA 7A FF FC

将3412序变换成1234 序   那么实际数据是FF FC BA 7A=4294752890(十进制)

无符号32位数据大小是4294967296

有符号32位数据大小-2147483648到2147483647

电脑串口读出来数据是4294752890,而编码器的数据是有符号的,该数据超过了有符号32位,所以该数一定是负数

根据前面介绍负数计算方法,那么编码器的实际位置=4294752890-4294967296=-214406

等于驱动器面板监控的实际编码器位置。

编码器数据如何清零?下面两条指令来演示:

4e8df52cdf5c4c648108af14001c0c74.png

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值