s7 200 java_java android 读写西门子PLC数据,包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC...

本文将使用一个gitHub开源的组件技术来读写西门子plc数据,使用的是基于以太网的TCP/IP实现,不需要额外的组件,读取操作只要放到后台线程就不会卡死线程,本组件支持超级方便的高性能读写操作

github地址:https://github.com/dathlin/HslCommunication 如果喜欢可以star或是fork,还可以打赏支持,打赏请认准源代码项目。

本项目目前支持C#语言和java语言,C#语言的功能比较齐全,java版本的库还在开发及完善中。

代码使用支持的例子可以参照C#版本的,两者几乎是一模一样的,支持的数据类型也是一致的。

技术支持QQ群:592132877  (组件的版本更新细节也将第一时间在群里发布)最后编辑日期:2018年4月3日 09:44:41

里面各种小伙伴,为您解答数据交互,编程技巧,如果对本界面提供的API有任何疑问,都可以加群咨询,如果有更好的建议,欢迎提出。

本文将展示如何配置网络参数及怎样使用代码来访问PLC数据,希望给有需要的人解决一些实际问题。主要对西门子PLC的M,Q,I,DB块的数据读写,亲测有效。

此处使用了网线直接的方式,如果PLC接进了局域网,就可以进行远程读写了^_^

此处使用到了2个命名空间:

import HslCommunication.Profinet.Siemens.SiemensPLCS;

import HslCommunication.Profinet.Siemens.SiemensS7Net;

import HslCommunication.Core.Types.OperateResultExOne;

随便聊聊(C#版本服务器)

当我们一个上位机需要读取100台西门子PLC设备(此处只是举个例子,凡是都是使用Modbus tcp的都是一样的)的时候,你采用服务器主动去请求100台设备的机制对性能来说是个极大的考验,如果开100个线程去轮询100台设备,那么性能损失将是非常大的,更不用说再增加设备,如果搭建Modbus tcp服务器,就可以完美的解决性能问题,因为连接的压力将会平均分摊给每一台PLC,服务器端只要新增一个时间戳就可以知道客户端有没有连接上。

我们在100台PLC里都增加发送Modbus tcp方法,将数据发送到服务器的ip和端口上去,服务器根据站号来区分设备。这样就可以搭建一个高性能总站。 本

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中可以使用HttpURLConnection类来实现Fetch请求的发送和响应数据的解析。以下是一个简单的示例: 发送Fetch请求: ```java URL url = new URL("http://example.com/data"); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("GET"); // 设置请求头 con.setRequestProperty("User-Agent", "Java Fetch"); con.setRequestProperty("Accept", "application/json"); // 发送请求 int responseCode = con.getResponseCode(); // 读取响应数据 BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = in.readLine()) != null) { response.append(inputLine); } in.close(); // 输出响应数据 System.out.println(response.toString()); ``` 解析响应数据: ```java // 解析JSON格式数据 JSONObject json = new JSONObject(response.toString()); String name = json.getString("name"); int age = json.getInt("age"); JSONArray hobbies = json.getJSONArray("hobbies"); // 解析XML格式数据 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); InputSource is = new InputSource(new StringReader(response.toString())); Document doc = builder.parse(is); String title = doc.getElementsByTagName("title").item(0).getTextContent(); ``` 需要注意的是,以上示例仅仅是一个简单的示例,实际上使用Fetch请求时还需要考虑很多其他因素,比如请求参数、请求头、响应数据格式等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值