OPC UA 简介
在自动化领域和下位机通讯的协议肯定离不开OPC, OPC通信标准的核心是互通性 (Interoperability) 和标准化 (Standardization) 问题。传统的OPC技术在控制级别很好地 解决了硬件设备间的互通性问题, 在企业层面的通信标准化是同样需要的。OPC访问规范都是基于微软的COM/DCOM技术, 这会给新增层面的通信带来不可根除的弱点。加上传统OPC技术不够灵活、平台局限等问题的逐渐凸显, OPC基金会 (OPC Foundation) 发布了最新的数据通讯统一方法 — OPC统一架构 (OPC UA), 涵盖了OPC 实时数据访问规范 (OPC DA)、OPC历史数据访问规范 (OPC HDA)、 OPC 报警事件访问规范 (OPC A&E) 和OPC安全协议 (OPC Security) 的不同方面, 但在其基础之上进行了功能扩展。OPC UA,是在传统OPC技术取得很大成功之后的又一个突破,让数据采集、信息模型化以及工厂底层与企业层面之间的通讯更加安全、可靠。
OPC UA的几大优势:
与平台无关,可在任何操作系统上运行
为未来的先进系统做好准备,与保留系统继续兼容
配置和维护更加方便
基于服务的技术
可见性增加
通信范围更广
通信性能提高
Iot2040安装 opc ua
Iot2000镜像文件从V2.1.2版本以后的node-red都可以联网安装OPC UC node。
第一步首先测试一下iot2040是否联网,硬件上可以通过X2P1LAN 口联上已经上网的路由器,因为X2P1LAN 默认是自动获取IP地址。所以也不需要特别的IP设置,练上后可以测试一下IOT2040是否联网,测试方式为利用PING 指令,直接PING 一个网址如:www.baidu.com
如果PING 成功然后就如上图,但是Linux下的PING命令不会自动终止,会一直PING下去。结束通过快捷键 CTRL+C。打开文件目录 cd /usr/lib/node_modules 输入 npm install node-red-contrib-opcua 开始安装 OPCUA
安装的过程还是有点时间的,请耐心等待
安装完了有如下信息
通过浏览器打开node-red查看 OPC UA是否安装成功,不行就重新上电一下。成功的话你就会看到左侧的新Nodes
找一个支持OPC UA Server PLC
对PLC进行数据采集的时候iot20000是作为OPC UA Client,然后PLC是作为OPC UA Server。在新一代的西门子产品中硬件中都集成了OPC UA Server,这也就是OPC UA的优势跨平台。 手册中的实例是和SIMATIC S7-1500 Software Controller 的 OPC UA Server做的通讯实例。原本我也准备依葫芦画瓢的,因为看S7-1500 Software Controller 应该是一个软PLC。应该可以直接安装在工控机甚至普通PC上,这样我就无需要额外硬件做测试。 为此我还特意安装TIA V15,博途做为一个工控组态软件绝对是一骑绝尘,至少在体量上肯定是。
好不容易装完博途,but发现好像白忙乎了。S7-1500 Software Controller是软PLC没错,可以安装在Windows操作系统下,可以实现所有 S7-1500 硬PLC的功能。属于西门子老一代软PLC WinAC RTX的升级版。But重点来了,S7-1500 Software Controller和WinAC RTX最大的区别就是只能安装在西门子自家特定的工控机上。一句话概括,就是需要硬件支持。这让我想起西家的总线协议PN和DP,果然在封闭的道路上越走越远。没办法,只能PASS掉S7-1500 Software Controller。然后我找了另一款有名的软PLC,beckoff的twincat安装在一台PC机上,并且安装了OPC UA配置好Server。下面就把这台PC当做一台带有OPC UA Server的PLC了。先用自己的笔记本和PLC做一个OPC UA的测试连接。这时候推荐一款西门子自家的OpcUA.Client
Siemens.OpcUA.Client.rar
把笔记本的以太网口和PLC的OPC UA的以太网口配置在同一网段。在Endpoint里面设置好PLC的IP和端口号然后连接,正常会看到PLC OPC UA node下所有可读写的一些变量。
可以看到PLC的一些变量,同时可以查看变量的NodeID。这个之后会用到。
编写node-red OPC UA 读写变量的程序
因为X1P1LAN需要用于编程,所以使用X2P1LAN和PLC连接。先用Putty 把X2P1LAN的IP和PLC配置在同一个网段。然后连上PLC,不放心可以PING一下是否通了。
用浏览器打开node-red界面,从左侧拖拽三个node控件到一个Flow里面去
Inject:用来设置要访问的变量的nodeID
OpcuaClient:用来设置OPCUA连接参数
Text:用于输出变量值到窗口
设置完成后把node直接连接起来形成一个“流”,这样一个读变量的编程就算完成了,然后下载到iot2040里面
如果看到这样的提示,那么恭喜你至少OPC UA链接成功了
在浏览器中输入http://192.168.200.1:1880/ui,就能打开监视窗口了,因为我读的变量是一个bool型,所以显示的text 为TRUE或者FALSE。我后面还监控了一个int类型的数值,显示为3.
读没问题了,再弄一个写试试。同样拖了三个控件,
Numeric:用来输入数字,但是好像不是调用数字键盘的。是一个增减控件
OpcUa-Item:作用和上面的Inject类似
OpcuaClient:;同上。
然后连线下载到iot2040,打开ui操作<,>写入和读取的数字变化一致。
经过这次折腾了OPC UA,对node-red编程又了解了一些,有点新鲜感但是还是不太习惯这种方式。最后附上官方实例手册,有1500的朋友可以测试一下。
OPC_UA_Client_node-red_V1.0.pdf
SIMATIC IOT2000 S7.pdf