Android应用程序错误:net.wimpi.modbus.ModbusSlaveException:错误代码= 2

时间:2013-09-03 11:37:23

标签: java android modbus

我正在使用带有android的JAMOD从modbus读取数据。 我有一个奴隶和一个大师班。(奴隶在netbeans中运行)

与android apk连接并获得标题中的错误消息。 你能帮我解释为什么或如何纠正我的应用程序吗?

import net.wimpi.modbus.Modbus;
    import net.wimpi.modbus.ModbusCoupler;
    import net.wimpi.modbus.net.ModbusTCPListener;
    import net.wimpi.modbus.procimg.*;


public class Modbus_slave_server {

    public static void main(String[] args) {

        ModbusTCPListener listener = null;
        SimpleProcessImage spi = new SimpleProcessImage();
        int port = Modbus.DEFAULT_PORT;

        if (Modbus.debug) {
            System.out.println("jModbus Modbus TCP Slave");
        }
        if (args != null && args.length >= 1) {
            port = Integer.parseInt(args[0]);
        }

        try {

            //2. Prepare a process image
            spi = new SimpleProcessImage();
            spi.addInputRegister(new SimpleInputRegister(635)); //érték beállítás

            //3. Set the image on the coupler
            ModbusCoupler.getReference().setProcessImage(spi);
            ModbusCoupler.getReference().setMaster(false);
            ModbusCoupler.getReference().setUnitID(1);



            //3. create a listener with 3 threads in pool
            if (Modbus.debug) {
                System.out.println("Listening...");
            }

            listener = new ModbusTCPListener(1);
            listener.setPort(port);
            listener.start();

        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }//main
}

1 个答案:

答案 0 :(得分:0)

我在C#(NModbus)中使用libbus for modbus而SlaveException意味着你的从设备返回错误:http://www.simplymodbus.ca/exceptions.htm 错误代码2表示:

  

查询中收到的数据地址不是允许的地址   奴隶。更具体地说,参考数字和的组合   转移长度无效。对于具有100个寄存器的控制器,a   请求偏移96和长度4将成功,请求与   offset 96和length 5将生成异常02。

http://www.kepware.com/Support_Center/SupportDocuments/KTAN90006_Modbus_Exception_Codes.pdf