本节说明了基本步骤创建一个OPC工具箱™数据访问应用程序的可视化提供的三角波和锯齿波信号Matrikon™OPC服务器模拟。应用程序日志数据到内存数据和情节,强调不确定或糟糕的数据点。通过可视化数据可以更清楚地看到信号之间的关系。
请注意
运行示例代码在以下步骤中你需要Matrikon OPC服务器在本地机器上模拟。安装细节,请参阅安装一个OPC DA或模拟注重科技进步对OPC服务器的经典例子。代码只需要微小的变化与其他服务器。
在这个步骤中,您获得两块信息,工具箱需要惟一地标识您想要连接的OPC数据访问服务器。你使用这些信息创建一个OPC数据访问客户端对象(opcda
客户端对象)中所描述的步骤2:创建一个OPC数据访问客户端对象。
第一条信息是计算机服务器的主机名。主机名(一个描述性的名称如“PlantServer
”或IP地址等192.168.16.32
)合格,计算机网络,使用OPC数据访问协议来确定该计算机上的可用的OPC服务器,并与计算机通信建立到服务器的连接。在任何OPC工具箱应用程序,您必须知道OPC服务器的主机的名称,以便与主机建立连接。你的网络管理员可以提供主机名的列表,提供OPC服务器在您的网络。在这个例子中,您将使用本地主机
作为主机名,因为你将连接到OPC服务器作为客户端在同一台机器上。
第二个信息是OPC服务器的服务器ID。每个OPC服务器特定主机上通过一个独特的识别服务器ID(也称为程序ID或ProgID),这是分配给该服务器上安装。服务器ID是一个文本特征向量,通常包含周期。
尽管你的网络管理员可以提供服务器id为特定主机的列表,您可以查询所有可用的OPC服务器的主机。发现可用的数据访问服务器讨论了如何查询主机从命令行。
使用opcserverinfo
函数查询从命令行。
hostInfo = opcserverinfo (“localhost”)
hostInfo =主持人:“localhost”ServerID: {1} x3细胞ServerDescription: {1} x3细胞OPCSpecification: {“DA2”“DA2”“DA2”} ObjectConstructor: {1} x3细胞
详细检查返回的结构提供了每个OPC服务器的服务器id。
allServers = hostInfo.ServerID '
allServers = ' Matrikon.OPC.Simulation。1“ICONICS.Simulator。1 ' ' Softing.OPCToolboxDemo_ServerDA.1 '
在确定主机名和服务器ID OPC服务器的连接,您可以创建一个opcda
客户端对象。客户端控制对服务器的连接状态,从该服务器并存储任何事件发生(如通知数据变化的状态,叫做数据更改事件在事件日志。的opcda
客户端对象还包含任何数据访问组在客户机上创建的对象。OPC工具箱对象层次结构的详细信息,请参见工具箱对象层次结构的数据访问标准。
使用opcda
函数来指定主机名和服务器ID。
da = opcda (“localhost”,“Matrikon.OPC.Simulation.1”)
da = OPC数据访问对象:localhost / Matrikon.OPC.Simulation。1服务器参数主机:localhost ServerID: Matrikon.OPC.Simulation。1状态:断开连接对象参数组:0-by-1 dagroup对象
有关创建客户的详细信息,请参阅创建工具箱OPC数据访问对象。
OPC数据访问客户端对象不会自动连接到服务器时创建的。这允许您完全配置一个OPC工具箱对象层次结构(与组织和项目客户)连接到服务器之前,甚至没有一个服务器作为礼物。
使用连接
函数连接一个opcda
在命令行客户端对象向服务器。
连接(da)
你创建数据访问组对象(dagroup
对象)控制和包含项目数据访问对象的集合(daitem
对象)。一个dagroup
对象控制服务器必须多长时间通知你的任何项目的变化值,控制集团的激活状态的物品,和定义,开始和停止日志任务。
靠自己,dagroup
对象年代
不是有用的。一旦你将项目添加到组,你可以控制这些物品,从服务器读取的值为所有项目在一组,和日志数据项,使用dagroup
对象。在步骤5中你浏览的OPC服务器可用的标记。第六步涉及添加与这些标签相关的物品dagroup
对象。
使用addgroup
函数来创建dagroup
对象从命令行。这个例子将一组添加到opcda
客户端对象已经创建。
grp = addgroup (da)
grp = OPC组对象:Group0对象参数GroupType:私人物品:0-by-1 daitem对象父母:localhost / Matrikon.OPC.Simulation。1 UpdateRate: 0.5 DeadbandPercent: 0对象状态活跃:订阅:在日志:LoggingMode:记忆的时候了
看到创建数据访问组对象更多信息在从命令行创建组对象。
所有OPC服务器提供服务器项目通过服务器名称空间。服务器的名称空间是一个有序列表项,通常安排在一个分层格式,以方便访问。(有时也称为一个服务器项目标签)是一种测量或数据点在一个服务器上,提供信息从设备(如压力传感器)或从另一个软件包,提供数据通过OPC数据访问(如SCADA包)。
请注意
如果你知道服务器的条目id项你感兴趣,你可以跳过这一节和直接步骤6:添加OPC数据访问项目。在这个例子中,假设您不知道的确切商品id,尽管你知道你想要的日志信息提供的锯齿波和三角波Matrikon模拟服务器。
从命令行,您可以使用“浏览”服务器名称空间serveritems
函数。你需要提供一个连接opcda
客户端对象serveritems
函数,和一个可选的特征矢量参数来限制返回的结果。特征向量可以包含通配符(*
)。使用的例子serveritems
如下。
sawtoothItems = serveritems(哒。‘* *’看到)
sawtoothItems = '锯齿状的波。“锯齿状的波。Int1“锯齿状的波。Int2“锯齿状的波。Int4“锯齿状的波。”钱“锯齿状的波。Real4“锯齿状的波。Real8“锯齿状的波。UInt1“锯齿状的波。UInt2“锯齿状的波。UInt4'
命令获取服务器条目属性serveritemprops
。看到serveritemprops
参考页面的细节。
现在您已经发现服务器名称空间中的项目,您可以添加数据条目对象的访问(daitem
这些标签的对象)dagroup
您在步骤4中创建的对象。一个daitem
对象是一个链接到一个标签名称空间,提供标签值,和额外的信息项,如规范化数据类型。
一个daitem
对象最初不包含它所代表的服务器项目的信息。的daitem
对象仅更新当服务器通知客户端状态变化的项(通知数据更改事件)或客户专门从服务器读取一个值。
每次你读或从服务器获取数据通过数据变化事件,服务器为您提供更新后的值,质量和时间戳值。
使用additem
将条目添加到函数dagroup
对象。你需要通过dagroup
将对象的物品,完全合格项ID作为特征向量。被发现使用条目idserveritems
函数在步骤5。
itm1 = additem (grp),“锯齿Waves.Real8”)
itm1 = OPC项对象:锯齿状的波。Real8Object Parameters Parent: Group0 AccessRights: read/write DataType: double Object Status Active: on Data: Value: Quality: Timestamp:
您可以添加多个项目在一个组additem
通过指定多个电话,ItemID
值数组中的一个细胞。
itm = additem (grp, {“三角Waves.Real8”,…“三角Waves.UInt2”})
itm = OPC项对象数组:指数:数据类型:活跃:ItemID: 1双三角波。Real8 Waves.UInt2 2 uint16三角形
将项目添加到组的详细信息,请参见创建数据条目对象的访问。
组对象让你读和写值组中的所有项目,和内存或磁盘日志数据。
的价值,质量,时间戳值的物品只要你有不断更新订阅启用。订阅控制是否数据更改事件OPC服务器发送的工具箱,对物品的价值变化。UpdateRate
和DeadbandPercent
定义的频率项必须为一个新值,查询,是否所有的价值变化或只发送到指定大小的改变工具箱。订阅的细节,请参阅数据更改事件和订阅。
通过观察数据,您将看到三个信号似乎有类似的范围。这意味着您可以可视化数据在同一轴10步中情节的时候。
在步骤9,您将配置一个日志和日志数据的三项任务。
现在,你的dagroup
对象包含项目,使用组来控制这些项目与服务器之间的交互。在这一步中,配置组从这些日志数据项2分钟0.2秒的间隔。您可以使用记录的数据在第9步可视化Matrikon模拟服务器产生的信号。
OPC数据访问服务器只提供“实时”数据(每个服务器的最后已知值项的名称空间)。在许多情况下,一个值的信号不是有用的,和一个包含信号的时间序列值在一段时间内有助于分析信号或信号设置。OPC工具箱™软件允许你记录所有项目在一组磁盘或内存,并在MATLAB环境下检索数据以便分析®。
配置日志会话使用dagroup
对象。通过修改属性相关的日志,你控制的频率数据必须从服务器发送到客户机,多少集团必须记录日志,记录数据。
使用集
函数设置OPC工具箱对象属性。从命令行可以计算所需的数量的记录日志的任务。
logDuration = 2 * 60;logRate = 0.2;numRecords =装天花板(logDuration. / logRate);grp。UpdateRate = logRate;grp。RecordsToAcquire = numRecords;
现在,您的配置dagroup
对象的日志记录属性,你的对象可以登录所需的内存的数据量。
使用开始
函数所需的dagroup
对象开始记录的任务。
开始(grp)
在后台日志任务发生。你可以继续工作在MATLAB日志任务操作。日志任务是不受其他计算发生在MATLAB和MATLAB处理不是被日志记录的任务。你可以指示MATLAB等日志任务完成,使用等待
函数。
等待(grp)
登录完成后,从工具箱中传输数据引擎使用MATLAB工作空间getdata
功能,它提供了两种类型的输出,取决于它“数据类型”
论点。详情,请参阅getdata
参考页面。在这种情况下,你检索数据为独立的数组,并画出数据。
这个例子中产生图:
[logIDs, logVal logQual、logTime logEvtTime] =…getdata (grp“双”);情节(logTime logVal)轴紧datetick (“x”,“keeplimits”传奇(logIDs)
注意这三个信号看起来几乎完全不相关的,除了这两个时期Real8
信号。每个信号的高峰值是不同的,因为是两个时期三角波
信号。通过可视化数据,可以深入了解Matrikon的OPC服务器仿真模拟每个标签。在这种情况下,很明显,Real8
和UInt2
信号有不同的时期。
完成一个OPC的任务后,你应该把任务对象从内存和清晰的MATLAB工作区与这些对象相关的变量。
当使用OPC在MATLAB工具箱对象命令行或从自己的功能,你必须删除它们从OPC工具箱引擎使用删除
函数。请注意,当您删除一个工具箱对象,该对象的孩子就会自动被删除从工具箱中引擎。在本例中,不需要删除grp
和itm
,因为他们的孩子达
。
断开(da)删除(da)清晰达grpitm关上(gcf)
详细讨论了OPC工具箱对象管理删除对象。