我用用VB6的mscomm与托利多仪表通讯 
托利多仪表的内容地址是:40001、40002、40003......40026 (可以单字节读取)我想去2号仪表上内容地址为40003的内容 (都为16进制)根据MODBUS-RTU协议 如下:
从站地址 :02H
功能码:03H
起始地址高位:??
起始地址低位:??
寄存器数高位:??
寄存器数低位:??
校验和CRC:请问 起始地址高位、起始地址低位、寄存器数高位、寄存器数低位分别应该是多少啊?

解决方案 »

  1.   

    从站地址+功能码+地址高字节+地址低字节+寄存器数量高字节+寄存器数量低字节+CRCPS:
      4XXXX的地址功能码好象是4吧(我记得Modbus地址表示是 功能码+高字节+低字节)
      

  2.   

    起始地址高低位为地址的十六进制的高字节和低字节。40003的十六进制是&H9C43,那么高位为&H9C,低位为&H43.寄存器应该直接写1就行了吧,高位为&H00,低位为&H01.你试试看吧!
      

  3.   

    是不是40000就是个基地址,是不是直接对&H0001读取就是&H40001啊!你试试看,不然地址也放不到两个字节中啊!
      

  4.   

    举个例子吧
    40003
    从站地址 :02H
    功能码:04H   --40003中的"4"
    起始地址高位:00H --4"00"03 中的"00"
    起始地址低位:03H -- 400"03"中的"03"
    寄存器数量高位:00H --读一个数据,所以是0001 取高位"00"
    寄存器数量低位:01H --低位"01"
    CRC高位:XXH
    CRC低位:XXH
      

  5.   

    错了有点小问题...CRC是低字节在前的...
    40003
    从站地址 :02H
    功能码:04H --40003中的"4"
    起始地址高位:00H --40003 中的00
    起始地址低位:03H -- 40003中的03
    寄存器数量高位:00H --读一个数据,所以是0001 取高位"00"
    寄存器数量低位:01H --0001低位"01"
    CRC低字节:XXH
    CRC高字节:XXH
      

  6.   

    从站地址 :02H
    功能码:03H
    起始地址高位:00
    起始地址低位:03
    寄存器数高位:00
    寄存器数低位:01
    校验和CRC:
      

  7.   

    CRC低字节:XXH
    CRC高字节:XXH到底是地位在前还是高位在前啊
      

  8.   

    modbus里没有单字节,只有位(bit)和字(word),一次读到的是一个字两个字节
      

  9.   

    1.起始地址应该是0004,寄存器个数控制读取的字节数,你可以自己调试,就知道了
    2.40049.1应该指的是40049地址的第1位吧,直接写&H01(二进制000000010,不知道是置1清零还是置0清零,如果是置零就试试11111101,也有可能该字节其他位有别的含义和作用,那就要看具体协议定义了),试试看,这个得看具体协议了。