慧安-PLC4X学习

简介: 慧安-PLC4X学习

提出背景:为解决工业互联的IT系统与控制系统的通信问题

**提出原因:**业界的可编程逻辑控制器(PLC)大多采用大量不兼容的协议进行通信。这使得创建将这些系统与新世界(IT/互联网)集成的应用程序变得很困难。这,就是PLC4X项目的用武之地。

项目提出:

项目愿景:“我们的目标是创建一组库,允许统一访问任何类型的PLC”

总的来说,这个项目正在努力实现OPC-UA(大名鼎鼎的通用工控通信协议)试图解决的相同目标,但PLC4X试图通过走一条完全不同的路径来实现这一目标。

OPC-UA的痛点

使用OPC-UA时,每个设备都必须进行“改造”,工程师们通过修改程序让PLC们能够“说出”新协议(OPC-UA),并使用通用客户端与这些设备对话。整个改造无疑是复杂而艰巨的,并且由于存在风险,通常是客户难以接受的。

PLC4X的新方法

PLC4X项目致力于提供统一的API,这些API实现与大多数PLC通过其原生通信协议进行通信的驱动程序。这些驱动程序中的每一个都是根据规范或逆向工程协议实现的(合法的),以便完全获得Apache 2.0许可。

从我们的观点来看,PLC4X相对于OPC-UA的主要优点是:

无需修改现有硬件上的软件不增加硬件计算负担(在现有PLC上激活OPC-UA支持会大大增加PLC的负载)无需支付激活OPC-UA支持的许可证

PLC4X目前支持的原生通信协议:

图例

√ 实施并得到全面支持

? 仿真实现和支持

! 尚未实施

语言支持

PLC4X目前支持Java语言,并计划后期支持Scala和C++。

实现原理

OPM:PLC对象映射

对象PLC映射(OPM)受Java Persistence API(JPA)的启发。PLC4X项目的主要目标之一是使与PLC设备的通信变得容易,以便开发与PLC交互的应用程序。由于许多(甚至大多数)应用程序员都不是PLC通信和协议方面的专家,因此在没有太多领域知识的情况下,应尽可能轻松地与PLC进行交互。这正是多年前JPA初始化以允许通过简单地调用POJO(Plain old Java Object)上的方法来与数据库交互的原因。这正是OPM模块的用途,通过简单地与POJO交互来实现PLC通信。

以下简短代码片段显示了如何通过OPM从PLC中读取一个数值。

首先,实例化PlcEntityManager,然后为给定的PLC连接地址提取连接的实体。已连接意味着实体的所有方法调用都被交叉并由PLC调用替换。然后将这个值打印到控制台。

在第二个片段中,您可以看到Entity类的外观。@PlcField注释中给出了读取可变压力的地址。

MyEntity类的实现

总结

总体来说,PLC4X是一个新的工业互联网开源项目,在于解决工业控制设备与IT系统的协议通信问题。

这个项目最大的特点是:不是设计一种新的“通用协议”,而是引入一种适配器和编程模型。适配器解决协议互通问题,而编程模型这帮助程序员更方便的开发业务应用。另外值得一提的是,在解决通信协议开发方面,这个项目是符合Apache 2.0协议的。

当然,作为一个新兴的Apache孵化项目(目前的版本是0.3.0),PLC4X目前还不够成熟:一方面支持的PLC通信协议种类还不够丰富、测试也不够完毕;另一方面,功能总体还比较单薄、文档也比较简陋。

Apache-Plc4x-OPC UA-Tcp学习记录

opcua:tcp://127.0.0.1:4840,表示采用OPC UA协议,通过Tcp通道连接127.0.0.1地址的4840端口来发送和接收指令。

Code: 表示协议编码,对应opcua:tcp://127.0.0.1:4840中的opcua;

Name: 表示协议的名称标记,记录协议的名称;

Default Transport: 表示协议的默认通道为Tcp;

Supported Operations: 表示协议支持的操作。read:设备是否支持读取数据功能;write:是否支持写入数据功能;

这四项信息在源码中的OpcuaDriver类中配置,可以根据需求重写。

Discover:

