Кто-нибудь знает о симуляторе Modbus, я застрял в преобразовании значений. Я использую wimpi modbus api для подключения к устройству и чтения и записи значений регистров. Итак, у меня есть симулятор Modbus, в котором я получил некоторые значения в каждом регистре на основе того, что один регистр имеет 2 байта. поэтому у меня есть 4 значения регистра, которые вместе дают мне одно значение измерения. Итак, используя wimpi readregister, я получаю целочисленные значения для определенного регистра. У меня есть измерение напряжения как (16492 35578 10726 22350). Эти 4 значения регистра составляют одно двойное значение. Итак, мне нужно преобразовать эти 4 целочисленных значения в одно двойное значение, для которого доступен метод modbusutil.registersToDouble(), который принимает значения массива байтов.
Если кто-нибудь поможет мне для преобразования будет заметным.
Прямо сейчас я пытаюсь так:
byte[] bytes = {(byte) 16492,(byte) 35578,(byte) 10726,(byte) 22350};
Double d = ModbusUtil.registersToDouble(bytes);
System.out.println(d);
это исключение
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at net.wimpi.modbus.util.ModbusUtil.registersToDouble(ModbusUtil.java:343)
Пожалуйста, дайте мне знать, если кто-нибудь делал преобразование целочисленных значений, полученных из регистров, в двойные.
Я получаю значения ответа, используя:
ReadInputRegistersResponse registersResponse = (ReadInputRegistersResponse) this.modbusTCPTransaction.getResponse();
registersResponse.getRegister(1).getValue();
registersResponse.getRegister(2).getValue();
registersResponse.getRegister(3).getValue();
registersResponse.getRegister(4).getValue();