1 通讯步骤
1.1 第一问
OPC Client和OPC Server之间通讯谁是主动的?
答:当然是OPC Client。

1.2 第二问
OPC Client第一次动作做了什么?
答:从大多数OPC Client行为来看,一是自动遍历本机已注册的OPC Server列表名称,二是等待用户定义预访问的OPC Server的信息。

1.3 第三问
OPC Client第二次动作做了什么?
答:OPC Client的第一步动作会产生分支,访问本地OPC Server的这个分支就不再说了。要分析的是网络方式访问OPC Server这个分支。
第二个动作是根据用户指定的IP地址或计算机名去查询远程计算机上已注册的OPC Server列表名称。从这步开始就比较复杂了。

1.4 第四问
OPC Client是用什么协议去和远程计算机交流的?
答:用的是TCP/IP这个协议。OPC Client用TCP/IP 135端口去打开远程计算机的那一扇门。
简单解释下:在Windows操作系统中,135端口主要用于使用PRC协议并提供DCOM(分布式组件对象模型)服务,通过RPC可以保证在一台计算机上运行的程序可以顺利地执行远程计算机上的代码。使用DCOM可以通过网络直接进行通信,能够跨包括HTTP协议在内的多种网络传输。多年来,135端口一直被人利用。

1.5 第五问
OPC Client去访问远程计算机的TCP135这扇门时,第一道关卡是谁?
答:网络安全防火墙是第一关卡,网络安全放火墙中,如果不允许远程计算机的TCP 135端口,那么连接就被掐断了。后续的通讯就无法进行。要想能向下进行,网络安全防火墙必须允许对TCP 135这扇门的访问。这里需要在防火墙中将135端口例外操作。

1.6 第六问
各系统的安全策略有什么不同?
答:
(一)Windows 2000的安全策略:支持来访者以自己的身份进行验证,且不拒绝来宾用户从网络中访问,来宾用户默认启用。
(二)Windows XP和Windows 2003的安全策略:支持来访者以自己的身份进行验证或将所有来访者都看成是来宾访问,默认将所有来访者都看成来宾访问。且默认拒绝Guest用户从网络访问本机。来宾用户默认禁用。
(三)Windows 7的安全策略:支持来访者以自己的身份进行验证或将所有来访者都看成是来宾访问(经典-对本地用户进行身份验证,不改变其本来身份),默认支持来访者以自己的身份进行验证。且默认拒绝Guest用户从网络访问本机(拒绝从网络访问这台计算机)。来宾用户默认禁用。
(四)Windows 2008的安全策略:支持来访者以自己的身份进行验证或将所有来访者都看成是来宾访问,默认支持来访者以自己的身份进行验证。来宾用户默认禁用。
配置OPC Client和OPC Server之间的网络通讯,先得看看对应的操作系统。选好安全审核机制再说。
举例说明:
例1:OPC Client和OPC Server都在Windows 2000操作系统上来举个例子:由于操行系统都是Windows 2000,那么安全策略都是来访者以自己的身份进行验证(自己指OPC Server)。这里的以来访者以自己的身份进行验证是什么意思?
就是指OPC Client去敲OPC Server的135这扇门时,会告知OPC Client的登录用户名是谁,我的登录密码是多少。OPC Server所在的操作系统通过来访者告知的用户名和密码去自己的用户列表中去查找是否也存在这个用户,密码是否正确。如果用户名和密码正确,则进入下一步工作。
例2: OPC Client和OPC Server都在Windows XP操作系统上来举个例子:由于操行系统都是Windows XP,那么默认的安全策略都是将所有来访者都看成是来宾访问。(对本地用户进行身份验证,其身份为来宾。)且默认拒绝Guest用户从网络访问本机。这里的将所有来访者都看成是来宾访问是什么意思?就是指OPC Client去敲OPC Server的135这扇门时,会告知,我的登录用户名是谁,我的登录密码是多少。OPC Server所在的操作系统却不管你是谁,所有来访者一视同仁,都是来宾,而且按照规定,来宾都拒绝掉。这下可好,后面二者之间的通讯也不用继续了。
上面的(一)这种情况工作还能继续往下做,(二)这种情况就完全不行了,啥都不管了。因此(二)这种情况是需要修改安全策略的,一种是将安全策略修改为来访者以自己的身份进行验证;另外一种是将“拒绝从网络中访问此计算机”规则中的来宾用户给去掉,从用户管理中将来宾用户启用,且密码为空。(仅来宾-对本地用户进行身份验证,其身份为来宾)

