一种供水泵站的自动监控装置的制造方法

文档序号:10653496阅读:378来源:国知局
一种供水泵站的自动监控装置的制造方法
【专利摘要】本发明涉及一种供水泵站的自动监测装置,主要结构包括箱体、液晶触摸显示屏、指示灯、电源开关、安装底板、空气电源开关、熔断器、防雷模块、箱体电源继电器、隔离变压器、中间继电器、蓄电池、水流量计、电量传感器、远程终端控制器、延时继电器,是针对供水泵站分布广、信息采集情况进行的设计、采用机械装置和集成电路相结合的设计、采用双卡双网相结合的GPRS通讯方式,实现了供水泵站、高位池点的点对点、点对多点的直接通讯,使各水利设施之间实现互连互通,本装置设计先进、结构紧凑、安装使用方便,供水泵站信息采集、传输实现了信息化、自动化,采集传输的水资源信息准确、快捷,是十分先进的供水泵站的自动监测装置。
【专利说明】一种供水泵站的自动监控装置
[0001]
技术领域
[0002]本发明涉及一种供水栗站的自动监控装置,属供水栗站的监测控制及应用的技术领域。
[0003]
【背景技术】
[0004]在广大农村分布着诸多的水利设施,例如水库、水池、水井、水渠等,这些水利设施的储水情况/水位情况、使用情况、流量情况、补水排水情况都需要进行采集,采集方式也有多种,例如人工采集、仪器仪表采集,信息传输方式也有人工传输、GPRS定位通讯传输、短波通讯传输等,但这些方式受到很大的局限,不能实现栗站一一高位池的点对点或点对多点的直接通讯,还需要建设数据中心平台,但费用高、周期长,例如使用短波通讯方式实现栗站一一高位池的点对点或点对多点直接通讯,但受到通讯距离及地理环境的限制,例如山体、建筑物的阻挡,这些方式均存在诸多技术上的弊端。
[0005]

【发明内容】

