技术频道

用组态6.0实现的一个流量集散控制系统

摘要:随着工业自动化水平的迅速提高,计算机在工业领域得广泛应用,人们对工业自动化的要求也越来越高,对种类繁多的控制设备和过程监控装置,组态王软件是开发工程一非常有效的工具软件。我们成功地开发了油量计量系统自动监测的工程。
关键字:组态软件;远程监控;上位机;下位机;数据采集
Abstract:With the rapid development of the industrial automation level ,more and more computers apply in all over the industrial area,the demands that people request industrial automation control are higher and higher,the king-view is a good software tool to exploit project for the more kinds control devices and monitor devices。We do a automation system of oil measure successfully。
Keywords:Configuration software;remote monitoring and control; upper machine;down machine;data collection
前言
组态王是以Windows98,windowsNT等为操作平台,用于快速开发工程和生成上位机监控系统的组态软件系统。它具有数据采集与数据处理功能;形象的生产过程的动态显示;显示实时数据与历史数据的功能及生成各种报表;远程监控、故障报警、控件等。它为用户提供了解决实际工程问题的软件环境,提高了工程运行的可靠性,缩短了工程的开发周期,非常适合开发工控项目。
1. 本控制系统实现的功能
本系统是对某油田油量计量系统实现自动监测工程的一个项目。通过使用组态软件生成的监测系统,把各个生产现场的数据采集到中心调度室,由工控机把信号进行处理,使用组态王软件生成的工程进行数据处理,生成现场过程的动画连接,计算机用户可以通过中心调度室的机房实现直接对现场的数据及画面进行浏览和监测。
这是一个典型的三级集散工业控制系统。整个系统通讯的总线方式为工业现场总线的profi-bus布线模式,第一级为上位机监控软件"组态王",运行于WIN98/NT平台、中文人机界面,操作简单方便,包括现场动态图片、声光报警监测、系统参数设定、现场控制、实时、历史曲线、趋势图、数据、报表打印等;第二级为下位机为板卡或智能模块采集数据。第三级为各个分散布局的计量间,它们直接测现场油井的出油量并有自己的一套数据传送设备。所有的现场数据全部通过双绞线传送到中心调度室,由中心调度室的工业控制计算机统一进行监测处理进行控制。 计量间也有处理紧急情况的手动装置。本系统的实现过程如下。
2. 系统硬件组成
现场数据采集设备--------计量间的现场智能仪表指示仪
通讯总线网络 --------profi-bus
智能通迅模快 ---------中机浦发模块卡
实现双机备份的多媒体计算机。
信号传输线
3. 系统具体实现
3.1 系统将各个计量间的现场智能仪表指示仪的数据取来处理,共有12个计量间,每个计量间有仪表30块。
3.2 使用组态王开发系统制做的画面,其中主运行画面如下:

主程序运行的应用程序命令语言:


其中运行时对累计流量处理部分的框图如下:

程序:
流动状态1位移=流动状态1位移+1;
if(流动状态1位移>3)
{流动状态1位移=0;}
流动状态2位移=流动状态2位移+1;
if(流动状态2位移>3)
{流动状态2位移=0;} 注:此为1部分
报警测试=瞬时流量1j1.Alarm||瞬时流量1j2.Alarm||瞬时流量1j3.Alarm||瞬时流量1j4.Alarm||瞬时流量1j5.Alarm||瞬时流量1j6.Alarm||瞬时流量1j7.Alarm||瞬时流量1j8.Alarm||瞬时流量1j9.Alarm||瞬时流量1j10.Alarm||瞬时流量1j11.Alarm||瞬时流量1j12.Alarm||瞬时流量1j13.Alarm||瞬时流量1j14.Alarm||瞬时流量1j15.Alarm||累计流量1j1.Alarm||累计流量1j2.Alarm||累计流量1j1.Alarm||累计流量1j2.Alarm||累计流量1j3.Alarm||累计流量1j4.Alarm||累计流量1j5.Alarm||累计流量1j6.Alarm||累计流量1j7.Alarm||累计流量1j8.Alarm||累计流量1j9.Alarm||累计流量1j10.Alarm||累计流量1j11.Alarm||累计流量1j12.Alarm||累计流量1j13.Alarm||累计流量1j14.Alarm||累计流量1j15.Alarm; 注:此为2部分
if(int(累计流量测试/100000)>0)
{累计流量测试位8=int(累计流量测试/100000);
累计流量测试数点位=5;
累计流量测试=累计流量测试-累计流量测试位8*100000;
累计流量测试位7=int(累计流量测试/10000);
累计流量测试=累计流量测试-累计流量测试位7*10000;
累计流量测试位6=int(累计流量测试/1000);
累计流量测试=累计流量测试-累计流量测试位6*1000;
累计流量测试位5=int(累计流量测试/100);
累计流量测试=累计流量测试-累计流量测试位5*100;
累计流量测试位4=int(累计流量测试/10);
累计流量测试=累计流量测试-累计流量测试位4*10;
累计流量测试位3=int(累计流量测试);
累计流量测试=(累计流量测试-累计流量测试位3)*100;
累计流量测试位2=int(累计流量测试/10);
累计流量测试=累计流量测试-累计流量测试位2*10;
累计流量测试位1=int(累计流量测试);} 注:此为3部分
else {if(int(累计流量测试/10000)>0)
{累计流量测试位8=int(累计流量测试/10000);
累计流量测试数点位=4;
累计流量测试=累计流量测试-累计流量测试位8*10000;
累计流量测试位7=int(累计流量测试/1000);
累计流量测试=累计流量测试-累计流量测试位7*1000;
累计流量测试位6=int(累计流量测试/100);
累计流量测试=累计流量测试-累计流量测试位6*100;
累计流量测试位5=int(累计流量测试/10);
累计流量测试=累计流量测试-累计流量测试位5*10;
累计流量测试位4=int(累计流量测试);
累计流量测试=(累计流量测试-累计流量测试位4)*1000;
累计流量测试位3=int(累计流量测试/100);
累计流量测试=累计流量测试-累计流量测试位3*100;
累计流量测试位2=int(累计流量测试/10);
累计流量测试=累计流量测试-累计流量测试位2*10;
累计流量测试位1=int(累计流量测试); } 注:此为4部分
else { if(int(累计流量测试/1000)>0)
{ 累计流量测试位8=int(累计流量测试/1000);
累计流量测试数点位=3;
累计流量测试=累计流量测试-累计流量测试位8*1000;
累计流量测试位7=int(累计流量测试/100);
累计流量测试=累计流量测试-累计流量测试位7*100;
累计流量测试位6=int(累计流量测试/10);
累计流量测试=累计流量测试-累计流量测试位6*10;
累计流量测试位5=int(累计流量测试);
累计流量测试=(累计流量测试-累计流量测试位5)*10000;
累计流量测试位4=int(累计流量测试/1000);
累计流量测试=累计流量测试-累计流量测试位4*1000;
累计流量测试位3=int(累计流量测试/100);
累计流量测试=累计流量测试-累计流量测试位3*100;
累计流量测试位2=int(累计流量测试/10);
累计流量测试=累计流量测试-累计流量测试位2*10;
累计流量测试位1=int(累计流量测试); } 注:此为5部分
else { if(int(累计流量测试/100)>0)
{ 累计流量测试位8=int(累计流量测试/100);
累计流量测试数点位=2;
累计流量测试=累计流量测试-累计流量测试位8*100;
累计流量测试位7=int(累计流量测试/10);
累计流量测试=累计流量测试-累计流量测试位7*10;
累计流量测试位6=int(累计流量测试);
累计流量测试=(累计流量测试-累计流量测试位6)*100000;
累计流量测试位5=int(累计流量测试/10000);
累计流量测试=累计流量测试-累计流量测试位5*10000;
累计流量测试位4=int(累计流量测试/1000);
累计流量测试=累计流量测试-累计流量测试位4*1000;
累计流量测试位3=int(累计流量测试/100);
累计流量测试=累计流量测试-累计流量测试位3*100;
累计流量测试位2=int(累计流量测试/10);
累计流量测试=累计流量测试-累计流量测试位2*10;
累计流量测试位1=int(累计流量测试); } 注:此为6部分
else { 累计流量测试位8=int(累计流量测试/10);
累计流量测试数点位=1;
累计流量测试=累计流量测试-累计流量测试位8*10;
累计流量测试位7=int(累计流量测试);
累计流量测试=(累计流量测试-累计流量测试位7)*1000000;
累计流量测试位6=int(累计流量测试/100000);
累计流量测试=累计流量测试-累计流量测试位6*100000;
累计流量测试位5=int(累计流量测试/10000);
累计流量测试=累计流量测试-累计流量测试位5*10000;
累计流量测试位4=int(累计流量测试/1000);
累计流量测试=累计流量测试-累计流量测试位4*1000;
累计流量测试位3=int(累计流量测试/100);
累计流量测试=累计流量测试-累计流量测试位3*100;
累计流量测试位2=int(累计流量测试/10);
累计流量测试=累计流量测试-累计流量测试位2*10;
累计流量测试位1=int(累计流量测试);}} }}
此为7部分,另处瞬时流量小数点浮动处理和此类似,故略。
3.3 选择某计量间画面如下:

3.4 选择某块仪表后,进入仪表显示画面如下:

a、正常显示时,12435.00是某个油井的累计流量,可浮点显示,最大为99999.999,最小为00.000000。
b、主程序中处理好的八个数字位,分别动画连接到累计流量的八个位上。以个位(右则第一个位)显示0为例,它是0-9拾个数码的叠加组合, 数码0上面的连接语言是其它数码类似。这样,来的个位数字是0,则只有数码0是显示的,而其它9个数码都是隐含的。
c、01.00是其瞬时流量,也可浮点显示,最大9999.,最小为00.00,检查人员可查看表数,另外也通过计算机把实时数据和历史数据定时打印成报表。
d、按“设定键”可以设定参数,此时瞬时流量是参数位的4个位,被修改位处于闪烁,以区分两种状态。
e、使用“ ”键移位,使用“ ” 键加、减参数的每位数字,设定好后,按“确定键”存储,返回正常显示状态。这样能根据参数自动调节油井阀门的大小,即控制了瞬时流量的大小。
“ ”键上的命令语言连接的程序如下:

“ ”键上的命令语言连接的程序如下:

3.5 曲线、报表系统

能打印各种实时报表和历史报表,能显示棒图。使用工具菜单中的历史趋势曲线和实时趋势曲线很容易建立图形显示。报表制做可先用word建立“报表.rft”文件,按照下面类似格式书写:
变量名 变量值
累计流量 {@v: 累计流量 @f;######.###}
……….. …………………………………
画面上放置按钮,为它设置“弹起时”的命令语言,命令为:Reportl("c:\工程\计量间实时报告.rtf","c:\工程\报表.rtf")。
3.6 报警系统
系统还设有报警功能,无论在任何画面,如果出现故障,计算机的画面闪动,出现红色报警信号,另外系统也有声光报警。瞬时流量、累计流量不正常时,对应仪表管道停止动态流动,仪表上出现红色警介标志。
4. 使用效果与总结
这个监控系统中使用了组态王6.01软件进行开发设计,在该工程中使用了组态王的大部分功能,而且实际运行效果非常良好。自正式投入使用以来,一直可靠无故障地运行,客户非常满意。这个系统的投运,也使用户在企业自动化管理水平方面有了很大的提高。足不出户就可以轻轻松了解和控制油井现场,该工程模式可以推广应用到许多需要远程监控管理环境之中。

文章版权归西部工控xbgk所有,未经许可不得转载。