1.7 第七问
网络防火墙允许进入,操作系统的安全审核也通过了,终于可以访问OPC Server了吧?
答:还得问一问DCOM的安全配置同不同意。运行“组件服务”检查一下。
DCOM的“访问权限”默认只有Sell和System,需要添加指定用户或者允许所有人,需要注意的是,“本地访问”与“远程访问”都需要选择“允许”。
DCOM的“启动和激活权限”默认只有“Administrator”和“System”,需要添加指定用户或者允许所有人,需要注意的是,“本地访问”与“远程访问”,“本地激活”和“远程激活”都需要选择“允许”。

1.8 总结
1.8.1 小结1
经过上面的一些处理过程,我们在这里可以总结一下都做了些什么?
(一)配置防火墙,允许访问OPC Server所在计算机的TCP 135端口。
(二)配置操作系统的安全策略,使得可以接受远程计算机的rpc请求,可配置为按照来访者身份验证模式或来宾模式。(直接选择以本地身份验证)
(三)配置操作系统的用户管理。来访者身份验证模式需在OPC Server所在计算机中添加来访者的用户名和密码;来宾模式需要启用Guest用户。
(四)配置计算机全局的DCOM安全配置,使之允许远程访问,已经远程启动和激活。

以上4步基本已将OPC Server这端的访问权限配置得差不多。但在实际操作过程中,还需要检查如下一些内容:
(一)OPC库文件是否安装注册?OPC库文件没有正确的安装注册,OPC Server是无法工作的。而现在的不少OPC Server安装时并不会自动安装OPC库文件。
(二)OPC server是否注册?OPC Server未注册,是无法访问的,OPC Server必须正确注册。而现在的不少OPC Server安装后也不会自动注册,需要手动在程序界面上提供的功能按钮进行注册。
(三)OPC server的主程序是否存在?有的时候OPC Server注册了,但主程序可能被误删除或改名了,这个操作系统可不会告诉你。只能自己检查一下或重新注册一遍。
(四)OPC Server的主程序与其他程序是否有依赖关系?因为OPC Server只是软件对外提供数据的一种标准接口,它本身也是通过从其他的软件获取数据,常见的如组态软件,实时数据库等,而现在的一些OPC Server启动时会检查依赖的程序是否启动,如未启动,要么退出,要么啥都提供不了,也不会告诉OPC Client出了啥问题。
(五)OPC Server在DCOM环境中自己的配置信息,OPC Server在DCOM的环境中的配置信息如下图。如OPC Server是NT服务方式启动,那么“标识”这一栏就为系统帐户,不推荐使用“下列用户”。如OPC Server是COM方式注册,那么“标识”这一栏默认为“交互式用户”或“启动用户”(各家OPC Server注册时处理方法不太一样),最好都使用。“交互式用户”,不推荐使用“启动用户”和“下列用户”。具体原因后期再说。
(OPC Server是NT服务方式启动,标识这栏为“系统账户(仅用于服务)”)
(OPC Server是COM方式注册,标识这栏为“交互式用户”)

1.8.2 小结2
到了这一步,可能绝大部分人都会觉得这完成没有问题了。OPC Server都连接上了,增加个OPC组还不是轻而易举的事情吗?而实际上,OPC的组是一个大有深意的设计。
OPC的组是用来给OPC Client灵活定义数据采集方式的一个方法,如希望对OPC Server
中测点,一些测点的采样频率是1秒,一些测点的采样频率是5秒,一些测点数据变化即采集,一些测点数据变化超过量程多少才采集等等。而且还定义了数据采集的两种模式,Synchronous I/O(同步)和Asynchronous I/O(异步)。对同步和异步进行一个简单的说明:
同步模式:OPC Client向OPC Server要5000个测点的数据,必须等到OPC
Server将5000个测点的数据都返回后才做后面的事情。
异步模式:OPC Client向OPC Server要5000个测点的数据,OPC Client告诉OPCServer:
“我为你留了一个通道,我要的这5000个点,只要任何点有变化,你就立马按照预定
的周期告诉我”,于是OPC Server就按照预定的周期将数据发生变化的测点通过OPC Client预留的通道告知OPC Client。异步模式中,就会发生OPC Server反向连接OPC
Client的情况,那么就会再次发生前面9个问题的所有事情。这也是很多时候OPC Server配置完成了,但OPC的通讯还是不正常的缘故。因为现在的绝大多数OPC Client默认都是采用异步方式与OPC Server进行通讯,这就要求OPC Client所在计算机的网络防火墙、
操作系统的安全策略,DCOM的全局安全配置也需要配置正确。某OPC Client客户端添加OPC组时的属性配置。此处给各位留下一个问题:既然异步方式增加了对OPC Client
端的配置要求,那为何大家默认不使用同步模式呢?

