本帖最后由 VisualEleven 于 2011-01-12 12:00:02 编辑

解决方案 »

  1.   

    根据你的报文格式,输出你的报文。需要转换,通常Modbus字发送指令是低位在前高位在后。输入的时候同样的处理就行。
      

  2.   

    对于超过1000的数据我的程序:strSend[0]=m_Length[0]/256;//高八位
                             strSend[1]=m_Length[1]%256;//低八位
    不知道是哪错了
      

  3.   

    事实上对于Modbus报文来说,可能他的长度应该不会超过256个字的,也就是说前面那位可能一直就是0x00,后面的那个字长度才有意义。看你写的程序你这个m_Length应该是你要写入的长数据的长度吧,正确的写法是strSend[0] = m_Length / 256;//高8位
    strSend[1] = m_Length % 256; //低8位,或者干脆写为strSend[1] = 0x00,这个只是写西门子PLC的有用,别的不太确定,如果是10写多寄存器指令,因为后面还有个字节计数,所以此值肯定为0x00