编写 opc 客户端的思路

1. 使用OPC Client浏览服务器, 查看测试代码修改后的结果。

2. 根据OPC Client搜集到的服务器信息编写代码和服务器交互

3. OPC Client 操作或编程访问OPC 服务器的步骤
3.1 连接 OPC 服务器
3.2 创建 Group 到连接
3.3 遍历OPC服务器的所有的leaf item, 添加需要的 leaf item 到 Group
3.4 现在可以
读取 item 的值
监听 Group 的 DataChange 事件,获取 item 的最新值
调用 Group 的方法异步修改 item 的值
调用 item 的方法同步修改值

基础知识

OPCItems, OPCItem api

OPCItems
.Parent 只读的上级OPCGroup的引用
.Count .Item(ItemSpecifier) 返回 OPCItem, ItemSpecifier 是 1 开头的索引值
.GetOPCItem(ServerHandler) 返回 OPCItem, ServerHandler 是 OPCItem 的 ServerItem 属性值
.AddItems(Count, ItemIDs, ClientHandles, ServerHandlers, Errors, RequestedDataTypes, AccessPaths) 批量添加 OPCItem 到 OPCItems
.Remove(Count, ServerHandles, ByRef Errors) OPCItem
.Parent
.ClientHandle 服务器通知数据变化时 KepGroup_DataChange, 会返回 ClientHandle。 可以快速定位数据
.ServerHandle
.ItemID
.IsActive
.Value
.Quality
.TimeStamp
.Read (Source, Optional ByRef Value, Optional ByRef Quality, Optional ByRef TimeStamp) 同步刷新 OPCItem 数据
.Write (Value) 同步修改 OPCItem value

OPCItem Active, InActive

Active can be 'on' or 'off'. If Active is 'on', the OPC server will return data for the group or item when requested by the read function or when the corresponding data items change (subscriptions). If Active is 'off', the OPC server will not return information about the group or item.

deadband

如果OPC服务器支持不敏感带(DeadBand),而且OPC标签的数据类型是模拟量的情况,只有现在值与前次值的差的绝对值超过一定限度时,才更新缓冲器数据并通知OPC应用程序。由此可以无视模拟值的微小变化,从而减轻OPC服务器和OPC应用程序的负荷。

OPC 对象说明

OPC Server对象
主要功能为:1、创建和管理OPC Group对象;
2、管理服务器内部的状态信息;
OPC Group对象
主要功能为:1、管理OPC Group对象的内部状态信息;
2、创建和管理Items对象。
3、OPC服务器内部的实时数据存取服务(同步与异步方式)。
OPC组中有以下几个主要属性:
Name :组的名字 ;Active:组的激活状态标志 ;Update Rate OPC:服务器向客户程序提交数据变化的刷新速率;Percent Dead band:数据死区,即能引起数据变化的最小数值百分比。 OPC ITEM 是非COM对象,在OPC标准中用来描述实时数据,是客户端不可见的对象。代表了与服务器中的数据的连接,它并不是数据源,而仅仅是与数据源的连接。每个项都有以下主要属性: Active项的激活状态、Value项的数值、类型为VARIANT、Quality项的品质,代表数值的可信度,类型为SHORT、TimeStamp时间戳,代表数据的存取时间。

OPC 数据类型

Byte,   字节
Word, 16位无符号整型
Short 无符号短整型
DWord, 32位无符号整型
Long, 32位符号整型
Float 浮点型

OPC 节点值的含义

  1. 问 PLC 开发
  2. 部分可以去看PLC调试时写的 LabVIEW 文件

OPC Server 的配置工具, 浏览/添加节点到服务器, 查看节点的值

OPC Client 可以浏览OPC 服务器节点, 查看,修改节点值

不是所有的节点都有值。

不是所有的节点都能写.

这个客户端使用最方便

这个客户端的操作思路,类似写代码连接 OPC 服务器。

所以用这个客户端方便,后面写代码

常见问题

使用本地 opc 测试服务器开发 opc 客户端

实际开发中发现, 连接测试服务器开发行不通。 连接NI的OPCServer操作没有问题,但同样的操作连接测试服务器会抱错。

  1. 打开 OPC 测试服务器软件

  2. 注册 OPC 服务器

  3. 安装 OPC 2.0 组件

  4. 使用 OPC Client 连接测试服务器

在 win64位系统无法调用 OPCAutomation

不稳定,有时行,有时不行.

http://www.cnblogs.com/DannielZhang/p/5551708.html
首先将 OPCDAAuto.dll 拷贝到C:\windows\SysWow64 下,再使用regsvr32 进行注册。
这样之后vs里就可以正常引用了,当然需要在添加引用时选择COM组件里找到这个类库。

数据修改不成功

opc 节点有数据类型, 如果数据类型不对,客户端看上去写入成功。
服务端没有修改成功。

参考资料

OPC 接口文档

OPC C#完整客户端

OPC C#代码参考

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

最新文章

  1. 用Fmx调用Bass.dll
  2. C#动手实践:Kinect V2 开发(2):数据源工作原理及红外源Demo
  3. C++ 全局变量、局部变量、静态全局变量、静态局部变量的区别
  4. 转载:Scalers:要持续行动,不要自我感动
  5. Furatto – 轻量,友好的响应式前端开发框架
  6. Android应用内语言切换实现(转)
  7. Yslow网站性能优化工具
  8. JMeter监控Linux服务器资源案例
  9. cocoa pods报错The dependency `Reveal-iOS-SDK` is not used in any concrete target.
  10. POJ 3311 Hie with the Pie(Floyd+状态压缩DP)
  11. Redis缓存异常的容错实现方法( .net)
  12. 多线程归并排序的实现 java
  13. vmware下linux 如何添加硬盘
  14. Struts2多文件上传
  15. 【POJ】2155 Matrix
  16. C_FORCE_ROOT linux环境变量设置
  17. [Windwos Phone 8]多个按钮的共用事件
  18. HDU 3732 Ahui Writes Word 多重背包优化01背包
  19. ViewPager适配器学习记录( pageAdapter和FragmentPagerAdapter/FragmentStatePagerAdapter))
  20. Jenkins+git+gitlab实现持续自动集成部署

热门文章

  1. ros pluginlib 段错误
  2. 关于部署传统的Dynamic Web项目
  3. java8 forEach Map List[转载]
  4. MVCS框架的注意点
  5. boost-智能指针
  6. mysql重装之后 复制data
  7. vue中的路由嵌套
  8. Day1-python基础
  9. java中的标识符、关键字、保留字
  10. 30条SQL查询优化原则