简介
官方文档: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通信。
其优点:
- 现有车间设备不需要改造
- 开源免费(Apache 2.0开源协议)
- 统一API
- 多语言支持
支持协议
目前(最新版本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提供的工具
其中比较实用的是 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示范。