如图1所示,通过系统配置,告诉采集核心需要建立的采集通道(对应采集点,每个通道的任务在自己的线程中调度),以及每个通道的采集任务(对应与通讯协议脚本)和调度方案(何时启动采集或者多长时间周期采集一次)。正是应用了脚本语言描述采集任务,使得系统具有高度灵活的可配置性。
采集任务通过xml文档描述,具体的通讯使用Fast Script描述。xml文档结构如下:
<?xml version=“1.0” encoding=“GBK”?>
<项目名称=“采集器对时”开始流程=“通信步骤1”>
<全局变量初始化脚本=“…”/><!--采集任务必要的全局变量加载脚本-->
<通信流程名称=“通信步骤1”下一流程=“通信步骤2”>
<发送数据脚本=“…”/><!--通信步骤发送数据的脚本-->
<收全判断脚本=“…”/><!--判断通信数据是否收全的脚本,收全后进入下一步骤-->
<正确回复脚本=“…”/><!--判断通信步骤收到数据是否正确的脚本-->
</通信流程>
……
<通信流程名称=“通信步骤n”下一流程=“”>
<发送数据脚本=“…”/>
<正确回复脚本=“…”/>
<收全判断脚本=“…”/>
</通信流程>
<数据处理脚本=“…”/><!--处理收到数据的脚本,一般用于数据解析并保存数据-->
</项目>
在系统核心中,把系统一些常量、函数声明、读入的脚本一起组成完整的脚本。
以下是几个典型脚本的例程(函数声明为系统定义,斜体部分为XML文档中读入系统)。
全局变量初始化脚本如下:
Procedure (Conn: TADOConnection; varGlobalVar:Variant);
begin{全局变量分别为采集点地址,开始地址,结束地址}