1.8.3 小结3
到了这一步,还问这样的问题,估计有人会很愤怒了,“这种弱爆了的问题还要问吗?”,其实不然,在很多实际的案例中,就遇到了OPC的通讯配置问题解决了。但却看不到测点,一般会有如下几种原因:
(一)OPC Server真的没有测点。
(二)仔细阅读第10问中的检测要点的第4条。OPC Server中的测点来自于组态软件或实时数据库,当组态软件和实时数据库未启动或OPC Server启动在组态软件和实时数据库之前时,OPC Server中很可能就没有测点。如何解决?重启一下就好了嘛。

2 OPC Client/OPC Server
2.1 问题现象
目前市场上的OPC Client与OPC Server软件在Windows上的运行方式有Windows桌面程序和Windows NT服务。本来也没啥。但由于OPC Client 是一个厂家的软件,而OPC Server是另一家的软件,正因为软件的多样性,也就导致了如下一些现像:
1:OPC Client 连接目标OPC Server,发现无法连接,但在OPC Serve计算机上明明看见OPC Serve进程已经启动。
2:OPC Client连接目标OPC Server,能连接,也能看见测试点,但无法获取到数据。
经过多次现场的积累后,发现此类问题多出现在OPC Client和OPC Server软件在Windows上运行方式不同导致的。也就是说,OPC Client和OPC Server软件的运行方式不一样。譬如:OPC Client是Windows桌面程序方式,OPC Server是Windows NT服务时,发现上面的现象基本不出现。这是为什么呢?
2.2 问题解决
原因如下:
OPC Client和OPC Server都是基于DCOM的应用,DCOM的特点是OPC Server无需先运行或启动,等待OPC Client请求时,由操作系统在将OPC Server拽起来。这种机制的好处就是随用随启。但这种机制如果处理不好吧,就会导致一些问题。当OPC Client是Windows NT服务时,OPC Server被拽起来后,是运行在System这个系统帐户下面的。相对于Windows的桌面用户来说,是另外一个隔离开的空间。因此当桌面运行类型的OPC Server被Windows NT服务方式的OPC Client拽起来后,被运行在System这个系统帐户的空间。而如果这个OPC Server程序又做了全局唯一进程运行的限制或与数据库只允许一个TCP连接时,上述的两种现象基本就会出现。这就是这段时间好几个朋友遇到的OPC通讯故障现象。
如何让自己开发的OPC程序兼容性更好的?
1:当开发OPC Client程序时,最好使用Windows桌面程序方式,这种方式可兼容OPC Server程序运行在Windows桌面程序方式和Windows NT服务方式。
2:当开发OPC Server程序时,最好使用Windows NT服务方式,这种方式可兼容OPC Client程序运行在Windows桌面程序方式和Windows NT服务方式。
如果很不幸遇到了Windows NT服务的OPC Client去采集Windows桌面程序的OPC Server(加上OPC Server本身的全局唯一限制),那么你可以去Windows NT服务的管理器中将Windows NT服务。

