OPC UA:工业领域的“HTML”
OPC UA是工业自动化领域的一项重要的通信协议。它的特点是包括了信息模型构建方法。能够建立工业领域各种事物的信息模型。在工业自动化行业,OPCUA 类似互联网行业的HTTP协议和“HTML”语言。能够准确,可靠地描述复杂系统中各个元素,并且实现系统组件之间的互联互通。
HTML语言能够描述复杂的网页,使用浏览器能够浏览所有基于HTML 的网站,在HTML 语言的发展早期,它只能描述静态网页。美国网景公司(Netscape)率先在其浏览器中导入了JavaScript网页脚本语言。使网页具备了强大的交互能力和信息处理能力。现代HTML5就包括了HTML、CSS和JavaScript三个要素。
传统的工业领域中,不同厂商的控制设备与上位机的通信协议都不尽相同,几乎每个设备都带有一个组态软件。为了提高系统的兼容性,提高工程效率,工业自动化领域同样需要类似互联网行业 HTML /JavaScript 的统一描述语言和HTTP 协议。OPC UA就是为这个目标而实现的。
OPCUA 同样具备强大的建模能力,但是与HTML类似,它构建的模型是静态,被动的。需要通过其它程序才能够处理这些模型。它同样需要一种模型处理的脚本语言来增强OPCUA 动态组件的建模。IEC61499 是这种“脚本语言”的最佳选择。
IEC61499 是分布式控制系统的系统级建模语言。IEC61499 的核心是基于事件的功能块。可以使用OP CUA 封装事件功能块模型,OPCUA 应用软件中嵌入IEC61499 运行时,动态执行功能块网络。两种重要的工业自动化标准相结合,涌现成强大的系统功能。在工业自动化系统中,OPCUA 和IEC61499 的完美结合,能够发挥互联网行业HTML/Javascript组合同样的威力。
基于上述理念,我们开发了一个实验系统-UAPlus。
UAPlus是开发的开放自动控制系统的软件平台,实现OPC UA与IEC61499 融合。结合时间敏感网络,工业现场连接技术的创新型软件平台,UAPlus成为开放自动化系统的技术平台,UAPlus 的结构示意图。
开放性与灵活性
开放性(Openess )
OPC UA是工业自动化领域的一项重要的通信协议。它是一种基于信息模型的通信方式。当一个信息系统中都采用了OPC UA通信协议之后,组件之间能够以模型中的对象,变量,方法和事件来相互交换信息,它将是工业4,0 技术的重要组成部分。
目前,越来越多的设备和软件都支持OPCUA 通信协议和信息模型,它们包括PLC,DCS 设备和MES,EPR,数字孪生,仿真,HMI和云服务都支持OPCUA 协议。自动化系统采用统一的接口,提升了自动化系统的开放性。支持OPCUA 协议的设备能够快捷地互联互通和互操作。
灵活性(adapability)
OPCUA应用软件是基于商业版本或者开源版本的OPCUA SDK 库(例如 open62541)实现的。OPCUA 是一个相对比较复杂的标准,即便有了SDK ,软件开发者仍然需要了解大量OPCUA 规范的技术细节。这是影响OPCUA 推广应用的主要障碍之一。
UA Plus的设计理念是通过OPC UA 与IEC61499 相结合,将OPCUA 模型操作和服务使用IEC61499 功能块实现。从而使OPCUA 应用系统的开发摆脱了OPC UA 的技术细节。而重点关注应用本身。IEC61499 中的功能块,复合功能块,适配器等元素更加适合面向对象程序设计技术的实现,而面向对象的思想是模块化设计的基础。带来了自动化系统开发的灵活性。
OPC UA 带来了开放性,而IEC61499 带来了灵活性。两者的结合降低了开发工业自动化软件的复杂性。
技术特点
- 利用OPCUA 构建信息模型
- Sqlite3 历史数据库
- 模型自动载入
- 利用IEC61499 功能块构建动态执行组件
- OPCUA 封装IEC61499 模型
- 支持动态功能块,复合功能块,功能块网络,适配器动态载入
- OPCUA Pub/Sub 实现设备间通信
- 支持tsn实时网络
- 模型与开发环境IDE分离
- 支持设备端控制协议OPCUA Client,modbusTCP,Profinet,EtherCAT,IO-link协议
- 在各种智能设备,云平台,边缘设备上运行。
系统架构
下图是以UAPlus构建的分布式系统。设备之间使用OPCUA 协议Client/Server和Publish/Subscribe 互联,控制程序使用IEC61499 功能块和功能块网络编排,通过UAPlus内置的运行时执行。
OPC UA 协议与信息模型
OPC统一架构(OPC UA)是由OPC基金会创建的从传感器到云应用程序的数据交换标准,旨在满足几个领先行业不断增长的计算机化需求。OPC代表开放平台通信,创建了一个OPC服务器,它允许将来自多个来源的信息转换为客户端,提供可以有效使用的访问数据。这种在多个平台和设备之间轻松传输信息的能力被称为OPC UA标准,它被广泛认为是通信的工具资源。此外,OPC UA标准可确保数据访问的集成,一致,可靠且可安全访问。
UAPlus以OPC UA 为中心构建, OPC统一架构(OPC UA)是一种用于工业自动化的机器对机器通信协议,由OPC基金会开发。实现工业的互操作性,设备和机器制造商以面向对象的方式构建产品的信息模型。大量工业软件和云平台提供了OPCUA 接口,具备访问OPCUA 服务器的能力。OPC UA简化了工业连接,
为了实现数据交换,OPCUA 针对不同的应用场景提供了两种通信机制:
- 客户端/服务器模型(Client/Server)
- 发布者-订阅者模型(Pub/Sub)
如果不同的设备制造商能够达成一致,所有相同的设备都具备相同的数据和服务·。那么·这些设备·将会很容易集成到系统中。为此,OPC 基金会和众多的合作伙伴制定了标准化的行业配套规范(companion specifications)。诸如BACnet ,CNC,PackML,PLCopen,Robotics等诸多行业的规范。
工业4.0 的诸多标准都是在OPC UA 基础之上构建的。这也是OAP 以OPCUA 为主构建的主要原因,这意味着UAPlus平台上,能够进一步构建符合各种行业标准的接口,实现各种设备和软件的互联互通和即插即用。
IEC61499 功能块
IEC 61499定义了在分布式工业过程测量和控制系统 (IPMCS) 中使用功能块的架构。该架构包括可实现的参考模型、文本语法和图形表示。IEC61499 的核心概念是基于事件的功能块。基于这种功能块能够实现基于组件的系统设计方法。每个系统应用都能够使用功能块网络呈现。而且功能块网络中的功能块能够部署到分布式系统中的各个设备中。
功能块
功能块封装了功能,它的外部接口包括了事件接口和数据接口,功能块的内部包括了状态机和算法,当外部输入事件与数据一起到达时,会触发内部状态机的变化,并且调用相应的内部算法。算法执行完成后,将输出输出数据,并触发输出事件。
功能块网络
一个分布式控制系统由多个功能块连接成为的网络构成。功能块网络也被称为IEC61499 的应用(Application)。
部署
OPCUA 封装IEC61499 模型
OPC UA是工业自动化领域的一项重要的通信协议。它是一种基于信息模型构建的。当一个信息系统中都采用了OPC UA通信协议之后,组件之间能够以模型中的对象,变量,方法和事件来相互交换信息。它将是工业4,0 技术的重要组成部分。
IEC61499是分布式控制系统建模标准,它的核心是基于事件的功能块。是被人们看好的一项开放自动化领域的技术标准。
这两项技术们都是一种建模的方法,OPC UA 侧重于信息交换的信息模型,关注设备之间的互联互通,数据交换。而IEC61499 侧重于分布式控制测量系统执行组件的建模。关注程序的执行。所以也有人将IEC61499称为分布式自动化的可执行建模语言。它们之间的互补性非常大。另一方面,它们都是基于面向对象程序设计的思想,它们的方法,概念和术语具有相似性。
两种侧重点不同的建模技术相结合,将会涌现出更加强大的系统功能。IEC61499 事件功能块网络实现了OPCUA 的分布式系统模型控制流建模。OPC UA 的状态机和方法调用只能实现高层的控制流,而方法的算法仍然需要借助于其它程序设计语言来编写,例如IEC61131-3语言。OPCUA与IEC61499 相结合,能够直接使用IEC61499 功能块网络来描述算法。
OPCUA 与IEC61499 相结合的方法是使用OPCUA 信息模型来封装IEC61499 的功能块,功能块连接和功能块网络模型。原先的IEC61499 运行时通过调用OPCUA 的信息模型来存储和访问功能块数据,并且解释执行功能块网络的执行。通过OPCUA 的Pub/Sub和Client、Server 协议实现分布式设备中功能块之间的事件和数据通信。
IEC61499 模型融入OPCUA 带来的好处在于:
- 增强了OPCUA 的执行组件的建模能力。在OPC UA 平台上,能够构建IEC61499 的功能块。并且在内部嵌入了IEC61499 运行时。
- 统一使用OPC UA 信息模型构建模型,避免OT工程师额外学习IEC-61499 的模型。降低了IEC61499 的学习曲线。
- 统一采用OPC UA 的协议和数据类型,可以借助OPC UA 的设计工具。更好融入以OPC UA 为基础的工业4.0 体系。与其它工业软件互联。
- 弥补了OPC UA 算法描述能力的不足,提供了构建基于OPCUA 信息模型的分布式控制系统的方法。
- 以IEC-61499 的方式构建OPC UA 的算法库,模型库。以及逻辑执行模型。
使用OPC UA 信息模型构建IEC61499 模型的任务包括下面几个部分:
- 使用OPC UA信息模型封装IEC61499 功能块类型
- 使用OPC UA 信息模型封装IECIEC61499 功能块网络
- 使用OPC UA 封装IEC61499 系统,资源的信息模型
- IEC61499 功能块OPC 模型
单从IEC61499 的外部封装来看,IEC61499功能块包括了事件的输入,事件的输出,数据的输入和数据的输出。它们完全可以使用OPC UA 信息模型来封装。下图是一个简单Inv功能块的OPC UA 模型封装示意图。
IEC61499 功能块网络的OPC UA模型
IEC614999 的应用是功能块网络。功能块网络是功能块实例通过连接(connection)构成的。在OPC UA信息模型中,connection 对应于reference。我们可以使用hasConnection来作为功能块的连接。
功能块与信息模型的接口
IEC61499 应用程序通过一组功能块存取OPCUA 信息模型
- UA_Read
- UA_Write
- UA_Condition
- UA_Method
开发流程
在UAPlus平台上,所有的模型都是基于OPCUA 信息模型构建,使用Nodeset2.xml 文档描述,并且通过LoadXML 方法动态地下载到UAPlus 的运行时中运行。
传统的自动化组态工具大多数是基于图形方式设计的。由于行业应用的特点,各个行业的组态工具的图形各不相同,比如PLC 中的梯形图,IEC61499 中的功能块网络,建筑自动化中的图形以及过程控制领域的P&ID,测量仪器应用中的LabView,数字仿真中的Simulink 中都具有各自基于图形的组态方式。通常,这些专用的图形化组态工具与厂商设备是紧耦合。
UAPlus 主张底层采纳OPC UA 的NodeSet.xml 描述。所有专业的IDE 导出的文档通过一组转换程序转换成NodeSet2 文档。例如,将IEC61499 开发环境IDE 导出的FB.sys 文档转换成为NodeSet2 文档。
基于这种观点,开发工具与设备,应用和厂商解耦。面向各种应用场景的领域语言(DSL) 能够转换成OPC UA 的NodeSet2 文档。随着AI技术的成熟,领域语言(DSL)将更加自然语言化。自动化组态技术将更多地由软件自动生成。
这是一个令人兴奋的系统架构,它意味着能够为各个专业领域应用设计组态工具,它们可能采纳不同的图形符号和表达方式,最终可以通过转换工具转换成为统一的OPC UA 模型。下面是将行为树转换成功能块网络和OPCUA 信息模型的例子。
在UAPlus平台上,能够构建工业控制,智能制造,智能仪表测量,离散过程控制,过程控制,建筑自动化等各个领域的应用。
转换工具及流程
IEC61499Converter
将4diac 设计IEC61499 功能块和应用程序转换成为uaModelDesign.xml 文档。
uaModelCompiller
将uaModelDesign.xml 转换成为OPCUA模型文件nodeset2.xml。
uaPlus
UAPlus 导入各种nodeset2.xml文档。
其它各种应用模型开发工具,能够充分利用IEC61499 功能块建模方式构建基于组件的系统模型,导出ModelDesign.xml 或者Nodeset2.xml 文档,最终导入UAPlus运行时。
UAPlus的应用
- OPCUA 网关
- 设备、仪表的数字化模型
- OPCUA 数据聚合服务器
- OPCUA 实时数据库
- 物联网应用
- 基于OPCUA 的工厂互联
- 设备和能效数据采集
- OPCUA HMI智能屏
- 数据存储,分析和可视化
UAPlus 的运行平台
操作系统
UAPlus 在linuxOS 上运行。
硬件
根据系统对算力需求的不同,可以选择X86,ARM,RISC-V 等处理器架构的硬件控制器。
目前支持的硬件控制器
- UAPlus-6 系列控制器
基于NXP I.MX6 处理器的32bitARM控制器,
- UAPlus-8 系列控制器
基于NXP I.MX8 处理器的64bit控制器
- UP6000控制器
基于Intel Atom6000 处理器控制器
I/O 模块与现场总线
现在,标准化的小型PLC,远程IO模块和IO-Link 等设备已经相当成熟,接口模块种类繁多,价格低廉。遵循“不重复建造轮子”的原则,没有必要设计控制器与IO模块一体化的硬件产品,UAPlus主张控制器与IO模块解耦。通过标准的现场总线与传统的PLC,远程IO模块和IO-Link 设备连接。目前支持的工业现场总线包括:
- modbusTCP
- EtherCAT
- Ether/IP
- Profinet
- IO-Link
结束语
OPC UA 将成为工业自动化领域的“HTML” 语言,IEC61499 作OPCUA 伴随的脚本语言,将会给开放自动化,边缘计算带来强大的活力。为此,我们在不断地研究与实验,目前该项目已经设计完成,进一步测试中。
相关文章:

OPC UA:工业领域的“HTML”
OPC UA是工业自动化领域的一项重要的通信协议。它的特点是包括了信息模型构建方法。能够建立工业领域各种事物的信息模型。在工业自动化行业,OPCUA 类似互联网行业的HTTP协议和“HTML”语言。能够准确,可靠地描述复杂系统中各个元素,并且实现…...

【golang】Windows环境下Gin框架安装和配置
Windows环境下Gin框架安装和配置 我终于搞定了Gin框架的安装,花了两三个小时,只能说道阻且长,所以写下这篇记录文章 先需要修改一些变量,这就需要打开终端,为了一次奏效,我们直接设置全局的: …...

多测师肖sir_高级金牌讲师__接口测试之tonken (5.6)
接口测试之tonken 网站:http://shop.duoceshi.com/login?redirect2Fdashboard 第一个接口:uiid接口 uiid接口url:http://manage.duoceshi.com/auth/code test中语句: var jsonData JSON.parse(responseBody); postman.setEnvi…...
C++常见面试问题之内存对齐
一、内存对齐是什么 1.内存对齐是什么 还是用一个例子带出这个问题,看下面的小程序,理论上,32位系统下,int占4byte,char占一个byte,那么将它们放到一个结构体中应该占415byte;但是实际上&…...

