西门子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号
浙公网安备 33010602011771号