西门子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);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义