DCOM机制给OPC通讯带来的麻烦及解决办法

来源:本站
导读:目前正在解读《DCOM机制给OPC通讯带来的麻烦及解决办法》的相关信息,《DCOM机制给OPC通讯带来的麻烦及解决办法》是由用户自行发布的知识型内容!下面请观看由(电工学习网 - www.9pbb.com)用户发布《DCOM机制给OPC通讯带来的麻烦及解决办法》的详细说明。
近期在一个项目中调试opc通讯时遇到如下现象,我估计也有不少的同学遇到类似现象。
场景如下:在一台Windows 7的计算机上安装了某国产组态软件,组态软件以OPCServer方式对外提供数据,组态软件的程序都是带界面的程序,OPCServer程序在操作系统中只能运行一个进程实例;同时在此计算机安装某国外软件的OPCClient程序,用于采集组态软件OPCServer的数据,OPCClient程序是标准的Windows 服务。
现象描述如下:
1)如果带界面的OPCServer软件已经通过当前登录账户运行起来,然后OPCClient以Windows服务方式运行,这种情况下OPCClient无法与OPCServer通讯。
2)如果带界面的OPCServer软件未先运行,OPCClient以Windows服务方式运行后通过System账户将组态软件的OPCServer运行起来,这种情况下OPCClient可以与OPCServer通讯。
3)如果而带界面的OPCServer软件被Windows服务方式的OPCClient以System账户运行起来后,这时如使用其他带界面的OPCClient程序访问此OPCServer,发现无法通讯;
总结一下这类情况就是:
对于桌面方式运行且只允许一个实例运行的OPCServer软件,如果OPCServer程序和OPCClient程序都是以非SYSTEM账户或都是以SYSTEM账户运行,那么可以通讯;如果一个是非SYSTEM账户;另外一个是SYSTEM账户,那么不能通讯。
遭遇这种现象主要是由于OPC的采用的COM机制导致的,COM机制这里就不说了,当OPCClient运行后,就和目标OPCServer进行通讯,在操作系统允许的空间中检测OPCServer是否存在和是否运行,如果发现OPCServer在运行,就与OPCServer通讯,如果OPCServer未运行,就通知操作系统的COM协调器将目标OPCServer运行起来。在上面描述的现象中,如果带界面的OPCServer软件已经通过当前登录账户运行起来,而OPCClient以Windows服务方式运行在SYSTEM账户的空间,那么OPCClient就未能检测到OPCServer已经运行,于是OPCClient就让COM协调器在本空间中运行OPCServer,但OPCServer运行时,又检测到自己在当前登录账户的空间已经启动了,因此就拒绝再次运行。所以就发生了Windows 服务方式的OPCClient和带界面的OPCServer无法通讯的问题。
如何解决此类问题呢?按照如下步骤操作一下,基本可以解决Windows 服务方式的OPCClient和带界面的OPCServer无法通讯的问题。
1. 运行“控制面板”下“管理工具”下的“服务”,找到Windows 服务方式的OPCClient。选中服务的名称并双击,在弹出的面板上切换到登录。将登录身份修改为此账户,填入指定账户的名称和密码,点“确定”按钮即可。

DCOM机制给OPC通讯带来的麻烦及解决办法

DCOM机制给OPC通讯带来的麻烦及解决办法

2. 重启OPCClient的服务。
提醒:《DCOM机制给OPC通讯带来的麻烦及解决办法》最后刷新时间 2023-07-10 04:03:11,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《DCOM机制给OPC通讯带来的麻烦及解决办法》该内容的真实性请自行鉴别。