Ch 6 实时数据接口(DDP)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第六章使用因特摩实时数据接口和处理模块(DDP)
6.1 因特摩系统的实时数据获取
因特摩数据采集和预处理器目前有两种通讯机制:
●利用因特网TCP/IP协议的API调用,把实时数据发送给因特摩服务器;
●利用OPC(参阅第十章第三节,154页);
●利用微软操作平台的剪切板(Clipboard)技术和实时数据通讯;
无论使用那种方法,其目的都是将从其它通道获取的实时数据送往因特摩服务器(INTEMOR Server)。

常用的数据通道可分为以下几类:
6.1.1. API方式常用的数据接口通道
通过DCS接口获取实时数据
通常,在生产过程中,因特摩智能化实时监控和事故预报系统的实时数据源来自底层的计算机分布控制系统(DCS),因此,因特摩系统必须有DCS系统的数据支持。

通过实时数据接口,因特摩系统可以获取多种DCS系统的实时数据。

针对不同的现场计算机分布控制系统(DCS),必须编写或购买相应的DCS数据采集和接口软件,为因特摩系统提供数据支持。

例如,对ProVAX系统而言,在使用因特摩系统时,用户可以考虑使用DCS专业接口CHIP (Computer Highway Interface Program, 计算机高速公路通道接口) 。

通过CHIP,因特摩数据采集和预处理器能够比较方便地和DCS通讯,实时采集数据。

CHIP NT为微软NT版的CHIP,应用较广。

从数据库获取数据
用户也可从现场工业数据库中直接获取数据,然后通过调用TCP/IP API接口程序将数据送入因特摩系统。

因特摩系统中使用的数据库有: MS SQL服务器和MS Access数据库。

从其它通道获取数据
用户也可从其它通道获取数据送入因特摩。

比如,在因特摩发电厂应用演示系统中,我们使用因特摩仿真器(Simulator)作为数据来源,通过运行“TCP.exe”将数据送入因特摩。

6.1.2. 通过剪贴板(Clipboard)方式获取实时数据
任何设备如果能够输出文本格式(Text Format)的数据流到因特摩系统计算机系统的剪贴板(Clipboard),即可以和因特摩系统连接。

但是,用剪贴板方式获取实时数据的方法是不安全的。

尤其是安装因特摩系统的计算机还可能用于其它的计算任务。

数据流的格式如下:
Tag_Number: mv, pv, sv, mv_scale_low, mv_scale_hign, pv_scale_low, pv_scale_hign;
其中: Tag_Number: 变量名
mv: 操作值 ( 控制器的输出 )
pv: 过程输出,或控制器的输入
sv: 给定值
例如:LIC101: .5243964, .5500001, .5582621, 0, 100, 0, 100;
HI-100: .524262, 0, 0, 0, 100, 0, 200;
以上所有值均需标准化到0-1的取值范围。

可以通过如下公式来进行标准化: Mv = (TheActureMv - mv_scale_low )/(mv_scale_high - mv_scale_low)
TheActureMv:实际操作值
mv_scale_high:最高实际操作值
mv_scale_low:最低实际操作值
在运行因特摩工业锅炉应用演示系统时,是使用剪贴板(Clipboard)来获取实时数据,其具体方法是:
●先点击DDP的”Data”之下的“Connect to Source”,这相当于点击DDP
的最左边的第一个图标,这将启动工业锅炉仿真器Boiler,
●出现Boiler的界面之后,点“Restore state””,调进
“normal.stt”file后,把(Boiler)的界面最小化,
●再点击“DDP”的“Data”之下的“Send Out”,这也相当于点击“DDP”
的最左边的第二个图标。

此时,接口已经连通,并启动了因特摩工业锅炉仿真器,不断生成锅炉仿真数据。

6.2 因特摩实时数据传送API
6.2.1 结构
因特摩 Driver的一个主要功能是提供接收实时数据的程序下接口,以接收来自工业过程的实时数据,并将其经过处理后送到因特摩服务器。

