在vb下OPC通讯效率如何提高?

xiaofeng54 2010-03-20 07:02:11
已经建立了OPC通讯,可以正常的读上数据来,我有两个timer,timer1每秒读OPC数据,timer2每秒向数据库写入OPC的数据,两个timer设定的时间都是1秒,可是记录进去之后经常会隔秒,掉帧。我试过了,如果不读OPC数据,只记录其他的数据,就不会掉帧,所以我怀疑就是读OPC时占用资源太多,请问大家有没有好的解决方案啊?不知道加 do evens 有没有用。
...全文
266 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaofeng54 2010-03-21
  • 打赏
  • 举报
回复
多谢楼上各位兄弟
我用的是西门子的PLC
西门子本身就有sample的,我就是按照异步的sample做的,结果我30个数据,在textbox上却只能显示29个,而且有的出现了错位和串值的现象。
之前我做的同步通讯的就没有这个问题。
因为时间有限,马上要交工了,所以急死啦~~~哎~
我再仔细试试吧~~~
嗷嗷叫的老马 2010-03-21
  • 打赏
  • 举报
回复
祝楼主好运.
嗷嗷叫的老马 2010-03-21
  • 打赏
  • 举报
回复
你可以慢慢地看文档进行试验,我当年也这么过来的,而且我当时并没有硬件,比较辛苦,是与一个MM在网络上合作开发.

现在确实是忘了具体的语法,但是知道这个方案.

我记得OPC的二次开发并不是非常复杂,接口那些都还比较不错,多看文档以及示例就会明白的.
hpygzhx520 2010-03-21
  • 打赏
  • 举报
回复
你连接了几个变量?连接哪家的PLC?
在GroupObj_DataChange中,ItemValues这个数组对应了每个变量的值。

OPC编程时需要点经验的,慢慢来
xiaofeng54 2010-03-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 hpygzhx520 的回复:]
你没用对吧,异步是肯定需要的,至于读,连接好数据源后,在datachaged事件里面采集数据就OK了,用得着用计时器吗?
[/Quote]
今天试过了,异步是可以读出来了,我想做到读出的每个值对应一个textbox,不间断的现实出来,可是一旦读了2个以上(包括2个)的OPC数据,textbox上的值就乱串了。我是按照西门子的例子做的,有没有哪位能给个成功的实例我参考下啊?多谢了!急!
hpygzhx520 2010-03-20
  • 打赏
  • 举报
回复
你没用对吧,异步是肯定需要的,至于读,连接好数据源后,在datachaged事件里面采集数据就OK了,用得着用计时器吗?
贝隆 2010-03-20
  • 打赏
  • 举报
回复
在采集数据的等待循环中加入DoEvents应该可以
不过,为什么不把两个Timer的代码整合到一个Timer中?先采集,再存入。
xiaofeng54 2010-03-20
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 myjian 的回复:]
OPC有异步模式函数调用,使用异步吧,就不会卡.
[/Quote]
恩,我试试看!
请问doevents 有用么?
嗷嗷叫的老马 2010-03-20
  • 打赏
  • 举报
回复
OPC有异步模式函数调用,使用异步吧,就不会卡.
xiaofeng54 2010-03-20
  • 打赏
  • 举报
回复
没人用过么?

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