JAVA与PLC通讯读取数据(两种方式)

第一种方式(s7connector)

S7官网:S7Connector — Documentation,有简单的读写操作参考。


1.创建maven工程引入依赖

<dependency>
    <groupId>com.github.s7connector</groupId>
    <artifactId>s7connector</artifactId>
    <version>2.0</version>
</dependency>

2. 通过代码连接PLC

//PLC地址
String ipAddress = "192.168.101.90";
//默认端口
int port = 102;
S7Connector s7Connector = S7ConnectorFactory
                .buildTCPConnector()
                .withHost(ipAddress)
                .withPort(port)
                .withTimeout(10000) //连接超时时间
                .withRack(0)
                .withSlot(1)
                .build();

3.解析获取的数据

//第一个参数:DaveArea.DB 表示读取PLC的地址区域为DB
//第二个参数:DB地址,若plc中是DB1082,则填1082
//第三个参数:数据长度
//第四个参数:偏移量
byte[] barcodeByte = s7Connector.read(DaveArea.DB, 1082, 16, 82);
Integer extract = integerConverter.extract(Integer.class, barcodeByte, 0, 0);
System.out.println(extract);

测试结果

 

 解析使用的工具类可使用S7jar包中自带的方法(方法还是很全面的)

 

需注意的是PLC中数据类型的所占长度和java有所出入!!!

第二种方式(HslCommunication) 

参考C语言读PLC而来:C# 读写西门子PLC数据,包含S7协议和Fetch/Write协议,s7支持200smart,300PLC,1200PLC,1500PLC - dathlin - 博客园


1.创建maven工程引入依赖

<dependency>
   <groupId>com.github.dathlin</groupId>
   <artifactId>HslCommunication</artifactId>
   <version>3.1.1</version>
</dependency>

2. 通过代码连接PLC

SiemensS7Net siemensTcpNet = new SiemensS7Net(SiemensPLCS.S1200, "192.168.101.90");

3.解析获取的数据 

//105代表读取的长度
OperateResultExOne<byte[]> read = siemensTcpNet.Read("DB1082.80", (short) 105);
if (read.IsSuccess) {
    byte[] content = read.Content;
    //2是下标
    short no = siemensTcpNet.getByteTransform().TransInt16(content, 2);
    System.out.println(no);
}

测试结果

总结

  • 两种方式皆可读取PLC中的数据,第一种方式只能单个读取,单个解析;第二种方式可读取整个DB块(字节数组)后解析其中数据(可根据实际情况去选择)
  • 两种方式皆需注意PLC要与本身电脑处于同一网段(可修改电脑网段或利用西门子博途软件修改PLC中设置的网段)  

 最后大家要是觉得有用的话,给博主点个赞!!!

  • 25
    点赞
  • 122
    收藏
    觉得还不错? 一键收藏
  • 57
    评论
评论 57
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值