Skip to content

ModbusNumberException when writing a "true" into a coil #97

@chk2902

Description

@chk2902

com.intelligt.modbus.jlibmodbus.exception.ModbusNumberException: Register value out of range : 65280 at com.intelligt.modbus.jlibmodbus.msg.request.WriteSingleRegisterRequest.setValue(WriteSingleRegisterRequest.java:103) at com.intelligt.modbus.jlibmodbus.msg.request.WriteSingleCoilRequest.setCoil(WriteSingleCoilRequest.java:71) at com.intelligt.modbus.jlibmodbus.msg.ModbusRequestBuilder.buildWriteSingleCoil(ModbusRequestBuilder.java:93) at com.intelligt.modbus.jlibmodbus.master.ModbusMaster.writeSingleCoil(ModbusMaster.java:285)

This happens as the "true" coil value is 0xff00 and is checked to be in the range of 0 to 0xffff, but the range check in jave seems a bit unintuitive

checkRange((short)value, 0, Modbus.MAX_REGISTER_VALUE)

which will convert the value to a short (-32768..32767) and thus it is a negative value, not being in the int range!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions