【ACCESS精品源码栏目提醒】:本文主要为网学会员提供“【精品】Ch6实时数据接口(DDP) - 其它资料”,希望对需要【精品】Ch6实时数据接口(DDP) - 其它资料网友有所帮助,学习一下!
第六章 使用因特摩实时数据接口和处理模块DDP6.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 200Tag_ Mv Pv Sv mv_sca mv_scal pv_sca pv_scalNumber le_low e_high le_low e_highLIC101 .5243964 .5500001 .5582621 0 100 0 100HI-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 因特摩实时数据传送 API6.2.1 结构 因特摩 Driver 的一个主要功能是提供接收实时数据的程序下接口,以接收来自工业过程的实时数据,并将其经过处理后送到因特摩服务器。
在因特摩系统中,程序接口更加标准化。
它提供两种方式的接口: (1)API 方式;(2)剪贴板Clipboard方式,用户可在设置界面中选择其中一种,则因特摩 Driver 即可开始以选定的方式接收实时数据。
因特摩实时数据传送 API 为开发人员提供了传送实时数据到因特摩系统的方法和接口。
它是因特摩系统和实时工业过程之间的接口,并且以动态链接库的方式提供SendData.dll。
下图 6-1 所示此 API 在因特摩系统总体结构中的使用位置。
Industrial Process DCS etc. INTEMOR View Ipview.exe Your Data IINTEMOR Driver INTEMOR Server collection Program Bdrive.exe IpServer.exe INTEMOR View 图 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 AddRealTimeDataCString psTagName double dPV double dSVdouble 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 LoadLibrarySendData.dll // 上述代码假设 senddata.dll 与程序在同一个目录下。
否则需使用sendData.dll 的绝对路径.Step 2. 定义函数类型及从 dll 中获取函数指针Step 2.1 定义函数类型 typedef BOOL pAddRealTimeDataCString psTagName double dPVdouble dSV double dMV int nScaleHigh int nScaleLow typedef BOOL pSend typedef LPTSTR pErrStep 2.2 从 dll 中获取函数指针 pAddRealTimeData AddRealTimeData pAddRealTimeDataGetProcAddresshMod AddRealTimeData pSend Send pSendGetProcAddresshMod Send pErr GetLastErrorString pErrGetProcAddresshModGetLastErrorStringStep 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 AddRealTimeDatasTagName dPV dSV dMV nScaleHighnScaleLow //在一个循环程序中,重复上述操作直至所有的数据点都加入到了缓冲区 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”菜单,方法是点击“Settings”菜单,进而点 击“Configuration”。
通过漫游,选定工业锅炉应用演示系统的专家系统 运 行 文 件 如 : C:Program FilesCCUCIntemorIndustrial BoilerKnowledge BaseCB_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)采集数据。
系统的设置方法是点击“Settings”菜单,进而点击 Configuration。
通过漫游,选定发电厂应用演示系统的专家系统运行文件如:C:Program FilesCCUCIntemorPower PlantChinese Power PlantKnowledge BasePower_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”,它的“NonReal-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-timeData”“设备已经老化”的工作。