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

发布时间:2024-03-21
近期在一个项目中调试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。选中服务的名称并双击,在弹出的面板上切换到登录。将登录身份修改为此账户,填入指定账户的名称和密码,点“确定”按钮即可。
2. 重启opcclient的服务。
上一个:一加6怎么分屏多任务(一加6怎么分屏小窗口手机)
下一个:膨润土复合防水毯是什么?

肇兴侗寨有哪些特色美食
第一次起诉离婚多久可以起诉第二次
供应商给2000元红包犯法吗
中国茶道中的艺、修、道
怎么让sd卡在手机上显示,怎样才能使内存卡在手机里显示
盆栽月季如何度夏
厚声25121WF4300T4E今日行情、最新报价
单片机中断的IE和IP寄存器
波兰lumel互感器
CC0201JRNPO9BN220,NPO 0201 22pF ±5% 50V