ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:95.34KB ,
资源ID:16906224      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16906224.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(OPC工具箱作OPC客户端的应用研究Word文档下载推荐.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

OPC工具箱作OPC客户端的应用研究Word文档下载推荐.docx

1、hostInfo = Host: ServerID: 1x4 cell ServerDescription: OPCSpecification: DA2ObjectConstructor:其中,Host:表明搜索到的OPC服务器在本地计算机上;ServerID: 1x4 cell表明在本地计算机上搜索到四个OPC服务器。四个OPC服务器所遵循的OPC规范都是DA2.0。ObjectConstructor是指四个OPC服务器的制造商。2)验证返回的OPC详细信息: 将OPC服务器ID信息赋值给allSevers数组allServers = hostInfo.ServerID执行结果如下:allS

2、ervers = Matrikon.OPC.TI5.1KEPware.KEPServerEx.V4Takebishi.Melsec.1OPC.SimaticHMI.HmiRTm.1 本次仿真所用的OPC服务器是。(2)创建一个OPC数据访问客户端对象 获得主机名称和OPC服务器ID后与OPC服务器进行连接,需要创建一个与服务器相对应的opcda(OPC数据访问)对象,其代码如下: da = opcda(, 这样就建立了一个与KEPware.KEPServerEx.V4对应的OPC数据访问对象。da =Summary of OPC Data Access Client Object: local

3、host/KEPware.KEPServerEx.V4 Server Parameters Host : localhost ServerID : KEPware.KEPServerEx.V4 Status : disconnected Timeout : 10 seconds从上面执行结果可以看到Status : disconnected,也就是还没有与OPC服务器建立连接。(3)建立MATLAB与指定OPC服务器之间的连接 1)连接服务器 connect(da) 2)显示客户端信息,确认客户端已经建立了连接 da 执行结果如下: connected Object Parameters Gr

