ESMS大坝安全监测系统说明书.doc_第1页
ESMS大坝安全监测系统说明书.doc_第2页
ESMS大坝安全监测系统说明书.doc_第3页
ESMS大坝安全监测系统说明书.doc_第4页
ESMS大坝安全监测系统说明书.doc_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ESMS大坝安全监测系统说明书1:系统功能:ESMS系统主要用于完成与测量大坝的传感器进行数据采集,计算,分析, 了解大坝实际运行状态。2:设计思想ESMS系统本者易操作,界面美观的原则进行设计。采用VB6进行编制。它与MCU之间采用类似研华通信协议来完成数据交流,通讯总线采用RS-485。它具有远程控制操作功能,错误自动报警功能,远程控制和错误报警均采用电信交换网络实现。设计慨要数据采集选择仪器布置图采集测点数据(测点群,单个测点,多个测点,全部测点)MCU操作(MCU自诊断,设置模块时间,查看模块剩余空间,模块零点,幅点)定时采集时操作(采集定时测量数据,设置定时测量参数)测点操作(测点自诊断,设置测点定时采集时间,间隔)数据管理MCU单元设置公式库管理测值换算(把各个仪器的相对位移转换成绝对位移)测点维护(对新的初值和灵敏度系数的仪器重新换算)数据备份(修正库,原始库,异常库导入导出)人工测值录入维护测值查询(修正库管理查询,异常库查询,原始库查询)数据分析测点过程曲线(单只仪器,多只仪器,环境量比对,人工测值比对,存档)杨压力方块图(扬压力方块图创建,显示,存档)分布图(分布图创建,显示,存档)综合日报表报表系统综合月报表综合年报表用户特殊报表系统设置用户设置(操作人员设置,维护人员设置)程序控制参数设置(通讯方式、参数设置,数据参数设置)报警参数设置(自动巡测时间设置,巡测方式设置,报警方式设置)测点布置图建立,维护3详细设计3-1:数据库设计ESMS 大坝安全监测系统软件的数据库采用ACCESS数据库。数据库名字为UNISYS,UNISYS分为以下几个表:1:USERSET 用于存放用户档案字段名:USERNAME(用户名,10),USERPSD(用户密码 ,10),USERLEV(用户级别,6)2:COLLECTION_TMP用于存放临时采集数据字段名:SURVEYNAME(测点名称,12),COLLECTTIME(采集时间,8),COLLECTDATE(采集日期,8),RAWVALUE1(初值1,8,对于差动电阻为R1,振弦为频率)RAWVALUE2(初值2,8对于差动电阻为R2,振弦为温度)RAWVALUE3(初值3,8,对于差动电阻为R和,振弦为空),RAWVALUE4(初值4,8,对于差动电阻为100欧姆值,振弦为空).MIDVALUE(计算值,8,相对位移).REMAKE(备注,20,)3:COLLECTION_OK用于存放临时采集数据正常值同上4:COLLECTION_ALARM用于存放临时采集数据异常值字段名:SURVEYNAME(测点名称,12),COLLECTTIME(采集时间,8),COLLECTDATE(采集日期,8),RAWVALUE1(初值1,8,对于差动电阻为R1,振弦为频率)RAWVALUE2(初值2,8对于差动电阻为R2,振弦为温度)RAWVALUE3(初值3,8,对于差动电阻为R和,振弦为空),RAWVALUE4(初值4,8,对于差动电阻为100欧姆值,振弦为空).MIDVALUE(计算值,8,相对位移). REMAKE(备注,20,出错原因)5:CHANGE_DATA用于存放修正后的采集数据同上6:CHANGE_DATA_BCK用于存放修正后数据的备份同上7:ALARM_DATA用于存放采集数据异常值字段名:SURVEYNAME(测点名称,12),COLLECTTIME(采集时间,8),COLLECTDATE(采集日期,8),RAWVALUE1(初值1,8,对于差动电阻为R1,振弦为频率)RAWVALUE2(初值2,8对于差动电阻为R2,振弦为温度)RAWVALUE3(初值3,8,对于差动电阻为R和,振弦为空),RAWVALUE4(初值4,8,对于差动电阻为100欧姆值,振弦为空).MIDVALUE(计算值,8,相对位移),REMAKE(备注,20,出错原因)8:CHANGE_DATA_BCK用于存放修正后数据的备份字段名:SURVEYNAME(测点名称,12),COLLECTTIME(采集时间,8),COLLECTDATE(采集日期,8),RAWVALUE1(初值1,8,对于差动电阻为R1,振弦为频率)RAWVALUE2(初值2,8对于差动电阻为R2,振弦为温度)RAWVALUE3(初值3,8,对于差动电阻为R和,振弦为空),RAWVALUE4(初值4,8,对于差动电阻为100欧姆值,振弦为空).MIDVALUE(计算值,8,相对位移),FINALVALUE(绝对位移,8),REMAKE(备注,20,)9:ALARM_DATA_BCK用于存放采集数据异常值的备份字段名:SURVEYNAME(测点名称,12),COLLECTTIME(采集时间,8),COLLECTDATE(采集日期,8),RAWVALUE1(初值1,8,对于差动电阻为R1,振弦为频率)RAWVALUE2(初值2,8对于差动电阻为R2,振弦为温度)RAWVALUE3(初值3,8,对于差动电阻为R和,振弦为空),RAWVALUE4(初值4,8,对于差动电阻为100欧姆值,振弦为空).MIDVALUE(计算值,8,相对位移),REMAKE(备注,20,出错原因)10:HISTORY_DATA用于存放采集历史数据,包含异常值,正常值同上11:PRT_SURVEY_DATA用于存放的打印数据(包含人工,历史,修正,异常)同上12:HISTORY_DATA_BCK用于存放采集历史数据的备份,包含异常值,正常值同上13:UNIT用于存放大坝各部位的有关信息字段名:UNITNID(各部位的ID号,2)UNITNAME(各部位的名称,20)14:COLLOBJICT用于存放测量对象的有关信息字段名:COLLOBJICTID(测量对象的ID号,2)COLLOBJICTNAME(测量对象的名称,20)15:SURVEY_INFO用于存放每个测点的所有信息字段名:SURVEYNO(测点号,12), APPARATUSTYPE(仪器类型,2),MCUTYPE(MCU号码,2),LOCATION(埋设位置,3相对于DAMS_INFO的UNITNMB字段),LOCATIONLEV(埋设高程置,3)SETDATE(安装日期,8),COLLECTTYPE(采集类型,8)FORMULA(计算公式,2相对于FORMULA的UNITNMB字段), CALCPARA1(计算参数1,8,存放初始最小值),CALCPARA2(计算参数2,8,存放初初始最大值),CALCPARA3(计算参数3,8,存放初初始位移值),CALCPARA4(计算参数4,8,存放灵敏度系数),CALCPARA5(计算参数5,8,),CALCPARA6(计算参数6,8,),CALCPARA7(计算参数7,8,),MCUNUMBER(MCU号码,3) SCOPE0(最大正变化幅度)SCOPE0(最大负变化幅度)16:PRT_SURVEY_INFO用于存放测点库的打印数据(临时)同上17:MCU_INFO用于存放每个采集模块的所有信息字段名:MCUTYPE(MCU类型,20),MCUMAX(MCU初始最大值,8),MCUMIN(MCU初始最小值,8)MCUADD(MCU地址),MCUVER(MCU版本号).18:PRT_MCU_INFO用于存放采集模块库的打印数据(临时)19:CONTROL_INFO用于存放控制信息(测点定时测量的起始,终止时间等)字段名:SURVEYNO(测点号,12),SURVEYB_DATE(测量起始日期,8),SURVEYB_TIME(测量起始时间,8),SURVEYE_DATE(测量终止日期,8),SURVEYE_TIME(测量终止时间,8),INTERVAL(测量间隔,5,单位分钟),MODE(测量方式,1,计算机测量或是模块测量)20:FBT_INFO用于存放分布图信息字段名:FBTNAME(分布图名称,20),SURVEYNO(测点号,12)21:PRT_FBT_INFO用于存放分布图信息库的打印数据(临时)同上22:YYL_INFO用于存放扬压力方块图信息字段名:FBTNAME(扬压力方块图名称,20),SURVEYNO(测点号,12)23:SURVEY_LOCATION用于存放测点布置字段名:LOCATIONNAME(测点布置名称,20),SURVEYNO(测点号,12)24:TELCODE用于存放报警维护人员信息及BB机,手机号码字段名:WORKNAME(维护人员姓名,10) TELEPHONE(维护人员姓名手机,12),BB(维护人员姓名 BB机,12)26:INFOCODE用于存放系统标准信息代码字段名:INFOCODE (系统标准信息代码,60)25:SURVEY_GROUP用于存放测点组信息字段名:GROUPNAME(测点组名,20),SURVEYNO(测点号,12)26:PRT_SURVEY_GROUP用于存放测点组信息库的打印数据(临时)同上27:HANDWORK_REC用于存放测点人工测量数据字段名:SURVEYNAME(测点名称,12),COLLECTTIME(采集时间,8),COLLECTDATE(采集日期,8),RAWVALUE1(初值1,8,对于差动电阻为R1,振弦为频率)RAWVALUE2(初值2,8对于差动电阻为R2,振弦为温度)RAWVALUE3(初值3,8,对于差动电阻为R和,振弦为空),RAWVALUE4(初值4,8,对于差动电阻为100欧姆值,振弦为空)MIDVALUE(计算值,8,相对位移).REMAKE(备注,20,)28:WORK_REC用于存放用户工作记录字段名:USERNAME(用户姓名,10),INDATE(进入日期,8),INTIME(进入时间,8),OUTDATE(退出日期,8),OUTTIME(退出时间,8),29:PRT_WORK_REC用于存放用户工作记录库的打印数据(临时)同上30:FORMULA用于存放测点计算公式字段名:FORMULATYPE(公式类型,20),FORMULA(公式,30)31:PRT_FORMULA用于存放测点计算公式库的打印数据(临时)同上32:SYSTEM_INFO用于存放系统信息字段名:DAMSNAME(大坝名称,20),BASELEV1(坝址高程,8),BASELEV2(库底高程,8)CALL(系统出错是否呼叫维护人员,1)COMMPORT(通讯端口,1) CALLPORT(呼叫端口,1)3-2 软件的通讯协议:#MMCC 读MM的CC通到的值MCU返回$+CC通到的值+ !#MMA 读MM的所有值MCU返回$+MM的所有值,每个值之间以,隔开+ !#MMT 读MM的类型MCU返回$+MM的类型,每个值之间以,隔开+ !#MML校准零点返回$+零点值+ !#MMH校准幅点返回$+幅点值+ !#MMF 读MM的版本号MCU返回$+MM的版本号,每个值之间以,隔开+ !#MMO 自测试MCU返回$+MM的自测试值+ !#MMD 读MM的日期+时间MCU返回$+XX年XX月XX日XX时XX分XX秒+ !#MMUXXXXXX 设置MM定时采集时间间隔,单位分钟 如果XXXXXX为000000则取消定时测量MCU返回$+CC通到的值+ !#MMS 读MM定时采集时间间隔MCU返回$XXXXXX+! 单位:分钟#MMR 读MM剩余存储空间MCU返回$XXXXXX+! 单位:字节#MMB读MM的存储数据MCU返回$XXXXXX(数据快长度 单位:字节)+数据内容!#MMZ+XX年XX月XX日XX时XX分XX秒+ 设置MM的日期+时间MCU返回$+XX年XX月XX日XX时XX分XX秒+ !注:MM是采集模快地址代号,从0-FFCC是采集模快的通道代号,从0-8所有通信字符采用ASCII码3-3程序流程图Private Sub Form_Load()Me.RefreshEnd SubPrivate Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)For i = 0 To 7Label114(i).ForeColor = &HC000&Next i Gauge1(g_intGaugeIndex).PointerID = 0 Gauge1(g_intGaugeIndex).PointerStart = 0 Gauge1(g_intGaugeIndex).PointerEnd = 3 Gauge1(g_intGaugeIndex).PointerID = 1 Gauge1(g_intGaugeIndex).PointerValue = 3 Gauge1(g_intGaugeIndex).Refresh Timer1.Interval = 0End SubPrivate Sub Gauge1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)Timer1.Interval = 250g_intGaugeIndex = Indexn = 0End SubDim Msg, Style, Title, Help, Ctxt, Response, MyStringMsg = 确定退出吗?Style = vbYesNo + vbQuestion + vbDefaultButton2Title = 系统信息提示Response = MsgBox(Msg, Style, Title, Help, Ctxt) If Response = vbYes Then Set db = OpenDatabase(App.Path + mdbsysdata.mdb) Set dr = db.OpenRecordset(工作日志) dr.MoveLast dr.Edit dr(4) = Date dr(5) = Time dr.Update dr.Close db.Close Do Me.Height = Me.Height - 190 If Me.Height Screen.Height - 500 EndElse Cancel = True End IfEnd Selectg_intGaugeIndex = IndexLabel114(Index).ForeColor = &HFF&End Sub人工测值录入Private Sub Command1_Click()Command1.Enabled = FalseCommand2.Enabled = FalseData1.Recordset.AddNewDTPicker1.Value = DateDTPicker2.Value = TimeMaskEdBox1.SetFocusEnd SubPrivate Sub Command2_Click()On Error Resume NextCommand2.Enabled = FalseCommand1.Enabled = FalseData1.Recordset.EditMaskEdBox1.SetFocusEnd SubPrivate Sub Command3_Click()On Error Resume NextDim Msg, Style, Title, Help, Ctxt, Response, MyStringMsg = 确实删除该记录?Style = vbYesNo + vbQuestion + vbDefaultButton2Title = 系统信息提示Response = MsgBox(Msg, Style, Title, Help, Ctxt)If Response = vbYes Then Data1.Recordset.Delete Data1.Refresh Else Cancel = TrueEnd If Data1.Recordset.MoveLastEnd Sub数据采集Sub Collect()On Error Resume NextMSComm1.PortOpen = TrueCommand5.Enabled = FalseSurvey_ID = 0Me.ShowSet dr = db.OpenRecordset(Collectiontemp)dr.MoveFirstDo While Not dr.EOF 删除测值表 dr.Delete dr.MoveNextLoop Picture3.Visible = False 隐藏CHART表 Chart = False Command3.Enabled = FalseSet dr = db.OpenRecordset(alarmval) 删除报警表dr.MoveFirstDo While Not dr.EOF dr.Delete dr.MoveNextLoopdb.Execute delete * from 正常临时采集数据db.Execute delete * from 异常临时采集数据Survey_ID1 = M_intNumberReDim Surveyinfo(M_intNumber)ReDim Ascll_Code(M_intNumber)ReDim ValueMin(M_intNumber)ReDim ValueMax(M_intNumber)ReDim R1(M_intNumber)ReDim Formual(M_intNumber)For i = 0 To M_intNumber - 1 Set dr = db.OpenRecordset(select * from 测点信息 where 测点编号= & M_strSurvey(i) & ) Surveyinfo(i) = dr(1) ValueMin(i) = dr(11) ValueMax(i) = dr(10) R1(i) = dr(8) Formual(i) = dr(16) Ascll_Code(i) = dr(4) + dr(3) dr.MoveNextNext iData1.DatabaseName = App.Path + mdbsysdata.mdbData1.RecordSource = 正常临时采集数据Data1.RefreshData2.DatabaseName = App.Path + mdbsysdata.mdbData2.RecordSource = 异常临时采集数据Data2.RefreshOdoMeter1.Value = 1 滚动数字赋初值OdoMeter2.Value = M_intNumberCommand1.Enabled = FalseCommand2.Enabled = FalseCommand4.Enabled = Falseresult = FalseCall yashi(2)Timer1.Interval = 2000Timer1.Enabled = TrueMSComm1.Output = # + Ascll_Code(M_intNumber - 1) + Chr$(13)Text3.Text = Text3.Text + #0 + Ascll_Code(M_intNumber - 1) + Chr$(13)Toggle1.Visible = TrueToggle1.Value = TrueEnd Sub曲线显示Sub Linedraw()Dim PointName As StringDim J As Integer J用于显示加载过程Dim strTable() As String 用于装在表名Dim intNub As Integer 如果某个因子数据为空,不用该参数程序会出错On Error Resume Next intNub = 0 Picture3.Visible = True Text3.Text = DTPicker1.Value Text4.Text = DTPicker2.Value Trend1.ClearAll Time1 = DTPicker2.Value Trend1.XMax = CDbl(Time1 + 12:00:00) Time1 = DTPicker1.Value Trend1.XMin = CDbl(Time1 + 12:00:00) Trend1.SetXDisplay Trend1.XMin, Trend1.XMax Combo4.Clear ReDim strTable(M_intDrawline - 1) For i = 0 To M_intDrawline - 1 用于装在表名 Set dr = ds.OpenRecordset(select * from surveypoint where SurveyPointNo= + M_strDrawline(i) + ) strTable(i) = dr(9) Next i For i = 0 To M_intDrawline - 1 PointName = M_strDrawline(i) Set Rs = ds.OpenRecordset(select * from + strTable(i) + where SurveyPointNo= + PointName + AND ( SURVEYDATE BETWEEN # + Text3.Text + # AND # + Text4.Text + # ) ORDER BY SurveyDate ) , dbOpenDynaset) If Rs.RecordCount = 0 Then 判断这个时段内有没有数据 MsgBox PointName + 在这个时段内没有数据! GoTo aa 开始下一个因子 End If J = 0 Gauge10.PanelMax = Rs.RecordCount Gauge10.PanelMin = 0 Gauge10.Refresh Rs.MoveFirst Do While Not Rs.EOF Gauge10.BandID = 1 Gauge10.BandEnd = J Gauge10.Refresh J = J + 1 Value = Rs.Fields(PointWay) Time1 = Rs.Fields(surveydate) Trend1.AddXY intNub, CDbl(Time1 + Rs.Fields(surveyTime), Value Rs.MoveNext Loop Rs.Close Combo4.AddItem PointName 添加过程线因子名称 intNub = intNub + 1aa:Next i Trend1.Refresh Call ledsend NumberLed2.Value = Format$(Trend1.VarMax) NumberLed2.Refresh NumberLed3.Value = Format$(Trend1.VarMin) NumberLed3.Refresh NumberLed4.Value = Format$(Trend1.VarAvg) NumberLed4.RefreshPicture3.Visible = FalseEnd SubPrivate Sub Trend1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)If Button = 2 ThenPopupMenu toolsEnd IfEnd SubPrivate Sub Y轴设置_Click()Dim ValueMax, ValueMinDim Message, Title, Default, Message1Message = 请输入Y轴最大值Message1 = 请输入Y轴最小值Title = Y轴设置Default = 1ValueMax = InputBox(Message, Title, Default)Do While ValueMax = ValueMax = InputBox(Message, Title, Default)LoopValueMin = InputBox(Message1, Title, Default)Do While ValueMin = ValueMin = InputBox(Message1, Title, Default)LoopDo While ValueMax - ValueMin = 0ValueMin = InputBox(Message1, Title, Default)Loop Trend1.TrackYDisplayMax = ValueMax Trend1.TrackYMax = ValueMax Trend1.TrackYDisplayMin = ValueMin Trend1.TrackYMin = ValueMine 设置Y轴显示数值的范围 Trend1.RefreshEnd SubPrivate Sub 背景色彩_Click()On Error GoTo Feil With CommonDialog1 .Flags = cdlCCFullOpen .ShowColor End With Trend1.TrackID = 1 Trend1.TrackBackColor = CommonDialog1.Color Trend1.RefreshFeil: Exit SubEnd SubPrivate Sub 边框色彩_Click()On Error GoTo Feil With CommonDialog1 .Flags = cdlCCFullOpen .ShowColor End With Trend1.BackColor = CommonDialog1.Color Trend1.RefreshFeil: Exit SubEnd Sub分布图制作程序Sub Fbt_draw()Dim progress_name As StringDim sql As String On Error Resume Nextsqlstr = DELETE * FROM fbttemp 删除数据库的值 Data3数据库绑定到DBGRIG1表Data3.Database.Execute sqlstrFor i = 0 To J - 1Set ds = db.OpenRecordset(select * from yyl where SurveyPointNo= & Fbt_point(i) & AND ( SURVEYDATE BETWEEN # & DTPicker2.Value & # AND # & DTPicker1.Value & # ) ORDER BY SurveyDate )ds.MoveLast If ds.RecordCount = 0 Then 判断数据是否为空 MsgBox 没有数据!, vbOKOnly, 警告! Exit Sub End Ifds.MoveFirstFbt_value(i) = ds(6)Next iPercent1.Max = ds.RecordCount 百分比设置Percent1.PortionID = 0Percent1.PortionValue = 0For i = 0 To J - 1 添加值到数据库arr(i, 1) = Fbt_point(i)arr(i, 2) = Fbt_value(i)Data3.Recordset.AddNewData3.Recordset(0) = Fbt_point(i)Data3.Recordset(1) = Fbt_value(i)If IsNull(ds(3) = True Then MsgBox 没有数据Data3.Recordset.Updateds.MoveNextNext i LoopMSChart1.ChartData = arr 添加值到表MSChart1.RefreshData3.RefreshDBGrid1.RefreshDBGrid1.Visible = TrueEnd Sub定时测量程序Private Sub MSComm1_OnComm()Dim RecStr As StringDim strLen As IntegerDim Value As StringDim Myval As StringSelect Case MSComm1.CommEvent Case comEvSend Case comEvReceive RecStr = MSComm1.Input Text1.Text = Text1.Text + RecStr If RecStr = Then Exit Sub End If If Left(RecStr, 1) Then RecStr = Exit Sub End If strLen = Len(RecStr) RecStr = Right(RecStr, strLen - 1) Timer1.Enabled = False If CSng(RecStr) - CSng(ValueMin(M_intNumber - 1) = 0 Then 判断是否比最小值还低 If Survey_ID 7 Then Myval = Left(Myval, 7) End If Survey_ID = 0 Data2.Recordset.AddNew Data2.Recordset(0) = M_strSurvey(M_intNumber - 1) Data2.Recordset(1) = Date Data2.Recordset(2) = Time Data2.Recordset(3) = RecStr Text1.Text Value Data2.Recordset(4) = Myval Data2.Recordset(9) = Surveyinfo(M_intNumber - 1) Data2.Recordset(7) = 数值超过最低限制 Data2.Recordset(10) = 数值超过最低限制 Data2.Recordset.Update Data2.Refresh DBGrid1.Refresh Dr1.AddNew Dr1(0) = M_strSurvey(M_intNumber - 1) Dr1(1) = Da

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论