当冷热接头的温度分别为0℃及t℃时,康铜与铜所构成的温差电偶的温差电动势可以用下式表示:
今将温差电偶的一接头插入炉中,另一接头的温度保持0℃,此时获得的温差电动势为28.75mV,求电炉的温度。
求该合金的熔点。
阅读以下技术说明和C代码,将C程序中(1)~(5)空缺处的内容填写完整。
[说明]
某种传感器的输出值Ratio依赖于环境温度temp(-40℃≤temp≤50℃)。对一组环境温度值(ITEMS个),已经测量得到了相应的Ratio值(如表4-10表格所示)。表4-10粗略地描述了曲线Ratio(temp)。
校正系数K是Ratio的倒数,因此也依赖于环境温度temp。在数据处理中,需要用更多的列表值细致地描述曲线K(temp),如表4-11所示。
在表4-11中,各温度值所对应的K值是对表4-10进行线性插值再求倒数得到的,具体的计算方法如下。
1) 根据temp值,在表4-10中用二分法查找;
2) 若找到相应的温度值,则按相应的Ratio值求倒数得到K值;
3) 若没找到相应的温度值,则可确定temp所在的温度区间[Tp1,Tp2],同时获得了相应的Ratio1和 Ratio2,再按如下公式计算K值:
在程序中,当temp高于50℃或低于-40℃C时,设定K=0。
[C程序]
include
typedef struct {
int Temp; /* 环境温度 */
double Ratio; /* 传感器的输出值 */
}CURVE;
define ITEMS 7
double GetK(int Temp,CURVE *p,int n)
{ /* 用二分法在n个元素的有序表p中查找与Temp对应的传感器输出值 */
int low, high, m;
double Step;
low = 0;
high = n-1;
if ((Temp<p->Temp) || (Temp>(p+high)->Temp))
return 0.0; /* 超出温度范围时返回 0.0 */
while (low<=high)
{ m=(1);
if (Temp==(p+m)->Temp)
return (2);
if (Temp<(p+m) >Temp)
high=m-1;
else
low=(3);
}
p+=high;
Step=((4) )/((p+1)->Temp-p->Temp);
return 1.0/ (p->Ratio + Step*((5) ) ;
}
void main()
{ int Degree;
double k;
CURVE Curve [ITEMS]={{-40,0.2},{-20,0.60.},{-10,0.8},{0,1.0},{10,1.17},{30,1.50},{50,1.8}};
printf ("环境温度 校正系数\n");
for (Degree=-40;Degree<=50;Degree++)
{ k=GetK (Degree, Curve, ITEMS);
printf("%3d %4.2f\n",Degree,k);
}
}
试题七(共15分)
阅读以下应用说明以及用Visual Basic 编写的程序代码,将应填入(n) 处的字句写在答题纸的对应栏内。
[应用说明]
某应用程序用于监测某种设备的工作温度(20~200度),其运行窗口中,包括一个温度计(矩形形状shpMeter)以及其中指示当前设备温度的水银柱(矩形形状shpT),文字标签标记了温度刻度;另有一个图片框picCurve,用于动态描述检测到的温度曲线(用户见到的曲线与水银柱等高变化);命令按钮“开始测”(cmdStart)用于启动温度检测,命令按钮“暂停检测”(cmdStop)用于暂停检测。矩形形状 shpT(水银柱)属性visible 初始设置为不可见,属性Filltype 设置为solid(实心),FillColor设置为红色;图片框picCurve的属性AutoRedraw设置为True;再创建一个定时器TimT,属性Enabled初始设置为False(不起作用),属性Interval(定时间隔)设置为500 毫秒。为模拟设备温度的检测,程序中利用了(0,1)之间均匀分布的伪随机数获得[20,200]之间的随机温度T。为了便于在图片框picCurve 中绘制曲线,程序中对该图片框立了坐标系统,左上角为原点(0,0),水平向右方向为X 轴,垂直向下方向为Y 轴,右下角坐标为(50,180)。为了便于观察记录的温度值,图片框中从上到下创建了5 条水平线Ls(i),i=0,1,…4,并在程序中按等间隔排列进行位置设置。程序中每隔半秒算出曲线点(x,y),其中x=0,1,2,…,再用直线段连接各相邻曲线点形成温度曲线。
[Visual Basic程序代码]
Dim (1) As Integer '声明全局变量
Private Sub CmdStart_Click()
TimT.Enabled = True
ShpT.Visible = True
End Sub
Private Sub CmdStop_Click()
TimT.Enabled = False
End Sub
Private Sub Form_Load()
Dim i, H As Integer
PicCurve.Scale (0, 0)-(50, 180) '设置图片框坐标系:左上角-右下角
H = 30 'H 等于图片框高度的六分之一
For i = 0 To 4 '设置5条水平线Ls(i)的位置
Ls(i).X1 = 0 'Ls(i)起点横坐标
Ls(i).Y1 = H * (2) 'Ls(i)起点纵坐标
Ls(i).X2 = 50 'Ls(i)终点横坐标
Ls(i).Y2 = Ls(i).Y1 'Ls(i)终点纵坐标
Ls(i).BorderColor = &HC0C0C0 '设置水平线颜色
Next i
x = 0 '设置曲线坐标初值
End Sub
Private Sub timT_Timer()
Dim T, H As Integer 'T为即时温度,H 为图片框中温度点显示高度
T = Int(Rnd * 181) + 20 '模拟随机产生设备温度(20~200 度)
'按当前温度显示水银柱
H = ShpMeter.Height * (3) '算出水银柱的高度
ShpT.Top = (4) - H '设置水银柱顶部位置
ShpT.Height = H '设置水银柱的高度
'绘制温度曲线
y = (5) '算出曲线上当前点的纵坐标
If x = 51 Then '当超出图片框时
PicCurve.Cls '清除图片框内以前画的曲线
x = 0 '设置重画曲线的初值
ElseIf x > 0 Then '除左边点外
PicCurve.Line (x-1,Lasty)-(x,y),vbRed '由前1 点到当前点画红色线段
End If
x = x + 1 '准备下一点坐标
Lasty =y '保存当前坐标供下次使用
End Sub
A.日志管理
B.安全管
C.性能管理
D.计费管理