opc服务器不稳定的原因,OPC Client和OPC Server容易出现通讯故障,原因是什么?

OPC Server是一套利用微软的COM/DCOM技术实现工业自动化资料获取的架构。OPC Server提供OPC接口,它将与之相连的物理设备(PLC)的信息值通过接口返回到客户端应用程序。也就是说,客户端通过这些接口,可以获得与OPC Server连接的物理设备的信息。

OPC Client通过端接OPC Server 提供的接口,可以取得与 OPC Server 相连的硬件装置的信息,而无须了解这些硬件装置的细节信息。

但是,相信很多人都被OPC Client与OPC Server之间的通讯弄得头疼不已吧,通过几次远程协助后,总结了OPC Client和OPC Server在Windows上运行方式的恩怨,希望对大家有所帮助。

目前市场上的OPC Client和OPC Server软件在Windows上的运行方式主要有两种:Windows 桌面程序和Windows NT服务。由于OPC CLient和OPC Server不是同一个厂家的软件,又由于软件的多样性,导致使用时出现这些现象:

1、OPC CLient连接目标OPC Server时无法连接,但在OPC Server计算机上明明看见OPC Server进程已经启动。

2、OPC CLient连接目标OPC Server时,虽然能连接,也能看见测点,但无法获取到数据。

多次现场测验后发现,这些问题是OPC Client和OPC Server软件在Windows上的运行方式不同导致的。也就是说,OPC CLient运行Windows NT服务方式,而OPC Server运行桌面程序方式。但是当OPC CLient是Windows 桌面程序方式,OPC Server是Windows NT服务时,基本不会出现上述现象。这是为什么呢?

原因是这样的:

OPC Client和OPC Server都是基于DCOM的应用,其特点是OPC Server无需先运行或启动,等待OPC CLient请求时,操作系统会直接将OPC Server拽起来。这种可以随用随启的机制,非常实用。

但这种机制处理不好,会导致一些问题。当OPC CLient是Windows NT服务时,OPC Server被拽起来后,是运行在System这个系统账户下面的。相对于Windows的桌面用户来说,是另外一个隔离开的空间。因此当桌面运行类型的OPC Server被Windows NT服务方式的OPC CLient拽起来后,被运行在System这个系统账户的空间。而如果这个OPC Server程序又做了全局唯一进程运行的限制或与数据库只允许一个TCP连接时,上述的两种现象基本就会出现。这就是大家经常会遇到的OPC通讯故障现象。

如果让自己开发的OPC程序兼容性更好呢?

1、当开发OPC CLient程序时,最好使用Windows桌面程序方式,这种方式可兼容OPC Server程序运行在Windows桌面程序方式和Windows NT服务方式。

2、当开发OPC Server程序时,最好使用Windows NT服务方式,这种方式可兼容OPC Client程序运行在Windows桌面程序方式和Windows NT服务方式。

如果很不幸遇到了Windows NT服务的OPC Client去采集Windows 桌面程序的OPC Server(加上OPC Server本身的全局唯一限制),那么你可以去Windows NT服务的管理器中将Windows NT服务的OPC Client更改为指定的系统用户运行,大多数情况下可以解决问题。

希望这篇文章能帮您解决问题~喜欢OPC Server的朋友不妨下载免费版来体验一下~

想要购买OPC Server正版授权,或了解更多产品信息请点击“咨询在线客服”

扫描关注慧聚IT微信公众号,及时获取最新动态及最新资讯

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至hey@evget.com

文章转载自:51CTO

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C#中,可以使用OPC库来实现OPC客户端与OPC服务器之间的通信。以下是使用OPC库实现远程访问OPC服务器的步骤: 1. 安装OPC库:可以从NI官网下载并安装NI OPC Servers和NI OPC Client等相关组件。 2. 引用OPC库:在Visual Studio中,可以通过NuGet包管理器安装OPC库,并将其添加到项目的引用中。 3. 创建OPC客户端对象:可以使用OPC库提供的OpcClient类创建OPC客户端对象。 4. 连接OPC服务器:使用OPC客户端对象的Connect方法连接OPC服务器,需要指定OPC服务器的IP地址和名称。 5. 浏览OPC服务器:使用OPC客户端对象的Browse方法浏览OPC服务器中的节点和标签。 6. 读取OPC服务器数据:使用OPC客户端对象的Read方法读取OPC服务器中的数据。 7. 写入OPC服务器数据:使用OPC客户端对象的Write方法写入数据到OPC服务器。 下面是一个简单的示例代码: ``` using Opc; using Opc.Da; // 创建OPC客户端对象 OpcClient client = new OpcClient(); // 连接OPC服务器 client.Connect("opc.tcp://localhost:4840", new Opc.ConnectData(new System.Net.NetworkCredential())); // 浏览OPC服务器 BrowseElement[] elements = client.Browse(new ItemIdentifier[] { new ItemIdentifier("Root") }); // 读取OPC服务器数据 ItemValueResult[] results = client.Read(new Item[] { new Item(new ItemIdentifier("Random.Int1"), true, "") }); // 写入OPC服务器数据 client.Write(new Item[] { new Item(new ItemIdentifier("Random.Int1"), 123) }); // 断开OPC服务器连接 client.Disconnect(); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值