4、oup : 0-by-1 dagroup object Event Log : 0 of 1000 events从执行结果Status : connected可以看出,OPC客户端,也就是matlab与服务器建立了连接。(4)浏览服务器的命名空间 1)依据KEPware.KEPServerEx.V4服务器中已经存在的项,通过部分匹配查找出所有需要的OPC项。 KepItems=serveritems(da, *Channel_1.Device_1.Tag*KepItems = Channel_1.Device_1.Tag_1Channel_1.Device_1.Tag_2Channel_1.D

5、evice_1.Tag_3执行结果显示了所有包含Channel_1.Device_1.Tag字符串的OPC变量。2)将需要的OPC项名存储到数组itmIDs中itmIDs = Channel_1.Device_1.Tag1 , Channel_1.Device_1.Tag2Channel_1.Device_1.Tag3;本次仿真的三个项模拟PLC的模拟量,是整型数据。(5)创建一个OPC数据访问组对象 grp = addgroup(da, Group1(6)将项添加到组对象中 创建组后才能够添加项,下面将步骤四中定义的项(itmIDs)全部添加到创建的组对象(grp)中。 itmCollect

6、ion = additem(grp, itmIDs) 执行后itmCollection数组中存放着Group1中所有项的集合。(7)配置OPC工具箱的属性 用SET命令配置OPC工具箱的属性,用GET命令取回其属性。下面的代码是在两分钟内,每隔0.2秒登入一次数据,numRecords是登入数据的次数。logDuration = 2*60;logRate = 0.2;numRecords = ceil(logDuration./logRate) 配置组对象属性,使其能获取所有的数据。 set(grp, UpdateRate,logRate, RecordsToAcquire,numRecord

7、s);(8)从OPC服务器中获取数据 调用START函数获取数据。为了在程序继续往下执行前得到所有的数据,调用WAIT函数。 start(grp)wait(grp)上面语句执行后,数据都登入到了内存里面,需要从OPC工具箱引擎里取回。因为读取上来的数据是时间序列数据,需要将读取上来的数据存储到各个独立的数组中。logIDs, logVal, logQual, logTime, logEvtTime = getdata(grp, double);查看工作区间中各个数据的大小whos log*(9)绘制数据图形 下列代码将数据图形绘制在一条坐标轴上,数据格式标记(DATETICK)函数将X轴标记转

8、换成格式化数据字符串。 plot(logTime, logVal);axis tightdatetick(xkeeplimitslegend(logIDs)图1 模拟量数据绘制结果 上图注释框控标出红线是Tag1的数据值变化曲线,绿线是Tag2的数据值变化曲线,蓝线是Tag3的数据值变化曲线。 通过上图尚不能判断所得数据的品质,所以通过下面的一段代码将品质不好的数据点用红色标出,品质不确定的数据用橙色标出。hold onisBadQual = strncmp(logQual, Bad, 3);isRepeatQual = strncmp(logQual, Repeat, 6);for k=1:

9、size(logQual,2) badInd = isBadQual(:,k); plot(logTime(badInd, k), logVal(badInd, k), ro, .MarkerFaceColor,rMarkerEdgeColork repInd = isRepeatQual(: plot(logTime(repInd, k), logVal(repInd, k), ,0.8 0.5 0, endhold off图2 数据品质标志结果由于所有的数据品质良好,所以没有显示标识红点或橙色点。(10)清除 结束OPC工具箱对象后必须将其从OPC工具箱引擎中删除,并自动删除组对象和项对象

10、。 disconnect(da)delete(da)清除组对象isvalid(grp)从工作区间清除项的集合clear da grp itmCollection以上分析的是MATLAB从OPC服务器读取某个组中所有项的字段值,并用图形显示ItemID、Value、Quality、TimeStamp的全过程,及其使用的底层代码的分析。其M文件代码见附录1。3. OPC工具箱的数据交换3.1 同步读写用OP工具箱的同步读写操作与服务器交换数据。(1)与服务器建立连接并建立相关对象 connect(da); grp = addgroup(da,Group1 itmIDs = ,. ;itmColle

11、ction = additem(grp, itmIDs);(2)执行同步读操作默认读操作从OPC服务器的高速缓存中获取数据。 1)读一个值r = read(itmCollection(1)r = ItemID: Value: 1004 Quality:Good: Non-specific TimeStamp: 2010 6 11 18 45 39.4680 Error:2)读全部值 r = read(itmCollection) r = 3x1 struct array with fields: ItemID Value Quality TimeStampError 查看项的具体数值 r(1)

12、.Value 执行结果为:ans = 3305 当OPC服务器在网络上或不在本地上时,从设备读取数据将花费更多的时间。从设备被读取数据时,要将数据源指定为device。 r = read(itm1, device(3)执行同步写操作 1)给一个项赋值0 write(itmCollection(1),0) 再将数据读取回来 r=read(itmCollection(1) 执行结果: 6 2010 6 11 8 49 33.4060 从执行结果可以看到其Value值由3350这样的大数值变成了6,这是因为这个项的值是自动线性增长,当写入值0再读回来的间隙增长到6了,但是仍可判断出写操作是成功执行了

13、的。2)给多个项赋值write(itmCollection,0,0,0)(4)清除disconnect(da) delete(da) clear da grp itmCollection3.2 从OPC服务器采集数据(1)创建OPC工具箱对象层次结构 itmCollection = additem(grp, itmIDs);(2)配置数据采集持续时间 Set(grp,UpdateRate,0.2); Set(grp,RecordsToAcquire,40);(3)配置数据采集目标数据被采集到磁盘和内存。磁盘文件名是LoggingExample.olf,如果该文件名已存在,那么该文件原有的数据会

14、被OPC工具箱引擎采集上来的数据覆盖。 set(grp,LoggingModedisk&memoryset(grp,LogFileNameLoggingExample.olfLogToDiskModeoverwrite(4)开始采集数据启动组对象,等待两秒钟,并显示最后获取的数据值。pause(2)sPeek = peekdata(grp, 1)显示项的ID和值disp(sPeek.Items.ItemID;sPeek.Items.Value);等待数据采集完成后,才继续执行后面的代码。wait(grp, inf)(5)获取数据whos log*;(6)清除4 OPC工具箱的事件4.1 查看事

15、件(2)开始数据采集 将数据采集数设定为10条,并开始采集 grp.RecordsToAcquire = 10;start(grp)等待数据采集完毕(3)查看事件日志 在组对象采集数据时产生了两个事件:开始和停止。客户端的时间日志属性值是一行二列的事件型数组。 events = da.EventLog 列出记录在事件日志中的事件类型 events.Type 使用事件结构中的字段获取特定事件的信息。下面代码显示了停止事件的信息。 stopdata = events(2).Data 用停止时间减去开始时间,得到采集数据用掉的时间。 loggingDuration = datenum(events(

16、2).Data.LocalEventTime) - . datenum(events(1).Data.LocalEventTime);loggingSeconds = loggingDuration * 24 * 60 * 604.2 使用默认回传da = opcda(2)配置数据采集参数 grp.RecordsToAcquire = 20;grp.UpdateRate = 0.5;(3)配置回传 用默认数据回传显示在数据采集过程中的开始、数据获取、停止事件。 grp.StartFcn = opccallback;grp.StopFcn = opccallback;grp.RecordsAcq

17、uiredFcn = opccallback;grp.RecordsAcquiredFcnCount = 5;(4)开始数据采集 OPC Start event occurred at local time 15:35:47 Group : 0 records acquired.等待数据采集完毕 (5)清除4.3 使用自定义回传使用自定义回传,用display_opcdata函数将获取的数据实时绘制在图形窗口中。(2)设置相关参数值 设置数据更新速率为0.2秒,要获取的数据为200条,每5秒钟执行一次回传。,0.5);,200);RecordsAcquiredFcnCount,5);Recor

18、dsAcquiredFcn,display_opcdata);(3)获取数据执行结果为动态绘制变量曲线的图形窗口,下图是执行结束时的图片。图3 自定义数据回传结束时数据图5. 使用OPC工具箱模块读写数据在MATLAB的Simulink工具箱中,已经有OPC配置模块、OPC读取数据模块、OPC写入数据模块。OPC Write模块将输入信号写入到OPC服务器中,OPC Read模块将数据从OPC服务器中读取上来,并在Scope中显示。另外,数据品质显示在Display模块中,如果数值为192就说明数据品质好。只要建立适当的模型就可以完成对OPC服务器中数据的读写操作,并可以利用其他仿真工具完成复

19、杂的控制。 首先设置“OPC配置模块参数”,选择OPC服务器KEPWare.KEPServerEx.V4。图4 OPC服务器配置(1)数字量写与读 使用KEPWare.KEPServerEx.V4中的数字量Channel_1.Device_1.K0.0作为数字量变量。首先利用“OPC写模块”将数值在0、1间变换的方波信号写入OPC服务器中并赋值给Channel_1.Device_1.K0.0,然后再将该变量的值从OPC服务器重读取出来,如图5所示。图5 数字量写与读图6 数字量读取结果 运行图5所示模型后会得到图6所示结果。图6显示,OPC服务器中的变量值随着方波信号改变了,并且写进去1后,变量值变为-1。其中,0值表示False,-1表示True。 (2)短整型数据写与读 首先在OPC服务器中建立一个Short型变量Channel_1.Device_1.TagK2。然后将一个整型常量20写入给该项,再将该项的值读取出来。图7 短整型数据写与读图8 短整型数据读取结果 运行后,可以从图8中看到该整型变量的值已经变成了20。 (3)浮点型数据写与读 首先在OPC服务器中建立一个浮点型变量Channel_1.Device_1.TagK4Float。然后将一个正弦信号写入到该项,再将该项的值读取上来,并将原正弦信号与采集上来

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1