一种水流量远程监测装置 【技术领域】
本发明涉及一种水流量远程监测装置,属水资源水量监测与管理的技术领域。
背景技术
水是人类赖以生存的最重要的资源,中国是一个缺水的国家,中国的人均水资源量只有世界平均水平的四分之一,如何对水资源进行合理有效的规划、开发、利用、管理和保护,是十分重要的研究课题。
在我国陆地上有许多河流、湖泊、水库、蓄水池,这些地域的水提供工业用水、生活用水、农业灌溉用水、生态用水,在各个地域设立着许多供水工程、水资源监测站、水库分流泵站、灌溉泵站,由于这些站点分布地域较广,管理难度大,各分站有的相距较远,管理起来费时费力,准确率低,自动化程度低,给较大地域管理水、监测水、掌握水资源量、监测水流量带来很大困难。
对水资源的检测,传统的测流方式以流速仪法、浮标法、比降法等人工手段为主,但这些技术均不能实现在线实时测量、传输。
【发明内容】
发明目的
本发明的目地就是针对背景技术的不足,在各个水源分站设立监控终端,利用GPRS移动通讯,把水流量监测信息即时传输给水管理总站,采用水流量传感器、超声流量计、监测管理电路、主控计算机、计算机程序等技术,实现各分站与总站的即时远程水流量数据传输、分析,以大幅度提高水资源流量监测的速度和准确性。
技术方案
本发明主要结构由:主控计算机、键盘、打印机、GPRS接收天线、GPRS发射天线、水流量测量终端机箱、水流量传感器组成整体结构;
水流量测量终端机箱主要结构由:控制面板、液晶显示屏、指示灯、调控开关、操纵键盘、计算卡插口、报警器、GPRS发射天线、电源座、电缆接插口、水流量传感器接口、水流量传感器、超声波流量计、交直流变压器、温度传感器、湿度传感器、屏蔽箱、电路板、接线座组成;在终端机箱1的底部为底座14、前部为控制面板2、并由螺栓23固定;在控制面板2的上部为液晶显示屏13,在液晶显示屏13下部为指示灯3、调控开关4、操纵键盘5,在操纵键盘5的左下部为计算卡插口8,右下部为报警器6,在控制面板2的下部设有六个电缆接插口7;在终端机箱1的左侧上部设有水流量传感器接口9、10,通过屏蔽电缆21分别与水流量传感器11、12联接;在终端机箱1的右侧上部设有电源座22;在终端机箱1的左上部设有避雷针32、中间上部设有GPRS发射天线15;水流量传感器11、12安装于过水管道上;
在终端机箱1的内上部设有超声波流量计26、交直流变压器27,在中下部设有屏蔽箱24,左侧部设有温度传感器29、湿度传感器30、右侧部设有接线座28,之间由导线31联接;在屏蔽箱24内设有电路板25,在电路板25上设有控制传输电路;超声波流量计26接收水流量传感器9、10的水流量信息,经计算处理,把水流量信息传输给电路板25上的控制传输电路;交直流变压器27经电源座22与外接交流电源联接,变压后传输给电路板25上的控制电路及超声波流量计26;
终端机箱1上部的GPRS发射天线15发射无线通讯信号,远程传输至GPRS接收天线16,并把信号信息传输给主控计算机17,进行程序计算处理,并由键盘18、打印机19打印水流量数据。
所述的水流量远程监测装置,由1部主控计算机17、256个终端机箱1组成,各终端机箱1结构相同、设置相同、功能相同。
所述的终端机箱1的电路线板25,为双重屏蔽保护,外部为金属机箱壳体,内部由铜铝合金屏蔽箱24保护。
所述的电路板25,由微计算机控制操作电路IC1、振荡电路IC2、总线接口电路IC3、超声水流信息输入输出电路IC4、水流接插卡电路IC5、GPRS接插发射电路IC6、信息信号转换电路IC7、晶振和复位电路IC8、单片机保护排阻电路IC9、液晶显示电路IC10、报警喇叭控制电路IC11组成整体电路,各电路间由导线联接,Vcc端为电源端,GND端为接地端。
所述的水流量远程监测装置的主控计算机,用计算机程序进行计算及信息处理,其计算处理程序如下:
I、应用程序启动时:
ShowPicture(″后台日报处理″);
hidePicture(″后台日报处理″);
ShowPicture(″实时数据报表″);
hidePicture(″实时数据报表″);
string FileName1=InfoAppDir()+″日报\″+StrFromReal(\\本站点\$年,0,″f″)+″y″+StrFromReal(\\本站点\$月,0,″f″)+″m″+StrFromReal(\\本站点\$日,0,″f″)+″.rtl″;
ReportLoad(″后台日报处理″,FileName1);
SQLConnect(\\本站点\数据ID,″dsn=古交地下水数据库;uid=;pwd=″);
\\本站点\月报表专用=\\本站点\$月;
//程序运行初始泵的状态
\\本站点\BXZ01=0;
......
\\本站点\BXZ125=0;
\\本站点\BGZ01=1;
......
\\本站点\BGZ125=1;
II、应用程序运行时:
//瞬时流量合成
function1(\\本站点\FR001,\\本站点\FR001G,\\本站点\FR001D);
......
function1(\\本站点\FR125,\\本站点\FR125G,\\本站点\FR125D);
//累计流量合成
data2(\\本站点\FLJ001,\\本站点\FLG001G,\\本站点\FLJ001D);
......
data2(\\本站点\FLJ125,\\本站点\FLJ125G,\\本站点\FLJ125D);
//1号泵运行状态判别
if(\\本站点\FR001!=0&&\\本站点\FR001!=0.5&&\\本站点\VS1==1)通
讯正常,泵正常运行
{\\本站点\BXZ01=1;
\\本站点\BGZ01=0;}
if((\\本站点\FR001==0||\\本站点\FR001==0.5)&&\\本站点\VS1==1)通
讯正常,泵停止运行
{\\本站点\BXZ01=0;
\\本站点\BGZ01=0;}
if((\\本站点\FR001<0||\\本站点\FR001>1200)&&\\本站点\VS1==1)通讯
正常,泵故障
{\\本站点\BXZ01=1;
\\本站点\BGZ01=1;}
if(\\本站点\VS1==0)//通讯中断,泵停止运行
{\\本站点\BXZ01=0;
\\本站点\BGZ01=1;}
......
//125号泵运行状态判别
if(\\本站点\FR125!=0&&\\本站点\FR125!=0.5&&\\本站点\VS125==1)
通讯正常,泵正常运行
{\\本站点\BXZ125=1;
\\本站点\BGZ125=0;}
if((\\本站点\FR125==0||\\本站点\FR125==0.5)&&\\本站点\VS 125==1)
通讯正常,泵停止运行
{\\本站点\BXZ125=0;
\\本站点\BGZ125=0;}
if((\\本站点\FR125<0||\\本站点\FR125>1200)&&\\本站点\VS125==1)通
讯正常,泵故障
{\\本站点\BXZ125=1;
\\本站点\BGZ125=1;}
if(\\本站点\VS125==0)//通讯中断,泵停止运行
{\\本站点\BXZ125=0;
\\本站点\BGZ125=1;}
III、应用程序停止时:
closepicture(″后台日报处理″);
closepicture(″实时数据报表″);
SQLdisConnect(\\本站点\数据ID);
IV、自定义函数命令语言-瞬时流量合成函数:
function1(float DataFloat,long read1gaosjz,long read1disjz)
{
string add=″″;
string read1=″″;
string read1gao=″″;
string read1di=″″;
string read1he=″″;
long gao1chang=0;
long di1chang=0;
long i1=0;
long i2=0;
long Num;
String DataStr;
long DataVal;
long SignFlag;
long SignVal;
long Exponent;
long ExpVal;
float Mantissa;
string read1fhw=″″;
string read1zsw=″″;
string read1ws=″″;
string gao1bu=″″;
string gao1rjz=″″;
string di1bu=″″;
string di1rjz=″″;
long i3=0;
string i03=″″;
//long read1gao1sjz;
//long read1disjz;
long read1zswsjz=0;
long read1wssjz=0;
read1gao=StrFromInt(read1gaosjz,2);
read1di=StrFromInt(read1disjz,2);
gao1chang=StrLen(read1gao);
di1chang=StrLen(read1di);
if(gao1chang!=16)
{i1=16-gao1chang;
gao1bu=StrRight(″0000000000000000″,i1);
gao1rjz=gao1bu+read1gao;}
else
{gao1rjz=read1gao;}
if(di1chang!=16)
{i2=16-di1chang;
di1bu=StrRight(″0000000000000000″,i2);
di1rjz=di1bu+read1di;}
else
{di1rjz=read1di;}
read1he=gao1rjz+di1rjz;
read1fhw=StrMid(read1he,1,1);
read1zsw=StrMid(read1he,2,8);
read1ws=StrMid(read1he,10,23);
Num=1;
SignFlag=StrToreal(read1fhw);
if(SignFlag==0)
{ Exponent=0;
while(Num<=8)
{ DataStr=Strmid(read1zsw,Num,1);
DataVal=StrToreal(DataStr);
ExpVal=8-Num;
Exponent=Exponent+DataVal*pow(2,ExpVal);
Num=Num+1;}
if(read1zsw==″00000000″)
{ Exponent=-126;}
if(read1zsw==″11111111″)
{ Exponent=0;}}
else
{while(Num<=8)
{ DataStr=Strmid(read1zsw,Num,1);
DataVal=StrToreal(DataStr);
ExpVal=8-Num;
Exponent=Exponent+DataVal*pow(2,ExpVal);
Num=Num+1;}
if(read1zsw==″11111111″)
{ Exponent=0;}
}
Mantissa=0;
Num=1;
while(Num<=23)
{ DataStr=Strmid(read1ws,Num,1);
DataVal=StrToreal(DataStr);
ExpVal=Num;
Mantissa=Mantissa+DataVal*(1.0/pow(2,ExpVal));
Num=Num+1;
}
if(read1zsw==″00000000″)
{Exponent=126;
DataFloat=pow(-1,SignVal)*(1.0/pow(2,Exponent))*Mantissa;}
if(read1zsw==″11111111″)
{DataFloat=0;}
if(Exponent>=127)
{Exponent=Exponent-127;
DataFloat=pow(-1,SignVal)*pow(2,Exponent)*(Mantissa+1);}
else{Exponent=127-Exponent;
DataFloat=pow(-1,SignVal)*(1.0/pow(2,Exponent))*(Mantissa+1);}
if(DataFloat==0.5)
DataFloat=0;
return;
}
V、自定义函数命令语言-累计流量合成函数:
data2(long data,long rd2gaosjz,long rd2disjz)
{
string rd2gaorjz=″″;
string rd2dirjz=″″;
long rd2gaochang=0;
long rd2dichang=0;
string rd2gaobu=″″;
string rd2dibu=″″;
string gao2rjz=″″;
string di2rjz=″″;
string rd2he=″″;
string datastr=″″;
rd2gaorjz=StrFromInt(rd2gaosjz,2);
rd2dirjz=StrFromInt(rd2disjz,2);
rd2gaochang=StrLen(rd2gaorjz);
rd2dichang=StrLen(rd2dirjz);
long i1=0;
long i2=0;
long i3=0;
long num=1;
long dataval=0;
long expval=0;
data=0;
if(rd2gaochang!=16)
{i1=16-rd2gaochang;
rd2gaobu=StrRight(″0000000000000000″,i1);
gao2rjz=rd2gaobu+rd2gaorjz;}
else
{gao2rj z=rd2gaorjz;}
if(rd2dichang!=16)
{i2=16-rd2dichang;
rd2dibu=StrRight(″0000000000000000″,i2);
di2rjz=rd2dibu+rd2dirjz;}
else
{di2rjz=rd2dirjz;}
rd2he=gao2rjz+di2rjz;
i3=StrLen(rd2he);
if(i3==32)
{while(num<=32)
{datastr=StrMid(rd2he,num,1);
dataval=StrToReal(datastr);
expval=32-num;
data=data+dataval*Pow(2,expval);
num=num+1;
}}
return;
}
VI、事件命令语言-\\本站点\$时==23消失时(每天结束时由后台日报向后台月报中插入日数据):
string reportname2=StrFromReal(\\本站点\$年,0,″f″)+StrFromReal(\\本站点\$月,0,″f″)+″.xls″;
string ReportMonth=StrFromReal(\\本站点\$年,0,″f″)+″年
″+StrFromReal(\\本站点\$月,0,″f″)+″月″;
string FileName;
FileName=InfoAppDir()+″月报\″+reportname2;
long return02=InfoFile(Filename,1,\\本站点\$分);
ShowPicture(″后台月报处理″);
HidePicture(″后台月报处理″);
//判断月报目录下是否已经有当月的报表文件了,如果没有则从报表目录下加载模板
if(return02==0)
{ FileName=InfoAppDir()+″报表\月报.xls″;
ReportLoad(″后台月报处理″,FileName);
FileName=InfoAppDir()+″月报\″+reportname2;
ReportSetCellString(″后台月报处理″,3,7,ReportMonth);
Reportsaveas(″后台月报处理″,FileName);}
//如果当月的月报文件还没有产生则调入月报.rtl文件并按规定格式保存报表文件
FileName=InfoAppDir()+″月报\″+StrFromReal(\\本站点\$年,0,″f″)+StrFromReal(\\本站点\$月,0,″f″)+″.xls″;
ReportLoad(″后台月报处理″,FileName);
long hang;
hang=$日+4;
string strday=StrFromReal(\\本站点\$年,0,″f″)+″-″+StrFromReal(\\本站点\$月,0,″f″)+″-″+StrFromReal(\\本站点\$日,0,″f″);
long Value;
//str=ReportGetCellString(″后台日报处理″,3,7);
ReportSetCellString(″后台月报处理″,hang,1,strday);
......
Value=ReportGetCellValue(″后台日报处理″,32,11);
ReportSetCellValue(″后台月报处理″,hang,11,Value);
//将日报表中的统计数据(累计值)输入到月报表中
Reportsaveas(″后台月报处理″,FileName);
ClosePicture(″后台月报处理″);
VII、事件命令语言-\\本站点\$时==23&&\\本站点\$分==59发生时(将一整天的日报表数据进行保存):
string FileName1=InfoAppDir()+″日报\″+StrFromReal(\\本站点\$年,0,″f″)+″y″+StrFromReal(\\本站点\$月,0,″f″)+″m″+StrFromReal(\\本站点\$日,0,″f″)+″.xls″;
string timestr=″24:00:00″;
ReportSetCellString(″后台日报处理″,29,1,timestr);
ReportSetCellValue(″后台日报处理″,29,2,\\本站点\FLJ101);
......
ReportSetCellValue(″后台日报处理″,29,11,\\本站点\FLJ110);
ReportSaveAs(″后台日报处理″,FileName1);
VIII、事件命令语言-\\本站点\$时==0&&\\本站点\$秒==20发生时(新一天日报的生成,并插入0点是的累计量):
string FileName=InfoAppDir()+″报表\日报.xls″;
ReportLoad(″后台日报处理″,FileName);
string FileName1=InfoAppDir()+″日报\″+StrFromReal(\\本站点\$年,0,″f″)+″y″+StrFromReal(\\本站点\$月,0,″f″)+″m″+StrFromReal(\\本站点\$日,0,″f″)+″.xls″;
string timestr=time(0,0,0);
ReportSetCellString(″后台日报处理″,5,1,timestr);
ReportSetCellValue(″后台日报处理″,5,2,\\本站点\FLJ101);
......
ReportSetCellValue(″后台日报处理″,5,11,\\本站点\FLJ110);
ReportSaveAs(″后台日报处理″,FileName 1);
有益效果
本发明与背景技术相比具有明显的先进性,它是根据水源站点多、较分散、距离远的实际情况,而设计的一种由主控计算机总控制、设立256个终端机箱分控制、由GPRS无线通讯发射传输水流量信息,实现水流多终端、远距离监测、在终端机箱上设置双屏蔽控制电路、超声波流量计、水流量传感器、计算卡插口、声控报警、液晶显示、操纵键盘、交直流变压等,主控计算机采用计算机程序控制、计算处理,本装置设计先进合理,结构紧凑,安全稳定可靠,数据准确翔实,对分散的水源流量实现了远程监测控制,填补了此类技术的空白,是十分理想的水流量远程监测装置,此装置也可用于石油、化工、供暖、食品等站点的远程监测控制。
【附图说明】
图1为水流量测量装置整体结构及布置图
图2为终端机箱内部结构图
图3为控制电路方框图
图4为控制电路原理图
图中所示,附图标记清单如下:
1、终端机箱,2、控制面板,3、指示灯,4、控制开关,5、操纵键盘,6、报警器,7、电缆接插口,8、计量卡插口,9、水流量传感器接口,10、水流量传感器接口,11、水流量传感器,12、水流量传感器,13、液晶显示屏,14、底座,15、GPRS发射天线,16、GPRS接收天线,17、主控计算机,18、键盘,19、打印机,20、导线,21、屏蔽电缆,22、电源座,23、螺栓,24、屏蔽箱,25、电路板,26、超声波流量计,27、交直流变压器,28、接线座,29、温度传感器,30、湿度传感器,31、导线,32、避雷针。
IC1、微计算机控制操作电路,IC2、振荡电路,IC3、总线接口电路,IC4、超声水流信息输入输出电路,IC5、水流接插卡电路,IC6、GPRS接插发射电路,IC7、信息信号转换电路,IC8、晶振和复位电路,IC9、单片机保护排阻电路,IC10、液晶显示电路,IC11、报警喇叭控制电路。
【具体实施方式】
以下结合附图对本发明做进一步说明:
图1、2所示,为整体结构图,各部位置、联接关系要正确,安装牢固。
主控计算机为一部、可控制256个终端机箱,也可视需要加减终端机箱数个,终端机箱可设在平地、房间,也可设在高坡、野外等。
主控计算机与终端机箱的距离不限,以GPRS通讯天线覆盖范围为准。
水流量传感器把得到的水流量信息传输给超声波流量计,经处理后传输给控制电路进行信息处理,然后通过GPRS天线发射至主控计算机。
水流量信息可由液晶显示屏显示。
操纵键盘可操作终端机箱并发射信息。
计算卡插口可插入水流量卡,可自行开启控制水流量。
声控报警可对水流量及终端箱故障发出警示。
终端机箱、屏蔽箱形成对控制电路板的双重屏蔽保护,防止雷电及野外环境对机箱的干扰,使运行正常。
图3、4所示,为终端机箱控制电路原理图,由分电路组成整体电路,各分电路联接关系要正确,布置要合理,联接安装要牢固。