基于Web的温度表检定系统的设计与实现
2015-03-06李翠翠
李翠翠,周 枫,杨 亭,杨 震,曹 水
(贵州省大气探测技术与保障中心,贵州 贵阳 550081)
基于Web的温度表检定系统的设计与实现
李翠翠,周 枫,杨 亭,杨 震,曹 水
(贵州省大气探测技术与保障中心,贵州 贵阳 550081)
针对贵州省温度表检定工作的实际需求,开发和建立了基于Web的温度表检定系统。系统界面美观,操作简便,能批量、高效、准确地处理温度表检定数据,自动生成检定记录表及检定证书,并具有局部打印功能。通过使用该系统,计量管理人员可对温度表未检、已检、到检信息进行查询与合格率统计。自投入业务运行以来,有效提高了贵州省温度表检定工作现代化水平,实现了对标准温度表、送检温度表、检定工作量考核的统一化管理。
Web;温度表;检定系统;PHP;数据库
1 引言
随着计算机技术、网络技术的快速发展,气象业务服务平台的建设越来越趋于网络化,软件结构逐步由C/S模式转向B/S模式。B/S架构主要具备以下优点:在客户端无需安装任何软件或程序,易于操作,维护成本低,可扩展性强。
多年来,贵州省温度表检定数据的处理、证书的打印一直采用Excel办公软件完成,使用Excel软件对温度表检定数据进行处理时,不仅操作繁琐,而且容易产生错误,需要人工再次进行判断,检定人员工作效率明显较低。为了解决温度表检定工作中存在的实际问题,提高温度表检定工作效率和工作质量,及时开发了一个基于Web的温度表检定系统。系统采用B/S软件架构,不仅实现对温度表检定数据批量、高效、准确的自动处理,还实现对温度表信息的录入、查询、统计与打印等功能。
2 技术方法
以Windows 2007操作系统为开发平台,采用Dreamweaver CC 2014、phpStudy等开发工具,以及HTML、CSS、PHP、JavaScript等开发语言。同时,由于MySQL数据库具有成本低、执行速度快、安装和使用简单、可信赖等优点,本系统采用MySQL数据库。
PHP有多个开发工具,单独安装Apache、PHP、MySQL 3个软件后配置比较复杂,而phpStudy是PHP的一种集成开发环境,该开发工具集成了phpMyAdmin、PHP、Apache和MySQL 4个软件,可一次性进行安装,完成PHP复杂的开发环境配置[1],本系统采用phpStudy集成开发工具。
3 系统设计
3.1 系统模块划分
系统主要由温度表收发、温度表检定、查询统计、用户管理等4个模块构成。其中温度表收发模块分为标准温度表收发、送检温度表收发、已检温度表领取等3个部分,温度表检定模块分为检定、核验及批准等2个部分,查询统计模块分为未检、已检、到检温度表的查询和合格率统计等4个部分。其总体结构如图1所示。
3.2 数据库设计
根据系统规划,采用的MySQL数据库一共建立4张数据表,分别是:用户信息表、送检温度表、标准温度表、已检温度表。其中,用户信息表包含“姓名、密码、权限”等字段;送检温度表包含“送检单位名称、送检人姓名、送检人电话、送检日期、温度表名称、型号、最大允许误差、证书编号、使用范围”等字段;标准温度表包含“标准温度表名称、型号、修正值”等字段;已检温度表包含“温度表名称、型号、证书编号、检定规程、标准温度表名称、检定设备、检定人姓名、核验人姓名、批准人姓名、检定数据、检定结论、检定日期、到检日期”等字段。
图1 系统总体结构图
3.3 部分界面简介
系统主要包括首页、温度表收发、已检温度表领取、已领取温度显示、检定读数填写、批次检定温度表显示、记录表、检定证书、温度表核验及批准、温度表查询(未检、已检、到检)、温度表合格率统计、用户管理等多个界面。由于篇幅有限,这里仅介绍系统首页及检定结果界面。
3.3.1 首页界面 系统首页采取用户密码验证登录,登录成功后,首页自动显示待检仪器动态信息和已检仪器动态信息。待检仪器动态信息包括检定员、证书编号、仪器名称、检定方式、送检时间等,已检仪器动态信息包括送检单位、仪器名称、送检日期、检定员、数量等。首页界面如图2所示:
图2 首页界面
3.3.2 检定结果界面 检定证书包括温度表基本信息和检定结果,其中温度表基本信息包括送检单位、名称、型号、出厂编号、检定结论、检定人、核验员、批准员、检定日期、到检日期等。检定证书模块在设计上采用了CSS局部打印功能,打印检定证书时,自动将温度表基本信息与检定结果分成两页。系统自动根据被检温度表名称、偏差读数、最大允许误差、相邻最大允许差等信息进行判断和计算,动态生成以表格显示的检定结果。检定结果界面如图3所示:
图3 检定结果界面
4 主要算法
4.1 平均值、修正值、修约值的算法
气象用玻璃液体温度表简称为温度表,其种类较多,主要有通风干湿球温度表、干湿球温度表、直管地中温度表、最高温度表、曲管地中温度表、地面温度表、最低温度表等,温度表的最小分度值分为0.2℃和0.5℃两种。
温度表的每个检定点均由2对偏差读数构成,平均值是2对偏差读数和的平均,当平均值的百分位为5时,如果十分位为奇数则进,为偶数则舍。修正值的计算方法,是首先将标准温度表的偏差读数平均值与标准温度表的修正值相加,然后再减去温度表偏差读数平均值,最后计算出来的值即为修正值,其应保留2位小数。修约值是对修正值进行处理的结果,对于最小分度值为0.2℃的温度表,修正值就是修约值;对于最小分度值为0.5℃的温度表,修正值应修约到1位小数,即为修约值[2]。这3种算法相对简单,流程图及代码略。
4.2 检定结论判断算法
温度表在被检定过程中,如果有一个检定点的偏差读数出现明显异常,则该温度表后续检定点的偏差读数用“/”表示。系统在自动判定检定结论时,先判断偏差读数是否为“/”,若不是“/”,偏差读数再与最大允许误差进行比较,若偏差读数在最大允许误差范围内,检定结论变量被赋为合格,否则被赋为不合格。如果所有的偏差读数均在最大允许误差范围内,相邻检定点的读数差再与相邻最大允许差进行比较,若相邻检定点的读数差也均在相邻最大允许差范围内,则检定结论为合格,否则为不合格。
检定结论判断算法流程如图4所示。
图4 检定结论判断算法流程
部分代码如下:
function veri_con($zqd,$bj)
{
$jdjl='';$i=0;$j=0; //初始化变量
$zqd_arr=explode('/',$zqd);//分离温度表各检定点的最大允许误差
$sz_arr=explode(',',$bj); //分离被检温度表偏差读数
$count=count($sz_arr); //计算温度表检定点的个数
//循环判断各检定点的偏差读数是否在最大允许误差范围内
for($i=0;$i<$count;$i++){
if($sz_arr[$i]!='/'){
$sz_arr[$i]=((float)$sz_arr[$i])/100; //将偏差读数的数据类型转换成浮点型 if(((float)$sz_arr[$i])>((float)$zqd_arr[0])||((float)$sz_arr[$i])<((float)(-$zqd_arr[0]))){
$jdjl="不合格";
break; //如果检定结论变量被赋为不合格跳出整个循环
}
……
}
if($jdjl=="合格"){ //如果所有偏差读数均在最大允许范围内,需进行下一步判断
//循环判断相邻检定点的读数差是否在相邻最大允许差范围内
for($j=0;$j<$count-4;$j++){
……
}
}
return $jdjl;
}
4.3 比例内插分段算法
为了便于使用修正值,需要对温度表的修正值进行分段,分段算法有多种,本系统采用线性比例内插算法,其算法关键步骤如下:
①定义一个数组y,用于存储示值区间终点修正值的所有可能的取值,这些值是根据各类温度表检定点的最大允许误差来取的,它们之间的间隔为0.1℃,且第2位小数均为5。
②相邻检定点的修正值是否相等,若相等,则终点示值不能用线性比例公式进行计算。
③检定点是否为第一个检定点,若为第一个检定点,则分段的初始示值就是该检定点的示值,下一个分段的初始值等于上一个分段的终点示值加上0.1。
④检定点修正值的第2位小数是否为5,若为5,该点的修正值应向高点或低点的修正值方向舍或入[2]。
⑤相邻分段区间的修正值可能会相等,若相等,则合并为一个区间。
⑥将所有分段的起始示值和修正值连接成字符串,检定结果页面在调用该算法时,再对该字符串处理,得到各区间的起始示值、修正值及终点示值。
线性比例内插分段算法流程如图5所示:
图5 线性比例内插分段算法流程
关键代码如下:
function in_prop($xy_str,$jdfw)
{
//各类温度表示值区间终点修正值所有可能的取值,它们之间间隔0.1,第2位小数位为5。
$y=array(-0.55,-0.45,-0.35,-0.25,-0.15,-0.05,0.05,0.15,0.25,0.35,0.45,0.55); $arr_t=explode(';',$jdfw); //获取被检温度表的检定范围
$arr_y=explode(';',$xy_str); // 获取温度表检各定点对应的修正值
$count=count($arr_t); // 计算检定点的个数
$str='';$t_start=0;$y_start=0;$t_end=0;$y_end=0;$xz=0;//初始化变量
for($i=0;$i<$count-1;$i++){
$j=$i+1;
if($arr_y[$i]-$arr_y[$j]!=0){ //判断相邻两个检定点的修正值是否相等
if($i==0){ //判断是否是第1个检定点
$t_start=$arr_t[$i]; //第1个检定点的值就是第1个区间的起始示值
$y_start=$arr_y[$i];
$new_y=new_y($arr_y[$i],$arr_y[$j]); //对两个修正值进行判断,舍去数组y中不需要带入线性比例内插法公式进行计算的数值,并返回新的数组$new_y(函数new_y()略)
$num=count($new_y);//计算新数组的长度
if($num==0){
$t_end=$arr_t[$j];
$y_end=$arr_y[$j];
$xz=xzz($y_start,$y_end); //对示值起点和示值终点的2个修正值进行判断,得出该区间的修正值(函数xzz()略)
$str=$str.$t_start.','.$xz.';'; //将各个区间的起始示值和修正值链接成字符串
$t_start=$t_end+0.1; //下一个区间的起始示值
$y_start=$y_end;
}
else{
for($n=0;$n<$num;$n++){
//根据线性比例内插法求出区间的终点示值,并保留1位小数 $t_end=number_format(($new_y[$n]-$arr_y[$j])*($arr_t[$i]-$arr_t[$j])/($arr_y[$i]-$arr_y[$j])+$arr_t[$j],1,'.','');
……
}
……
return $str;
}
5 温度表检定操作流程
用户可对系统进行的操作主要有:录入送检温度表和标准温度表信息,对温度表进行检定(包括选择检定条件、录入检定数据、自动生成记录表),打印检定证书,对温度表未检、已检、到检信息进行查询及合格率统计,修改用户信息等,其中温度表检定的操作过程相对较为复杂,其具体操作流程如图6所示。检定员在开始使用系统之前,应确保事先录入已检定的温度表信息和已使用的标准温度表信息。
图6 温度表检定操作流程
6 结语
系统界面友好,安全可靠,运行稳定,处理数据准确高效,及时解决了贵州省温度表检定工作中存在的实际问题,使其工作质量和工作效率得到明显提高,实现了温度表规范化、标准化、统一化管理模式,有效提高了贵州省气象计量检定工作现代化水平。
计量检定仪器除了各类温度表外,还有温度传感器、湿度传感器、气压计、温湿表、风速仪、雨量仪等设备,本系统实现了对温度表的自动检定,在此基础上还可不断进行完善,扩展系统功能,实现对所有计量检定仪器和检定人员工作量考核的统一规范化管理。
[1] 张兵义,等.PHP+MySQL+Dreamweaver动态网站开发实例教程[M].北京:机械工业出版社,2012.
[2] 秦岭.气象用玻璃棒液体温度表检定规程[M].北京:国家气象局计量所,1992.
2014-09-28
李翠翠(1984-),女,助工,主要从事雷达运行保障与软件开发工作。
省级气象计量检定管理系统(黔气科合【2014】QN07号)。
1003-6598(2015)03-0051-05
TP311
B