S型标准热电偶分度表的MFC设计

发布时间:2022-08-29     浏览次数:
摘要:MFC具有强大的算法功能、稳定的固定界面、执行效率高、运行快等优点。针对S型标准热电偶热电势求取问题,结合标准热电偶溯源证书及GB/T16839.1-2018《热电偶第1部分:电动势规范和允差》规定的公式,通过解一-组三元一.次联立方程确定差值函数,使用MFC完成S型标准热电偶分度表的设计。最后通过与JJG75-1995《标准铂铑10-铂热电偶检定规程》及标准铂铑10-铂热电偶溯源证书中对应数据比对,进行结果验证。
  在Excel中,有意或无意对数据或公式的改动、插入表格或删除一行(或列)均可能会发生严重错误,而这种错误不容易被发现。MFC(微软基础类库)具有可视的人机界面、强大的算法功能,稳定的固定界面,此外还具有代码执行效率高、运行快、资源占用少及移植性强等优点。
  针对S型标准热电偶(标准铂铑10-铂热电偶)热电势求取问题.结合标准热电偶溯源证书及GB/T16839.1-2018《热电偶第1部分:电动势规范和允差》规定的公式,通过解一-组三元一次联立方程确定差值函数,使用MFC完成S型标准热电偶分度表的设计。
1理论分析
1.1参考函数
  S型标准热电偶在温度范围(-50~1768.1)℃内的参考函数以多项式形式表示,如式(1)所示:
 
式中:Er(t90)一电动势,μV;
T90一ITS-90温度,℃;
αi一多项式第i项的系数;
n一多项式阶数。
αi与n的值在GB/T16839.1-2018《热电偶第1部分:电动势规范和允差》表3中列出。
1.2差值函数
S型标准热电偶在温度范围(300~1100)℃内的差值函数△E(t)如式(2)所示:
△E(t)=E(t)-Er(t)=a+bt-ct2(2)
式中:E(t)一-S型标准热电偶热电势,μV;温度值,℃。
  a、b和c三个系数由每支热电偶在三个分度点上测得的热电势(可由溯源证书得知)代入式(2)解-组三元一次联立方程求得,其推导公式分别如式(3)~式(5)所示:
 
  式中:t1、t2和t3一S型标准热电偶三个分度点的温度值,℃;
  △E1、△E/2和△E3一三个分度点的差值函数.μV。
2.MFC编程实现
2.1流程图及界面设计
  流程图及界面设计如图1、图2所示。
 
2.2程序编写
  安装VC6.0,新建“MFCAppWizard[exe]”工程,选择“基本对话框”应用程序类型,再根据MFC应用程序向导完成4步骤。选择resources中Dialog设置界面,在界面.上新增9个编辑框(分别对应温度t、标准热电偶锌凝固点热电势、标准热电偶铝凝固点热电势、标准热电偶铜凝固点热电势、系数α、系数b、系数c、E(t)及E,(t))和1个按钮(由温度t、标准热电偶锌凝固点热电势、标准热电偶铝凝固点热电势、标准热电偶铜凝固点热电势求取并显示系数α、系数b、系数c、E(t)及E,(t)的功能),对每个编辑框和按钮右击点击“属性”赋予不同的ID,双击按钮自动添加处理函数。在处理函数中添加式(1)~式(5)的程序,主要程序如下所示:
CStringtzifu;//温度t字符
GetDlgItemText(IDC_t,tifu);/1从ID为IDC_t的编辑框读取内容并赋予温度t字符
doubletshuzhi=atof(zifu);/1将温度t字符转换为浮点数类型并赋予温度t数值
  从ID地址为IDC_t的编辑框读取温度t的字符,并将其转换为浮点数类型从而参与公式(1)~公式(5)的运算,标准热电偶在锌、铝和铜凝固点热电势的读取类似。
