OPC通讯配置详解.docx
《OPC通讯配置详解.docx》由会员分享,可在线阅读,更多相关《OPC通讯配置详解.docx(6页珍藏版)》请在冰豆网上搜索。
OPC通讯配置详解
RevisedbyLiuJingonJanuary12,2021
OPC通讯配置详解
OPC
通讯协议解析
1通讯步骤
1.1第一问
OPCClient和OPCServer之间通讯谁是主动的?
答:
当然是OPCClient。
1.2第二问
OPCClient第一次动作做了什么
答:
从大多数OPCClient行为来看,一是自动遍历本机已注册的OPCServer列表名称,二是等待用户定义预访问的OPCServer的信息。
1.3第三问
OPCClient第二次动作做了什么?
答:
OPCClient的第一步动作会产生分支,访问本地OPCServer的这个分支就不再说了。
要分析的是网络方式访问OPCServer这个分支。
第二个动作是根据用户指定的IP地址或计算机名去查询远程计算机上已注册的OPCServer列表名称。
从这步开始就比较复杂了。
1.4第四问
OPCClient是用什么协议去和远程计算机交流的?
答:
用的是TCP/IP这个协议。
OPCClient用TCP/IP135端口去打开远程计算机的那一扇门。
简单解释下:
在Windows操作系统中,135端口主要用于使用PRC协议并提供DCOM(分布式组件对象模型)服务,通过RPC可以保证在一台计算机上运行的程序可以顺利地执行远程计算机上的代码。
使用DCOM可以通过网络直接进行通信,能够跨包括HTTP协议在内的多种网络传输。
多年来,135端口一直被人利用。
1.5第五问
OPCClient去访问远程计算机的TCP135这扇门时,第一道关卡是谁?
答:
网络安全防火墙是第一关卡,网络安全放火墙中,如果不允许远程计算机的TCP135端口,那么连接就被掐断了。
后续的通讯就无法进行。
要想能向下进行,网络安全防火墙必须允许对TCP135这扇门的访问。
这里需要在防火墙中将135端口例外操作。
1.6第六问
各系统的安全策略有什么不同?
答:
(一)Windows2000的安全策略:
支持来访者以自己的身份进行验证,且不拒绝来宾用户从网络中访问,来宾用户默认启用。
(二)WindowsXP和Windows2003的安全策略:
支持来访者以自己的身份进行验证或将所有来访者都看成是来宾访问,默认将所有来访者都看成来宾访问。
且默认拒绝Guest用户从网络访问本机。
来宾用户默认禁用。
(三)Windows7的安全策略:
支持来访者以自己的身份进行验证或将所有来访者都看成是来宾访问(经典-对本地用户进行身份验证,不改变其本来身份),默认支持来访者以自己的身份进行验证。
且默认拒绝Guest用户从网络访问本机(拒绝从网络访问这台计算机)。
来宾用户默认禁用。
(四)Windows2008的安全策略:
支持来访者以自己的身份进行验证或将所有来访者都看成是来宾访问,默认支持来访者以自己的身份进行验证。
来宾用户默认禁用。
配置OPCClient和OPCServer之间的网络通讯,先得看看对应的操作系统。
选好安全审核机制再说。
举例说明:
例1:
OPC?
Client和OPC?
Server都在Windows?
2000操作系统上来举个例子:
由于操行系统都是Windows?
2000,那么安全策略都是来访者以自己的身份进行验证(自己指OPC?
Server)。
这里的以来访者以自己的身份进行验证是什么意思?
就是指OPC?
Client去敲OPC?
Server的135这扇门时,会告知OPC?
Client的登录用户名是谁,我的登录密码是多少。
OPC?
Server所在的操作系统通过来访者告知的用户名和密码去自己的用户列表中去查找是否也存在这个用户,密码是否正确。
如果用户名和密码正确,则进入下一步工作。
例2:
OPCClient和OPC?
Server都在Windows?
XP操作系统上来举个例子:
由于操行系统都是Windows?
XP,那么默认的安全策略都是将所有来访者都看成是来宾访问。
(对本地用户进行身份验证,其身份为来宾。
)且默认拒绝Guest用户从网络访问本机。
这里的将所有来访者都看成是来宾访问是什么意思?
就是指OPC?
Client去敲OPC?
Server的135这扇门时,会告知,我的登录用户名是谁,我的登录密码是多少。
OPC?
Server所在的操作系统却不管你是谁,所有来访者一视同仁,都是来宾,而且按照规定,来宾都拒绝掉。
这下可好,后面二者之间的通讯也不用继续了。
上面的
(一)这种情况工作还能继续往下做,
(二)这种情况就完全不行了,啥都不管了。
因此
(二)这种情况是需要修改安全策略的,一种是将安全策略修改为来访者以自己的身份进行验证;另外一种是将“拒绝从网络中访问此计算机”规则中的来宾用户给去掉,从用户管理中将来宾用户启用,且密码为空。
(仅来宾-对本地用户进行身份验证,其身份为来宾)
1.7第七问
网络防火墙允许进入,操作系统的安全审核也通过了,终于可以访问OPCServer了吧?
答:
还得问一问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库文件。
(二)OPCserver是否注册?
OPC?
Server未注册,是无法访问的,OPC?
Server必须正确注册。
而现在的不少OPC?
Server安装后也不会自动注册,需要手动在程序界面上提供的功能按钮进行注册。
(三)OPCserver的主程序是否存在?
有的时候OPC?
Server注册了,但主程序可能被误删除或改名了,这个操作系统可不会告诉你。
只能自己检查一下或重新注册一遍。
(四)OPCServer的主程序与其他程序是否有依赖关系?
因为OPC?
Server只是软件对外提供数据的一种标准接口,它本身也是通过从其他的软件获取数据,常见的如组态软件,实时数据库等,而现在的一些OPC?
Server启动时会检查依赖的程序是否启动,如未启动,要么退出,要么啥都提供不了,也不会告诉OPC?
Client出了啥问题。
(五)OPC?
Server在DCOM环境中自己的配置信息,OPC?
Server在DCOM的环境中的配置信息如下图。
如OPC?
Server是NT服务方式启动,那么“标识”这一栏就为系统帐户,不推荐使用“下列用户”。
如OPC?
Server是COM方式注册,那么“标识”这一栏默认为“交互式用户”或“启动用户”(各家OPC?
Server注册时处理方法不太一样),最好都使用。
“交互式用户”,不推荐使用“启动用户”和“下列用户”。
具体原因后期再说。
(OPCServer是NT服务方式启动,标识这栏为“系统账户(仅用于服务)”)
(OPCServer是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中很可能就没有测点。
如何解决?
重启一下就好了嘛。
2OPCClient/OPCServer
2.1问题现象
目前市场上的OPCClient与OPCServer软件在Windows上的运行方式有Windows桌面程序和WindowsNT服务。
本来也没啥。
但由于OPCClient是一个厂家的软件,而OPCServer是另一家的软件,正因为软件的多样性,也就导致了如下一些现像:
1:
OPCClient连接目标OPCServer,发现无法连接,但在OPCServe计算机上明明看见OPCServe进程已经启动。
2:
OPCClient连接目标OPCServer,能连接,也能看见测试点,但无法获取到数据。
经过多次现场的积累后,发现此类问题多出现在OPCClient和OPCServer软件在Windows上运行方式不同导致的。
也就是说,OPCClient和OPCServer软件的运行方式不一样。
譬如:
OPCClient是Windows桌面程序方式,OPCServer是WindowsNT服务时,发现上面的现象基本不出现。
这是为什么呢?
2.2问题解决
原因如下:
OPCClient和OPCServer都是基于DCOM的应