2009-08-31 08:53:38 来源:万方数据
本文介绍了工业组态软件在油田自动化系统中的应用,并深入阐述了基了以太网的油田SCADA系统的数据采集以及和后台数据库互连的实现方法,总结了该系统的功能和特点。
1 引 言
SCADA(Supervisor Control And Data Acquisition)系统,即监测监控及数据采集系统。它可以实时采集现场数据,对工业现场进行本地或远程的自动控制,对工艺流程进行全面,实时的监视,并为生产、调度和管理提供必要的数据。
2 准东油田SCADA的系统构成及功能
准东油田SCADA系统主要由远程测控终端、通讯网络及中心站构成。SCADA系统的主要功能包括数据采集、本地和远程控制。
2.1 远程测控终端
油井测控终端YJ-1200采用一体化设计,将工业电源、电量采集、参数设置、就地显示和操作、数据采集、油井控制等功能集于一体。用户只需简单配置和接线即可实现油井数据采集和操作控制,完成油井井口动态数据的在线录取、应急处理,数据传送、状态反馈、抽油机电气保护等功能。
计量控制装置采用可编程I/O控制器作为主控单元,配合本地I/O模块实现计量站数据的采集和计量操作的控制,中控室人机界面可实现远程计量操作和参数设置。
2.2 系统的通讯网络
油井、计量站测控子系统与中控室采用无线局域网通讯。无线通讯设备采用以色列BA-VL系列室外无线网桥,无线网桥采用OFDM技术,工作频率 5.8GHz,工作温度在-40℃至+60℃,提供10/100Mbos以太网接口,远端站SU-A集成21dBi天线,数据传输速率6Mbps,基站中心带宽54Mbps,基站数量可以根据带宽需求增加。覆盖距离大于10公里(FFC)。
2.3 中心站
它是—个局域网,包含3台工作站和1台数据库服务器,以完成不同的工作。它通过中心站软件管理系统数据库,每个工作站通过组态画面监测现场站点,下发控制命令进行控制,并完成工况图、统计曲线、报表等功能。
3 应用组态软件采集数据实例
3.1 提取终端数据
各种变送器通过4-20mA电流信号传送到终端的采集模块,终端模块通过转换将采集到的数据保存到各个事先定义好的寄存器中,我们利用 MODBUS/TCP协议来完成组态软件与远程终端的通讯,提取到终端的数据。组态软件本身就是数据采集与过程控制的专用软件,他内部本身就具有 MODBUS/TCP的协议包,当然我们就不必考虑终端与组态软件是怎么通讯的,我们只需要通过配置组态软件来完成就可以了。
以下简单的介绍一下它们之间是怎么会话的。由组态软件发送一个数据包,数据包格式如下:
![]()
**04 05代表事务处理标识符
**00 00代表协议标识符
**00 06代表长度字符
**02代表终端站地址
**04代表功能码
![]()
**01 00代表寄存器开始地址
**03 00代表寄存器个数
**04 05代表事务处理标识符
**00 00代表协议标识符
**00 03代表长度字符
**02代表终端站地址
**04代表功能码
**01 00第一个寄存器的值
**依次类推……
不同的数据类型计算的方法不同。通过计算才能真正的得到我们想要的值。
当然这些细节的问题我们不用详细的去了解它。那到底怎样才能通过组态软件提取到终端的数据呢?在这里我们以Citect组态软件为例,介绍到底是怎样一个过程:
1)将所有RTU的IP地址、站地址、I/O地址搞清楚以后,形成一张点表,以备后面使用;
2)在Citect中新建工程,然后就是建立与每个RTU的设备驱动;
3)通过I/O的地址不同创建变量,Citect将会将这些创建的变量保存到一张自由表中;
4)Citect软件利用实时数据库将采集到的数据保存起来,以便后面调用。在实时数据库中建立实时数据库变量与I/O点的对应关系,即定义数据连接;
5)编写人机界面,通过人机界面用户可以看到现场的各个参数;
6)将操作画面中的图形对象与实时数据库变量建立动画连接关系,规定动画属性和幅度;
7)根据用户需求,制作历史趋势,报警显示,以及开发报表系统;
8)对组态内容进行分段和总体调试,视调试隋况对软件进行相应修改。
目前比较先进的组态软件都有独立的实时数据库组件,以提高系统的实时性,增强处理能力。实时数据库系统组态程序是建立实时数据库的组态工具,可以定义实时数据库的结构、数据来源、数据连接、数据类型及相关的各种参数。
3.2 实时数据库与通用Oracle数据库的互联
采用通用数据库接口(ODBC接口)组件用来完成组态软件的实时数据库与Oracle数据库的互联。ODBC是微软公司开放服务结构中有关数据库的—个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。ODBC的最大优点是能以统一的方式处理所有的数据库。正是利用这一特点,我们将组态软件与Oracle数据库紧密的结合在一起,实现了与数据库的会话,把实时数据保存的Oracle数据库当中,为今后的应用分析提供了极大的方便。
通过下面的实例我们可以看到,油田的单井和计量站的监控中,Citect将从单井和计量站采集到的数据是怎样通过odbc保存到Oracle数据库中,在不同Oracle数据空间,不同的表中保存了单井的各个参数数据和工图及计量站的参数和计量结果;然后通过数据库将数据发布到不同的部门,进行分析和统计。
下面我们介绍一下我们是怎么实现的:
首先我们是建立一个Oracle数据库,在数据库中建立里表空间,建立不同的表用来保存数据。比如用单井参数建立一个表,表结构如下:
将不同的数据项保存到不同的字段中,这些数据将永久的保存在数据库以便可以接受调用;那么表结构创建好以后,建立ODBC打开“控制面板”,双击“管理工具”然后双击“数据源(ODBC)”打开ODBC数据源管理器;选择“文件DSN”,点击“添加”根据向导点击“下一步”,选择数据源驱动名称 “Oracle for Odbc”,点击下一步,填写dobc名称和服务名,点击完成。那么我们就可以通过odbc名称访问数据库了。其次通过SQL对象将不同的数据保存到不同的字段中,代码如下:
GLOBAL REAL TEWeiYi_Array[500],TEZaiHe_Array[500],TTWeiYi_Array[500];
FUNCllON SaveXJOra(STRING JH)//保存功图函数(根据不同的井号保存)
INT HFile,Num,Tag1,Tag2,HPlot,i,T_wy,MinWY,SQLConnection;
REAL Temp_WY,Temp_ZH,lc,Max_zaihe,Min_zaihe;
STRING FnePath,LnStr,Str_WeiYi,Str_ZaiHe,TJH,StrSql,StrDate;
Tran_File(JH),//根据井号从不同现场RTU提取功图数据。
Sleep(8);
StrDate=Date()+“”+Time()+“:00”;
IF JH<>“B75”THEN
TJH=StrTrim(StrMid(JH,1,6));
ELSE
TJH=“75”;
END
IF JH=“B303”THEN
TJH=“303”;
END
FflePath=“D:\sndatalog\s_”+TJH+“Log.csv”
HFile=FileOpen(FnePath,“r”);
IF HFile<>-1 THEN
FileReadLn(HFile);
FileReadLn(HFile);
FileReadLn(HFile);
Num=0;
WHILE FilEOF(HFile)<>1 DO
LnStr=StrTrim(FileReadLn(HFile));
Tagl=StrSearch(1,LnStr,“,”),
Str_WeiYi=StrMid(Lnstr,0,Tag1);
Tag2=StrSearch(Tag1+1,LnStr,“,”);
Str_ZaiHe=StrMid(Lnstr,tag1+1,Tag2-tag1-1
Temp_wy=StrToInt(Str_WeiYi);
temp_zh=StrToReal(Str_ZaiHe)*150/32767;
TTWeiYi_Array[Num]=Temp_wy;
TEZaiHe_Array[Num]=temp_zh;
Num=Num+1;
END
//Message(“”,IntToStr(num),16);
FileClose(HFile);
//保存功图数据到数据库中
IF RenjwyzfCS(JH)=1 THEN
FOR i=0 TO Num DO
TTWeiYi_Array[i]=32767-TTWeiYi_Array[i]
END
END
SQLConnection=SQLConnect(“DSN=sn_dj;UID=snzks;PWD=snzks”);//建立与数据库的通讯
lc=Rendjlc(JH);
MinWY=TableMam(TTWeiYi_Array,Num,0,0);
FOR i=0 TO Num-5 DO
TEWeiYi_Array[i]=(TTWeiYi_Array[i]-MinWY)*900*lc/180/32767;//lc表示油井臂长
END
//计算最大最小载荷
SQLSet(SQLConnection,“insert into xgt(jh,sj,ccheng,cci,maxllzh,minllzh,gt)values”;//设置具有添加功能的Sql语言
strscll=JH+“‘,TO_date(’”+scrdat+‘“yyyy-mm- ddHH24:MI:SS’),”+RealToStr(Rencsccheng(JH),5,2)+“,”+RealToSLr(Rencscci(JH),5,2H“,”+RealToStr(RenMaxLLZH(JH),5,2)+“,”+RealToStr(RenMinLLZH(JH),5,2)+“,”+IntToStr(Num-5)“;
SQLAppend(SQLConnection,Scrsql);
//Message(”“,strsql,16);
//开始组合工图
FOR i=0 TO Num-5 Do
SQLAppend(SQLConnection,”,“+StrTrim(RealToStr(TEWeiYi_Array[i],5,2))+”,“+StrTrim(RealToStr(TEZaiHe_Array[i],5,1)));//向sql语句追加。
END
SQLAppend(SQLConnection,”‘)“);//结束向Sql语句添加
SQLExec(SQLConnection,”“);//执行Sql语句
SQLEnd(SQLConnection);//结束与数据库的会话
SQLDisconnect(SQLConnoction);//断开与数据的连接
END
3.3 实际应用及监测效果
通过近—年的实际应用,效果良好,各监控子站与中心站的数据通讯稳定,数据库的存储效率较高,各项参数都达到了行业标准,下面给出实际监测画面:


4 结束语
用户的需求促使技术不断进步,在组态软件上这种趋势体现得尤为明显。未来的组态软件将是提供更加强大的分布式环境下的组态功能、全面支持ActiveX,扩展能力强、支持OPC等工业标准、控制功能强、并能通过Intemet进行访问的开放式系统。紧密地与数据库结合在一起,使SCADA系统成为一个集监控和应用为一体的一个自动化应用系统,而不仅仅限于监控这个层面。
免责声明:本网站(http://www.ciotimes.com/)内容主要来自原创、合作媒体供稿和第三方投稿,凡在本网站出现的信息,均仅供参考。本网站将尽力确保所提供信息的准确性及可靠性,但不保证有关资料的准确性及可靠性,读者在使用前请进一步核实,并对任何自主决定的行为负责。本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。