网络协议--TCP:传输控制协议
17.1 引言 本章将介绍TCP为应用层提供的服务,以及TCP首部中的各个字段。随后的几章我们在了解TCP的工作过程中将对这些字段作详细介绍。 对TCP的介绍将由本章开始,并一直包括随后的7章。第18章描述如何建立和终止一个TCP连接,第19和第20章将…...

网络协议--BOOTP:引导程序协议
16.1 引言 在第5章我们介绍了一个无盘系统,它在不知道自身IP地址的情况下,在进行系统引导时能够通过RARP来获取它的IP地址。然而使用RARP有两个问题:(1)IP地址是返回的唯一结果;(2)…...

33基于MATLAB的对RGB图像实现中值滤波,均值滤波,维纳滤波。程序已通过调试,可直接运行。
基于MATLAB的对RGB图像实现中值滤波,均值滤波,维纳滤波。程序已通过调试,可直接运行。 33 MATLAB、图像处理、维纳滤波 (xiaohongshu.com)...
WPF十六(页面内嵌加载)
在WPF中进行页面内嵌的加载 当存在一定需求时,比如当前页面C左侧是一个A页面,右侧是一个B页面,A页面是一个公用页面时,此时只需要做内嵌A页面,然后B页面进行正常处理,既可以节省时间,又做到了WP…...

