di
FX3U RS485 BD 编写Modbus功能码03通讯 第四位只能小于255,大于255就通讯不上,找不到问题。
下面提到保持寄存器地址40001,这个40001是什么?对应哪里?
03(0x03)读取保持寄存器值
功能说明
用于读取从设备保持寄存器的内容,不支持广播模式。消息帧中指定了需读取的保持寄存器的起始地址和数目。而保持寄存器中各地址的具体内容和意义,则由设备开发者自行规定。
查询报文
在查询报文中,必须指定保持寄存器的开始地址和需读取的寄存器数量。起始位置由2个字节构成,取值范围为0x00000xFFFF;寄存器数量由2个字节构成,取值范围为0x00010x007D(即十进制1~255),即最多可以连续读取125个寄存器。
有一点特别需要注意,Modbus的保持寄存器和输入寄存器是以字(Word)为基本单位的(1Word=2byte),所以,如果读取保持寄存器地址为40001开始的一个16位(bit)的无符号数,那么返回2个字节(byte),并可以从40002开始读取下一个16位的无符号数。如果需读取寄存器地址40001开始的是一个32位浮点数,则需要返回4个字节,即必须连续读取40001和40002的内容,而且下一个32位浮点数必须从40003开始读取。对于浮点数(或者32位的整数)而言,连续读取的两个寄存器之间存在字节序和大小端的问题,这一点在开发时必须引起注意。