西门子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);
    }
}
posted @   南翔技校毕业后  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
点击右上角即可分享
微信分享提示