PLC4X简介

2,258 阅读2分钟

简介

官方文档:plc4x.apache.org/

Github地址:github.com/apache/plc4…

issues:issues.apache.org/jira/projec…

我们看看官网介绍:

The universal protocol adapter for Industrial IoT

PLC4X is a set of libraries for communicating with industrial programmable logic controllers (PLCs) using a variety of protocols but with a shared API.

PLC4X自身定位为一个工业物联网的通用协议适配器,用于使用各种协议(例如Modbus、S7)但具有统一的API与工业PLC通信。

其优点:

  1. 现有车间设备不需要改造
  2. 开源免费(Apache 2.0开源协议)
  3. 统一API
  4. 多语言支持

支持协议

image.png

image.png

目前(最新版本0.10.0)PLC4X对Java支持比较多,对Java开发者做一些简单数采还是非常友好的。

一般概念

对使用者来说最重要的概念是:

  • Connections — protocols — transports — configuration
  • Addresses(PLC地址).

PLC4X API 将其抽象成了connection strings(连接字符串) 和 address strings(PLC地址字符串)

也就是说用户在使用的时候根据对应的设备去构造连接字符串和PLC地址后就可以通过PLC4X去与PLC通信(读写、订阅)。

具体请阅读官方资料:plc4x.apache.org/users/getti…

PLC4X提供的工具

image.png

其中比较实用的是 Connection Cache(连接池缓存,Connection Pool在0.11.0会被移除),Object PLC Mapping(类似JPA比较方便的去访问PLC地址数据),Scraper(当一些协议不支持订阅时,通过定时任务去轮询访问,免去自己写定时任务了)。

基本使用步骤

在根据官方文档plc4x.apache.org/users/getti… 的示例中是使用S7来演示的,但是对于新手来说很不友好:S7的连接方式,合法的PLC资源地址,PLC数据类型等比较模糊,但是官方说PLC4X是拥有统一API的,根据其步骤换成Modbus TCP也比较简单。

引入相关依赖

首先在使用中第一步是需要引入API模块的:

<dependency>
  <groupId>org.apache.plc4x</groupId>
  <artifactId>plc4j-api</artifactId>
  <version>0.10.0</version>
</dependency>

根据具体要对接的协议引入对应的驱动,比如我们用Mobus TCP:

<dependency>
  <groupId>org.apache.plc4x</groupId>
  <artifactId>plc4j-driver-modbus</artifactId>
  <version>0.10.0</version>
</dependency>

构建PlcConnection

在构建PlcConnection时需要了解connection strings的格式:

{driver code}:{transport code}://{transport config}?{options}

  • {driver code}:驱动码
  • {transport code}:传输协议码
  • {transport config}:传输配置
  • {options}:参数选项

例如:modbus-tcp://localhost:502或者modbus-tcp://localhost(当Modbus Salve端口是默认502时可省略)具体查阅:

plc4x.apache.org/users/getti… plc4x.apache.org/users/getti…

操作数据(读写/订阅)

操作数据需要去了解PLC合法的资源地址、数据类型。且读写数据有同步异步方式。

关闭连接

调用PlcConnection实例的close方法。(如果需要保持长连接则不需要)

下一篇将通过Modbus TCP与PLC4X进行demo示范。