获取过程数据

<< 点击显示目录 >>

获取过程数据

过程数据 总是使用PVI变量对象( POBJ_PVAR类型的过程对象 读取 。

每个变量对象持有一个PLC变量的图像。为了更新这个图像,需要从PLC中读取变量数据。

基本上有3种方法来获取数据。

1.通过循环读指令获得数据(标准方法)。

PVI向PLC发送循环读指令。  不能指定 对象属性 'e'。 刷新时间 决定了读取周期。

过程对象描述的例子。"CD=var1 AT=rw RF=250"。

2.数据是通过事件变量获得的。

事件变量是在PLC上设置的。它们只有在发生变化时才向PVI发送其过程数据。必须指定对象属性 "e"。刷新时间在这里定义了PLC内部的读取周期。

过程对象描述的例子。"CD=var1 AT=erw RF=250"。

3.数据采集是由PVICOM应用程序控制的。

刷新时间设置为0(零)或-1。应用程序本身通过调用 PviReadRequest 或 PviXReadRequest 并使用访问类型 POBJ_ACC_DATA 决定何时获得数据 通过这种方法,进程数据可以作为  读指令的 响应数据事件数据 被接收 。不建议  在给出读指令时为响应数据定义一个 用户消息 来发生。然后将过程数据作为事件数据发送给应用程序,就像其他类型的数据采集一样。然而,这种方法不适合于小于1秒的读取周期。

过程对象描述的例子。"CD=var1 AT=rw RF=0"。

来自周期性读取指令的数据(轮询)。

如果一个过程变量以活动事件掩码(访问类型 POBJ_ACC_EVMASK)和刷新时间>0到达 ,那么PVI线开始从控制器循环读取这个活动过程变量。

正如你在下图中看到的,过程变量 "PV1 "被循环地从控制器中读取。

polling

PVI管理器将内部过程图像的值与读取的值进行比较,并在发生数据变化时向PVI客户端应用程序发送一个数据事件。

在一个请求帧中同时从控制器中读取多个活动变量。

轮询通信的优点。

变量的更新更快,刷新时间更短

轮询通信的缺点。

当有大量活动变量时,不再保证所有变量的定义刷新时间,因为不能在一次请求中从控制器读取所有变量。

 

 

来自事件变量的数据(事件驱动)。

INA2000NET2000 线提供了事件驱动通信的可能性(对象属性 "e")。

下面的视图显示了只使用事件变量时PVI和控制器之间的通信。

event

在这种情况下,在PVI和控制器之间只有一个生命迹象监测器处于活动状态,并为CPU过程对象定义了响应超时(/RT=x)。

控制器用定义的刷新时间(RF=x)在控制器的空闲时间内监视每个事件变量。

当控制器上发生数据变化时,PVI在生命迹象监测器的响应帧或 "正常 "数据响应中被通知,事件变量已经发生变化。然后这些变量由PVI线读取。

事件驱动的通信的优点。

不经常变化的变量(如报警变量)减少了周期性通信的负荷。

这使得刷新时间短的变量可以更快地被读取。

由于监测是在空闲时间内进行的,所以对控制器没有负荷。