opc-deadband(死区)如何使用? 点击:7259 | 回复:15



张琦

    
  • 精华:1帖
  • 求助:0帖
  • 帖子:5帖 | 47回
  • 年度积分:0
  • 历史总积分:115
  • 注册:2007年3月25日
发表于:2007-09-13 20:53:00
楼主
请教各位:
        在opc组的属性里有deadband死区这一属性,当数据变化超过deadband设置时,client接受 opc server的数据。
        请问:下面这样理解对吗?
             “当数据变化超过deadband设置时,就会触发datachange事件。或者是,只有当数据变化超过deadband设置时才会触发datachange事件”
经过我的测试,代码如下:
'添加组
Set MyGroup = MyGroups.Add("Group")
MyGroup.DeadBand = 60
但是结果是,某个项(变量)稍微变化一点点就会触发datachange事件!!!?????

这是为什么?

是我理解有误还是代码不对呢?



张琦

  • 精华:1帖
  • 求助:0帖
  • 帖子:5帖 | 47回
  • 年度积分:0
  • 历史总积分:115
  • 注册:2007年3月25日
发表于:2007-09-14 22:47:00
1楼
请大家多给些意见!

张琦

  • 精华:1帖
  • 求助:0帖
  • 帖子:5帖 | 47回
  • 年度积分:0
  • 历史总积分:115
  • 注册:2007年3月25日
发表于:2007-09-14 22:47:00
2楼
没有人会吗?

张琦

  • 精华:1帖
  • 求助:0帖
  • 帖子:5帖 | 47回
  • 年度积分:0
  • 历史总积分:115
  • 注册:2007年3月25日
发表于:2007-09-18 19:36:00
3楼
自己在顶一下!

理解有误的地方请大家多指点!

含图片

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 82回
  • 年度积分:0
  • 历史总积分:415
  • 注册:2002年6月07日
发表于:2007-09-19 09:38:00
4楼
死区不是触发datachange的,死区一般用来控制报警,如你的报警上限是200,如果数据在199,201间频繁变动,就会产生很多越限报警,和越限报警恢复。加上死区就是保证数据在死区内时不频繁报警。

[url=http://www.uScada.com]http://www.uScada.com[/url]

kking

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 116回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2002年7月09日
发表于:2007-09-19 11:14:00
5楼
OPC DA 里的 deadband 和报警没什么关系。
楼主的理解基本正确,但要清楚你连接的OPC服务器是否支持 deadband。可以找个标准的OPC服务器试验一下你的客户程序代码,再用标准的客户软件测试一下服务器。

dotnew

  • 精华:0帖
  • 求助:0帖
  • 帖子:16帖 | 185回
  • 年度积分:0
  • 历史总积分:447
  • 注册:2007年3月08日
发表于:2007-09-20 09:43:00
6楼
死区百分比这个东西的用途是什么,我对这个参数也比较迷惑

kking

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 116回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2002年7月09日
发表于:2007-09-20 16:53:00
7楼
楼主对死区百分比的理解是基本正确的,主要用途就是滤掉微小的数据波动,避免频繁的数据通信造成系统过载。

张琦

  • 精华:1帖
  • 求助:0帖
  • 帖子:5帖 | 47回
  • 年度积分:0
  • 历史总积分:115
  • 注册:2007年3月25日
发表于:2007-10-01 21:34:00
8楼
感谢:kking和捷通模拟

另外,我用的西门子的simatic net 6.3 的opc server 
应该支持死区啊!

我回去再查查!

特别感谢 kking 

张琦

  • 精华:1帖
  • 求助:0帖
  • 帖子:5帖 | 47回
  • 年度积分:0
  • 历史总积分:115
  • 注册:2007年3月25日
发表于:2007-10-01 21:56:00
9楼
to kking

我找了个标准的客户端测试了simatic net 6.3 的opc server 

无论我将Group 的deadband设为多少,只要我改变变量的值(滑动变阻器提供模拟量),客户端的值都会变化。

是不是可以下结论,simatic net 6.3 的opc server 不支持deadband的功能呢??

大家认为呢?

张琦

  • 精华:1帖
  • 求助:0帖
  • 帖子:5帖 | 47回
  • 年度积分:0
  • 历史总积分:115
  • 注册:2007年3月25日
发表于:2007-10-07 15:14:00
10楼
顶一下 

请高手帮忙!

工控帮

  • 精华:0帖
  • 求助:0帖
  • 帖子:63帖 | 675回
  • 年度积分:0
  • 历史总积分:1418
  • 注册:2001年7月06日
发表于:2007-10-07 21:31:00
11楼
percent = ((newvalue - oldvalue) / oldvalue) * 100.0f;
你要看一下NEW VALUE与OLD VALUE的差值。

kking

  • 精华:0帖
  • 求助:0帖
  • 帖子:6帖 | 116回
  • 年度积分:0
  • 历史总积分:134
  • 注册:2002年7月09日
发表于:2007-10-09 13:57:00
12楼
建议各位认真看看OPC DA规范,死区判断并不是简单地拿新值与旧值比较差值。
Exception if (absolute value of (last cached value - current value) > (pPercentDeadband/100.0) * (EU High - EU Low) ) 

楼主可以看看simatic net 6.3服务器里的analog参数是否有EU Low/EU High属性,没有的话就肯定不会支持。
死区对于OPC服务器来说不是必须支持的,如果客户程序传递了一个非0的死区值,服务器有权利返回INVALID_PARAMETER。

张琦

  • 精华:1帖
  • 求助:0帖
  • 帖子:5帖 | 47回
  • 年度积分:0
  • 历史总积分:115
  • 注册:2007年3月25日
发表于:2007-10-12 11:25:00
13楼
谢谢 kking 和 工控帮

我去研读opc da 规范。

mustapha_wang

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 7回
  • 年度积分:0
  • 历史总积分:6
  • 注册:2009年11月24日
发表于:2009-12-04 16:03:29
14楼

Item的deadband还要通过IOPCItemDeadbandMgt.SetItemDeadband来设定。

com_er

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 1回
  • 年度积分:0
  • 历史总积分:4
  • 注册:2015年7月10日
发表于:2015-07-10 19:40:25
15楼

to 张琦


关于死区百分比这个问题,你解决了吗,我现在也碰到同样的问题,不知道如何设置这个值,我用的OPC服务器是 SIMATIC NEt 8.2,麻烦你了


热门招聘
相关主题

官方公众号

智造工程师