【工控老马】OPC通讯协议解析-OPC七问相关推荐

  1. 【工控老马】ABB AC500 系列PLC与WEST 8100+系列仪表的ASCII通讯指南

    一.硬件设置 仪表设定: 在P8100 的组态级(Configuration Mode)中 设置好以下几个参数: 1.通讯协议(Prot): 请改为ASC I (ASC II 通讯协议) 2.通讯速率 ...

  2. 【工控老马】modbus tcp详解

    老马带你详细了解modbus tcp规范 1.该规范的发展概况 该MODBUS/TCP规范在万维网上公开发行.它表明开发者的意愿是把它作为工业自动化领域具有互用性的标准. 既然MODBUS和MODBU ...

  3. 【工控老马】单片机与西门子S7-200通信原理详解

    一. 硬件以及通讯原理分析 西门子S7-200系列PLC拥有RS-485串行口,所以要使MCS51单片机与S7-PLC进行通讯,可以采用几种通讯方式.其中之一就是可以通过MCS-51的串行口与MAX4 ...

  4. 【工控老马】详解OPC协议-工业控制和自动化领域的接口标准

    OPC全称是OLE for Process Control,即用于过程控制的OLE,是针对现场控制系统的一个工业标准接口,是工业控制和生产自动化领域中使用的硬件和软件的接口标准.基于微软的OLE(现在 ...

  5. 【工控老马】micro logix1400进行modbus通讯

    一.plc作为modbus主站 1.实验目的 在实际应用中,不可避免的会遇到通讯,modbus通讯就是日常应用频繁的通讯之一:本实验的目的就是利用micro logix1400的plc进行modbus ...

  6. 【工控老马】西门子PLC Siemens PLC TCP协议详解

    Siemens PLC TCP 协议详解 说明:蓝色文字表示已经破解部分,[红色文字] 表示对破解部分数字的说明,黑色文字表示对破解部分的进一步说明,黑色斜体加粗文字表示未破解部分,高亮文字部分表示驱 ...

  7. 【工控老马】欧姆龙PLC Socket发送Fins/TCP命令解析

    欧姆龙Socket tool发送Fins/TCP命令 实验设备:CJ2M-CPU33(PLC) 实验目的:发送Fins/TCP命令读写CJ2M-CPU33的数据 实验步骤: 1. 系统概述,硬件搭建和 ...

  8. 【工控老马】ASP问与答40篇

    问:什么是ASP? 答:ASP是Active Server Page的缩写,意为"活动服务器网页".ASP是微软公司开发的代替CGI脚本程序的一种应用,它可以与数据库和其它程序进行 ...

  9. 【工控老马】labview 调用HslCommunication.dll 教程

    LabVIEW通过Hs ICommun icat ion 组件与西门门子Smart200 PLC 通信 1.所需软件 LabVIEW.HslCommunication.dll 2. HslCommun ...

  10. 【工控老马】用西门子PLC构成管道压力控制系统

    摘要:系统由压力传感器.压力.可编程控制器.水泵.按钮等组成,编程控制器程序是按照一定顺序开机或停机,保持系统压力相对稳定. 1引言 随着科学技术的发展,世界上各大公司相继生产出许多不同类型的可编程控 ...

最新文章

  1. python名称由来_Python的由来与使用介绍
  2. 添加与编辑共用一个jsp页面时,控制按钮的显示与隐藏
  3. 阿米洛键盘取消win_阿米洛花旦娘静电容V2键盘测评:不止是一把好看的键盘
  4. 面向对象的数据存储方式
  5. python爬取今日头条的文章_Python3爬取今日头条有关《人民的名义》文章
  6. ITIL好看不好吃?(四)
  7. eclipse中导入maven项目时pom文件报错
  8. 《R Cookbook》中文笔记
  9. Springboot thymeleaf i18n国际化多语言选择
  10. 天翼云高可用虚拟IP(HAVIP)实践
  11. SpringBoot整合WebService实例
  12. java实现代理服务器
  13. Android术语查询软件,术语在线app_术语在线查询_学术术语在线-多特软件站安卓网...
  14. 用html实现彩虹动画
  15. IDEA中一直Update indexing问题
  16. 微信界面Android实现
  17. Prometheus源码系列:指标缓存(scrapeCache)
  18. 2022 GopherChina大会紧急通知!
  19. 目标检测—安全帽检测实践
  20. DayDayUp:我是CSDN开发者生态联盟成员“一个处女座的程序猿”:渡己是一种能力,渡人是一种格局

热门文章

  1. 人脸识别帧数太低的解决方法
  2. 埃氏筛_四种形式 ( pass even , bool , char , differently judge )
  3. “菜刷刷”系统装机流程
  4. 新西兰 计算机 转专业,新西兰留学后如何转学转专业?
  5. 标准模型与随机预言模型的比较
  6. 被誉为现代电子计算机之父是,成教云: 人们习惯上尊称图灵为现代电子计算机之父。...
  7. 海康网络摄像机与电脑交互,有网络和无网络两种方式读取URL视频流,以及无网络情况下配置IP地址
  8. 文档无法保存 读取文档时出现问题(135)
  9. php常用的终止语录,下定决心结束感情的话 终止感情的经典语录
  10. Cesium中获取坐标点地形高程的方法