OPCClient和OPCServer在Windows上运行方式的恩怨
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上运行方式的恩怨的更多相关文章
- OPC测试常用的OPCClient和OPCServer软件推荐
各位在进行OPC通讯时,常会遇到两种情况: 1)使用一个OPCClient在同一台计算机上连接远程计算机上的多个OPCServer时,发现某个OPCServer是通畅的,但其他的OPCServer却无 ...
- Windows 上 GitHub Desktop 的操作[转]
第1章 上传开源代码至GitHub 1 1.1 git Windows 客户端 1 1.2 注册GitHub账户 2 1.3 登录 2 1.4 创建本地代码仓库 2 1. ...
- Windows 上 GitHub Desktop 的操作
目 录 第1章 上传开源代码至GitHub 1 1.1 git Windows 客户端 1 1.2 注册GitHub账户 2 1.3 登录 2 1.4 创建本地代码仓库 ...
- Windows 上安装 Jekyll.
Jekyll是一个静态网站生成工具.它允许用户使用HTML.Markdown或Textile来建立静态页面,然后通过模板引擎Liquid(Liquid Templating Engine)来运行. 原 ...
- 在Windows上安装Elasticsearch 5.0
在windows上安装Elasticsearch Elasticsearch可以使用.zip软件包安装在Windows上. elasticsearch-service.bat命令,它将设置Elasti ...
- 使用Gitblit 在windows 上部署你的Git Server
Gitblit: 在windows 上部署你的Git Server 前言 之前在dudu的文章里看到过用bonobogit 部署在 IIS 7.5 上的Window 平台的git 服务器.学着部署使用 ...
- 在 Windows 上安装Rabbit MQ 指南
rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. Ra ...
- 在Windows上安装虚拟机详细图文教程
用虚拟机来安装最新的软件,安装最新的系统等等比较保险,可以避免安装不顺利影响自己原来的系统和应用,想尝鲜又担心自己完全更换系统不适应的朋友可以尝试. 虚拟机下载:https://yunpan.cn/c ...
- flask在windows上用mod_wsgi部署
flask在windows上用mod_wsgi部署也是折腾了不少时间,下面就总结下. 首先下载Apache httpd,我认为Apache Hans比较好: 一般这种情况下,你的python环境已经安 ...
随机推荐
- iOS自动化探索(九)使用Jenkins自动化打包并发布iOS App
继前一篇: Mac环境下安装Jenkins Jenkins安装好后, 我们试着创建一个iOS自动打包并发布的任务 iOS App构建必须在MAC上面使用xcode进行,所以我们要安装下xcode集成插 ...
- wxpython的简单的应用
import wximport wx.xrc import pandas as pd from conf.env import * # 允许选择的文件wildcard = "Python s ...
- UML_00_资源帖
一.官方文档 https://www.uml-diagrams.org/ https://www.omg.org/spec/UML/ 二.精选资料 UML教程-w3cschool UML建模图实战笔记 ...
- 2018-2019-2 网络对抗技术 20165202 Exp6 信息搜集与漏洞扫描
博客目录 一.实践目标 二.实践内容 各种搜索技巧的应用 DNS IP注册信息的查询 基本的扫描技术:主机发现.端口扫描.OS及服务版本探测.具体服务的查点 漏洞扫描:会扫,会看报告,会查漏洞说明,会 ...
- nginx Linux 开启自启
编辑 /etc/init.d/nginx 添加一下内容 根据路劲修改. 添加可执行权限 chmod +x /etc/init.d/nginx 开启自启 chkconfig nginx on ...
- VS2010上写QT代码,但是显示不出来QString的值-解决办法
我的配置是vs2010和qt,debug下看不到 QString的值 根据 http://www.cnblogs.com/russinovich/archive/2012/06/29/2569898. ...
- stark组件
写一个stark组件仿造admin的功能 1:新建一个stark的app 问题:在django每次启动会扫描目录下所有的admin文件,需要扫描项目目录下的每个stark文件,我们需要怎么做 1:看在 ...
- js之购物车案例
这里主要提供思路: 一共两个页面通过原生来实现,我们需要对cookie进行封装. 在商品列表页,我们将点击添加的商品放入一个对象中,而后将该对象放入数组中,一个对象可以说就是一个商品.在购物车页面 ...
- BZOJ4033 HAOI2015 树上染色 【树上背包】
BZOJ4033 HAOI2015 树上染色 Description 有一棵点数为N的树,树边有边权.给你一个在0~N之内的正整数K,你要在这棵树中选择K个点,将其染成黑色,并将其他的N-K个点染成白 ...
- VS 编译太慢了吗?新建解决方案配置关闭一部分项目的编译
手头的解决方案真大!里面的项目个数达到了 30 个或是 50 个?然而接近一半是单元测试项目和辅助工具.再加上一些不尽如人意的项目优化,编译速度真的是无力吐槽.幸好 Visual Studio 提供了 ...