Ch 6 实时数据接口DDP.docx
- 文档编号:28719902
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:13
- 大小:69.69KB
Ch 6 实时数据接口DDP.docx
《Ch 6 实时数据接口DDP.docx》由会员分享,可在线阅读,更多相关《Ch 6 实时数据接口DDP.docx(13页珍藏版)》请在冰豆网上搜索。
Ch6实时数据接口DDP
第六章使用因特摩实时数据接口和处理模块(DDP)
6.1因特摩系统的实时数据获取
因特摩数据采集和预处理器目前有两种通讯机制:
●利用因特网TCP/IP协议的API调用,把实时数据发送给因特摩服务器;
●利用OPC(参阅第十章第三节,154页);
●利用微软操作平台的剪切板(Clipboard)技术和实时数据通讯;
无论使用那种方法,其目的都是将从其它通道获取的实时数据送往因特摩服务器(INTEMORServer)。
常用的数据通道可分为以下几类:
6.1.1.API方式常用的数据接口通道
通过DCS接口获取实时数据
通常,在生产过程中,因特摩智能化实时监控和事故预报系统的实时数据源来自底层的计算机分布控制系统(DCS),因此,因特摩系统必须有DCS系统的数据支持。
通过实时数据接口,因特摩系统可以获取多种DCS系统的实时数据。
针对不同的现场计算机分布控制系统(DCS),必须编写或购买相应的DCS数据采集和接口软件,为因特摩系统提供数据支持。
例如,对ProVAX系统而言,在使用因特摩系统时,用户可以考虑使用DCS专业接口CHIP(ComputerHighwayInterfaceProgram,计算机高速公路通道接口)。
通过CHIP,因特摩数据采集和预处理器能够比较方便地和DCS通讯,实时采集数据。
CHIPNT为微软NT版的CHIP,应用较广。
从数据库获取数据
用户也可从现场工业数据库中直接获取数据,然后通过调用TCP/IPAPI接口程序将数据送入因特摩系统。
因特摩系统中使用的数据库有:
MSSQL服务器和MSAccess数据库。
从其它通道获取数据
用户也可从其它通道获取数据送入因特摩。
比如,在因特摩发电厂应用演示系统中,我们使用因特摩仿真器(Simulator)作为数据来源,通过运行“TCP.exe”将数据送入因特摩。
6.1.2.通过剪贴板(Clipboard)方式获取实时数据
任何设备如果能够输出文本格式(TextFormat)的数据流到因特摩系统计算机系统的剪贴板(Clipboard),即可以和因特摩系统连接。
但是,用剪贴板方式获取实时数据的方法是不安全的。
尤其是安装因特摩系统的计算机还可能用于其它的计算任务。
数据流的格式如下:
Tag_Number:
mv,pv,sv,mv_scale_low,mv_scale_hign,pv_scale_low,pv_scale_hign;
其中:
Tag_Number:
变量名
mv:
操作值(控制器的输出)
pv:
过程输出,或控制器的输入
sv:
给定值
例如:
LIC101:
.,.,.,0,100,0,100;
HI-100:
.,0,0,0,100,0,200;
Tag_
Number
Mv
Pv
Sv
mv_scale_low
mv_scale_high
pv_scale_low
pv_scale_high
LIC101
.
.
.
0
100
0
100
HI-100
.
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”之下的“ConnecttoSource”,这相当于点击DDP的最左边的第一个图标,这将启动工业锅炉仿真器Boiler,
●出现Boiler的界面之后,点“Restorestate””,调进“normal.stt”file后,把(Boiler)的界面最小化,
●再点击“DDP”的“Data”之下的“SendOut”,这也相当于点击“DDP”的最左边的第二个图标。
此时,接口已经连通,并启动了因特摩工业锅炉仿真器,不断生成锅炉仿真数据。
6.2因特摩实时数据传送API
6.2.1结构
因特摩Driver的一个主要功能是提供接收实时数据的程序下接口,以接收来自工业过程的实时数据,并将其经过处理后送到因特摩服务器。
在因特摩系统中,程序接口更加标准化。
它提供两种方式的接口:
(1)API方式;
(2)剪贴板(Clipboard)方式,用户可在设置界面中选择其中一种,则因特摩Driver即可开始以选定的方式接收实时数据。
因特摩实时数据传送API为开发人员提供了传送实时数据到因特摩系统的方法和接口。
它是因特摩系统和实时工业过程之间的接口,并且以动态链接库的方式提供(SendData.dll)。
下图6-1所示此API在因特摩系统总体结构中的使用位置。
图6-1API在因特摩总体结构中的使用位置
系统的工作方式如下:
开发者的数据采集程序(YourDataCollectionProgram)从工业过程中(如DCS等)采集到数据后利用SendData.dll中提供的函数把实时数据送到因特摩Driver。
因特摩Driver接收到数据后,进行分析处理,然后将数据及事故报告传送到因特摩服务器供各个因特摩View使用。
注意:
1.在传送数据前因特摩Driver必须在运行状态。
2.数据采集程序和因特摩Driver必须在同一台机器上。
6.2.2函数
SendData.dll提供三个函数,它们是:
AddRealTimeData,Send和GetLastErrorString.
●AddRealTimeData
BOOLAddRealTimeData(CString*psTagName,doubledPV,doubledSV,doubledMV,intnScaleHigh,intnScaleLow)
功能:
将数据送入缓冲区.
参数:
CString*psTagName:
数据点的标识号(TagNumber).
doubledPV:
数据点的过程变量值.
doubledSV:
数据点的设定值.
doubledMV:
数据点的控制变量值(ManipulateValue).
intnScaleHigh:
数据点的上限值.
intnScaleLow:
数据点的下限值.
返回值:
TRUE若无错
FALSE若有错
注:
在调用AddRealTimeData函数前,dPV,dSV,dMV必须转换成标准值(NormalizedValue)。
转换公式如下:
设:
vStandard为标准值,
vRealValue为实际值,
nScaleHigh为上限,
nScaleLow为下限.
则:
vStandard=(vRealValue–nScaleLow)/(nScaleHign–nScaleLow)
对于dMV,我们用100上限,0为下限.
●Send
BOOLSend()
功能:
将缓冲区中的数据送到因特摩Driver.
返回值:
TRUE若无错
FALSE若有错
注:
1.在调用Send()函数前,当前时刻的所有数据点都应该用AddRealtimeData函数加入到缓冲区;
2.两个send()函数调用的时间间隔不应小于1秒.
●GetLastErrorString
LPTSTRGetLastErrorString()
功能:
获取错误信息
返回值:
错误信息
注:
仅在AddRealtimeData和Send函数返回FALSE时调用此函数。
如何在C++中使用SendData.dll
在c++中使用SendData.dll可依如下四个步骤:
Step1.载入库(LoadLibrary)
Step2.定义函数类型及从dll中获取函数指针
Step3.使用dll中的函数
Step4.释放库(FreeLibrary)
下面是一个源代码实例:
Step1.载入库(LoadLibrary)
HMODULEhMod=LoadLibrary("SendData.dll");
//上述代码假设senddata.dll与程序在同一个目录下。
否则需使用sendData.dll的绝对路径.
Step2.定义函数类型及从dll中获取函数指针
Step2.1定义函数类型
typedefBOOL(*pAddRealTimeData)(CString*psTagName,doubledPV,doubledSV,doubledMV,intnScaleHigh,intnScaleLow);
typedefBOOL(*pSend)();
typedefLPTSTR(*pErr)();
Step2.2从dll中获取函数指针
pAddRealTimeDataAddRealTimeData=(pAddRealTimeData)GetProcAddress(hMod,"AddRealTimeData");
pSendSend=(pSend)GetProcAddress(hMod,"Send");
pErrGetLastErrorString=(pErr)GetProcAddress(hMod,"GetLastErrorString");
Step3.使用dll中的函数将数据送到因特摩Driver
CstringsTagName;
doubledPV,dSV,sMV;
intnScaleHign,nScaleLow;
BOOLnRetValue;
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()函数后,就可以进行下一个时刻的数据加入和传送操作。
Step4.释放库(FreeLibrary)
FreeLibrary(hMod);
注:
Step1,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”菜单,方法是点击“Settings”菜单,进而点击“Configuration”。
通过漫游,选定工业锅炉应用演示系统的专家系统运行文件((如:
C:
\ProgramFiles\CCUC\Intemor\IndustrialBoiler\KnowledgeBase\CB_Boiler_Chinese.kbr),输入因特摩数据服务器的宿主机的IP地址,若单机运行,可输入“localhost”,然后选择接受实时数据的程序接口方式Clipboard(共有两种接口方式,API或Clipboard)。
最后点击“Accept”完成设置。
●点击“Data”菜单,进而点击ConnecttoSource,将打开CommonClipboard的主窗口。
此时,接口已经被连通,并启动了锅炉仿真器,不断生成锅炉仿真数据。
●点击“Data”菜单,进而点击Sendout。
●此后,因特摩数据采集和预处理器将不断从工业锅炉仿真器获得数据,并把数据发送给因特摩数据服务器。
注意:
因特摩系统对Run-time知识库的设置省略了人工加载过程,一旦在Configuration中选择好了正确的Run-time知识库,在下次程序启动后,知识库将被自动加载。
同理适用于下述步骤。
利用因特网TCP/IP协议的API,把实时数据发送给因特摩数据服务器
在进行因特摩技术用TCP/IP协议的API方式获取实时数据的培训时,此时工业对象为火力发电厂,因特摩数据采集和预处理器将从CCUC自行开发的因特摩仿真器(Simulator)采集数据。
系统的设置方法是点击“Settings”菜单,进而点击Configuration。
通过漫游,选定发电厂应用演示系统的专家系统运行文件(如:
C:
\ProgramFiles
\CCUC\Intemor\PowerPlant\ChinesePowerPlant\KnowledgeBase
\Power_Plant_Chinese.kbr),输入因特摩数据服务器的宿主机的IP地址,若单机运行,可输入“localhost”,然后选择接受实时数据的程序接口方式API(共有两种接口方式,API或Clipboard),最后点击“Accept”完成设置。
从而把数据接口连通,并启动因特摩仿真器(Simulator),产生仿真数据。
6.3.4设置非传感器变量的“NonReal-timeData”
在实际应用中,常常会遇到非传感器变量,即这些变量并非来自传感器,例如“设备已经老化”,“这批煤质量不好”,“最近经常下雨”等,在过程工业中,我们把这样的变量的取值称为“NonReal-timeData”。
非传感器变量也可用来为某些变量设置常数,例如:
电价的参考价格,等。
因特摩系统的DDP提供了设置了“NonReal-timeData”的功能,从而使智能监控和事故预报防范的作用增强,范围扩大。
在因特摩系统的DDP中设置“NonReal-timeData”的步骤如下:
我们以因特摩发电厂应用演示系统的知识库中,对“锅炉管子内部爆裂”事故进行预报的规则中,采用了一个非传感器变量“Tube_State”,它的“NonReal-timeData”为“设备已经老化”。
●打开因特摩数据采集和预处理器主程序,图6-3。
●点击“Settings”,出现图6-5后,选择“Non-MeasurableVariables”。
图6-4
●在出现的图6-5中,找到“Tube_State”,打上“”。
图6-5
●回到图6-4,选择“NonReal-timeData”。
●在出现的图6-6中,找到“Tube_State”,点击其右边的赋值区域,选择“设备已经老化”。
图6-6
到此,我们已经完成了为非传感器变量“Tube_State”设置“NonReal-timeData”(“设备已经老化”)的工作。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Ch 实时数据接口DDP 实时 数据 接口 DDP