doubled1[9]={0,5.40313308631*pow(10,0),1.2593428974*pow(10,-2),-2.32477968689*pow(10,-5),3.22028823036*pow(10,-8),-3.31465196389*pow(10,-11),2.55744251786*pow(10,-14),-1.25068871393*pow(10,-17),2.71443176145*pow(10,-21)};
doubled2[5]={1.32900444085*pow(10.3),3.34509311344*pow(10.0).6.54805192818*pow(10,-3),-1.64856259209*pow(10,-6),1.29989605174*pow(10,-11)};
doubled3[5]={1.46628232636*pow(10,5),-2.58430516752*pow(10,2),1.63693574641*pow(10,-1),-3.30439046987*pow(10,-5),-9.43223690612*pow(10,-12)};
doubleErtshuzhi=0;11参考函数E,(t)数值
if(-50<=tshuzhi&&tshuzhi<=1064.18)for(inti=0;i<9;i++)
{Ertshuzhi=Ertshuzhi+d16]*pow(tshuzhi,i);}
}
elseif(1064.18<tshuzhi&&tshuzhi<=1664.5)
{
for(inti=0;i<5;i++)
{Ertshuzhi=Ertshuzhi+d26]*pow(tshuzhi,i);}
}
elseif(1664.5<tshuzhi&&tshuzhi<=1768.1)
{
for(inti=0;i<5;i++)
{Ertshuzhi=Ertshuzhi+d3i]*pow(tshuzhi,i);}
}
doubleErZnshuzhi=0,ErAlshuzhi=0,ErCushuzhi=0;11参考函数在锌铝铜凝固点数值
for(intj=0;j<9;j++)
{
ErZnshuzhi=ErZnshuzhi+d1j]*pow(419.527,j);
ErAlshuzhi=ErAlshuzhi+d1Gj]*pow(660.323,j);
}
for(intk=0;k<5;k++)
{
ErCushuzhi=ErCushuzhi+d2[k]*pow(1084.62,k);
}
doubleashuzhi=0,bshuzhi=0,cshuzhi=0;1/系数a、b和c数值
doubletl=419.527,t2=660.323,t3=1084.62;
doubleE1=EZnshuzhi-ErZnshuzhi,E2=EAlshuzhi-ErAlshuzhi,
E3=ECushuzhi-ErCushuzhi;//差值函数在锌铝铜凝固点数值
doubleal=t2*t3/((t1-t2)*(tl-t3)),a2=-t1*t3/((t1-t2)*(t2-t3)),a3=t1*2/((t1-t3)*(t2-t3));
doubleb1=-(t2+t3)/((t1-t2)*(t1-t3)),b2=(t1+t3)/((t1-t2)*(t2-t3)).b3=-(t1+t2)/((t1-t3)*(t2-t3));
doublec1=1/((t1-2)*(t1-t3)),c2=-1/((t1-2)*(t2-t3)),
c3=1/((tl-t3)*(t2-t3));
ashuzhi=al*E1+a2*E2+a3*E3;
bshuzhi=b1*E1+b2*E2+b3*E3;
cshuzhi==c1*E1+c2*E2+c3*E3;
doubleEtshuzhi=0;1/热电势E(t)数值
Etshuzhi=ashuzhi+bshuzhi*tshuzhi+cshuzhi*tshuzhi*tshuzhi+Ertshuzhi;
多项式系数αi放在数组d1[9]、d2[5]及d3[5]中,最后将各数值在对应的编辑框中显示出来,以E(t)为例(系数a、b和c与参考函数Er(t)类r似),程序如下所示:
CStringEtzifu;//热电势E(t)字符
  Ezifu.Format("%.15f",Etshuzhi);//将热电势E(t)数值转换为小数点后15位字符串SetDlgItemText(IDC_Et,Ezifu);11在ID为IDC_Et的编辑框中显示出来
  快捷键F5运行调试无错后即可使用工程所在文件夹下Debug文件中的执行文件,可以移植到其他电脑上。
3结果验证
  已知JJG75-1995《标准铂铑10-铂热电偶检定规程》附录2铂铑10-铂热电偶(S型)参考函数[E,(D]表与标准铂铑10-铂热电偶溯源证书中数据,利用编好的软件求取Er(t)、系数a、b和c及E(t),与JJG75-1995《标准铂铑10-铂热电偶检定规程》附录2及溯源证书中对应数据比对分析,如表1所示。
 
  从表1可知,软件给出的各温度点参考函数均能通过数字修约规则“四舍六入,逢五取偶”得到JJG75-1995《标准铂铑10-铂热电偶检定规程》附录2铂铑10-铂热电偶(S型)参考函数(除锌、铝和铜凝固点对应的参考函数外,因为规程未给出数值)。
  从表1也可知,软件给出的各温度点热电势均能通过数字修约规则“四舍六入,逢五取偶”得到标准铂铑10-铂热电偶溯源证书中对应的热电势。
通过以上比对分析,证明了该软件数据的可靠性。只要知道S型标准热电偶溯源证书中锌、铝和铜凝固点热电势以及温度t,就可求出新系数a、b和c,即求出新差值函数。可以使用.上述方法将S型标准热电偶分度表准确的计算和打印出来,便于工作中使用。
 
上一篇:工业热电阻温度计的选型   下一篇:铂热电阻测温中的线性化处理