微波EDA网,见证研发工程师的成长!
首页 > 测试测量 > 测试测量技术文库 > 在LabVIEW下建立弹球模型

在LabVIEW下建立弹球模型

时间:09-07 来源:互联网 点击:

对物理对象进行建模仿真是目前来说非常流行的一种科学研究方法,一般来说,对于这种应用,可以用C语言或者Matlab来实现。作为一种编程语言,LabVIEW其实也能非常方便地实现模型的建立,特别是8.2的Simulation Module更是使得仿真建模更加方便直观,本文就将以实现一个弹球模型(Bouncing Ball)为例,跟大家介绍一下利用LabVIEW来建模的三种方式。


1. Simulation Module

Simulation Module这个模块对于LabVIEW来讲还算比较新,但是相信在以后的版本中会有更强大的功能,并且会更加完善和易用。利用这个模块对弹性球建模的程序如下图:



可以看到,整个模型一共有三个可调参数:弹性系数(即表示在与地面撞击时小球速度变为原速度的比值),初始速度以及初始高度。在Simulation Loop中,首先对重力加速度g进行积分,得到速度值,再积分得到位置值。其中还判断了位置是否过了0点(即是否与地面发生了撞击),当过了0点时,则将速度乘上弹性系数,位置重置于0。


2. G Code

不用Simulation Module,单单用LabVIEW的G code,也能对这个简单的物理模型进行仿真。下图是用LabVIEW编写的程序:



从图中可以看到,我们用了For循环使得仿真的循环次数为200,每次的dt为0.1,根据dt以及物理动力学公式,可以得到当前的速度以及位置等信息,再与上例一样进行过0检测,并进行相应的操作。可以看到,用LabVIEW编写程序稍微烦琐一点,主要是数学运算太多,使得整个Diagram过于占用面积。


3. Mathscript

Mathscript也是LabVIEW 8.2的一个新特性,目前来说,对于LabVIEW主张的是文本与图形混合编程的方式,这样可以兼顾两种编程方式的优势,使得开发效率达到最高。下图是用Mathcript编写的仿真代码:


整个Mathcript的代码是类m代码,即只要你在Matlab下能够顺利运行这些代码,那么90%你就能直接贴到这个节点里运行。如果仔细研究下程序的话,可以看到它的运算方式与用G Code类似,但是由于用到了文本编程方式,使得代码更有效率,这也是为什么用混合编程的最大原因。

下面是用了这三种仿真方式的结果比较图:



可以看到,用Simulation Module的算法由于用到了专业的Rounge-Kutta计算方法(即Solver),因此在实际的仿真结果上可以确认为可信,那么其他两种方法在减小dt的条件下也能使得其仿真效果接近Simulation Module。

总结一下,用LabVIEW建模是目前来说比较新的方法,但是由于LabVIEW拥有非常强大的数据采集功能,界面功能等优势,因此将这些与建模整合起来的话,就可以很方便地进行快速原型设计和硬件在环测试等高级应用。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top