JAVA基础(JAVA SE)学习笔记(九)异常处理
前言 1. 学习视频: 尚硅谷Java零基础全套视频教程(宋红康2023版,java入门自学必备)_哔哩哔哩_bilibili 2023最新Java学习路线 - 哔哩哔哩 第三阶段:Java高级应用 9.异常处理 10.多线程 11.常用类和基础API 12.集合框架 13.泛型 14…...

Miniconda、Vscode下载和conda源、pip源设置
1、常用软件下载 1、Miniconda软件下载: windows网址:https://mirrors.tuna.tsinghua.edu.cn/anaconda/miniconda/?CS&OA 2、最新版Miniconda下载网址:https://docs.conda.io/projects/miniconda/en/latest/ 3、常用代码编辑器VsCode下…...

CAN接口的PCB Layout规则要求汇总
随着时代高速发展,控制器局域网(CAN)接口的应用越来越广泛,尤其是在汽车电子、航空航天等领域中发挥着重要作用,为了确保CAN接口的可靠性和稳定性,工程师必须在其PCB Layout方面下功夫,下面来看…...
IP网络矿用打点紧急广播方案
IP网络矿用打点紧急广播方案 一、概述 目前,随着计算机网络技术的迅速普及,信息化已经走向煤矿。很多煤矿都陆续具有了稳定可靠、覆盖矿井上下的工业以太网。科学技术的不断进步和信息化矿山建设步伐的不断加快,井下工业以太网将逐渐得到推…...