在因特摩系统中,程序接口更加标准化。

它提供两种方式的接口: (1)API方式;(2)剪贴板(Clipboard)方式,用户可在设置界面中选择其中一种,则因特摩 Driver即可开始以选定的方式接收实时数据。

因特摩实时数据传送API为开发人员提供了传送实时数据到因特摩系统的方法和接口。

它是因特摩系统和实时工业过程之间的接口,并且以动态链接库的方式提供(SendData.dll)。

下图6-1所示此API在因特摩系统总体结构中的使用位置。

图6-1 API在因特摩总体结构中的使用位置
系统的工作方式如下:
开发者的数据采集程序 (Your Data Collection Program) 从工业过程中(如DCS等)采集到数据后利用SendData.dll中提供的函数把实时数据送到因特摩 Driver。

因特摩 Driver 接收到数据后,进行分析处理,然后将数据及事故报告传送到因特摩服务器供各个因特摩 View使用。

注意: 1. 在传送数据前因特摩 Driver必须在运行状态。

2. 数据采集程序和因特摩 Driver 必须在同一台机器上。

6.2.2函数
SendData.dll提供三个函数, 它们是: AddRealTimeData, Send 和GetLastErrorString.
●AddRealTimeData
BOOL AddRealTimeData(CString * psTagName, double dPV, double dSV, double dMV, int nScaleHigh, int nScaleLow)
功能: 将数据送入缓冲区.
参数:
CString * psTagName: 数据点的标识号(Tag Number).
double dPV: 数据点的过程变量值.
double dSV: 数据点的设定值.
double dMV: 数据点的控制变量值(Manipulate Value).
int nScaleHigh: 数据点的上限值.
int nScaleLow: 数据点的下限值.
返回值:TRUE 若无错
FALSE 若有错
注:在调用AddRealTimeData函数前,dPV,dSV,dMV必须转换成标准值(Normalized Value)。

转换公式如下:
设:
vStandard 为标准值,
vRealValue 为实际值,
nScaleHigh 为上限,
nScaleLow 为下限.
则:
vStandard = (vRealValue – nScaleLow)/(nScaleHign – nScaleLow)
对于dMV, 我们用100上限, 0为下限.
●Send
BOOL Send()
功能: 将缓冲区中的数据送到因特摩 Driver.
返回值:TRUE 若无错
FALSE 若有错
注:
1.在调用Send() 函数前,当前时刻的所有数据点都应该用AddRealtimeData函数加入到缓冲区;
2.两个 send() 函数调用的时间间隔不应小于1秒.
●GetLastErrorString
LPTSTR GetLastErrorString()
功能: 获取错误信息
返回值: 错误信息
注: 仅在 AddRealtimeData和Send函数返回 FALSE时调用此函数。

如何在 C++中使用SendData.dll
在c++中使用SendData.dll可依如下四个步骤:
Step 1. 载入库(Load Library)
Step 2. 定义函数类型及从dll中获取函数指针
Step 3. 使用dll中的函数
Step 4. 释放库(Free Library)
下面是一个源代码实例:
Step 1. 载入库 (Load Library)
HMODULE hMod = LoadLibrary("SendData.dll");
// 上述代码假设 senddata.dll与程序在同一个目录下。

