自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

OPC那点事

慢慢道来OPC

  • 博客(15)
  • 收藏
  • 关注

原创 如何底层调用最快地复制OPC数据到关系数据库

如何用OLE DB来快速地复制OPC数据到数据库

2023-12-27 07:33:49 994 1

原创 Python和Java等获得OPC数据的新方法

前文有提到一种新方法来获取OPC数据,为扩展到其它语言打下了基础。现在能否一如既往地满足不同场景下不同语言获得OPC数据的需要?本文打算用四种不同的常用语言 (Python/C#/C++/Java) 来尝试一下获得OPC数据。先看一下Python语言下的例子, 在Visual Studio 2019下使用,基本的设置如下, 用的是Python 3.9,下载所需要的websockets的包,添加一个py文件(WebSocketPython.py)和如下程序, 非常简短直接,使用一个异步包和websock

2022-07-05 01:59:33 1747 9

原创 移动端获取OPC数据的新方法

OPC的二套架构,Classic和UA,都是在智能手机诞生前就产生的,天生地就没有考虑移动端的应用,所使用的协议无法直接在移动端上运用或者良好支持。但是在工厂和总部,总有那么种需求,就是无论走在哪里,也想随时随地地获取相关的工厂信息,若有报警能够及时处理等等。OPC Classic所遵循的COM协议,手机上无法直接相连,OPC UA所提供的opc.tcp或者http,也不是简单地可以直接拿来使用,必须要考虑防火墙,证书等诸多烦琐事宜,在我看来这都不是移动端应该考虑的(当然是电脑端要顾及的事)。那么在移动端,

2022-06-21 09:59:17 1123

原创 针对CVE-2021-26414的业界首款OPC转WEB解决方案

通过Javascript获取OPC数据的解决方案

2022-02-14 11:01:03 1286

原创 OPC包深度解析及工业防火墙 (上)

上篇分析了OPC服务端的安全性,本文进一步分析OPC包的深度解析和工业防火墙的对策。OPC使用的RPC协议和普通的TCP应用协议有所不同,普通TCP的协议都有一个固定的端口供客户端请求,见如下的Modbus协议服务端的固定端口是502,所有客户端和服务端往来的包都使用该端口。下面来看下OPC使用的RPC请求和应答,显而易见的是RPC有一个固定的135号端口供客户端请求专用,然后...

2020-12-21 08:30:14 6479 18

原创 OPC服务端软件分析

上篇依然是关于客户端的,现在转向服务端。本文以OPC基金会发布的OPC DA 3.00 Sample Server为分析对象,分析它的结构,为自己程序切入找准方向。在开始之前需要分享一个知识点,即COM是如何被创建的。在客户端使用CoCreateInstance后,服务端是怎样帮你创立一个实例的?这就是IClassFactory的职责,所有COM的调用都是通过它的接口来获得一个具体的执行它接口...

2020-01-01 12:40:30 1829 5

原创 OPC服务器漏洞扫描

上篇是关于写个优雅的OPC客户端,今天谈谈如何找出你的服务端的漏洞。在我的另一篇关于OPC服务器安全的博文中提到了2015年针对工控系统的蜻蜓攻击。黑客通过水坑攻击进入到工控网络,然后利用OPC的相关漏洞开始扫瞄,获取相应的位点信息开始攻击。这就提出一个问题,我的服务端到底安不安全?如果黑客已经通过其它手段进入到我的网络,他会发现什么?所以我们就需要一款工具,比黑客先找出自己的漏洞,对自己的工控网...

2019-08-11 06:17:01 788

原创 短小精干原创的三合一命令行OPC客户端

上篇讲了如何写个优雅的OPC程序,现在共享我写的一个支持DA、HDA和AE的命令行客户端,需要的在后面留言,因这里无法上载。用法:Opc3Client.exe hostname da/hda/ae运行cmd时,要用管理者权限,如下是关于DA的,支持DA的所有接口如下是关于HDA的,支持基本的接口,下面的是关于AE的,支持基本接口,一些运行截图,AE的,HDA...

2019-07-01 03:00:16 1312 10

原创 写个干净优雅的OPC程序及OPC SDK质量分析

上篇提到了回调函数及SDK质量的问题,今天继续谈谈如何写个自己感觉满意的OPC程序。何为干净优雅?个人的理解就是在客户端要及时地释放不再需要的资源,在客户端创建的回调函数(如IOPCDataCallback,IOPCShutdown等)事例要优雅地退出,在服务端可以看见被客户端创建的进程在客户端释放资源后自行退出,说明客户端不再有服务端资源的占用或调用。下面是我在客户端针对DA干净退出的样本,...

2019-06-24 06:15:25 1772 3

原创 从回调函数谈OPC SDK的代码质量

上篇谈了服务器的安全性问题,这次结合客户端和服务端来谈谈回调函数。什么是回调函数?也叫Callbak,它是一类由客户端发起的,在客户端执行的COM实例。客户端会把该实例的接口IID通过指定的函数(Advise())发给服务端,服务端登记下该Callbak的IID和相应接口代理地址,在合适的时候比如有了新数据时调用该Callback,这样客户端的Callback函数获得执行。简单地说,就是此时客户端...

2019-05-05 03:28:19 957

原创 OPC服务器到底安不安全?

上篇写的是客户端的应用,这次谈谈服务端,服务器的安全性。你要写一个基于COM的OPC服务器,一般要先定义执行的接口见下(摘自OpcDa30Server.idl),[ uuid(ED0E3ADE-0CF5-47cd-A1AB-522E5E75D5CD), helpstring("OPC Data Access 3.00 Source Server")]coclass Opc...

2018-08-22 10:27:51 2247 10

原创 OPC客户端分析 —— 读和写

上篇给大家分析了如何在客户端进行服务器查询,今天再分析下在客户端的读和写的操作。下面这个函数囊括各路类型的读写操作,如异步或同步等等,实用性很强。HRESULT synReadOrWrite(serverGroup* serverGroup, bool read, bool async) { char *buffer = (char *)malloc(MAXBYTE); OPCITE...

2018-05-28 08:50:21 5822 5

原创 OPC客户端分析 —— 服务器查询

上篇讲到了如何找到OPC服务器,具体执行是在enumServerList的函数中,获得执行IID_IOPCServerList2的实例。下面继续分析。 MULTI_QI MultiQI[2] = { NULL }; MultiQI[0].pIID = &IID_IOPCServerList; MultiQI[0].pItf = NULL; MultiQI[0].hr = S_...

2018-05-21 05:08:27 5012 1

原创 OPC服务器是如何被找到的?

上篇谈了OPC和COM的渊源(点击打开链接),现在继续谈下如何找到服务器。今天要说的是在每个服务器上必装的一个来自OPC基金会的应用,OpcEnum.exe。当一个客户端程序要和服务器沟通时第一步就是要问,“嘿,你那有我要的东西吗?有装OPC服务器吗?”。这个程序就负责回答这个问题。看一下OPCEnum.exe中IDL定义的唯一一个类OpcServerList。它执行了opccomn.idl中的两...

2018-05-13 07:04:34 13980 4

原创 COM的起源与OPC的渊源

从1993年微软推出COM组件技术至今已二十多年了,新出校门的小鲜肉一般都不会接触到了,也只有那些富有情怀的老炮儿可能不时唠叨二句。也赶巧了,工控网络里的技术与时俱进的步伐总是慢些,所以在工控领域COM不会很快退场,还是有它的用武之地的,再活个二十年没问题,毕竟所有的厂商都有现成的产品支持它,也倒逼那些小鲜肉来学些老古董了。1993年前,那还不是微软独大的时候,算得上战国时代,局域网里还是No...

2018-02-11 02:36:09 2950 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除