PviVarList 编程实例显示了控制台应用程序(无窗口Windows应用程序)中的请求/响应过程。该程序是用C函数构建的。
变量信息使用控制台的标准输出设备(stdout)输出。
对于PVICOM 的用户信息, 使用的是SET_PVIFUNCTION 类型 。
该编程实例包含以下文件。
File |
描述 |
PviVarList.dsp, PviVarList.dsw |
Visual C++ 6.0的工作区和项目文件。(32位PVI)。 |
PviVarList.vcproj, PviVarList.sln |
Visual C++ 2008的解决方案和项目文件。(32和64位PVI)。 |
PviVarList.cpp, PviVarList.h |
这些文件包含定义和C函数。 |
附加文件用于保存程序资源,并由Visual Studio管理。
程序顺序。
1.进行PVI初始化,激活全局事件。
2.在 收到全局 POBJ_EVENT_PVI_ARRANGE 事件数据后 。
所有PVI对象(链接对象 和临时 进程对象)直到CPU对象都被创建。相应的请求通过 PviCreateRequest 函数被发送到 PVI 管理器 。
3.一旦 收到步骤2中CPU对象的PviCreateResponse 响应数据。
使用 PviReadRequest 函数为读取所有全局 PLC 变量(POBJ_ACC_LIST_PVAR)和读取 CPU 对象上的 所有 PLC 任务(POBJ_ACC_LIST_TASK) 各发送一个请求 。
4.一旦 收到步骤3的PviReadResponse 响应数据任务列表。
对于列出的所有任务,使用 PviCreateRequest 函数创建相应的PVI任务对象 。
5.一旦 收到步骤4中任务对象的PviCreateResponse 响应数据。
使用 PviReadRequest 函数对相应任务对象的所有本地 PLC 变量(POBJ_ACC_LIST_PVAR)发送读取请求 。
6.一旦 收到步骤3或步骤5的PviReadResponse 响应数据变量列表。
对于列出的所有变量,使用 PviCreateRequest 函数创建相应的PVI变量对象 。
7.一旦 收到步骤6的变量对象的PviCreateResponse 响应数据。
使用 PviReadRequest 函数对相应变量对象的 所有变量信息(POBJ_ACC_TYPE_EXTERN) 发送一个读取请求。
8.一旦 收到步骤7的PviReadResponse 响应数据变量信息。
对该变量信息进行解释并输出。
9.进行PVI去初始化。
所有不再需要的PVI对象被立即释放(PviUnlinkRequest 函数)。程序的结束是由一个计数器控制的。每一个配置的任务或变量对象都会增加该计数器。每一个被释放的任务或变量对象都会减少该计数器。如果计数器达到0,程序就结束了。
对于在PVI管理器中配置的每个任务或变量对象,在管理数据缓冲区(类型:T_PVIOBJ_CTRL)中创建一个例子。当 PVI 对象被释放时,该缓冲区也被释放。
用访问类型 POBJ_ACC_TYPE_EXTERN 提供的信息 指的是PLC变量(AR变量)。然而,过程图像(过程对象)中的数据格式可能与PLC变量不同(例如,由于结构的对齐方式不同)。访问类型 POBJ_ACC_TYPE或数据格式事件 POBJ_EVENT_DATAFORM 总是由过程图像中的数据格式提供。