Невозможно прочитать статус устройства / значение регистра с помощью j2mod - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь найти изменение статуса / значения регистра до и после операции записи. Но напечатанные значения одинаковы.

Мне нужно иметь возможность получить статус устройства в любой момент.

Любая помощь будет принята с благодарностью. Заранее спасибо

ModbusInput modbusInput = new ModbusInput(ipAddress, BARRIER_PORT);
ModBusService modBusService = new ModBusService(modbusInput);
//Get the barrier operation based on the request type UP | DN | FR | UF
BarrierOperation barrierOperation = modBusService.getBarrierOperation("UP");
//Send request to barrier to update the barrier operation
boolean isSuccess = modBusService.sendOperation(barrierOperation);
LOG.info("Barrier status - " + isSuccess);
public boolean sendOperation(BarrierOperation barrierOperation) {
    boolean result=false;
    try {
        modbusInput.setQuantity(barrierOperation.getCode());
        System.out.println("BS Status before - " + iModbusExecutor.readHoldingRegister(modbusInput));
        result = iModbusExecutor.writeSingleRegister(modbusInput);
        System.out.println("BS Status after - " + iModbusExecutor.readHoldingRegister(modbusInput));
        return result;
     } catch (Exception ex) {
         log.error("Exception at sendOperation : ", ex);
         return result;
}
public boolean readHoldingRegister(ModbusInput modbusInput) throws Exception {
 ModbusTCPMaster master = getInstance(modbusInput.getIpAddress(), modbusInput.getPort());
  try {
   master.connect();
   InputRegister[] inputRegisters = master.readMultipleRegisters(modbusInput.getRegisterAddress(), 8);
   for(int i=0;i<inputRegisters.length;i++) {
    log.info("readHolding - " + inputRegisters[i].getValue());
    log.info("readHolding - " + inputRegisters[i].toBytes().toString());
   }
   master.disconnect();
   return true;
  } catch (Exception e) {
  log.info("Cannot connect to slave - " + e.getMessage());
  return false;
 }
}
...