import net.wimpi.modbus.Modbus;
import net.wimpi.modbus.ModbusCoupler;
import net.wimpi.modbus.io.ModbusTCPListener;
import net.wimpi.modbus.procimg.*;
import net.wimpi.modbus.util.*;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class ModbusTCPServerExample {
public static void main(String[] args) {
try {
// 创建一个实现了ModbusSlave接口的SimpleProcessImage
SimpleProcessImage spi = new SimpleProcessImage();
spi.addDigitalOut(new SimpleDigitalOut(true));
spi.addDigitalIn(new SimpleDigitalIn(false));
spi.addInputRegister(new SimpleInputRegister(45));
spi.addRegister(new SimpleRegister(251));
ModbusCoupler.getReference().setProcessImage(spi);
ModbusCoupler.getReference().setMaster(false);
ModbusCoupler.getReference().setUnitID(1);
// 获取本地IP地址
InetAddress addr = InetAddress.getLocalHost();
String ipAddress = addr.getHostAddress();
// 创建ModbusTCPListener对象,监听指定端口
ModbusTCPListener listener = new ModbusTCPListener(1);
listener.setAddress(addr);
listener.open();
// 打印服务器信息
System.out.println("Modbus TCP server running at " + ipAddress + ":" + Modbus.DEFAULT_PORT);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Dieser Beispielcode erstellt einen einfachen Modbus-TCP - Server, der eine SimpleProcessImage verwendet, die die ModbusSlave-Schnittstelle implementiert, um Daten zu speichern. SimpleProcessImage besteht aus einem digitalen Ausgang, einem digitalen Eingang, einem Eingangsregister und einem Haltenregister. In der main-Funktion erstellen Sie zunächst ein SimpleProcessImage und setzen Sie es dann als Prozessimage für ModbusCoupler fest. Setzen Sie dann den Master / Slave-Modus des ModbusCouplers auf den Slave-Modus und legen Sie die Unit-ID auf 1. Als nächstes erhalten Sie die lokale IP-Adresse und verwenden Sie das Modbus TCPListener-Objekt, um den Standardport zu überwachen (502). Schließlich drucken Sie die Serverinformationen aus.
Antwort veröffentlichen