控制OPC UA服务器发现端点的功能,每台服务器将通过“<地址>/发现”端点传播该功能。这里最常见的问题是大多数服务器没有正确配置,传播了错误的外部IP或URL地址。如果是这种情况,可以通过将其配置为false值来禁用发现。

The OPC UA drivers uses the connection string

opcua:{transport}😕/{ip-address}:{port}?{options}

An example of this connection string would be

opcua:tcp://127.0.0.1:12686?discovery=true&username=admin&password=password

地址格式

为了读取、写入和订阅数据,OPC UA驱动程序使用其所连接的OPC UA服务器的变量声明字符串。它包括层次结构树的命名空间(ns),后跟标识符字符串的类型、数字(i)、二进制(b)或guid(g)及其地址。数据类型是可选字段,如果未包含该字段,则会根据返回值的数据类型选择默认数据类型。对于未签名的数据类型,则需要将其包括在内。

支持的数据类型

BOOL (boolean)
SINT (int 8)
USINT (uint 8)
BYTE (uint 8)
INT (int 16)
UINT (uint 16)
WORD (uint 16)
DINT (int 32)
UDINT (uint 32)
DWORD (uint 32)
LINT (int 64)
ULINT (uint 64)
LWORD (uint 64)
REAL (float)
LREAL (double)
CHAR (char)
WCHAR (2 byte char)
STRING (utf-8)
WSTRING (utf-16)

String address:

ns=2;s=HelloWorld/ScalarTypes/Boolean

ns=2;s=HelloWorld/ScalarTypes/Boolean;BOOL

Numeric address

ns=1;i=1337

ns=1;i=1337;DINT

GUID address:

ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a

ns=2;g=09087e75-8e5e-499b-954f-f2a8624db28a;REAL


目录
相关文章
|
1月前
|
API 数据格式
嵌入式系统中的串口通信
嵌入式系统中的串口通信
52 0
|
1月前
|
物联网
STC51单片机-实验开发装置仿真-物联网应用系统设计
STC51单片机-实验开发装置仿真-物联网应用系统设计
75 0
|
1月前
|
存储 传感器 运维
基于PLC系统的设计_kaic
基于PLC系统的设计_kaic
|
1月前
|
编解码 监控 定位技术
LabVIEW使用单板RIO开发远程监控电源信号
LabVIEW使用单板RIO开发远程监控电源信号
23 3
|
1月前
|
传感器 数据采集 监控
LabVIEW开发油气井管道内无线通信微波系统
LabVIEW开发油气井管道内无线通信微波系统
18 0
|
1月前
|
网络协议 API Windows
LabVIEW以太网仪器控制
LabVIEW以太网仪器控制
23 0
|
1月前
|
存储 监控 网络协议
使用Modbus将LabVIEW连接到任何PLC
使用Modbus将LabVIEW连接到任何PLC
21 0
|
1月前
|
Java
java实现上位机与西门子PLC的通讯设置
这段代码创建了一个ZCAN_Transmit_Data数组,初始化并设置了数组中的第一个元素,包括写入数据、传输类型为1。然后,创建了一个ZCAN_CAN_FRAME对象,指定了CAN_ID和数据长度为8,并将十六进制字符串转换为字节数组填充到数据字段。将这个帧赋值给ZCAN_Transmit_Data对象。最后通过ZLGCAN接口发送数据,如果返回值不等于1,则抛出异常,否则返回发送结果。
|
传感器 数据采集 物联网
LabVIEW Arduino ZigBee无线气象站(项目篇—3)
目前,国内气象站对地面气象数据的采集大多采用传统的有线方式,其布线成本高,维护不方便,尤其对于山区等一些复杂的地形来说,这种缺点更为明显。传统的无线通信方式有很多,无线电、微波、红外线、蓝牙、射频等,在某些只需简单的无线连接的应用领域对数据速率的要求并不很高,设备的功耗是更需要考虑的问题。ZigBee网络是低功耗、低成本、高可靠性的无线传感器网络,其在环境检测等领域中有着广阔的应用前景。
基于西门子PLC s7-200 的自动立体车库设计自动化设计(控制器步进电机直流电机)
基于西门子PLC s7-200 的自动立体车库设计自动化设计(控制器步进电机直流电机)
152 0