会员专享服务

免费注册会员在线购买立享9折

(▸查看会员在线订购教程)


  SSL GlobalSign Site Seal

List of Q&A 2.0 > Q(ts_net001). 485通信读取的数值如何转换为十进制数值?
Q&A
Q

485通信中,使用03H读取检测位置、检测速度等其它寄存器,
如何将读取到的十六进制数值转换为十进制数值?


A

需要同时读取寄存器的上、下位,共8位16进制数。
●若读取到的8位16进制数的第一位数值≤7,则为正数,请直接转换为十进制。
●若读取到的8位16进制数的第一位数值>7,则为负数,先将8位16进制数转换为32位二进制数值,进行取反、加一,然后将得到得32位二进制数值转换位10进制数值,最后加上负号。


例:驱动器AZD-KD(站号设定为1),读取检测位置。
通过AZ功能篇说明书中可以确认到检测位置的寄存器地址为上位00CC、下位00CD。


使用03H功能码同时读取上位和下位,即写入指令为01 03 00CC 0002 0434。

反映为 01 03 04 XXXX XXXX YYYY,其中XXXX XXXX为读取到数值,即当前检测位置,YYYY为校验码。
●若XXXX XXXX为0003 FC12,第一位数值≤7,为正数。
直接转换为10进制数261138,即检测位置为261138step。
●若XXXX XXXX为FFFC 0322,第一位数值>7,为负数。
 ◇先将FFFC 0322转化为32位二进制数值:1111 1111 1111 1100 0000 0011 0010 0010。
 ◇取反:0000 0000 0000 0011 1111 1100 1101 1101。
 ◇加一:0000 0000 0000 0011 1111 1100 1101 1110。
 
转化为10进制数:261342,加上-号,即检测位置为-261342step。