否则需使用sendData.dll的绝对路径.
Step 2. 定义函数类型及从dll中获取函数指针
Step 2.1 定义函数类型
typedef BOOL (*pAddRealTimeData)(CString * psTagName, double dPV, double dSV, double dMV, int nScaleHigh, int nScaleLow);
typedef BOOL (*pSend)();
typedef LPTSTR (*pErr)();
Step 2.2 从dll中获取函数指针
pAddRealTimeData AddRealTimeData =
(pAddRealTimeData)GetProcAddress(hMod, "AddRealTimeData");
pSend Send = (pSend)GetProcAddress(hMod, "Send");
pErr GetLastErrorString = (pErr)GetProcAddress(hMod, "GetLastErrorString");
Step 3. 使用dll中的函数将数据送到因特摩 Driver
Cstring sTagName;
double dPV, dSV, sMV;
int nScaleHign, nScaleLow;
BOOL nRetValue;
sTagName = “FI100”;
dPV = 0.5678;
dSV = 0.5877;
dMV = 0.99;
nScaleHigh = 100;
nScaleLow = -100;
nRetValue = AddRealTimeData(&sTagName, dPV, dSV, dMV, nScaleHigh, nScaleLow);
//在一个循环程序中,重复上述操作直至所有的数据点都加入到了缓冲区
Send();
注:
调用了Send()函数后,就可以进行下一个时刻的数据加入和传送操作。

Step 4. 释放库 (Free Library)
FreeLibrary( hMod );
注: Step 1, 2 和 4 只需运行一次。

OPC接口方式的介绍请参见第十章第三节。

6.3 因特摩数据采集和处理器 (DDP)
在因特摩系统的结构框架图中可以看到,因特摩数据采集和预处理器负责从现场采集数据,并且把数据送给因特摩数据服务器;因特摩数据服务器负责分发数据,一方面把数据送到因特摩实时数据显示模块;另一方面把数据存储到数据库中,供因特摩远程数据监控模块使用。

而因特摩专家系统开发工具负责开发事故预报专家系统,供因特摩实时数据显示模块预报和监督事故的发生。

在用户手册的其他章节,我们将详细介绍各模块的使用。

图6-2 因特摩系统软件系统结构框架
因特摩数据采集和预处理器有两大功能:
●它是因特摩系统和现场DCS系统的数据接口,负责接收DCS系统的数据。

●集成专家知识库,完成事故预报。

6.3.1 启动因特摩数据采集和处理器
通过因特摩主程序启动因特摩数据采集和预处理器。

具体方法是,在因特摩主程序窗口内,移动鼠标到因特摩数据采集和预处理器图标,即在图5-1 “因特
摩系统启动窗口”中“DDP”的字段上方区域,单击鼠标左键,启动因特摩数据采集和预处理器。

只有启动因特摩数据服务器后,才能成功启动因特摩数据采集和预处理器。

6.3.2 使用因特摩数据采集和处理器
无论何种方法启动因特摩服务器,都将先出现它和因特摩数据服务器的界面。

在因特摩系统的启动界面上,点击因特摩数据采集和预处理器“DDP”的图形,将出现图6-3
图6-3 因特摩数据采集和预处理器“DDP”
因特摩数据采集和预处理器有三种通讯机制:
●利用专用通讯接口软件和工业现场的DCS系统数据交换;
●利用微软操作平台的剪切板(Clipboard)技术和实时数据通讯;
●利用因特网TCP/IP协议,把实时数据发送给因特摩数据服务器;
●在本书的实验中,我们将学习因特摩数据采集和预处理器的两种通讯功能;
●利用剪切板(Clipboard)技术接受实时数据;
●利用因特网TCP/IP协议技术接受实时数据。

为方便大家学习,我们特别提供了以工业过程中常见的以火力发电厂锅炉为背景的实时数据仿真器,采用TCP/IP协议技术。

6.3.3 接收数据
因特摩数据采集和处理器可以接受来自上述三种通信接口方式的实时数据。

利用专用通讯接口软件与DCS通讯
因特摩企业版将用于实时工业过程监控目的,此时,因特摩数据采集和预处理器将从DCS系统直接采集数据。

尽管因特摩数据采集和预处理器是因特摩系统和DCS系统的中间环节,但是考虑到DCS系统的千差万别,它并不提供和DCS系统的直接接口。

用户在使用因特摩系统时,必须自行编写接口,或向DCS制造商购买接口软件,或者委托CCUC编写接口。

