您当前的位置:五五电子网电子知识plc技术解决方案DCOM机制给OPC通讯带来的麻烦及解决办法 正文
DCOM机制给OPC通讯带来的麻烦及解决办法

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

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

2. 重启OPCClient的服务。

本文关键字:暂无联系方式解决方案plc技术 - 解决方案