[0006]发明目的
本发明的发明目的是针对【背景技术】的不足,针对供水系统通讯情况,采用双卡、双网的GPRS通讯方式,即内网和外网方式,实现栗站一一高位池的点对点、点对多点的直接通讯,以自动化实现供水栗站及网点的水资源监控。
[0007]技术方案
本发明主要结构包括:监控装置箱体、液晶触摸显示屏、指示灯、总电源开关、拉手、安装底板、支撑板、支撑架、空气电源开关、熔断器、防雷模块、箱体电源继电器、隔离变压器、中间继电器、接地端、蓄电池、水流量计、电量传感器、远程终端控制器、电缆槽、延时继电器;
供水栗站自动监测装置是立式矩形箱体,监控装置箱体的正面中间上部设有液晶触摸显示屏、指示灯、总电源开关,右侧部设有拉手;在监控装置箱体的顶部设有通讯天线;监控装置箱体内底左部设有左支撑架、内底右部设有右支撑架;在左支撑架、右支撑架上置放安装底板、支撑板;在安装底板上部设有空气开关、熔断器、防雷模块、箱体电源继电器、水流量计、电量传感器、远程终端控制器;在安装底板的中间部位设有隔离变压器、中间继电器、延时继电器;在安装底板的中间下部设有接地端、接线端子;在安装底板的下部设有蓄电池、计数器;在安装底板的上、中、下部设有互为连通的电缆槽。
[0008]
所述的远程终端控制器控制电路,由移动网络通讯电路IT1、触模屏接口电路IT2、微计算机处理器电路IT3、开关量输入电路IT4、开光量输出控制电路IT5、数据存储电路IT6、远程数据总线通讯接口电路IT7、通讯数据输换电路IT8、通讯接口电路IT9、模拟数字转换电路IT10、震荡晶体电路ITll组成整体电路,各电路间由导线互相连接。
[0009]
有益效果
本发明与【背景技术】相比具有明显的先进性,是针对供水栗站分布地域广、信息采集难的情况而进行的设计,采用机械装置和集成电路相结合的设计、采用双卡、双网相结合的GPRS通讯方式,实现了供水栗站一一高位池的点对点、点对多点的直接通讯,使各供水栗站之间实现了互连互通,本装置设计先进、结构紧凑,安装使用方便,安全稳定,供水栗站信息采集、传输实现了信息化、自动化,采集传输的水资源信息准确、快捷,是十分先进的供水栗站的自动监测装置。
[0010]
【附图说明】
[0011 ]图1、供水栗站监测装置主视图图2、图1的A-A剖面图图3、远程终端控制器电路原理图图中所示,附图标记清单如下:
1、监控装制箱体,2、液晶触模显示屏,3、指示灯,4、总电源开关,5、拉手,6、安装底板,
7、空气电源开关,8、熔断器,9、防雷模块,10、箱体电源继电器,11、隔离变压器,12、中间继电器,13、接地端,14、蓄电池,15、支撑板,16、左支撑架,17、水流量计,18、电量传感器,19、远程终端控制器,20、电缆槽,21、延时继电器,22、接线端子,23、计数器,24、通讯天线,25、
右支撑架。
[0012]IT1、移动网络通讯电路,IT2、触摸屏接口电路,IT3、微计算机
处理电路,IT4、开关量输入电路,IT5、开光量输出控制电路,IT6、数据存储电路,IT7、远程数据总线通讯接口电路,IT8、通讯数据转换电路,IT9、通讯接口电路,IT10、模拟数字转换电路,IT11、震荡晶体电路。
[0013]
【具体实施方式】
[0014]以下结合附图对本发明做进一步说明:
图1、图2所示,为供水栗站监测装置整体结构图,各部位置、连接关系要正确,安装牢固。
[0015]供水栗站自动监测装置呈立式矩形箱体,监控装置箱体I的正面中间上部设有液晶触摸显示屏2、指示灯3、总电源开关4、右侧中间部位设有拉手5;在监控装置箱体I的顶部设有通讯天线24;监控装置箱体I内底左部设有左支撑架16、右部设有右支撑架25;在左支撑架16、右支撑架25上置放安装底板6、支撑板15;在安装底板6上部设有空气开关7、熔断器
8、防雷模块9、箱体电源继电器1、水流量计17、电量传感器18、远程终端控制器19;在安装底板6的中间部位设有隔离变压器11、中间继电器12、延时继电器21;在安装底板6的中间部位下部设有接地端13、接线端子22;在安装底板6的下部设有蓄电池14、计数器23;在安装底板6的上、中、下部设有互为连通的电缆槽2(L
[0016]图3所示,为远程终端控制器控制电路原理图,远程终端控制器控制电路由移动网络通讯电路ITl、触摸屏接口电路IT2、微计算机处理器电路IT3、开关量输入电路IT4、开光量输入控制电路IT5、数据存储电路IT6、远程数据总线通讯接口电路IT7、通讯数据转换电路IT8、通讯接口电路IT9、模似数字转换电路IT10、震荡晶体电路ITll组成整体电路,各电路间由导线互相连接。
[0017]微计算机处理器电路IT3,是采用32位微计算机处理芯片,其处理功能是由计算机程序完成的,计算机程序米用C++语言做编程平台,计算机程序如下:
LogicHardware::CUART Task::CLCDTask:com;
char Task::CLCDTask::—buffer[BUF—MAX—LEN] = { 0 };
uint8_t n; //
Base::CParam::SSheB sheb;
Base::CParam::SADParam adc;
Base::CParam::SGuanD guand;
General::SDateTime dateTime;
void Task::CLCDTask::DeCodeParamDevice(char 氺Device—data)
{
uint8_t Device_ch; uint8_t a; char 氺c,氺d; c=Device—data;
char i=0,j=0,buffer[8],p[50];
for(Device_ch=l;Device_ch<10;Device_ch++)
{
a = sprintf(p,〃%sO%d.text=〃,pdevice—DeviceID,Device_ch); //if((d=strstr(c,p)) != NULL) //
{
d += a; if(d[i]==,",) //
{
i++;
while(d[i]!=,"’ && d[i+l]!=,\n,)
{
buffer[j++]=d[i++]; //
}
buffer[j] =,\0,;sheb.1D = atoi(buffer); //i=0;j=0;
} }
a = sprintf (p, 〃%sO%d.currentlndex=// ,pdevice_OfFaciIity ,Device_
ch);
if((d=strstr(c,p)) != NULL)
{
d += a;if(d[i]==,",)
{
i++;
while(d[i]&& d[i+l]!=,\n,)
{
buffer[j++]=d[i++];
}
buffer[j]=,\0,; if(atoi(buffer)==0)
{
sheb.SheShType = Base::CParam::None_SheSh;
}
else if(atoi(buffer)==1)
{
sheb.SheShType = Base::CParam::ShuiCh;
}
else if(atoi(buffer)==2)
{
sheb.SheShType = Base::CParam::GuanD;
}
i=0;j=0;
}
}
a = sprintf(p,〃%sO%d.text=〃,pdevice_FacilityNo,Device_ch);if((d=strstr(c,p)) != NULL)
{
d += a;if(d[i]==,",)
{
i++;
while(d[i]&& d[i+l]!=,\n,)
{
buffer[j++]=d[i++]; }
buffer[j]=,\0,; sheb.SheShID = atoi(buffer); i=0;j=0;
}
}
a = sprintf(p,〃%sO%d.currentlndex=〃,pdevice_DeviceType,Device_
ch);
if((d=strstr(c,p)) != NULL)
{
d += a;if(d[i]==,",)
{
i++;
while(d[i]&& d[i+l]!=,\n,)
{
buffer[j++]=d[i++];
}
buffer[j]=,\0,; if(atoi(buffer)==0)
{
sheb.SheBType = Base::CParam::None_SheB;
}
else if(atoi(buffer)==1)
{
sheb.SheBType = Base::CParam::Beng;
}
else if(atoi(buffer)==2)
{
sheb.SheBType = Base::CParam:: Fa;
}
else if(atoi(buffer)==3)
{
sheb.SheBType = Base::CParam::ShuiffJ;
}
else if(atoi(buffer)==4)
{
sheb.SheBType = Base::CParam::ShuiYJ;
}else if(atoi(buffer)==5)
{
sheb.SheBType = Base::CParam::LiuLJ;
}
else if(atoi(buffer)==6)
{
sheb.SheBType = Base::CParam::ShuiB;
}
else if(atoi(buffer)==7)
{
sheb.SheBType = Base::CParam::SanXD;
}
else if(atoi(buffer)==8)
{
sheb.SheBType = Base::CParam::DianChDY;
}
i=0;j=0;
}
}
a = sprintf(p,〃%sO%d.currentIndex=〃,pdevice_PortType,Device_ch);if((d=strstr(c,p)) != NULL)
{
d += a;if(d[i]==,",)
{
i++;
while(d[i]&& d[i+l]!=,\n,)
{
buffer[j++]=d[i++];
}
buffer[j]=,\0,; if(atoi(buffer)==0)
{
sheb.JieKType = Base::CParam::None_JieK;
}
else if(atoi(buffer)==1)
{
sheb.JieKType = Base::CParam::AD;
}else if(atoi(buffer)==2)
{
sheb.JieKType = Base::CParam:: COM;
}
else if(atoi(buffer)==3)
{
sheb.JieKType = Base::CParam::10;
}
i=0;j=0;
}
}
a = sprintf(p,〃%sO%d.text=〃,pdevice_AddrCH,Device_ch);if((d=strstr(c,p)) != NULL)
{
d += a;if(d[i]==,",)
{
i++;
while(d[i]&& d[i+l]!=,\n,)
{
buffer[j++]=d[i++];
}
buffer[j]=,\0,; sheb.Param = atoi(buffer); i=0;j=0;
}
}
a = sprintf(p,〃%sO%d.checked=〃,pdevice_EnableCh,Device_ch);if((d=strstr(c,p)) != NULL)
{
d += a;if(d[i]==,",)
{
i++;
while(d[i]&& d[i+l]!=,\n,)
{
buffer[j++]=d[i++];
}
buffer[j]=,\0,;if(strcmp(buffer,〃true〃)==0)
{
sheb.Enabled = true;
}
else if(strcmp(buffer,〃false〃)==0)
{
sheb.Enabled = false;
}
i=0;j=0;
}
}
Base::CParam::SetSheB(sheb);
}
for(Device_ch=0;Device_ch<7;Device_ch++)
{
a = sprintf (p,//0/osl%d.text=//,pdevice_DeviceID,Device_ch); // if((d=strstr(c,p)) != NULL) //
{
d += a;
if(d[i]==,",) Il
{
i++;
while(d[i]&& d[i+l]!=,\n,)
{
buffer[j++]=d[i++]; //
}
buffer[j]=,\0,; sheb.1D = atoi(buffer); // i=0;j=0;
}
}
a = sprintf (p, 〃%sl%d.currentlndex=// ,pdevice_OfFaciIity ,Device_
ch);
if((d=strstr(c,p)) != NULL)
{
d += a; if(d[i]==,",)
{
i++; while(d[i]&& d[i+l]!=,\n,)
{
buffer[j++]=d[i++];
}
buffer[j]=,\0,; if(atoi(buffer)==0)
{
sheb.SheShType = Base::CParam::None_SheSh;
}
else if(atoi(buffer)==1)
{
sheb.SheShType = Base::CParam::ShuiCh;
}
else if(atoi(buffer)==2)
{
sheb.SheShType = Base::CParam::GuanD;
}
i=0;j=0;
}
}
a = sprintf (p,//0/osl%d.text=//,pdevice_FaciIityNo,Device_ch); if((d=strstr(c,p)) != NULL)
{
d += a; if(d[i]==,",)
{
i++;
while(d[i]&& d[i+l]!=,\n,)
{
buffer[j++]=d[i++];
}
buffer[j]=,\0,; sheb.SheShID = atoi(buffer); i=0;j=0;
}
}
a = sprintf (p, 〃%sl%d.currentlndex=// ,pdevice_DeviceType ,Device_
ch);
if((d=strstr(c,p)) != NULL) {
d += a;if(d[i]==,",)
{
i++;
while(d[i]&& d[i+l]!=,\n,)
{
buffer[j++]=d[i++];
}
buffer[j]=,\0,;if(atoi(buffer)==0)
{
sheb.SheBType = Base::CParam::None_SheB;
}
else if(atoi(buffer)==1)
{
sheb.SheBType = Base::CParam::Beng;
}
else if(atoi(buffer)==2)
{
sheb.SheBType = Base::CParam:: Fa;
}
else if(atoi(buffer)==3)
{
sheb.SheBType = Base::CParam::ShuiffJ;
}
else if(atoi(buffer)==4)
{
sheb.SheBType = Base::CParam::ShuiYJ;
}
else if(atoi(buffer)==5)
{
sheb.SheBType = Base::CParam::LiuLJ;
}
else if(atoi(buffer)==6)
{
sheb.SheBType = Base::CParam::ShuiB;
}
else if(atoi(buffer)==7) {
sheb.SheBType = Base::CParam::SanXD;
}
else if(atoi(buffer)==8)
{
sheb.SheBType = Base::CParam::DianChDY;
}
i=0;j=0;
}
}
a = sprintf(p,〃%sl%d.currentIndex=〃,pdevice_PortType,Device_ch);if((d=strstr(c,p)) != NULL)
{
d += a;if(d[i]==,",)
{
i++;
while(d[i]&& d[i+l]!=,\n,)
{
buffer[j++]=d[i++];
}
buffer[j]=,\0,; if(atoi(buffer)==0)
{
sheb.JieKType = Base::CParam::None_JieK;
}
else if(atoi(buffer)==1)
{
sheb.JieKType = Base::CParam::AD;
}
else if(atoi(buffer)==2)
{
sheb.JieKType = Base::CParam:: COM;
}
else if(atoi(buffer)==3)
{
sheb.JieKType = Base::CParam::10;
}
i=0;j=0; }
}
a = sprintf(p,〃%sl%d.text=〃,pdevice_AddrCH,Device_ch);if((d=strstr(c,p)) != NULL)
{
d += a;if(d[i]==,",)
{
i++;
while(d[i]&& d[i+l]!=,\n,)
{
buffer[j++]=d[i++];
}
buffer[j]=,\0,; sheb.Param = atoi(buffer); i=0;j=0;
}
}
a = sprintf(p,〃%sl%d.checked=〃,pdevice_EnableCh,Device_ch);if((d=strstr(c,p)) != NULL)
{
d += a;if(d[i]==,",)
{
i++;
while(d[i]&& d[i+l]!=,\n,)
{
buffer[j++]=d[i++];
}
buffer[j]=,\0,; if(strcmp(buffer,〃true〃)==0)
{
sheb.Enabled = true;
}
else if(strcmp(buffer,〃false〃)==0)
{
sheb.Enabled = false;
}
i=0;j=0; }
}
Base::CParam::SetSheB(sheb);
}
}
void Task::CLCDTask::DeCodeParamADC(char *adc—data)
{
uint8_t adc_ch;
for(adc_ch=l;adc_ch<9;adc_ch++)
{
uint8_t a; char 氺c,氺d; c=adc_data;
char I=Ojj=Ojbuffer[8],p[32]; a = sprintf(p,〃%s%d.text=〃,padc_ch,adc_ch); // if((d=strstr(c,p)) != NULL) //
{
d += a; if(d[i]==,",) //
{
i++;
while(d[i]!=,"’ && d[i+l]!=,\n,)
{
buffer[j++]=d[i++]; //
}
buffer[j] =,\0,;
adc.1D = atoi(buffer); // i=0;j=0;
}
}
a = sprintf(p,〃%s%d.text=〃,padc—max,adc_ch); if((d=strstr(c,p)) != NULL)
{
d += a; if(d[i]==,",)
{
i++;
while(d[i]!=,"’ && d[i+l]!=,\n,)
{
buffer[j++]=d[i++]; }
buffer[j]=,\0,;adc.A_U = atof(buffer);i=0;j=0;
}
}
a = sprintf (p, //0/os%d.text=// ,padc_min ,adc_ch);if((d=strstr(c,p)) != NULL)
{
d += a; if(d[i]==,",)
{
i++;
while(d[i]&& d[i+l]!=,\n,)
{
buffer[j++]=d[i++];
}
buffer[j]=,\0,;adc.A_L = atof(buffer);i=0;j=0;
}
}
if (adc.1D < 7)
{
adc.D_U = 4095;adc.D_L = 819;
}
else
{
adc.D_U = 1850;adc.D_L = 1088;
}
Base::CParam::SetADParam(adc);
}
}
void Task::CLCDTask::DeCodeParamPipe(char 氺Pipe_data)
{
uint8_t Pipe_ch;
for(Pipe_ch=l;Pipe_ch<9;Pipe_ch++) {
uint8_t a;char 氺c,氺d;c=Pipe—data;
char I=Ojj=Ojbuffer[16],p[50];
a = sprintf (p,%s%d.text=,,,ppipe_ch,Pipe_ch); //if((d=strstr(c,p)) != NULL) //
{
d += a;if(d[i]==,",) //
{
i++;
while(d[i]!=,"’ && d[i+l]!=,\n,)
{
buffer[j++]=d[i++]; //
}
buffer[j] =,\0,;
guand.LocalID = atoi(buffer); // i=0;j=0;
}
}
a = sprintf(p,〃%s%d.currentIndex=〃,ppipe_type,Pipe_ch);if((d=strstr(c,p)) != NULL)
{
d += a;if(d[i]==,",)
{
i++;
while(d[i]!=,"’ && d[i+l]!=,\n,)
{
buffer[j++]=d[i++];
}
buffer[j] =,\0,; if(atoi(buffer)==0)
{
guand.GuanDType = Base::CParam:: None—GuanD;
}
if(atoi(buffer)==1)
{guand.GuanDType = Base::CParam::JinShG;
}
if(atoi(buffer)==2)
{
guand.GuanDType = Base::CParam::ChuShG;
}
i=0;j=0;
}
}
a = sprintf (p,//0/os%d.text=//,ppipe_MPipeNo,Pipe_ch); //if((d=strstr(c,p)) != NULL) //
{
d += a;
if(d[i]==,",) Il
{
i++;
while(d[i]&& d[i+l]!=,\n,)
{
buffer[j++]=d[i++]; //
}
buffer[j]=,\0,;
guand.ParentID = atoi(buffer); // i=0;j=0;
}
}
a = sprintf(p,〃%s%d.text=〃,ppipe_HipoolNo,Pipe_ch);if((d=strstr(c,p)) != NULL)
{
d += a;if(d[i]==,",)
{
i++;
while(d[i]&& d[i+l]!=,\n,)
{
buffer[j++]=d[i++];
}
buffer[j]=,\0,;
guand.RemoteID = atoi(buffer); i=0;j=0; }
}
a = sprintf(p,〃%s%d.text=〃,ppipe_HipoolIP,Pipe_ch);if((d=strstr(c,p)) != NULL)
{
d += a;if(d[i]==,",)
{
i++;
while(d[i]&& d[i+l]!=,\n,)
{
buffer[j++]=d[i++];
}
buffer[j]=,\0,;
strcpy(guand.RemoteIP,buffer); i=0;j=0;
}
}
a = sprintf(p,〃%s%d.text=〃,ppipe_HipoolPort,Pipe_ch);if((d=strstr(c,p)) != NULL)
{
d += a;if(d[i]==,",)
{
i++;
while(d[i]&& d[i+l]!=,\n,)
{
buffer[j++]=d[i++];
}
buffer[j]=,\0,;
guand.RemotePort = atoi(buffer); i=0;j=0;
}
}
a = sprintf(p,〃%s%d.checked=〃,ppipe_Enable,Pipe_ch);if((d=strstr(c,p)) != NULL)
{
d += a;if(d[i]==,",) {
i++;
while(d[i]&& d[i+l]!=,\n,)
{
buffer[j++]=d[i++];
}
buffer[j]=,\0,; if(strcmp(buffer,〃true〃)==0)
{
guand.Enabled = true;
}
else if(strcmp(buffer,〃false〃)==0)
{
guand.Enabled = false;
}
i=0;j=0;
}
}
Base::CParam::SetGuanD(guand);
}
}
实施例:
本装置使用中具有如下功能:
(1.)自动起停栗机
本装置可根据远端水池水位的高低限值自动启停栗机,自动向水池补水;
(2.)机栗保护机制
本装置可实施检测供电电源、启动柜故障、通讯网络、传感器故障,当出现影响栗机正常运行的情况后,自动停止栗机运行,保护栗机;
(3.)双通道通讯方式本装置采用双卡、双网GPRS通讯方式;
(4.)短信报送
本装置通讯模块具有定时数据报送和故障信息告警功能;
(5.)远程控制机制
本装置可通过短信平台控制机栗启停、阀门开关,或禁止运行和恢复运行,获取数据; (6.)具有多种接口
本装置具有总线接口、网口、数字量接口、标准模拟量信号接口,可连接多种传感器和机电设备;
(7.)彩色触摸显示屏
本装置实时显示栗站运行数据,包括:水池水位、管网压力、电压、电流、耗电量、功率因素、运行时间、流量;
(8.)控制模式
本装置实现栗机和电动阀的手动控制、自动控制和远程控制; (9.)数据上传
本装置可将栗站运行监测数据上传至总站。
【主权项】
1.一种供水栗站的自动监测装置,其特征在于:主要结构包括:监控装置箱体、液晶触摸显示屏、指示灯、总电源开关、拉手、安装底板、支撑板、支撑架、空气电源开关、熔断器、防雷模块、箱体电源继电器、隔离变压器、中间继电器、接地端、蓄电池、水流量计、电量传感器、远程终端控制器、电缆槽、延时继电器; 供水栗站自动监测装置是立式矩形箱体,监控装置箱体的正面中间上部设有液晶触摸显示屏、指示灯、总电源开关,右侧部设有拉手;在监控装置箱体的顶部设有通讯天线;监控装置箱体内底左部设有左支撑架、内底右部设有右支撑架;在左支撑架、右支撑架上置放安装底板、支撑板;在安装底板上部设有空气开关、熔断器、防雷模块、箱体电源继电器、水流量计、电量传感器、远程终端控制器;在安装底板的中间部位设有隔离变压器、中间继电器、延时继电器;在安装底板的中间下部设有接地端、接线端子;在安装底板的下部设有蓄电池、计数器;在安装底板的上、中、下部设有互为连通的电缆槽。2.根据权利要求1所述的一种供水栗站的自动监测装置,其特征在于:所述的远程终端控制器控制电路,由移动网络通讯电路IT1、触模屏接口电路IT2、微计算机处理器电路IT3、开关量输入电路IT4、开光量输出控制电路IT5、数据存储电路IT6、远程数据总线通讯接口电路IT7、通讯数据输换电路IT8、通讯接口电路IT9、模拟数字转换电路IT10、震荡晶体电路ITl I组成整体电路,各电路间由导线互相连接。
【文档编号】G08C17/02GK106020089SQ201610586362
【公开日】2016年10月12日
【申请日】2016年7月22日
【发明人】张海瑞, 王炜, 赵海军, 张伟, 张强
【申请人】山西禹水科技有限公司, 太原市水利技术推广服务站
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1