李 娜,朱赵辉,孙建会
(中国水利水电科学研究院 北京中水科水电科技开发有限公司,北京 100038)
水利水电工程的安全至关重要,它涉及到千百万人民的财产安全、国民经济的发展和社会的稳定,是全社会关心的公共安全问题。水工建筑物是一个复杂的动力系统,坝体、库水、坝基、环境以及其它枢纽建筑物相互作用,使得该动力系统具有高度的非线性特征和不确定性。由于大坝和基岩工作条件复杂,荷载、计算参数、计算模型以及突发因素(如地震、恶劣环境)等还都不能精确模拟,也使得目前水工设计与工程实际难以完全吻合。水电工程安全监测资料是工程安全管理的重要信息,是评价水工结构安全状况的基础资料。监测数据处理与分析则是工程安全监测工作的一个重要组成部分,工程是否安全,最终要靠监测资料的分析评价来实现。
从20世纪70年代末以来,监测数据的整理分析逐渐从人工向计算机方向发展。目前国内已经有很多种类的包括监测资料存储、管理、作图、制表、分析判断等基本功能的监测信息管理系统,但由于传感器的类型众多、监测项目不尽相同等因素,针对具体工程开发的安全监测信息管理系统,存在着代码可移植性差、难以推广应用等缺点,造成了人力资源的浪费和开发成本的增加。因此,提高安全监测信息管理系统的灵活性和通用性,对推进安全监测工作的信息化进程具有积极的意义。
(1)不同工程的监测项目分类方法不同。大部分工程都会按照分部工程-分项工程-单元工程的层次关系进行编码管理。但在进行具体编码时,因具体工程的特点及用户的习惯导致分类方法各异,因此,通用的监测信息管理系统必须要设计一套灵活的测点信息检索方法,使之既符合工程需要,又能满足用户习惯。
(2)监测传感器类型多,整编方法各异。监测传感器按照测量原理主要分为振弦式、差阻式两类[1],按监测物理量的不同,有多点位移计、钢筋计、渗压计、应变计、测缝计、锚杆应力计和锚索测力计……。不同类型的传感器有不同的整编公式,即使同一类型的传感器,其生产厂家如果不同,相应的出厂参数,计算公式也不完全相同。因此,通用的监测信息管理系统需要尽可能的把不同整编原理的传感器纳入到一套系统中管理。
(3)监测传感器的考证表格式不统一。因埋设方法不同,测量原理不同,厂家参数不同,还有用户习惯的问题,造成不同工程、不同传感器的考证表格式均不相同,大多是中国式的复杂报表。因此,通用的监测信息管理系统要考虑如何添加复杂的测点考证信息,并将之显示或打印出来。
(4)监测传感器的数据报表格式多。监测传感器的数据报表格式要满足编制周报、月报、年报或用户自定义报表的需要,要求报表功能要丰富、灵活。
(5)系统的可扩充、可维护性要求。系统维护在整个软件的生命周期中所占比重最大。通用的监测信息管理系统要能有效的提高系统的可扩充性和可维护性,并易于与自动化采集系统或综合安全评价系统搭接。
3.1 树状检索结构自定义 为了适应不同的工程管理特点和不同的用户习惯,设计一套可以自定义的树状检索结构非常必要。树状检索结构包括几种常用的分类方法,如按监测部位分类、按监测项目分类、按采集站分类、按仪器类型分类,按关键断面分类等。因此设计监测大类、监测子类的配置界面。监测大类可添加建筑物,也可添加第一级监测项目。监测子类可添加隶属的工程部位、监测子项目或监测部位与项目结合的重点工程问题。针对监测子类的添加和配置功能界面,不限制子类的级数,可以灵活修改对应的级别,从而满足用户的需要,如图1所示。
3.2 整编公式的分解 虽然不同类型、不同厂家的监测传感器,其整编公式在参数个数、参数名称、运算符等方面有所差异,但通过总结其规律,可以分解为共通的几类参数。
以应变计组的计算为例,应变计应变为εm=f⋅(Z-Zc)+(b-αc)⋅α(r-rc),无应力计自生体积应变为εg=f⋅(Z-Zc)+(b-αc)⋅α⋅(r-rc),应变计应力应变为ε=εm-εg,温度为t=α⋅(r-ro)。式中α是温度系数;r是仪器电阻;ro是仪器零度电阻;f是灵敏度系数;Z是电阻比;Zc是基准电阻比;b是温度补偿系数;rc是基准电阻;αc是混凝土膨胀系数。
(1)静态参数。包括出厂参数等公式常数项。如f,b,αc,α,ro等;
(2)原始参数。原始数据采集变量,如Z和r;
(3)基准参数。和原始数据相对应的基准值,是对应某一基准时间的确定量,如Zc和rc;
(4)引用参数。公式中需要引用的其他仪器的整编成果代号,如εg;
(5)整编参数。由原始数据经过换算后得到的整编成果代号,如ε和t。
根据上述思路,将相应的数据库表分为这几类参数的配置表,程序界面上设计添加这几类参数的功能界面,程序中的运算解析功能提供所有传感器会用到的运算,如三角函数、平方、开方、对数运算等,从而实现对不同类型传感器的兼容。
3.3 动态创建数据库表技术
3.3.1 设计思路 在数据库的发展过程中,Oracle,SQL Server[2]等大中型数据库系统均给用户提供了较大的灵活性,即在需要时,可以动态创建或更改原来设定的数据库结构。通过数据库表关系的建立,结合动态建表技术,提高数据库表结构的适应性,从而可以在很大程度上提高程序的灵活性。
动态创建数据库表技术有几种应用方式:(1)先建立一个存储表结构的配置表,该表包括字段名、字段类型、字段宽度、小数位数。应用系统要动态地建立数据表首先要完成配置表的初始化工作,初始化配置结束后利用create table命令从配置表中提取表结构,创建新表。这种方式对新表的结构无任何限制,极其灵活,但对软件体系架构的可伸缩性要求较高,容易造成项目风险大、开发周期长、成本高等问题;(2)针对需要更改的原表,把新增字段名和原表主码的值以及新增字段的值放在一张新表中。这种办法引入了非规范化的设计,程序调用复杂;(3)分析对象的属性特征,对确定的属性建立有固定结构的原表,对个数不确定的项,分析其可能的字段类型,有几种字段类型就建立几个相应的扩展表,扩展表由原表主码、新增字段值构成。这样扩展表的结构简单,既能提高程序的灵活性又在一定程度上降低了开发难度。
下面分别以仪器类型配置库、整编公式扩展表、考证表相关库结构的设计进行说明。
3.3.2 关键配置库设计 仪器类型配置相关表由仪器类型表(表1),5类参数扩展表,考证信息扩展表构成。
测点配置相关表由测点属性表(表2)、测点参数扩展表、测点考证信息扩展表构成。分析测点的考证表字段类型,不外乎字符型,如“生产厂家、埋设人员、天气情况”;数值型,如“钻孔深度、倾角、安装高程”;日期型,如“埋设日期、初值日期”3种,按类型分别建立3个相应的扩展表。
表1 仪器类型
表2 测点属性
表3 测点数据
测点数据表由仪器类型表中提取数据表名,由参数扩展表中提取参数的符号和名称动态创建,如表3所示。
E-R模型图见图2。
3.4 Word域功能的应用
(1)域的概念。域是引导Word在文档中自动插入文字、图形、页码或其他信息的一组代码。每个域都有一个唯一的名字。域是由代码构成的,一般形式为域名、域指令和开关。word提供了很多不同功能的域,其中域名是word中实现某种功能的特定代码,域指令和开关就是实现相应功能的一些参数设置。
(2)考证表中域的应用。不同工程、不同传感器的考证表格式均不相同,大多是中国式的复杂报表。结合word模板的制作,利用word中域的定义来实现字符定位和内容识别,可以实现灵活制作考证表的功能。
首先定义模板的大体框架,然后在需要定义域的地方插入域,插入步骤如下:①在插入主菜单中选择域;②选择“文档信息”类别;③从域名中选择“DocProperty”;④利用DocProperty的命名语法定义模板中的域变量。
以渗压计的考证表为例,先制作渗压计的考证表模板,模板中不变的内容可直接填入,如“单元工程名称、规格型号、仪器设计编号”等单元格,变化的内容按类型设置不同的域,如单元工程名称对应的域代码为“{DOCPROPERTY单元工程名称*MERGEFORMAT}”。程序调用时先加载渗压计的模板文件,然后遍历域进行比较,实现指定位置文字的输出。
3.5 界面设计 根据数据库的结构,软件系统设计配置模块,用户可以通过系统配置界面,动态配置仪器类型、整编公式、测点参数、考证信息等,并写入数据库对应的配置表中。当监测对象、参数发生改变时,只需重新配置参数,而不必修改程序。
下面以仪器类型和测点参数的配置界面为例,说明配置界面的设计。
(1)仪器类型配置界面。仪器类型配置界面要实现计算参数、整编公式、考证信息字段的动态配置。界面由动态生成的标签框、文本框及添加、删除等功能按钮构成。用户可以自由定义参数的个数、符号、单位等,如图3所示。
(2)测点参数配置界面。测点的参数构成、考证信息字段构成由所属的仪器类型决定,从相应的仪器类型配置库中提取出来。测点配置界面主要完成参数值、考证内容的添加。整编公式是从仪器类型配置库中提取过来,仍可以根据仪器状态的变化(如成组仪器有部分损坏)添加新的公式,实现分时段计算整编功能,如图4所示。
3.6 报表制作 监测传感器的数据报表格式要满足编制周报、月报、年报或用户自定义报表的需要,要求报表功能要丰富、灵活。.NET开发平台耦合了水晶报表控件,也可以选用如FastReport等第三方组件,开发报表模块。设计报表模板的添加、编辑等管理功能,使得用户可以根据需要编辑报表模板,自定义报表的格式。但要注意,由于在动态报表生成的源代码中,对于各行各列的坐标区域都有明确的规定,一开始就要综合考虑报表标题、题头、首列和尾列的位置关系。
采用本文的设计思路开发了通用安全监测信息管理系统,系统已应用于向家坝水电站安全监测工程和呼和浩特抽水蓄能电站安全监测工程(图5)中。经实际工程验证,系统具有较好的灵活性和适应性,并可作为信息平台与自动化采集系统和安全评价系统进行搭接。
安全监测信息管理系统的开发要采用模块化、结构化程序设计方法,系统各模块之间以组件形式进行装配。通过动态创建表、应用域、设计动态配置界面等技术,将参数的配置最终交给用户处理,从而减轻程序员的负担。本文的研究成果对类似系统的开发具有参考意义。
[1]二滩水电开发有限责任公司.岩土工程安全监测手册(第1版)[M].北京:中国水利水电出版社,1999.
[2]Paul Nielsen著,刘瑞,陈微,闫继忠,等译.Microsoft SQL Server 2000宝典(第1版)[M].北京:中国铁道出版社,2004.
[3]Christian Nagel,Bill Evjen,Jay Glynn,著,李敏波译.C#高级编程(第4版)[M].北京:清华大学出版社,2006.