http://www.diangon.com/wenku/PLC/201504/00021970.html

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

OPCClient和OPCServer在Windows上运行方式的恩怨的更多相关文章

  1. OPC测试常用的OPCClient和OPCServer软件推荐

    各位在进行OPC通讯时,常会遇到两种情况: 1)使用一个OPCClient在同一台计算机上连接远程计算机上的多个OPCServer时,发现某个OPCServer是通畅的,但其他的OPCServer却无 ...

  2. Windows 上 GitHub Desktop 的操作[转]

    第1章 上传开源代码至GitHub    1 1.1 git Windows 客户端    1 1.2 注册GitHub账户    2 1.3 登录    2 1.4 创建本地代码仓库    2 1. ...

  3. Windows 上 GitHub Desktop 的操作

    目 录 第1章 上传开源代码至GitHub    1 1.1 git Windows 客户端    1 1.2 注册GitHub账户    2 1.3 登录    2 1.4 创建本地代码仓库     ...

  4. Windows 上安装 Jekyll.

    Jekyll是一个静态网站生成工具.它允许用户使用HTML.Markdown或Textile来建立静态页面,然后通过模板引擎Liquid(Liquid Templating Engine)来运行. 原 ...

  5. 在Windows上安装Elasticsearch 5.0

    在windows上安装Elasticsearch Elasticsearch可以使用.zip软件包安装在Windows上. elasticsearch-service.bat命令,它将设置Elasti ...

  6. 使用Gitblit 在windows 上部署你的Git Server

    Gitblit: 在windows 上部署你的Git Server 前言 之前在dudu的文章里看到过用bonobogit 部署在 IIS 7.5 上的Window 平台的git 服务器.学着部署使用 ...

  7. 在 Windows 上安装Rabbit MQ 指南

    rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...

  8. 在Windows上安装虚拟机详细图文教程

    用虚拟机来安装最新的软件,安装最新的系统等等比较保险,可以避免安装不顺利影响自己原来的系统和应用,想尝鲜又担心自己完全更换系统不适应的朋友可以尝试. 虚拟机下载:https://yunpan.cn/c ...

  9. flask在windows上用mod_wsgi部署

    flask在windows上用mod_wsgi部署也是折腾了不少时间,下面就总结下. 首先下载Apache httpd,我认为Apache Hans比较好: 一般这种情况下,你的python环境已经安 ...

随机推荐

  1. ansible入门一(Ansible介绍及安装部署)

    本节内容: 运维工具 Ansible特性 Ansible架构图和核心组件 安装Ansible 演示使用示例 一.运维工具 作为一个Linux运维人员,需要了解大量的运维工具,并熟知这些工具的差异,能够 ...

  2. 转载:【Oracle 集群】RAC知识图文详细教程(二)--Oracle 集群概念及原理

    文章导航 集群概念介绍(一) ORACLE集群概念和原理(二) RAC 工作原理和相关组件(三) 缓存融合技术(四) RAC 特殊问题和实战经验(五) ORACLE 11 G版本2 RAC在LINUX ...

  3. C# 设计模式巩固 - 简单工厂模式

    前言 设计模式的文章很多.鄙人不才文笔也不咋地.写这篇只为巩固下基础知识,万一不小心帮到了您,是我莫大的荣幸!写的不好欢迎码友指正,废话结束开始进入正题. 介绍 - 简单工厂模式 官方定义:(尴尬~貌 ...

  4. ASP.NET网站使用Kindeditor富文本编辑器配置步骤

    1. 下载编辑器 下载 KindEditor 最新版本,下载页面: http://www.kindsoft.net/down.php 2. 部署编辑器 解压 kindeditor-x.x.x.zip ...

  5. 严重:Error configuring application listener of class org.springframework.web.util.IntrospectorCleanupListener

    mave项目换了一个新的工作空间时出现的问题 原因: 其实是你的jar文件没有同步发布到自己项目的lib目录中(如果你是用Maven进行构建的话) 可以试试 下面的办法 解决方案: 项目点击右键 点击 ...

  6. 配置django上传文件目录的http访问

    1.假设你的html模版文件使用以下路径来访问上传文件内容: url="{{ MEDIA_URL }}{{ images.image }}" 2.设置settings文件: MED ...

  7. L154

    Several possessions of the late physicist's Stephen Hawking will be included in an upcoming auction ...

  8. L146 Space Station Hole Cause Will Be Determined

    The head of the U.S. space agency said Tuesday he's sure that investigators will determine the cause ...

  9. softmax的多分类

    关于多分类 我们常见的逻辑回归.SVM等常用于解决二分类问题,对于多分类问题,比如识别手写数字,它就需要10个分类,同样也可以用逻辑回归或SVM,只是需要多个二分类来组成多分类,但这里讨论另外一种方式 ...

  10. 【pandas】pandas.Series.str.split()---字符串分割

    原创博文,转载请注明出处! 本文代码的github地址       series中的元素均为字符串时,通过str.split可将字符串按指定的分隔符拆分成若干列的形式. 例子: 拆分以逗号为分隔符的字 ...