摘要: 利用美国NI公司的虚拟仪器软件LabVIEW设计混沌信号发生器。本文结合三阶非线性Lorenz方程理论用LabVIEW强大的数学分析功能编写混沌信号生成程序,进而由LabVIEW驱动数据采集卡输出混沌信号。与传统的自治混沌系统相比,此发生器具有参数调节方便、易实现、可靠度高等优点。
关键词: 虚拟仪器LabVIEWLorenz方程混沌
1引言
软件LabVIEW(Laboratory Virtual Instrument Engineering Workbench,实验室虚拟仪器工程平台)是美国NI公司(National Instruments Company)研制的一种编程语言,由于LabVIEW采用基于流程图的图形化编程语言,因此也被称为G语言(Graphics Language)。与其他编程语言相同,G语言既定义了数据类型、结构类型、语法规则等编程语言基本要素,也提供了包括断点设置,单步调试和数据探针在内的程序调试工具,在功能完整性和应用灵活性上不逊于任何高级语言。LabVIEW最大的优势表现在两个方面:一是编程简单,易于理解;另一方面LabVIEW针对数据采集、仪器控制、信号分析和数据处理等任务,设计提供了丰富完善的功能图标,用户只需直接调用,就可免去自己编写程序的繁琐,而且LabVIEW作为开放的工业标准,提供了各种接口总线和常用仪器的驱动程序,是一个通用的软件开发平台。
G语言编写的程序称为虚拟仪器VI(Virtual Instruments),它的界面和功能与真实仪器十分相像,在LabVIEW环境下开发的应用程序都被冠以VI后缀,以表示虚拟仪器的含义。一个VI由三部分组成:程序前面板(Front Panel)、数据流框图程序(Diagram program)和图标/连接端口(Icon/Terminal)。前面板相当于真实物理仪器的操作面板,在前面板中用户可以使用各种图标,如旋钮、按钮、开关、实时趋势图和记录图等,就像真实仪器面板一样。在后台则利用图形化编程语言编制框图程序,每一个前面板都有一个框图程序与之对应。框图程序由节点(Node)和数据连线(Wire)组成,节点是VI程序的执行元素,数据连线则表示程序执行过程中的数据流。节点之间由数据连线按照一定的逻辑关系相互连接,并通过数据连线进行数据传递。节点和前面板对象之间是通过数据端口传递数据的。LabVIEW的VI是层次化和模块化的,可以作为其他程序的子程序,被其他程序调用。
随着现代测试与仪器技术的发展,目前虚拟仪器概念已经发展成为一种创新的仪器设计思想,成为设计复杂测试仪器和测试系统的主要方法和手段。本文利用LabVIEW设计一种基于Lorenz方程的虚拟混沌信号发生器。由于此仪器参数调节方便、易实现、可靠性高,与传统的自治混沌系统相比,此仪器输出的混沌信号更适合于作为通信系统的信息载体,提高通信系统的安全性。
2Lorenz方程混沌系统概述
混沌是非线性动力系统所特有的一种运动形式,它广泛地存在于自然界。一般而言,混沌现象隶属于确定性系统而难以预测,隐含于复杂系统但又不可分解以及呈现多种混沌无序却又颇有规则的图像。
从数学上讲,对于确定的初始值,由动力系统就可以推知该系统长期行为甚至追溯其过去形态。但在20世纪60年代,美国气象学家Lorenz在研究大气时发现,当选取一定参数的时候,一个由确定的三阶常微分方程组描述的大气对流模型,变得不可预测了。如果模拟大气动力学特性的微分方程的解确定是混沌的,那么就不可能进行长时期的天气预报。因为一个任意小的扰动,如蝴蝶翅膀的振动都有可能在将来某个时候改变地球另一边的天气。这就是著名的蝴蝶效应。Lorenz在耗散系统中首先发现了混沌运动,这为以后的混沌研究开辟了道路。
Lorenz混沌系统方程如下:
dx1dt=c1*(x2-x1)
dx2dt=c2*x1-x2-x1*x3
dx3dt=x1*x2-c3*x3
当c1=10,c2=28,c3=8/3,x1(0)=1,x2(0)=1,x3(0)=1时Lorenz系统具有典型的混沌性态。
本文通过图形化设计语言LabVIEW 6i来设计Lorenz虚拟混沌信号发生器。
3 Lorenz方程虚拟混沌信号发生器的设计
31 虚拟混沌信号发生器功能描述
(1) 可产生Lorenz方程的混沌信号,用来作为通信系统的信息载体,提高通信安全性;
(2) 可显示Lorenz方程状态变量X、Y和Z的混沌时序图以及XY、XZ和YZ的相平面图。
32 设计原理
本信号发生器采用美国NI公司开发的图形化设计语言LabVIEW 6i进行设计,借助LabVIEW强大的数值计算功能,求解三阶Lorenz微分方程,然后利用LabVIEW驱动数据采集卡输出混沌信号。
33 LabVIEW的虚拟混沌信号发生器的具体编程
新建LabVIEW窗口,在前面板内进行前面板设计,在后面板内进行流程图设计。
331前面板设计
(1) 六个图形控件
其中三个图形控件分别用来显示状态变量X、Y和Z的混沌时序图,另三个图形控件用来显示状态变量X、Y和Z相互的相平面图。
操作Controls》Graph》Waveform Graph三次,调入三个图形控Graph,分别标记为“变量X时序图”、“变量Y时序图”、“变量Z时序图”;操作Controls》Graph》XY Graph三次,调入三个图形控件,分别标记为“XY相平面图”、“XZ相平面图”和“YZ相平面图”
图1Lorenz方程虚拟混沌发生器面板图
(2) 九个数字型控件
它们分别是:用来输入Lorenz方程的初值x0、y0、z0。
操作Controls》Numeric》Dial三次,得到三个输入型数字控件,标记为“x0”、“y0”“z0”;用来输入Lorenz方程的参数a、b、c和dt及画图参数等。
操作Controls》Numeric》Numeric Control六次,得到六个输入型数字控件,分别标记为“a”、“b”、“c”、“dt”、“Number of Points”、“Points per Draw”。
(3) 一个布尔开关
它用来控制程序运行,操作Controls》Boolean》stop Button,设置开关按钮“STOP”。
设计完后的仪器前面板如图1所示。
332流程图设计
在流程图窗口内,执行Function》Structures》While Loop操作,建立一个循环。
在While Loop左、右边框上,分别单击右键,操作Add Shift Register各六次。
在While Loop边框外,执行Function》Array》Array constant操作,值设为0。
在这个While循环内,执行Function》Structures》Formula Node操作,在公式框内写入三阶Lorenz微分方程。
在Formula Node的左边框上,单击右键,操作Add Input七次,分别输入“x”、“y”、“z”、“a”、“b”、“c”、“dt”
在Formula Node的右边框上,单击右键,操作Add Output三次,分别输入“dx”、“dy”、“dz”。
执行Function》Array》Build Array操作三次。
执行Function》Array》replace Array Subset操作三次。
执行Function》Array》Array To Cluster操作三次。
执行Function》Numeric》Conversion》To Long Interger操作二次,分别输入“Number of Points”、“Points per Draw”。
执行Function》Numeric》Quotient&Remainder操作。
执行Function》Time&Dialog》Wait(ms)操作,输入10。
执行Function》Bollean》True constant操作。
虚拟混沌信号发生器后面板流程图按照图2进行连线即可。
图2Lorenz方程虚拟混沌发生器流程
333混沌信号的输出
安装NI公司的PCI6014数据采集卡并设置参数,操作Function》Data Acquisition》Anolog Output》AO update Channel.vi一次,形成一个图标,图标的仪器号设为1,通道号设置为0。将图标的输入与状态变量X相连,这样就可由数据采集卡输出状态变量X的混沌信号。
34 LabVIEW的调试
调试在一个工程中十分重要,在LabVIEW中调试是十分方便的。在LabVIEW的运行环境中,有一种特有的调试手段,它可以实时显示数据流,它可使用户更加清楚地观察程序运行的每一个细节,为查找错误,修改和优化程序提供了有效的手段和依据。下面简要介绍一下LabVIEW程序的调试技术。
341找出语法错误
如果一个VI程序存在语法错误,则在面板工具条上的运行按钮将会变成一个折断的箭头,表示程序不能被执行。点击箭头,LabVIEW将弹出错误清单窗口,点击其中任何一个错误,选用Find功能,则出错的对象就会变成高亮。
342执行程序高亮
在LabVIEW的工具条上有一个画着灯泡的按钮,这个按钮叫“高亮执行”按钮。点击这个按钮使该按钮图标变成高亮形式,再点击运行按钮,VI程序就以较慢的速度运行,没有被执行的代码用灰色显示,执行后的代码用高亮显示。
343断点与单步执行
为了查找程序中的逻辑错误,我们可使框图程序逐个节点地执行。使用断点工具可以在程序的某一地点中止程序执行,用探针或单步方式查看数据。
344数据探针
我们可以用探针工具来查看当框图程序流经某一根连接线时的数据值。从Tools工具模板选择探针工具,再用鼠标左击你希望放置探针的连接线,这时显示器上会出现一个探针显示窗口。
35 LabVIEW的运行
在Lorenz方程虚拟混沌发生器前面板中键入x0=1.00,y0=1.00,z0=1.00,a=10.00,b=28.00,c=2.67,dt=0.01,运行LabVIEW,即可生成如图1所示的Lorenz方程的三个状态变量的时序图及相平面图。从图中可看出,此时系统处于混沌状态。
4结束语
本文应用美国NI公司的LabVIEW虚拟仪器技术结合混沌理论制造了虚拟混沌信号发生器,LabVIEW友好的可视化图形界面,使用户在操作时感觉同操作真实的仪器设备一样。利用此仪器可很方便地演示Lorenz系统进入混沌状态的过程,并且可由数据采集卡采集混沌信号输出,把本程序流程图稍加修改,就可产生更高阶、更复杂的混沌信号。由于此仪器参数调节方便,易实现、可靠性高,与传统的自治混沌系统相比,此仪器输出的混沌信号更适合于作为通信系统的信息载体,提高通信系统的安全性。
参考文献:
[1] Robert H Bishop[美] LabVIEW Student Edition 6i . 2001
[2] LabVIEW Function Manual. USA National Instruments Corporation. 2002
[3] 刘君华. 基于LabVIEW的虚拟仪器设计. 北京, 电子工业出版社,2003[4] 关新平,范正平,陈彩莲,华长春. 混沌控制及其在保密通信中的应用. 北京,国防工业出版社,2002
[5] 王光瑞,于熙龄,陈式刚. 混沌的控制、同步与利用. 北京,国防工业出版社,2002