利用剪切板(Clipboard)技术与锅炉仿真器通讯
在进行因特摩技术用剪切板方式获取实时数据的培训时,此时此时工业对象为工业锅炉,因特摩数据采集和预处理器将从CCUC自行开发的工业锅炉仿真器(Boiler)采集数据。

建立因特摩数据采集和预处理器及锅炉仿真器的通讯的方法是:
●首先设置系统。

点击“DDP”菜单,方法是点击“Setting s”菜单,进而点
击“Configuration”。

通过漫游,选定工业锅炉应用演示系统的专家系统
运行文件((如:C:\Program Files\CCUC\Intemor\Industrial Boiler\Knowledge Base\CB_Boiler_Chinese.kbr) ,输入因特摩数据服务
器的宿主机的IP地址,若单机运行,可输入“localhost”,然后选择接
受实时数据的程序接口方式Clipboard (共有两种接口方式,API或
Clipboard) 。

最后点击“Accept”完成设置。

●点击“Data”菜单,进而点击Connect to Source,将打开Common
Clipboard的主窗口。

此时,接口已经被连通,并启动了锅炉仿真器,不断
生成锅炉仿真数据。

●点击“Data”菜单,进而点击Send out。

●此后,因特摩数据采集和预处理器将不断从工业锅炉仿真器获得数据,并
把数据发送给因特摩数据服务器。

注意:因特摩系统对Run-time知识库的设置省略了人工加载过程,一旦在Configuration中选择好了正确的Run-time知识库,在下次程序启动后,知识库将被自动加载。

同理适用于下述步骤。

利用因特网TCP/IP协议的API,把实时数据发送给因特摩数据服务器在进行因特摩技术用TCP/IP协议的API方式获取实时数据的培训时,此时工业对象为火力发电厂,因特摩数据采集和预处理器将从CCUC自行开发的因特摩仿真器(Simulator)采集数据。

系统的设置方法是点击“Setting s”菜单,进而点击Configuration。

通过漫游,选定发电厂应用演示系统的专家系统运行文件(如:C:\Program Files
\CCUC\Intemor\Power Plant\Chinese Power Plant\Knowledge Base
\Power_Plant_Chinese.kbr),输入因特摩数据服务器的宿主机的IP地址,若单机运行,可输入“localhost”,然后选择接受实时数据的程序接口方式API (共有两种接口方式,API或 Clipboard),最后点击“Accept”完成设置。

从而把数据接口连通,并启动因特摩仿真器(Simulator),产生仿真数据。

6.3.4 设置非传感器变量的“Non Real-time Data”
在实际应用中,常常会遇到非传感器变量,即这些变量并非来自传感器,例如“设备已经老化”,“这批煤质量不好”,“最近经常下雨”等,在过程工业中,我们把这样的变量的取值称为“Non Real-time Data”。

非传感器变量也可用来为某些变量设置常数,例如:电价的参考价格,等。

因特摩系统的DDP提供了设置了“Non Real-time Data”的功能,从而使智能监控和事故预报防范的作用增强,范围扩大。

在因特摩系统的DDP中设置“Non Real-time Data”的步骤如下:
我们以因特摩发电厂应用演示系统的知识库中,对“锅炉管子内部爆裂”事故进行预报的规则中,采用了一个非传感器变量“Tube_State”,它的“Non Real-time Data”为“设备已经老化”。

●打开因特摩数据采集和预处理器主程序,图6-3。

●点击“Settings”,出现图6-5后,选择“Non-Measurable Variables”。

图6-4
●在出现的图6-5中,找到“Tube_State”,打上“ ”。

图6-5
●回到图6-4,选择“Non Real-time Data”。

●在出现的图6-6中,找到“Tube_State”,点击其右边的赋值区域,选择
“设备已经老化”。

图6-6
到此,我们已经完成了为非传感器变量“Tube_State”设置“Non Real-time Data”(“设备已经老化”)的工作。

X。

相关文档
最新文档