基于虚拟仪器混合编程的弹簧质量系统算法
2012-12-01范武杰宋鑫霞
白 博,范武杰,揭 涛,侯 磊,宋鑫霞
(1.机电动态控制重点实验室,陕西 西安 710065;2.西安机电信息技术研究所,陕西 西安 710065)
0 引言
弹簧后坐保险的主要功能是识别发射环境中的后坐力保证发射可靠解除保险和协同其他机构实现日常可靠保险。针对弹簧质量系统的计算和仿真典型的有特征线解法[1]、Ansys和 Matlab混合计算[2]、Simulink仿真[3]等。以上算法人机互动繁琐,通用性不好,加入碰撞条件后问题被极大地复杂化,不利于求解,需要寻找新解法。对此本文提出了基于Labview和Matlab混合编程的弹簧后坐保险系统变加速度条件下解除保险时间计算方法。
1 虚拟仪器软件Labview和Matlab基础
美国国家仪器公司 NI(National Instruments)提出的虚拟仪器(VI)概念,引发了传统仪器领域的一场重大变革,使得计算机和网络技术在仪器领域迅速发展,从而开创了“软件即是仪器”的先河,从这一思想出发,NI推出了最有影响力的虚拟仪器软件产品 Labview[4]。
实现Labview和Matlab的混合编程方法主要有4种:1)基于动态数据交换(DDE)技术;2)基于动态链接库(DLL)技术;3)基于ActiveX自动化技术;4)基于组件对象模型(COM)技术。
1.1 Labview
Labview(Laboratory Virtual Instrument Engineering Workbench)是一种图形化编程语言开发环境,内置了便于应用TCP/IP、ActiveX等软件标准的库函数。
Labview在执行顺序方面采用数据流编程方式,程序框图中节点之间的数据流向决定了VI及函数的执行顺序。
Labview同时提供了 Windows、UNIX、Linux、Macintosh的多种版本。
1.2 Matlab
Matlab是矩阵实验室(Matrix Laboratory)的简称,由美国Math Works公司出品的用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括Matlab和Simulink两大部分。在工程领域有广泛应用。
1.3 弹簧质量后坐系统
弹簧质量后坐系统示意图如图1所示。
图1 弹簧质量后坐系统Fig.1 The spring-mass device
运动要点分析:质量块M受到发射过载的作用开始加速运动过程,到D平面时,发生碰撞后开始减速运动过程。
弹簧后坐保险解除保险过程的数学模型是一个典型的单自由度弹簧-质量系统的受迫振动。
求解本数学模型的算法有以下两大类:
1)以时间为变量,基于速度与时间的函数关系,在弹簧运动上限达到解除保险距离时,判定为解除保险,输出的时刻为解除保险时间。此方法优点是解除保险时刻不需要计算,加速度值可以不经处理直接调用,但是速度与时间的函数关系建立繁琐,不利于编程求解。
2)以位移为变量,基于速度与位移的函数关系,在位移不再小于解除保险要求时,判定为解除保险并计算时间。此法的优点是位移速度函数容易建立,利于编程计算,误差是正误差,可以作为设计参数。缺点是计算前对加速度数据进行预处理,增加步骤。
2 基于Labview和Matlab混合编程的算法
本文采用的算法核心思想是等分质量块自由行程区间为若干子区间,子区间长度和子区间平均速度的比值为质量块在子区间的运动时间,对各子区间时间求和得总时间。子区间的平均速度由子区间的初速度和末速度的均值近似,这样得到的总时间的近似值将略大于实际值。
2.1 Labview调用Matlab-Script实现混合编程
在Labview 中 调 用 Matlab-Script是 基 于activeX自动化和Matlab进行混合编程的一种,activeX的重要功能之一是一个程序借助其方法和属性控制另一程序。Matlab自动化服务器提供一系列方法和属性,借此可以实现在其他应用程序中执行Matlab命令和控制 Matlab[5]。
在Labview中使用 Matlab-Script的基本执行过程是先打开Matlab自动化服务器,执行Matlab命令,最后关闭自动化服务器。
在Labview中使用 Matlab-Script的方法是在程序框图中选择函数(functions)→数学(mathematics)→ 公 式 (formula)→ Matlab 脚 本 (Matlab-Script)。
在进行混合编程时,Matlab-Script和Labview之间的数据类型有很大区别,需要手动设置。
2.2 Labview程序
功能分析:本计算器应当具备一定的输入排查功能,否决错误输入并要求重新输入;应当具备多输入(质量、弹簧刚度、解除保险距离、自由行程)多输出(解除保险时间、解除保险过程中各周期时间、各周期位移-速度曲线)功能;应当具备错误报警和正常运行提示功能。
那么程序应有以下3个逻辑模块:
1)输入模块:向程序输入计算所需信息,对数据进行甄别,出现错误后(例如输入质量为负等)指示灯报警并要求重新输入。
2)Labview调用的 Matlab script:Matlab-script是系统的计算功能部分。当读取输入参数信息后,通过调用Matlab服务进行计算。
3)输出部分:将输出的矩阵形式处理为图像和矩阵,得弹簧质量系统在可靠解除保险过程中各周期的v-s图像和解除保险时间并指示正常运行。
系统总体框图如图2所示。
图2 虚拟仪器总体框图Fig.2 The composition diagram of the VI
运行程序时,要求用户输入计算所需参数,当输入错误时,要求重新输入;当输入不再出错,传输数据给Matlab-script,求解得到解除保险时间、解除保险前所有运动周期的位移-速度图像。
2.3 Matlab程序
本文采用以位移为变量的有限元思想进行Matlab编程实现。关键参数自由行程的等分数由Labview输入参数(分析精度)控制,等分为10/d(分析精度倒数的10倍)份。核心运算如图3所示。
图3 Matlab程序思想Fig.3 The diagram of Matlab program
Matlab程序中,读取的加速度数据经过预处理。
2.4 误差分析
算法误差来源:
1)加速度曲线经过插值处理,不同阶数的插值对计算有影响。
2)对加速度增加阶段进行求解时,认为在子区间内加速度a不变化(实际情况加速度a连续地不断增大),区间初速度vi和末速度vi+1的均值小于实际等效速度vm,导致存在正的时间误差。
3)对加速度减小阶段进行求解时,认为在子区间内加速度a不变化(实际情况是加速度a连续地减小),区间初速度vi和末速度vi+1的均值大于实际等效速度vm,导致存在负的时间误差。
4)速度减到0的时刻在子区间内部,实际行程小于子区间长度d,导致存在正的时间误差。为了避免本误差的扩大,需采取措施。
5)第2)、3)、4)项误差之和为计算值与实际值的总误差。经过比对,总误差不大于5%。
3 验证
在一台Labview和Matlab都已经正确安装的计算机上运行该程序。
对实际弹体加速度数据进行模拟处理,数据如图4所示。
图4 模拟弹体发射加速度ig.4 Analog data of the acceleration of the projectile body
点击开始按钮后,输入参数:质量块m=0.004 kg、弹簧刚度k=25、分析精度d=0.01、解除保险距离l=0.001 1m,质量块自由行程L=0.013m,运行过程如图5所示,运行结果如图6、图7所示。
图5中,报警未指示,运行指示正常,3个数据窗口都没有显示,表明正在计算中且输入数据正常。
图6是计算结果截图,图中报警和运行指示均显示正常,表明计算执行正常,结果可信。左下数组第一行数据为单周期减速过程行程,第二行为整个周期运动对应的时间;其上方窗口数据为解除保险时间:0.009 891 94s,数值上它小于所有周期时间之和(0.103s)符合实际情况;右侧图像为解除保险前一周期运行的图像。
图5 程序运行过程Fig.5 Running of hybrid program
图6 计算结果Fig.6 The result
图7 解除保险过程中所有周期运动图像Fig.7 All periods of movement
图7中显示的图像表明质量块在运行11个周期后达到解除保险条件。最后周期中,加速过程中运动到达解除保险位置以后将不再回到解除保险上限,因此时间需要校正。
经计算得到解除保险时间为9.892ms,在经验值范围内,符合设计需求,仿真计算合理。
4 结论
本文提出了基于虚拟仪器软件Labview和Matlab混合编程的弹簧后坐保险系统变加速度条件下解除保险时间计算方法。本方法由Labview提供输入和输出环境,Matlab实现数值计算功能进行混合编程,在对简化弹簧质量后坐系统数学模型和碰撞模型基础上进行分析计算,得到所需结果。运行该程序表明该计算器能够快速、方便地计算在质量块运动周期内发生一次碰撞的情况下,弹簧后坐保险的解除时间。此计算器的参数化设计,实现了其一定的通用性,增强了计算器的灵活性。虽然该计算器能够输出解除保险前质量块运动图像、各周期运动距离和时间、解除保险时间,但没有实现在任意加速度下的求解,因此以后研究方向是任意加速度下运动模型的求解和增加计算器的适用性,进一步增强其通用性。
[1]郝兵,李帅.弹簧质量系统动态响应的特征线解法[J].佳木斯大学学报,2003,21(1):19-20.HAO Bing,LI Shuai.The calculation of the characteristics of dynamic response of spring mass system[J].Journal of Jiamusi University(Natural Science Edition),2003,21(1):19-20..
[2]鲍务均,杨汾爱.基于ansys与Matlab的弹簧质量系统动力学响应计算[J].起重运输机械,2003(4):21-22.BAO Wujun,YANG fenai.Dynamic calculation of spring mass system based on ansys and matlab[J].Hoisting and Conveying Machinery,2003(4):21-22.
[3]匡伟春,张柏清,张传.基于Simulink的多自由度机械振动系统仿真[J].煤矿机械,2007,28(12):54-55.KUANG Weichun,ZHANG Baiqing,ZHANG Chuancai.Simulation of mechanical vibration multi-dof system based on simulink[J].Coal Mine Machinery,2007,28(12):54-55.
[4]李红英,杜军,杨金刚,等.基于虚拟仪器的装定器检测方法[J].探测与控制学报,2011,32(4):19-20.LI Hongying,DU Jun,YANG Jingang,et al.Fuze Setter Examination Based on Virtual Instrument[J].Journal of Detection & Control,2011,32(4):19-20.
[5]聂春燕,张猛,张万里.Matlab和Labview仿真技术及应用实例[M].北京:清华大学出版社,2008.