Process Objects

<< 点击显示目录 >>

主页  PVI通信 > PVI帮助信息 > PVI base system > PVICOM interface > Objects >

Process Objects

进程对象是通过PVICOM函数 PviCreateRequest 或PviXCreateRequest创建的  。它们是在PVI管理器中管理进程图像的核心部分。

对象结构

进程对象被分为不同的对象类型。每个对象类型要么代表通信连接的某个逻辑或物理部分,要么代表线路中或PLC上的某个对象。

Object type

Name

使用方法

Binary

String

POBJ_PVI

#0

Pvi

Base object

PVI管理器基础对象

POBJ_LINE

#1

Line

Line object

代表正在使用的PVI线路(线路服务器)。

POBJ_DEVICE

#2

Device

Device object

代表网络通信的物理学或通信设备

POBJ_STATION

#3

Station

Station object

代表网络中的一个站

POBJ_CPU

#4

CPU

CPU object

代表网络中的一个PLC

POBJ_MODULE

#5

Module

Module object

代表一个站或一个CPU中的模块(PLC对象)

POBJ_TASK

#6

Task

Task object

代表一个站、CPU或模块中的一个任务或过程(PLC对象)

POBJ_PVAR

#7

Pvar

Variable object

代表一个站、CPU、模块或任务(PLC任务)中的一个变量,或一个PVI内部的变量

表中列出的对象类型的顺序与对象的层次结构相对应。从PVI基础对象开始,每个过程对象都被分配给另一个过程对象。然而根据对象层次结构,只有具有较高层次对象类型的对象可以被分配。这意味着一个变量对象可以被分配给除变量对象以外的所有其他过程对象。一个行对象只能被分配给PVI基础对象。这些赋值导致了一个以PVI基础对象为根的树状结构。这个过程对象树也被称为对象结构。

一个 对象名称 被分配给每个进程对象。对象路径定义了一个包含在对象结构中的过程对象。对象名称和下级进程对象的名称在对象路径中指定。各个名称由"/"字符分隔。也可以选择为每个名称指定一个过程对象类型。通过对象路径,可以确定对象结构中的每个进程对象。

对象结构的例子(进程对象树)。

pviobjectstruktur

PVI基础对象是由PVI管理器自动管理的。在PVI管理器运行期间,它始终存在。应用程序不需要设置或删除这个对象。基础对象的名称是 "Pvi"。

行对象将 PVI行分配 给对象结构的一个子集。这将自动把所有进程对象分配给行,这些对象被分配给行对象。行对象下面的对象结构取决于正在使用的行。

外部和内部过程对象

外部过程对象有一个线路连接,即它们被分配到某个 PVI线路上的线路 对象,并代表通信连接的一个组件或线路中或PLC上的一个对象。一个 连接描述CD 参数)和一个 服务对象 被分配给外部过程对象。

内部过程对象没有线路连接,因此不分配给PVI线路。它们必须直接分配给PVI基础对象,并且没有连接描述或者是一个空的(空字符串)。正因为如此,一个服务对象也不能分配给一个内部流程对象。在内部流程对象下面的对象结构中的所有流程对象也自动成为内部流程对象,无论其连接描述如何。

基本上,每种对象类型的流程对象都可以被设置为内部流程对象。然而,并不是  该行支持的所有 访问类型 可以用于内部进程对象(例如,上传、下载、读取CPU状态等)。在这种情况下,会报告错误12058(不支持访问类型)。

虽然内部变量对象可以使用进程图像的功能。这样,它们可以被用作PVI常量或在PVICOM应用程序之间交换数据。在  创建内部变量对象时,过程对象描述中的DV 参数可用于分配过程数据。

未定义、准备好或错误的过程对象状态

在被创建后,外部过程对象是未定义的。在 正在使用的 PVI线识别后  ,状态变为就绪或出错,相应的事件 POBJ_EVENT_ERRORPOBJ_EVENT_DATA (如果启用)被执行。

根据对象的类型,如果状态是就绪,那么现有的PLC通信连接或有效的对象识别将由PVI线发出信号。以同样的方式,错误状态是PLC通信连接有问题或对象识别无效的信号。错误的类型由错误代码给出。一个过程对象的错误状态是向下传递的,也就是说,在错误过程对象下面的对象结构中的所有过程对象都收到相同的错误条件。RESP_STATUS_INHERIT_ERR标志与事件数据(RESPONSE_INFO结构状态中的POBJ_EVENT_ERROR事件一起被设置。

活跃或不活跃的过程对象状态

每个进程对象可以处于活动或不活动状态。如果至少有一个 链接对象 被分配给具有启用的 POBJ_EVENT_ERRORPOBJ_EVENT_DATA 事件的进程对象,那么该进程对象就会处于活动状态。否则,它是不活动的。当被 PVI线 识别时,具有活动状态的过程对象被赋予优先权 。活动或不活动状态控制变量对象的过程数据获取。对于非活动的过程对象,过程数据不被读取,PLC通信也没有负担。因此,PVICOM应用应该只将当时需要的过程对象保持在活动状态。

静态和临时过程对象

一个过程对象可以被创建为临时或静态过程对象。这两种类型的对象的工作方式是一样的。只有在创建和启用进程对象时有区别。

静态进程对象是通过PVICOM函数 PviCreateRequest 或PviXCreateRequest 创建的  。为了建立与静态进程对象的连接,  必须使用  PVICOM函数 PviLinkRequest 或PviXLinkRequest。静态进程对象在PVI管理器的整个运行过程中一直保持不变。如果PVICOM应用程序被终止,它们也会保留。如果你试图创建一个已经存在的进程对象,会报告错误 12002(对象名称已经存在)。PVICOM应用程序可以查询这个错误并作出相应的反应。可以使用PVICOM函数 PviDeleteRequest 或PviXDeleteRequest 删除进程对象  。然而,这并不是静态进程对象的使用方式。删除功能只适用于配置程序。

一个临时进程对象总是和一个链接对象一起被创建。PVICOM函数 PviCreateRequest 或PviXCreateRequest是用来做这个的。与静态进程对象不同,调用PviLinkRequest函数是没有必要的。如果你试图创建一个已经存在的进程对象,则不会报告错误。相反,会创建一个与已经存在的进程对象的链接对象。在这种情况下,PviCreateRequest函数中指定的进程对象描述不适用。只要有一个链接对象或一个其他过程对象被分配给这个过程对象,就会保留临时过程对象。释放最后一个链接对象会自动删除该进程对象。

一个新设置的带有线路连接的链接对象会触发一个建立连接(站台对象、CPU对象)或PLC对象识别(模块对象、任务对象、变量对象)的过程。根据正在使用的线路,这个过程可能需要一些时间来完成。如果过程对象被断开,然后又重新建立,那么这个过程必须重复进行。因此,如果PVICOM应用只需设置一次过程对象,这是一个优势。