Используя EasyModbusTCP Java, как я могу прочитать мои регистры как значения без знака? - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь easyModbus TCP , чтобы прочитать в регистрах хранения аналогового устройства ADAM 6017.Я использую пример клиентского кода , чтобы ознакомиться с этой библиотекой.Кажется, проблема в том, что мне нужно, чтобы значения регистров читались как беззнаковые, но это возвращает мне подписанные значения.У меня есть 3.3548 Вольт, подключенных к устройству, и шкала установлена ​​на 0-5 В, и он выдает -10781 от АЦП.Вот что я написал:

package modbus.logger;
import de.re.easymodbus.modbusclient.*;
import java.lang.*;
/**
 *
 * @author Michael Haire
 * SJVAPCD
 */
public class ModbusLogger {

        public static void main(String[] args)
    {
           float volt;
           int Input;
           int x = 1;
           float input;
        ModbusClient modbusClient = new ModbusClient("192.168.1.201",502);
        try
        {   while(x>0){
            modbusClient.Connect();
            System.out.print("Raw ADC Value: ");System.out.println(modbusClient.ReadHoldingRegisters(0, 1)[0]);
                        Input =  modbusClient.ReadHoldingRegisters(0, 1)[0];
                        System.out.print("Input: ");System.out.println(Input);
                        input = (float) Input;
                        volt = (float) ((input / 65536)*5.0);
                        System.out.print("Voltage: ");System.out.printf("%f%n" , volt);System.out.println("");

        }}
        catch (Exception e){        
        }   
        }
   }

Что я должен сделать, чтобы получить значение без знака?

1 Ответ

0 голосов
/ 21 мая 2019

Если я не ошибаюсь, руководство вашего устройства:

https://www.i -components.fi / pdf / 76-ADAM-6066-CE.pdf

говорит (стр. 268), что аналоговое значение вашего канала 0 должно быть в регистре 40001 .

Это означает, что вы должны использовать modbusClient.ReadHoldingRegisters вместо входных регистров.

Иногда полезно проверить ваше устройство, прежде чем вы начнете писать код.Для этого вы можете использовать modpoll (https://www.modbusdriver.com/modpoll.html) или что-то вроде QModMaster (https://sourceforge.net/projects/qmodmaster/).

...