系列六、FactoryBean vs ApplicationContext
一、FactoryBean vs ApplicationContext 1.1、概述 BeanFactory是一个工厂类,负责生产和管理bean,在Spring中BeanFactory是IOC容器的核心接口,它的主要职责就是生产bean及建立各个bean之间的依赖。applicationContext是BeanFactory的一个子接…...
AOP简单使用模版
AOP面向切面编程 切面类的定义之模版 package com.xie.service;import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.*; import org.aspectj.lang.ProceedingJoinPoint; import org.springframework.stereotype.Component; import javax.servlet.http.Http…...
手机注册.
<!DOCTYPE html> <html><head><title>注册</title><meta http-equiv"content-type" content"text/html; charsetutf-8"/><meta name"apple-mobile-web-app-capable" content"yes"/><lin…...
PostgreSQL 17新特性之登录事件触发器
PostgreSQL 9.3 就提供了事件触发器功能,可以基于 DDL 语句触发相应的操作。 正在开发中的 PostgreSQL 17 增加了基于登录事件的触发器,可以在用户登录时执行某些检查或者特定操作。登录事件触发器的使用方法和其他触发器一样:创建一个返回 …...

Docker 搭建 LNMP + Wordpress
[TOC](Docker 搭建 LNMP Wordpress 一、项目介绍1.1、项目环境1.2、 服务器环境1.3、 任务需求 二、部署Nginx2.1、建立工作目录2.2、 编写 Dockerfile 脚本2.3、准备 nginx.conf 配置文件2.4、生成镜像2.5、创建自定义网络 三、部署Mysql3.1、建立工作目录3.2、编写 Dockerfi…...

大数据调度最佳实践 | 从Airflow迁移到Apache DolphinScheduler
迁移背景 有部分用户原来是使用 Airflow 作为调度系统的,但是由于 Airflow 只能通过代码来定义工作流,并且没有对资源、项目的粒度划分,导致在部分需要较强权限控制的场景下不能很好的贴合客户需求,所以部分用户需要将调度系统从…...

node实战——搭建带swagger接口文档的后端koa项目(node后端就业储备知识)
文章目录 ⭐前言⭐初始化项目⭐配置router目录自动扫描路由⭐swagger文件配置自动生成json文件⭐封装扫描目录路由加入swagger⭐配置项目入口总文件⭐运行效果⭐总结⭐结束⭐前言 大家好,我是yma16,本文分享关于node实战——搭建带swagger接口文档的后端koa项目(node后端就…...

Qt篇——子控件QLayoutItem与实际控件的强转
方法:使用qobject_cast<QLabel*>() ,将通过itemAt(i)获取到的子控件(QLayoutItem)强转为子控件的实际类型(如QLineEdit、QLabel等)。 场景举例: QLabel *label qobject_cast<QLabel*>(ui->horizontalLayout_40->itemAt(0…...
蓝桥杯 2024 15届国赛 A组 儿童节快乐
P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡,轻快的音乐在耳边持续回荡,小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下,六一来了。 今天是六一儿童节,小蓝老师为了让大家在节…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...

算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

排序算法总结(C++)
目录 一、稳定性二、排序算法选择、冒泡、插入排序归并排序随机快速排序堆排序基数排序计数排序 三、总结 一、稳定性 排序算法的稳定性是指:同样大小的样本 **(同样大小的数据)**在排序之后不会改变原始的相对次序。 稳定性对基础类型对象…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...

Linux操作系统共享Windows操作系统的文件
目录 一、共享文件 二、挂载 一、共享文件 点击虚拟机选项-设置 点击选项,设置文件夹共享为总是启用,点击添加,可添加需要共享的文件夹 查询是否共享成功 ls /mnt/hgfs 如果显示Download(这是我共享的文件夹)&…...

CSS 工具对比:UnoCSS vs Tailwind CSS,谁是你的菜?
在现代前端开发中,Utility-First (功能优先) CSS 框架已经成为主流。其中,Tailwind CSS 无疑是市场的领导者和标杆。然而,一个名为 UnoCSS 的新星正以其惊人的性能和极致的灵活性迅速崛起。 这篇文章将深入探讨这两款工具的核心理念、技术差…...
接口 RESTful 中的超媒体:REST 架构的灵魂驱动
在 RESTful 架构中,** 超媒体(Hypermedia)** 是一个核心概念,它体现了 REST 的 “表述性状态转移(Representational State Transfer)” 的本质,也是区分 “真 RESTful API” 与 “伪 RESTful AP…...