最简单的访问OPC服务器方法_第1页
最简单的访问OPC服务器方法_第2页
最简单的访问OPC服务器方法_第3页
最简单的访问OPC服务器方法_第4页
最简单的访问OPC服务器方法_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、最简单的访问opc服务器在网上搜了很多关于 vb.net编写客户端访问opq艮务器的资料,同时也根据 kepware供的案 例源代码,同时进行研究,最后花了一个星期的时间进行研究,才粗略有了一点头绪,现共享出来, 希望后来的初学者有所帮助。一.要建一个opc!务器1)安装opo务器软件,kepware是大家比较常用的,我使用的是 kepware opc v4.54如 图,添加channels tag.把plc的点位添加进去,我建了 6个变量(item)。具体添加的方法 需要自行去学习。我添加的三菱 q系列的plg plc采用以太网通讯的方式,在局部网就可以访问 了。i onracrrhdn由上

2、、自-s2-=1| addrvihj厂ecan ealing劭eimncfwtmridikhr1imn&h#ijracf写hs1dcrtiu100nfl*#uvdqlilrixiwiuaiwfiag %e i& 5pc ii.-ktf+nr-t=h,flu edb(h ft fc 史,*jdme1 tiel*ud口hah ufkefsffvwti0j31g-35-07lz3:5amult uirme 因erfl网翼mp口eau片 uw*xe 书o h r* pilultlltdriiuh umh尊畤kp:的1+qfi14w;h口ew uwqe招ee?eo ” . illrfwdrtuhr um

3、*sceiserwwgo2019hhhm:l4d3:lkldeiuh userct*5ererb0 翻1hm*ik5 dhi口 1川上|jkfrmcefeq 1msnqnl4.rtm口tu u2mr5ub-sh 1ozoie-as kl4c3:90口w-utt user虹呻brefh。叩1弟旗mdtluk ukkwstrwfib医由当u5 做5.| 如mhb w 我 幽冏宓讯一 余金f七?=- f.;.-国一访 h 三 ms=:-口子5位丽 3;百位 - c弟二至三 . 订erg e方 式llitt售电戛)去些瑾/ 次日加_j wmauta-吟讦2 0-na3一鼻 whsi* com li尊u

4、当日对由q*嘴”3 川口,doe事上& 对3餐必 kmefi啻好ps*a m口忌走回gx电五tu!: -$fcjs“eei-步弓qlk曰8h *biratf改口三 口 webl3* m书a廿 venn修珀王卫!jf 书wf里净回 女行 修的 胃加 等叼h 七, t-s 知的w 酹3问必 % ifimffe*嗡标父中 哈 sffwiw 啥牙一p?3ps2mxe 事id1 上 了日口 kk1j1ji41=117在组态王的数据词典,新建变量,i/o变量,连接设备选择 opc服务器,寄存器可以看到 kepserver的变量(item),建立之后,就可以利用组网王,开发监控应用,组态软件的使用在此就不

5、赘述了,总之,利用组态软件访问 opo最简单的。2 .用vb.nebf发客户端访问访问opc服务器,必须使用opcs金会提供的opcdaauto.dll。学习过程,最好下载说明书,opc_20_automation_interface ,网上可以下载。ole for process controldata access automation interlace standardversion 2.01january, 6, 19991)注册opcdaauto.dll。这个动态连接库文件可以网上下载。拷贝到 c:windowssystem32 目录,打开运行输入框,输入:regsvr32 c:w

6、indowssystem32opcdaauto.dll如果是 64位 windows,则拷贝在syswow64。输入:syswow64opcdaauto.d ll 就 k w nd(刖拌审区抵,啊6人酷名的,为hf7产樽定打程中 文噂器 玄虚力峥口&(黄酉- fjjf(o):fkdhlvhq.dll-三用3卸.瓜4走比1m.的 i。咏2) vs2015,新建一个项目。在项目-点击“添加引用”,使用浏览,在com可以找到opc da automation的选项,点击确认,及完成添加。添加成功,则资源管理器,应用,可以看到 opcautomation的项目item的实时值。3)编写程序的过程最简单

7、的一个案例,如下图,实现搜索服务器,连接服务器后,获取a)查找服务器点击“查找服务器”按钮,地址不填,则列出本机的 opck务器。如果填写另一台服 务器地址,则列出另一台电脑的服务器清单腿努器地址c他i蛇,如祖址)登拢册cfc服时器|imsttu m纳,嘉时at)meji 口f 匚ft aum: 口. ufcswty打spw-u?s. e3ps 叁rgrew. w4rastrunitntx. hicfcstrvsti.逐拣断j1隹接断开如何知道计算机名?看网络邻居,至少你应该知道那台电脑装了opc务器public class formlinherits system.windows.forms

8、. formdim withevents anopcserver as opcautomation. opcserver 用于搜索服务器,连接服务器dim withevents connectedgroup as opcautomation. opcgroup 对应后面添加组和项private sub form1_load(sender as object , e as eventargs ) handles mybaseloadend sub以下程序:搜索opc艮务器,显示在列表框上面private sub button1_click( byval sender as system. obj

9、ect , byval e as system. eventargs) handles connet.click tryanopcserver = newopcautomation. opcserverlistbox1.items.clear()dim allopcservers as objectallopcservers = anopcserver.getopcservers(textbox1.text)以括号用文本框输入,确定 opc艮务器的路径,空白表示搜索本机,如果搜索内部网其他电脑,则写电脑的名称,例如:电脑名称dim i as short for i = lbound(allop

10、cservers) to ubound(allopcservers)listbox1.items.add(allopcservers(i) next i catch ex as exception messageboxshow(list opcservers failed with exception: + ex.message, simpleopcinterface exception messageboxbuttons.ok)用于显示执行结果,如果失败,则可以显示失败的原因。end tryend subb)连接服务器、添加项和组 代码如下:private sub button1_click

11、_1(sender as object, e as eventargs ) handles buttonl.click 以下程序连接服务器连接 tryanopcserver.connect(listbox1.text, textboxl.text)第一个是参数是 opc服务器名称,第二个是电脑名称。直接填写也可以,例如: anopcserver.connect( kepware.kepserverex.v4 , newpi )catch ex as exceptionmessageboxshow(opc server 连接失败:+ ex.message, opcsample messagebo

12、xbuttons .ok) end try 以下程序添加group和item try anopcserver.opcgroups.defaultgrouplsactive =true使其活动,照抄就行。anopcserver.opcgroups.defaultgroupdeadband = 0照抄就行。connectedgroup = anopcserver.opcgroups.add(group。添加group,称自己随便填。connectedgroup.updaterate = 100更新速率,我实验过,值越小,获取 itemitt越灵敏。connectedgroup.issubscrib

13、ed =true 采用订阅的方式,后面用 datachangel获取 item 值,与此对应。connectedgroup.opcitems.additem(channel2.device1剥,1)connectedgroup.opcitems.additem(channel2.devicef”, 2)connectedgroup.opcitems.additem(channel2.device箧灯”,3)connectedgroup.opcitems.additem(channel2.device 借电,4)connectedgroup.opcitems.additem(channel2.d

14、evice产量 1, 5)connectedgroup.opcitems.additem(channel2.device2”, 6)additemf口additems两种命令的格式不同,这里仅用最简单的 additem命令,用最士的办法添加了 6个item,两个 参数,第一个是item名称,必须和kepserveri的items全一致,第二个参数是 clienthandles,柄。6个item,我给的是1-6 , 随便数字都可以,不重复即可。这个跟后面获取值有直接关系! ! ! !l opc quifk clknc -元碌hl file edit view tgk hdp口盲口。詈gm1:-

15、嘀 kb pwa re, lpser7eex.tern iddata typevalu=|j jdstaltagg&rcichann d evirel,产量short9日:白 systemc channel, devicel,产阜 lshort34;q charne-12, salternq channeg.d evicel.rfishort9&:_j channcl2,dcvil1 fhann nn 口 pvifp-,到tbonfisn0:lj char ne 12 .c e l._sycten电1 cha nn聒口 oviccl,制(tbodeni: 口 qhsrnel 2 1 ei re

16、2h a rn f117gd,才尸i.百中,shortu二一 charnel 2re 2 ,_syttenncatch ex as exceptionmessageboxshow(添力口组和项失败:+ ex.message, opcsample messageboxbuttons.ok) end tryend subc)获取前面提到的订阅的方式, 是opc(务器主动的方式,把有变化的item,发送给客户端。 需要使用datachange的事件来获取tem 值,opc_20_automation_interface 58页。4.4.5 opcgioiip evems+5左4.4.6 *1dfua

17、 change* 58假设两个op飙务器有2个item发生改变(绿灯,产量),那么会返回2个items,返回的, 其中itemvalues返回的item实际值, clienthandles是返回的句柄值,句柄值和添加item寸定义的句柄对应。前面添加的channel2.device殍量,我定义的 clienthandles是6。如果数值发生变化,那么服务器返回的的值也是6。实际返回值:numitems=2clienthandles(1)= 1, itemvalues1) =trueitemvalues(1) =trueclienthandles(2)= 6, itemvalues2) = 65

18、itemvalues(2) =65因为返回的是数组,那么需要定义一个字符串的数组去接受item值。添加事件的方法:其 fufmldb ;:emimrii源代码如下:private subconnectedgroup datachange(transactionid as integer , numitems as integer , byref clienthandles as array , byref itemvalues as array , byref qualities as array , byref timestamps as array ) handles connectedgroup.datachange dim val(10) as string用于接收 itemktdim i as integerdim k as integer用于循

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论