<< 点击显示目录 >> 获取过程数据 |
过程数据 总是使用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 "被循环地从控制器中读取。
PVI管理器将内部过程图像的值与读取的值进行比较,并在发生数据变化时向PVI客户端应用程序发送一个数据事件。 在一个请求帧中同时从控制器中读取多个活动变量。 轮询通信的优点。 变量的更新更快,刷新时间更短 轮询通信的缺点。 当有大量活动变量时,不再保证所有变量的定义刷新时间,因为不能在一次请求中从控制器读取所有变量。
|
INA2000 和 NET2000 线提供了事件驱动通信的可能性(对象属性 "e")。
下面的视图显示了只使用事件变量时PVI和控制器之间的通信。
在这种情况下,在PVI和控制器之间只有一个生命迹象监测器处于活动状态,并为CPU过程对象定义了响应超时(/RT=x)。 控制器用定义的刷新时间(RF=x)在控制器的空闲时间内监视每个事件变量。 当控制器上发生数据变化时,PVI在生命迹象监测器的响应帧或 "正常 "数据响应中被通知,事件变量已经发生变化。然后这些变量由PVI线读取。 事件驱动的通信的优点。 •不经常变化的变量(如报警变量)减少了周期性通信的负荷。 •这使得刷新时间短的变量可以更快地被读取。 •由于监测是在空闲时间内进行的,所以对控制器没有负荷。 |