Event types

<< 点击显示目录 >>

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

Event types

为了接收 事件,PVI应用程序需要  在创建一个链接对象时定义一个 用户信息

有些事件类型是由PVI管理器生成的,有些则是由线路生成的。因此,哪些事件类型可以使用 ,取决于 正在使用的PVI线路

所有的事件类型都列在下表中。在 "EV "列中列出了启用事件类型(EV 参数)相应代码字母 。

Event types

No.

EV

描述

POBJ_EVENT_ERROR

#3

e

标志着一个进程对象的错误状态或错误代码的变化。

POBJ_EVENT_CONNECT

#10

c

标志着一个进程对象的连接描述发生了变化。事件数据包含以 POBJ_ACC_CONNECT 访问类型格式的连接描述

POBJ_EVENT_DATA

#11

d

标志着一个变量对象的过程数据的变化或一个过程对象的错误状态的结束

POBJ_EVENT_STATUS

#12

s

标志着过程对象中的状态变化。事件数据包含以 POBJ_ACC_STATUS 访问类型格式表示的状态 。该事件由正在使用的行产生,并由 PVI Manager 进行相应的格式化。这个状态事件支持哪一行,可以在相应的行描述中找到。

POBJ_EVENT_DATAFORM

#13

f

标志着一个变量对象的数据格式发生了变化

POBJ_EVENT_PROCEEDING

#128

p

这个事件通知PVICOM应用关于活动请求的进展。POBJ_EVENT_PROCEEDING事件只发送给发出请求的应用程序。该进度信息以 PROCEEDING_INFO结构形式发送 。该事件由正在使用的线路产生,并由 PVI Manager 进行相应的格式化。这个进度事件支持哪条线,可以在各自的线描述中找到。

POBJ_EVENT_USERTAG

#129

u

标志着用户标签的变化。事件数据包含字符串格式的用户标签(也见访问类型 POBJ_ACC_USERTAG)。

Event type > 255

 

l

表示特殊 行事件

线路事件类型

线路事件是数字大于255的所有事件类型。这些事件由正在使用的线路产生,只由PVI管理器转发。  这些线路事件支持哪条 PVI线路 可以在各自的线路描述中找到。

线路事件主要用于Automation Studio和Automation Runtime之间的内部通信。然而,其中一些事件类型也可以由PVI客户应用程序使用。

EV 参数可用于启用一个对象的所有行事件。单独启用事件类型是不可能的。因 ,PVI应用必须通过调用PVICOM函数 PviReadResponse 或PviXReadResponse 确认所有收到的行事件  。那些PVI应用不需要的行事件或那些无法解释的行事件可以被忽略。

下表列出了允许在PVI客户应用中使用的所有行事件类型。相应的过程对象类型被列在 "类型 "栏中。

Event types

No.

Type

Description

POBJ_EVENT_LN_XML_MOD_LIST

#403

CPU

表示一个PLC模块列表的变化

所有新的、修改的或删除的模块都在 事件数据中 XML 字符串 的形式列出 POBJ_ACC_LN_XML_MOD_LIST 访问类型可以用来读取完整的模块列表。

修改列表的结构。

<?xml version="1.0" encoding="utf-8"?>
<ModList>
  <Deleted>
    <TaskInfo Name="..." />
    <ModInfo Name="..." />
    ...
  </Deleted>
  <New>
    <TaskInfo Name="..." ... />
    <ModInfo Name="..." ... />
    ...
  </New>
  <Changed>
    <TaskInfo Name="..." ... />
    <ModInfo Name="..." ... />
    ...
  </Changed>
</ModList>

Delete

...

删除的模块/任务模块部分

New

...

新模块/任务模块部分

Changed

...

更改的模块/任务模块部分

新建和修改的模块和任务模块部分包含了 POBJ_ACC_LN_XML_MOD_INFOPOBJ_ACC_LN_XML_TASK_INFO 访问类型完整模块或任务信息 .

POBJ_EVENT_LN_XML_RED_CTRL

#440

CPU

表示冗余故障切换和冗余PLC系统的其他事件

事件的类型在 事件数据中以XML 字符串的形式列出

事件数据的结构。

<?xml version="1.0" encoding="utf-8"?>
<CpuRedCtrl Cmd="..." ... />

Cmd

...

指定冗余事件的类型

