- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
在LabVIEW下建立弹球模型
对物理对象进行建模仿真是目前来说非常流行的一种科学研究方法,一般来说,对于这种应用,可以用 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 拥有非常强大的数据采集功能,界面功能等优势,因此将这些与建模整合起来的话,就可以很方便地进行快速原型设计和硬件在环测试等高级应用。