基于PyQt的SHPB试验数据处理程序开发
2021-12-14吴春波赵振华刘璐璐
吴春波 陈 伟 赵振华 罗 刚 刘璐璐
(南京航空航天大学能源与动力学院航空发动机热环境与热结构工业和信息化部重点实验室 江苏 南京 210016)
0 引 言
一般而言,材料在高应变率下会表现出明显不同的力学响应,研究材料在高应变率下的力学行为非常有必要。分离式霍普金森压杆由此被广泛应用。许多学者[1-4]利用SHPB装置对材料的动态力学性能开展了研究,其中涉及到的材料包括金属、聚合物和新型材料,可见SHPB的用途之广。
SHPB装置工作示意图如图1所示,撞击杆被发射后与入射杆发生碰撞,产生的入射应变被入射杆上的应变片所记录,一部分应力波在试件和入射杆端面被反射,另一部分波继续在透射杆上传播,透射应变被透射杆上的应变片记录。利用应变仪和数据采集卡可将入射、反射和透射信号采集并存储在计算机内。孙朝翔[5]和牛家乐等[6]利用MATLAB编程实现了SHPB试验结果的处理,前者的处理程序不含界面且功能较为单一,后者的程序处理结果中不包含验证试验数据有效性的指标,且未提及该程序是否被打包为可执行程序、是否能够应用于不含MATLAB环境的计算机中。路守克等[7]采用VC++开发了SHPB试验处理程序,但未涉及到波形滤波,且同样处理结果中未包含评价试验结果的指标。本文基于PyQt平台,使用Python语言开发了SHPB试验数据处理程序,程序功能完善,并将其打包成可执行程序,方便了相关试验人员计算动态应力应变曲线等试验结果。
图1 SHPB装置工作示意图
1 SHPB原理介绍
如图1所示,SHPB装置包括撞击杆、入射杆、透射杆、吸收杆、测速仪、应变仪、数据采集卡及计算机等。在入射杆和透射杆上贴有应变片,用以测量杆上的应变。使用SHPB装置需要满足以下两个基本假设[8]:
(1) 平面应力假设,即平面压缩波(脉冲)在杆中传播时无弥散。
(2) 均匀化假设,试件的应力与应变在杆轴向均匀分布。
基于这两个假设可以得到试件的应变率、应变和应力计算式为:
(1)
式(1)为三波法计算式,式中:A0和As分别为杆和试件的横截面积;E0为杆的弹性模量;Ls为试件的初始厚度;εi、εr、εt分别为试验测得的入射应变、反射应变和透射应变信号;C0为弹性波在杆中的传播速度。C0计算式为:
(2)
式中:ρ为杆的密度。
入射杆和透射杆的力分别为:
F1=A0E0[εi(t)+εr(t)]
(3)
F2=A0E0εt(t)
(4)
当试件两端应力达到平衡时,有F1=F2,即:
εi(t)+εr(t)=εt(t)
(5)
将式(5)代入式(1),可得:
(6)
式(6)为一波法计算式,将式(5)代入式(6)中的第三式可得二波法[9]。
根据上述公式可计算得试件的工程应力-应变曲线,接着通过工程应力应变与真实应力应变之间的换算式可以得到试件的真实应力-应变曲线:
εT(t)=ln(1+ε(t))σT(t)=(1+ε(t))·σ(t)
(7)
2 代码结构及程序打包
PyQt是用于跨平台GUI程序开发的工具包,将强大的GUI库(Qt库)与Python编程语言结合在了一起[10],本文使用Python 3.5版本在Pycharm中编写程序,代码结构如图2所示。
图2 代码结构
步骤1需要下载相关的支持包,编写程序主要需要用到的包及对应功能在表 1中列出。
表1 编写程序所需的包
步骤2利用QtDesigner设计程序界面,由此生成的UI文件可以转换为Python文件。QtDesigner不仅便于直观地设计UI界面,只需要拖动鼠标即可完成UI对象的布局,还可以将UI界面与主程序剥离开来,以实现主程序开发和UI设计互不干涉。
步骤3主程序开发。在主程序中主要任务是编写UI中按钮、组合框等控件的槽函数。首先在主程序中创建一个主窗口类,这个类继承之前在QtDesigner中创建的UI类,接着在这个主窗口类中编写所需类的方法即可完成主窗口类的编写。
步骤4程序的打包。由上述3个步骤即可完成GUI的编写,为了使程序在无Python环境中运行,使用Pyinstaller将Python文件打包成可执行程序。经尝试,打包后的程序可在64位Windows 7及更高版本系统中成功运行。
3 数据处理程序
如图3所示,本程序由4个模块组成,即“绘制原始波形”“滤波”“对齐波形”和“结果”。下面分别介绍这4个模块的具体功能。
图3 程序功能
3.1 绘制原始波形模块
在“参数输入”框中填写参数,包括压杆弹性模量、压杆密度、压杆直径、入射杆长度、透射杆长度、撞击杆长度、应变片与试件距离、应变片灵敏度、应变仪放大倍数、应变仪桥压。此外,还需选择试验件类型,即选择圆柱体试验件或长方体试验件。首次输入参数完成后,可点击“保存参数”按钮,点击后弹出对话框,选择保存路径及名称,参数文件即被保存在本地硬盘,便于后续使用。下次需要输入参数时,可点击“载入参数”按钮,选择参数文件即可快速完成参数输入。
接着,在“绘图”框中的下拉框选择文件类型,文件形式为Excel表格,表格中第一列为时间(s)。当文件中第二、三列的数据分别为入射波和反射波应变、透射波应变时,则应选择下拉框中的“时间-应变”;当文件中第二、三列的数据分别为入射波和反射波电压(V)、透射波电压(V)时,则应选择下拉框中的“时间-电压(半桥)”,在这种情况下,需要将电压信号转化为应变信号,以应变片半桥连接形式为例,转化公式为:
(8)
式中:U为需转换的电压信号;ε为转换后得到的应变;g、k、U0分别为应变仪放大倍数、应变片灵敏度和桥压。
文件类型选择完成后,点击“打开文件并绘制”按钮,点击后弹出对话框,选择波形Excel文件,即可在右边“原始波形”框中绘制原始波形。移动鼠标出现十字光标,可显示鼠标当前位置的坐标,这个功能是调用了函数mouseMoved实现的。图 4展示了一次试验的原始应变波形。
图4 绘制原始波形模块
3.2 滤波与对齐波形模块
在“滤波”栏中填写滤波阶数,接着点击“绘制滤波后的波形”按钮,并滑动归一化截止频率“Wn”滑块,即可在“滤波后的入射波及反射波”和“滤波后的透射波”框中绘制滤波后的入射波及反射波、透射波。根据滤波阶数和归一化截止频率“Wn”可以计算滤波器分子分母系数,进而进行滤波。图5展示了滤波之后的波形。
图5 滤波模块
在“滤波后的入射波及反射波”和“滤波后的透射波”图中移动鼠标出现十字光标,可显示鼠标当前位置的坐标。分别选择入射波起点、入射波终点、反射波起点、透射波起点,填入相应的输入框内,由于此时波形横坐标为数据点序号,因此填入的数据须为整数。
在“对齐波形”模块中,点击“对齐波形”按钮,即可绘制波头对齐的入射波、反射波和透射波,如图 6所示。
图6 对齐波形模块
3.3 结果模块
在结果模块中,点击“计算并绘图”按钮,即可绘制如图7所示的5幅曲线:1) 工程应力-应变曲线。2) 真实应力-应变曲线。3) 时间-应变率曲线。4) 时间-应力曲线。5) Rt曲线。
图7 计算模块
在5幅图中移动鼠标出现十字光标,可显示鼠标当前位置的坐标。“工程应力-应变曲线”和“真实应力-应变曲线”图中显示了应力峰值,材料在该应变率下的动态强度一目了然。前4幅图中,对比了一波法、二波法和三波法的计算结果。Rt曲线可以判断试件是否达到应力平衡,用以评价试验的准确性。点击“导出数据”可将5幅图中的横纵坐标数据导出到指定路径中的Excel表格中,供后续专业绘图软件使用。
4 结 语
本文基于PyQt工具包,使用Python语言开发了SHPB试验数据处理程序,该程序能够方便地实现原始波形绘制、滤波、波形对齐、动态应力应变曲线等结果的计算与绘制。最终,该程序被打包成通用的可执行程序,能够为动态力学测试相关的试验人员提供极大的便利。