Cmd="1"

...

表明已经发生了冗余故障切换

Cmd="2"

...

应用同步正在进行或已经结束

原则上,"Cmd "属性也可以包含其他值。由于这个原因,PVI应用程序必须忽略所有在Cmd中具有未知值的事件。

POBJ_ACC_LN_XML_RED_INFO 访问类型可用于指定活动和备用CPU。

XML string

XML(可扩展标记语言)是一种标准化的标记语言,用于以文本形式描述分层结构的数据。一些PVI事件类型以XML格式的字符串返回事件数据。参数组(如列表中的一个条目)然后被结构化为XML元素。这些元素中的各个参数通常被指定为XML属性。

在PVI应用中评估XML事件数据时,必须考虑到以下几点。

必须使用一个合适的分析器进行评估。

来自较新的AR版本的XML数据可能包含新的XML元素或属性。

为了确保兼容性,PVI应用程序必须始终忽略未知的XML元素和属性。

现有的XML元素和属性也可能被淘汰,如果它们在较新的AR版本中不再具有相关性。

PVI应用程序必须通过实施适当的措施(例如,分配默认值)来考虑这些情况。

XML属性中的数值可以用十进制(Param="123")或十六进制格式(Param="0x7b")指定。

POBJ_EVENT_ERROR Event Type

每次 进程对象的错误状态或错误代码  发生变化 时,都会发送这个事件 错误代码作为 PviReadResponse 或PviXReadResponse函数 的返回值给出  。错误状态的结束由错误代码0(null)发出信号。然而,如果启用了POBJ_EVENT_DATA事件类型,那么错误状态的结束只能由一个POBJ_EVENT_DATA事件发出信号。

POBJ_EVENT_ERROR事件只有在进程对象处于错误状态时才会被触发。与其他事件或请求有关的错误将通过相应的事件或响应数据报告,而不是通过POBJ_EVENT_ERROR事件。

POBJ_EVENT_DATA Event Type

每次变量对象的数据发生变化时都会发送这个事件。变量数据(过程数据)作为事件数据被传送。数据的格式与过程对象中设置的数据格式相对应。如果在链接对象中定义了数据格式,那么数据将以链接对象的格式传输(类型转换)。

没有过程数据的过程对象(如行对象、模块对象等)总是发送数据长度为0(空)的事件数据。这标志着错误状态的结束。

可以使用"d "对象属性(AT 参数)来抑制对变量对象中过程数据变化的监控,以及覆盖POBJ_EVENT_DATA事件。在这种情况下,每个单独的 POBJ_EVENT_DATA 事件被发送到 PVI 应用程序。

如果事件数据不能被快速传送并同时从 PVI 应用程序中读取,那么内存需求就会不断增加。因此,"d "属性的使用应该非常谨慎,只有在绝对必要时才使用。

d "属性用于例如直接CAN或MTC线路上的变量,如果PVI应用中短暂的数据变化需要发出信号(例如,值从0到1的变化,然后立即回到0)。在普通的PLC变量上使用 "d "属性意义不大,因为无论如何都无法在刷新时间内检测到短暂的数据变化。

POBJ_EVENT_DATAFORM Event Type

每次改变变量对象的数据格式时,都会发送这个事件。没有进程数据的进程对象不能触发这个事件。这个事件数据包含一个  字符串格式 数据格式描述  。与 对象描述 一样 ,各个参数在字符串中用参数代码进行区分。数据格式是用 VTVLVNVSAL 参数定义的  。

为了确保与旧版本的PVI(早于V3.0.0)兼容,对于 "简单 "的数组变量(有一个以上数组元素的一维数组,数组索引从0开始,不是派生数据类型)不指定参数VS。为了将一个变量识别为数组变量,除了附加规范'a'外,还必须评估参数VN。以下条件适用。如果VS=...a...或VN > 1,则为数组变量。

如果应用程序没有在链接对象中定义数据格式,数据将以POBJ_EVENT_DATA事件的过程对象的格式发送。POBJ_EVENT_DATAFORM事件确保应用程序总是发送进程对象的当前数据格式。如果数据格式发生变化,这两个事件的控制方式是应用程序总是先收到一个POBJ_EVENT_DATAFORM事件。POBJ_EVENT_DATA事件只在之后发生,并带有新格式的数据。