推荐星级:
- 1
- 2
- 3
- 4
- 5
基于Python的温度巡检仪上位机软件
资料介绍
基于Python语言设计了一种温度巡检仪的上位机软件,实现RS232串口数据读取,并对数据进行处理运算,最后保存至word文档中。word文档模板设计参照JJF 1101—2003《环境试验设备温度、湿度校准规范》,数据自动保存后可直接自动打印,从而使原本无法实现智能采集运算的计量标准仪器具备了自动数据处理,自动生成原始记录的功能。2015年该温度巡检仪(配置该软件)通过标准水银温度计的校准,校准最大误差为±0. 1℃,扩展不确定度达到0. 3℃(k=2),性能符合JJF 1171—2007《温度巡回检测仪校准规范》的技术要求。
部分文件列表
文件名 | 大小 |
基于Python的温度巡检仪上位机软件.pdf | 785K |
部分页面预览
(完整内容请下载后查看)测量与设备
*
Python
基于
的温度巡检仪上位机软件
1
1
2
1
1
1
陶 进 李丹丹 陶 承 万 磊 婉 舜 周 俊
( 1.
,
江西省计量测试研究院 南昌
330022; 2.
,
南昌工学院 南昌
330108)
Python
,
语言设计了一种温度巡检仪的上位机软件 实现
RS232 ,
串口数据读取 并对数据进行处
摘
要
基于
,
理运算 最后保存至
word
。word
JJF 1101—2003《 、 》,
环境试验设备温度 湿度校准规范 数
文档中
文档模板设计参照
, ,
据自动保存后可直接自动打印 从而使原本无法实现智能采集运算的计量标准仪器具备了自动数据处理 自动生
。2015
( ) , ± 0. 1℃ ,
年该温度巡检仪 配置该软件 通过标准水银温度计的校准 校准最大误差为
成原始记录的功能
0. 3℃ ( k = 2) ,
性能符合
JJF 1171—2007《 》 。
温度巡回检测仪校准规范 的技术要求
扩展不确定度达到
Python; RS232;
;
自动数据处理 自动生成原始记录
关键词
doi: 10. 3969 /j. issn. 1000 - 0771. 2016. 10. 07
、
型号温度巡检仪上位机软件的设计思想 串口通讯
0
引言
、32
、Pt100
电阻值二分比
协议
位浮点数据转换方法
、
温度巡检系统由前端温度传感器 下位机嵌入
、
较查询方法 温度数据处理及
word
,
模板自动生成
( )
式硬件 温度巡检仪 和上位机电脑软件三部分组
并且比较了温度巡检仪配备新软件前后的校准数
, 、 、 、
成 具有自动校准 人工校准 自动巡检 手动定检
、
。
据和校准不确定度
,
巡检通道切换时间及通道有效数可设定等功能 并
1
上位机软件设计
,
且具有良好的二次开发潜力 因此广泛应用于恒温
、 、 、
实验室 冷库 干燥箱 培养箱等环境实验设备的温
、
上位机软件设计包含串口设置判定 数据转换
。 ( “
度校准工作 江西省计量测试研究院 简称 江西
、 、 4
模块 阻值换算模块 数据处理存储模块等 个程序
”) 2003
和其他几十家省市计量机构于
16
院
年起先后
。
模块 第一程序模块串口设置判定模块功能是判
,
购置了国内某公司研发的
通道温度巡检仪 其工
Pt100
电阻值
, , ,
断串口是否打开 串口设置是否正确 若不正确 则
16
作原理是将巡检仪
个通道采集的
; ,
程序报错并且程序自动结束 若正确 程序则进入
,
通过串口传输给上位机电脑 由相应软件处理转化
,
第二程序模块数据转换模块 即通过串口向巡检仪
,
为温度数据显示 检定员将数据记录手写在纸上
,
9
32 ( JJF 1101—2003
位浮点码 根据
的
个通道读取
,0. 5h
JJF 1101—2003
,
计算处理数据 每份记录手
并参照
写耗时约
9
内读取 个通道 每个通道读取
,
15
要求
次机
(
进制数 经标准电阻箱验
0. 5h(
规范要求每台环境试验设备校准时
) ,
器码 并自动转换成
10
0. 5h) ,
江西院每年
3000
间为
台件环境试验设备的
近几年国际上研发出
,
, 10
证 此
Pt100
) ;
电阻值数 第三程序模块
进制数为
,
检定量 每年耗时约
1500h。
10
、
进制电阻值继续进行查表 分
阻值换算模块是将
了可实现不需人工记录运算数据的巡检系统 但价
, ,
度运算 换算成温度数值 换算完成后进入第四程
,
格是国内产品两倍以上 并且由于上位机软件生成
;
序模块数据处理存储模块 数据处理存储模块参照
JJF 1101—2003
,
的要求 需
的原始记录不完全符合
JJF 1101—2003,
计算出被检环境试验设备的温度
。
另加较高的软件修改费用
、 ,
偏差 温度均匀度和温度波动度 然后将第三程序
JJF 1101—2003,
以温度巡检仪为
江西院参照
、
模块 第四程序模块所得温度数据共计
201
个温度
,
下位机 研发了一款基于
Python
语言的上位机软
word
。
文档模板中 程序
数值存储到规范所要求的
, 、
件 可直接实现数据自动采集 处理和保存等功能
。
1
设计流程图如图 所示
。
Python
本文详细介绍了基于
编写的国内研发的某
*
(
江西省计量测试研究院院级课题项目 赣计
2014
5
)
号
第
· 24 ·
2016. No 10
计量技术
测量与设备
return int_part + digit_part
32 10
,
进制数后 通过标准
将
位浮点码转换为
10
,
进制数为电阻值 要
电阻箱对比可发现转换后的
,
得到温度值 还需要制作
Pt100
阻值温度值分度表
1
图
软件流程图
。
进行再次转换
1. 3 Pt100
分度查表二分比较查找法
Pt100 2015
年可标定的温度范围是
1. 1
串口通信协议定义
,
要实现上位机与温度巡检仪的串口通信 需确
江西院
在
- 30 ~ 200℃,
参照
Pt100
,
阻值温度值分度表手册
、
定巡检仪向上位机所传字符串的起始位 数据位和
:
制作的阻值温度分度表如下
B = [82. 29,84. 27,86. 25,88. 22,90. 19,92. 16,
94. 12,96. 09,98. 04,100. 00 # - 45 ~ 0 ……
159. 19,161. 05,162. 91,164. 77,166. 63,168. 48,
[1]
。
,
校验位
信息无法得到 本文使用串口监听工具
Monitor
由于巡检仪研发小组早已解散 下位机
Serial Port
‘:
,
,
监听串口的通信数据 解析出起始字符串
0002003C’,
校验字符串
‘: 02021856’,
并将所得字
170. 33,172. 17,174. 02,175. 86#155 ~ 200]
表中共
Python
,
语言环境下的串口定义 实现上下
符串用于
50
, ,
个数值 程序中采用二分比较查找法 逐步将
有
。 ,
位机通讯 串口定义完毕 只要串口在开启状态
,
,
阻值范围缩小 最终将阻值锁定在表格两个值的闭
,Python
串口参数设置准确
函数即可读取巡检仪
1. 2 32
主程序调用相应模块和
,
区间之内 根据表格两个值之差对应
5℃
求出温度
16
。
个通道的数据
k, ,
分度系数 进而求出近似温度值 其相应编程如
位浮点码数据转换
: def lookup( num) :
下
Serial Port Monitor
通过对
所截取数据的反复对
while first < end: #Python
经典二分法程序
,
比演算 验证出巡检仪传输给上位机电脑的机器码
mid = ( first + end) /2
if num > b[mid]:
first = mid + 1
IEEE
32 , 10
标准的 位浮点码 浮点码转换为 进制
为
,
数才可进行数据处理 本文以
8F 82 0A 43
为例阐述
:
转换原理 浮点码数据记录时高位在后 首先将
, 8F
elif num < b[mid]:
end = mid - 1
82 0A 43
43 0A 82 8F(
) ,
其高位在前 再将其
逆序为
转 化 为 二 进 制
10001111
, 010000110000101010000010-
if first = = end:
0
,
8
最高位是符号位 表示是正值 接下来
1. 4
word
模板自动生成
温度数据处理及
,
位是指数位 转换为十进制为
134
127,
再减 结果为
,
软件在将电阻数据转换为温度数据后 参照
7, 0001010. 1000001010001111
7
右移 位变化为
最
整数部
100000-
0
JJF 1101—2003
、
的技术要求计算出温度偏差 温度
1
前面添 变为
10001010. 1000001010001111
、 、 ,
波动度 温度均匀度 计算出各项参数后 自动保存
10001010
138,
转为十进制 小数部分
分为
word
, ,
文档中 等待自动打印 节约人
至指定路径的
1010001111
1
其中 对应
2
- 1 ,
次方 接下来的
的
。
工成本
2
- 2
……
( 1)
:
表示
对应
的
次方
用式
[3]
1)
温度偏差计算
- 1
- 2
- 3
- 4
1 × 2 + 0 × 2 + 0 × 2 + 0 × 2 + … +
t = t - t
( 2)
为中心点 次测量的平均
d
Δ
d
d
o
- 7
- 16
1 × 2 + … + 1 × 2
= 0. 51
0. 51
( 1)
: t
式中 Δ 温度偏差
d
,℃; t
n
138
整数 部 分
138. 51。Python
加 上 小 数 部 分
结 果 为
,℃; t
,℃。
值
为设备显示温度平均值
o
:
环境下编程如下
[2]
raw_input
t ,
函数 输入设备当前显示值
o
调用
def Transform( self,inData) : #Python32
位浮点码
30min ( 2min )
中 采一次样 所测得的中心点
然后将
digits = ( ( msbin[1]&0x01) × 256) + msbin
的实现
[2]
t , ( 1) ,
按照式 求出温度偏
d
温度值求平均值得到
t 。
d
差 Δ
a =[2 × × - ( i + 1) for i in range( 9) ]
b = [( digits > > ( 8 - i) ) &1 for i in range( 9) ]
c = map( lambda x,y: x × y,a,b)
digit_part = sum( c)
[3]
2)
温度均匀度计算
n
t
=
( t
- t ) /n
imin
( 3)
Δ
u
∑
imax
i = 1
: t
式中 Δ 为温度均匀度
u
,℃; n
; t
为测量次数
为各
imax
2016. No 10
· 25 ·
计量技术
全部评论(0)