西门子PLC数据采集
模拟工具
西门子PLC采用的S7协议,该协议有服务端和客户端机的概念,工具模拟的是服务端。

依赖
<dependency>
<groupId>com.github.s7connector</groupId>
<artifactId>s7connector</artifactId>
<version>2.1</version>
</dependency>
获取连接
private static final Map<String, S7Connector> S7Servers = Maps.newHashMap();
@Override
public S7Connector getCon(String ipAndPort) {
if (!S7Servers.containsKey(ipAndPort)) {
S7Connector s7Connector = S7ConnectorFactory.buildTCPConnector()
.withHost(ipAndPort)
.withRack(0)
.withSlot(2)
.build();
S7Servers.put(ipAndPort, s7Connector);
return s7Connector;
}
return S7Servers.get(ipAndPort);
}
读取值
@Override
public Object getData(String ipAndPort) {
S7Connector s7Connector = getCon(ipAndPort);
byte[] bytes = s7Connector.read(DaveArea.DB, 2, 2, 0);
return new String(bytes);
}

设值
@Override
public void setData(String ipAndPort, Object value) {
/**
* 测试,先设置一个数字:8
*/
S7Connector s7Connector = getCon(ipAndPort);
if (ObjectUtil.isNotNull(value) && value instanceof String) {
byte[] bytes = value.toString().getBytes(StandardCharsets.UTF_8);
s7Connector.write(DaveArea.DB, 2, 0, bytes);
}
}

浙公网安备 33010602011771号