什么是继姐,继妈妈什么意思
我接触OPC UA有一段时间了,我只知道它将是工业4.0 (IEC 62541)中一个重要的通信协议。出于好奇,随便了解一下。我看的主要内容有:Open62541库和uaExpert、uamodeler等工具。同时也看了OPC UA的标准文本和网上的很多文章。但我总觉得雾里看花,龙少了尾巴。
俗话说“不知道庐山真面目,只能住在这山里”。在学习新的计算机技术时,我们经常被各种术语、数据结构、函数、协议和模型带入沟里。却忘了想它是什么。它解决什么问题?你为什么这么做?这些基本问题。有时候真的不明白,这么复杂的东西你是怎么想出来的?是被大公司用来故弄玄虚的吗?
一天早上,我突然灵光一现。OPC UA是描述分布式系统中的一个对象。什么节点,变量,引用都只是为了描述一个对象!OPC UA在工业4.0中的重要性在于通过面向对象技术将物理设备、传感器、电机描述为对象,形成数字模型。让不同的软件像调用对象一样控制设备。
于是,我放慢脚步,顺着面向对象的思路,去探索OPC UA的本质。
面向对象程序设计
软件设计的一个重要部分是将物理世界中的对象抽象成数字模型。最重要的技术是面向对象编程技术。例如,对于一个电机,我们可以将其抽象为以下类别
级电机{浮动速度;int方向;浮充电流;浮动电压;浮子温度;void start();void stop();}该类描述电机的基本特性,包括速度、旋转方向、工作电流、电压和温度。该方法包括启动和停止。
在程序中,我们可以实例化motor类并控制实例的参数。例如:
马达马达1、马达2;motor 1 . speed=1200;motor.direction=逆时针;motor . start();延时(10)motor . stop();面向对象编程是最流行的编程方法,流行的OPP语言是c,面向对象编程最大的优点是界面突出,细节屏蔽。提高了软件的模块化和可重用性。
分布式对象
类的应用和定义在一个程序中。如果把面向对象的概念扩展到程序,或者网络中不同程序之间,会怎么样?人们会的。
在分布式计算环境中,RPC(远程过程调用)是最早的程序间相互调用的方式。但是对于更复杂的情况,更好的方法是采用分布式对象技术。计算机可以调用网络中的任何对象。这也符合实际应用的需要。比如自动控制SCADA程序启动注塑机的主电机,就成为了注塑机控制器中调用目标电机的启动功能。因此,当面向对象编程中的对象概念被导出到分布式系统中时,分布式对象的概念就产生了。
常见的分布式对象技术包括
微软的Com/DCOM(分布式组件对象模型)和OMG的CORBA(公共对象请求代理体系结构)。
OPC
在我们了解OPC UA之前,我们应该先了解它的一些前身OPC协议。这更有利于理解OPC UA的本质和起源。
OPC基于微软DCOM技术,用于设备和软件之间的数据交换。这也意味着OPC只能在窗口系统上运行。在运行OPC之前,你需要配置窗口的COM/DCOM。在运行名行中输入“DCOMCNFG”就可以看到Window的服务组件的配置(具体我不知道)。但有一点是肯定的,那就是OPC只能在运行windows的工业PC和上位机上运行。这是window一统天下时代的唯一选择。如果一台PLC要与OPC上位机软件通信,必须通过Windows工控机来完成。
重新认识OPC UA
现在,让我们重新认识OPC UA的本质!OPC UA是OPC的后继标准,只是后来增加了UA,意思是“统一架构”。它的主要目的是摆脱windows!实现平台无关的OPC。
从OPC到OPC UA,其目的并没有改变,但仍然是在分布式控制系统中实现分布式对象技术。然而,它的模式已经变得独立于平台和面向开放系统。这意味着我们可以在Arm /linux平台上实现OPC服务器,或者在云linux平台上实现客户端程序。
opc ua的代码足够小。事实上,OPC UA的服务器端可以直接集成到PLC、传感器或小型网关中。
一旦知道了事情的本质,就可以从战略的角度去理解很多细节。现在我们来看看OPC UA的很多概念。
1 信息模型(Information model)
OPC UA使用对象作为过程系统表示数据和活动的基础。对象包含变量、事件和方法,它们通过引用相互连接。这个概念非常类似于面向对象的编程方法。
OPC UA信息模型是一个节点网络,或者说是一个图,由节点和引用组成。这个图叫做OPC UA的地址空间。这种图形结构可以描述各种结构化信息(对象)。
节点(nodes)
:有8种节点(对象、对象类型、变量、变量类型、视图、方法、引用、数据类型)或许我们可以通过一些例子来理解这种节点图更容易描述对象的能力。
视图节点(视图节点)
如果我们要为一个设备建立opc ua模型,这个设备有一个模拟输入,一个数字输出,和两个方法,即readAnalog和ReadDigital。如果用C的类来描述这个模型,看起来是这样的。
类别传感器{公共:双模拟;Uint32 _ t数字双读模拟(int port)uint 32 _ t read digital(int port)}如果用节点图来描述,首先要区分不同的节点类型。
相应的节点图如下
如果熟悉C的面向对象编程,可以将C的类与OPCUA的节点图对应起来,这样更容易理解OPC UA的信息模型是如何构建的。
opc ua model 的设计工具
:OPC UA的模型用XML文件描述,然后可以用编译工具把XML编译成C语言的程序。为了方便地建立opc ua的信息模型,需要使用模型编辑软件,它会生成小的XML模型,然后编译成C语言程序。
流行的是uaModeler,不过是个商业软件。免费软件是python中的opcua-modeler,可以在以下地址找到
https://github.com/FreeOpcUa/opcua-modeler
编译工具
Python。/nodeset _编译器. py-types-array=ua _ types-existing././deps/UA-nodeset/schema/OPC . UA . nodeset 2 . XML-XML myns . XML myns用面向对象编程的概念来看待OPC UA的信息模型,至少对我是有帮助的。
这让我想起了《数学的语言》对数学的定义。数学是研究模型的学科。数学是由自然和物理的手和脚建立起来的。当去除了自然和物理的手脚,人们就无法理解数学殿堂是如何建成的。
如何给HTML div三边加边框?win7中qq截图的快捷键是什么