当前位置:
工控论坛
> >
产品
>
OPC
我要发帖
关于很多点数据采集的资源问题
点击:
1735
| 回复:
17
gongkongedit
关注
私信
精华:1099帖
求助:0帖
帖子:14392帖 | 54470回
年度积分:0
历史总积分:622
注册:2008年9月08日
发表于:2004-07-01 14:48:00
楼主
请教高手一个问题: 如果现场数据采集点很多,大约2000多个点,要读写,server端已定,请问在客户端如果直接使用读写函数,那么会不会占用很大cpu资源??如果是,怎么样在客户端解决?
分享到:
收藏
邀请回答
回复楼主
举报
kking
关注
私信
精华:0帖
求助:0帖
帖子:6帖 | 116回
年度积分:0
历史总积分:134
注册:2002年7月09日
发表于:2004-07-08 10:39:00
1楼
数据监视,也就是读,最好采用订阅方式。 另外,具体情况,具体分析,2000个数据点不算很多。
回复
引用
举报
问题1
关注
私信
精华:1帖
求助:0帖
帖子:8帖 | 16回
年度积分:0
历史总积分:45
注册:2003年11月27日
发表于:2004-07-10 21:55:00
2楼
所谓订阅方式是不是采用异步读方式???
回复
引用
举报
kking
关注
私信
精华:0帖
求助:0帖
帖子:6帖 | 116回
年度积分:0
历史总积分:134
注册:2002年7月09日
发表于:2004-07-12 08:22:00
3楼
确切地说不是一回事,异步读是客户程序发送一个读请求后立即返回,读取结果依靠回调函数获得,是“一次性”的; 订阅方式是客户程序发送请求,即订阅后立即返回,服务器不断地将数据通过回调函数传递回来,直到客户程序取消订阅或者服务器自行退出。 其实从性能上看二者差不多,即使是同步访问,也仅仅是阻塞客户程序线程而已,一般不会给服务器造成额外负担,更不会大量占用客户计算机的系统资源。 可能影响性能的,是调用读函数时,指定了从设备读取,而不是从缓冲区读取,这可能会使得一些服务器性能下降,当然了,这与具体的服务器实现有关。
回复
引用
举报
问题1
关注
私信
精华:1帖
求助:0帖
帖子:8帖 | 16回
年度积分:0
历史总积分:45
注册:2003年11月27日
发表于:2004-07-12 11:41:00
4楼
噢,我现在用的就是订阅方式,采用异步读,用回调函数自动返回,不过我把它有封装成了delphi下的控件,由用户来完成。 采用同步方式,发现数据量大的话,资源占用很厉害。
回复
引用
举报
kking
关注
私信
精华:0帖
求助:0帖
帖子:6帖 | 116回
年度积分:0
历史总积分:134
注册:2002年7月09日
发表于:2004-07-12 13:32:00
5楼
“资源占用很厉害”是CPU还是内存?是客户还是服务器占用?这个应该不难分析。
回复
引用
举报
问题1
关注
私信
精华:1帖
求助:0帖
帖子:8帖 | 16回
年度积分:0
历史总积分:45
注册:2003年11月27日
发表于:2004-07-12 15:16:00
6楼
cpu占用100%!
回复
引用
举报
deng_lp
关注
私信
精华:5帖
求助:0帖
帖子:65帖 | 2669回
年度积分:0
历史总积分:2876
注册:2001年6月19日
发表于:2004-07-13 08:32:00
7楼
影响CPU占用率的因素有: 1. 工具包是否有好的查找算法. 2. 你的回调中或读数据中是否作过优化
回复
引用
举报
问题1
关注
私信
精华:1帖
求助:0帖
帖子:8帖 | 16回
年度积分:0
历史总积分:45
注册:2003年11月27日
发表于:2004-07-13 09:22:00
8楼
邓志群: 我是这样的:服务器端是无法修改的,用的是西门子的opc,客户端是我开发的,我先添加了1000个Items(用For循环),然后再回调函数中,用数组返回。 想问一下:如何做优化? 谢谢!
回复
引用
举报
问题1
关注
私信
精华:1帖
求助:0帖
帖子:8帖 | 16回
年度积分:0
历史总积分:45
注册:2003年11月27日
发表于:2004-07-13 09:25:00
9楼
还想问一下: 对于同步方式,在请求数据量大的情况下,是不是会占用很大资源。 而采用回调函数方式,怎可在一定程度上解决这个问题?
回复
引用
举报
kking
关注
私信
精华:0帖
求助:0帖
帖子:6帖 | 116回
年度积分:0
历史总积分:134
注册:2002年7月09日
发表于:2004-07-13 09:39:00
10楼
你处理同步读返回结果的方式和在回调函数中的处理方式一样吗? 理论上讲同步/异步读对系统资源的占用应该差不多的,同步虽然阻塞,但并不占用CPU,除非OPC服务器内部对同步/异步读的实现不一样。 另外提问时请将问题描述得详细些,比如至少要说明100%的CPU是谁占用的,客户还是服务器?
回复
引用
举报
问题1
关注
私信
精华:1帖
求助:0帖
帖子:8帖 | 16回
年度积分:0
历史总积分:45
注册:2003年11月27日
发表于:2004-07-14 11:31:00
11楼
呵呵,服务器端内存不断增加,客户端资源100%,运行10几个小时,死机。另,由于封装成控件,程序流程大致是:先添加组,(后边写成了一函数)然后添加条目,采用同步方式取数据,返回,移除该条目。 用户使用该控件,直接调用函数,得到返回值,这段是放在定时器当中执行的。 请看看,这样有什么问题吗?
回复
引用
举报
kking
关注
私信
精华:0帖
求助:0帖
帖子:6帖 | 116回
年度积分:0
历史总积分:134
注册:2002年7月09日
发表于:2004-07-14 13:29:00
12楼
客户端资源100%是什么意思?客户端计算机CPU使用率100%吗? 可能是定时器间隔过短。 感觉西门子的OPC性能还可以的,不应该有内存泄漏的问题。 你的客户程序中每次调用都建立新group吗?如果是这样而又没有删除的话可能导致服务器中group对象越来越多。
回复
引用
举报
问题1
关注
私信
精华:1帖
求助:0帖
帖子:8帖 | 16回
年度积分:0
历史总积分:45
注册:2003年11月27日
发表于:2004-07-15 10:05:00
13楼
不是,初始化的时候,组只创建一次,程序退出时,释放! 对的,客户端的确是CPU占用100%
回复
引用
举报
kking
关注
私信
精华:0帖
求助:0帖
帖子:6帖 | 116回
年度积分:0
历史总积分:134
注册:2002年7月09日
发表于:2004-07-15 16:28:00
14楼
尝试加大定时器时间间隔。 另外调用同步读接口函数后释放内存资源了吗?比如ppItemValues之类。不过这个即使不释放也不大会造成服务器端内存泄漏的。
回复
引用
举报
窒息的鱼
关注
私信
精华:0帖
求助:0帖
帖子:2帖 | 16回
年度积分:0
历史总积分:22
注册:2003年7月30日
发表于:2004-07-20 13:53:00
15楼
请教困惑: 请问你的客户端使用什么开发的?是工具包还是根据da规范自己写的呀?希望能给点指点!谢谢!
回复
引用
举报
Lucifer_008
关注
私信
精华:0帖
求助:0帖
帖子:1帖 | 2回
年度积分:0
历史总积分:5
注册:2004年3月29日
发表于:2004-08-03 14:20:00
16楼
关于:西门子的opc 有没有任何资料呀?或者说我改掌握些什么呢? 最近想通过 以太网建立 PC与西门子PLC之间通讯 苦于无门 高手指教呀!
回复
引用
举报
EMAIN
关注
私信
精华:0帖
求助:0帖
帖子:7帖 | 66回
年度积分:0
历史总积分:98
注册:2003年10月31日
发表于:2004-09-17 22:19:00
17楼
TO窒息的鱼: 用VB很容易就可实现客户端访问,而且现在网上到处都是VB写的客户端源程序,基本不用修改就可使用的.
回复
引用
举报
热门招聘
相关主题
vb6.0编写的基于OPC组态软件...
[4473]
关于opc服务器的问题??
[1556]
OPCkepserver与SQL通讯实例
[5901]
请教deng_lp
[1844]
RSLinx + RsiOPCAuto.dll开发...
[7175]
项目合作
[1536]
OPC
[1645]
怎样用vb读取opc中的数据?
[10968]
Kepware宣布将主动支持OPC统...
[1366]
西门子OPC_PC STATION配置
[3261]
官方公众号
智造工程师
客服
小程序
公众号