我正在使用带有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
}
答案 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