LabVIEW 8.20 程序设计 从入门到精通 陈锡辉 张银鸿 编著 附光盘 本书实例代码 PDG 清华大学出版社
陈锡辉中国科学院高能物理 研究所博士。目前从事北京正 负电子对撞机二期改造工程中 慢控制系统的总体框架与软件 设计工作。对数据采集与仪器 控制相关的软件编程工作特别 偏爱。有四年LabVIEW实际开 发经验,编程功底深厚,成功 开发过多个基于LabVIEW的大 中型项目。 PDG
OREWORD 前 LabVIEW是一种业界领先的工业标准图形化编程工具,主要用于开发 司 测试、测量与控制系统。它是专门为工程师和科学家而设计的直观图形化 编程语言。它将软件和各种不同的测量仪器硬件及计算机集成在一起,建 立虚拟仪器系统,以形成用户自定义的解决方案。经过20年的演变和改进 在基于PC的测量自动化领域,LabVIEW确立了其主导地位,并成为业界 的事实标准,同时也给传统的教学研究带来了巨大的变化。一个基于计算 机的自动化实验室能大大提高研究人员的工作效率并改进学生的学习方 式。利用NT的虚拟仪器技术,让以往复杂的数据采集工作变得异常简单 老师和同学都可以集中时间和精力用于实验的执行、数据的分析及结论的 总结上,而不用将大量的时间花费在实验系统设备的搭建中。在国外,虚 拟仪器技术已经是很多大学院校独立开设的一门课程 相信在未来几年内 虚拟仪器技术也必将广泛流行于全国各大学校园理工科院系。 2006年是LabVIEW图形化软件开发平台正式推出20周年,为了庆祝 和纪念这一具有历史意义的时间,N将最新发布的LabVIEW20周年纪念 版命名为8.20版本。相对于LabVIEW7.x,LabVIEW8.0与LabVIEW8.20 的更新力度超过了以前任何一个版本。NI在LabVIEW8上的研发投入超过 了LabVIEW7的两倍。 本书特色 本书针对LabVIEW8.20专业开发版,以由简到难、逐步深入的原则对 LabVIEW编程进行了全面详细的介绍,尤其是对LabVIEW编程人员经常 讨论的热点问题进行了重点介绍,例如如何通过LabVIEW开发大型项目、 如何优化LabVIEW程序人机界面与性能、如何通过LabVIEW调用DLL或 ActiveX、如何通过LabVIEW实现网络编程以及与数据库连接等。此外, 本书几乎所有的知识点都配合了恰当的实例,所有这些实例都在本书附带 的光盘中,读者可以在“附录A本书技巧实例索引”中快速检索其中主要 的技巧实例。通过这些技巧实例,读者可以快速掌握很多非常实用的编程 技巧,例如图表自动图例、多面板程序设计、基于状态机的温度控制系统、 启动界面设计等。 本书编写过程中,几乎参考了LabVIEW联机帮助的所有内容以及大部 分现有的LabVIEW书籍,搜索了N网站中的大量网络资源,并且总结了 编者多年的LabVIEW编程经验与心得,因此本书几乎包含了所有常用的 LabVIEW编程知识与编程技巧。如果您是对LabVIEW 无所知的新手, 通过本书,您可以从入门开始,并逐步深入地对LabVIEW进行学习,直到 成为真正精通LabVIEW的编程高手。如果您已经使用过LabVIEW多年, 相信本书也会为您提供有益的帮助,并成为您快速定位所需LabVIEW编程 知识的必备参考
620雕序计从入门到情通 由于LabVIEW8.20完全向下兼容,因此即使您使用的是LabVIEW7.x或8.0版本,本书的 绝大部分内容对您仍然适用。 本书结构 本书分为基础篇和高级篇两部分。基础篇介绍了LabVIEW编程所需的基础知识,握了这 些基础知识,您就可以编写从硬件连接、数据采集到数据分析处理、图形显示、存储和查询等功 能丰富的小型自动化测试测量程序了。高级篇介绍了编写【abVIEW大型或高级应用程序所需的 高级知识,通过这些高级知识,您可以编写融合多种高级编程技术的大型分布式应用,并且在各 方面提高您所锦写的LabVIEW程序的质量,例如展性、可可读性和稳定性等。 本书由陈锡辉主编。张银鸿编写了第3章和第4章,其余章节均由陈锡辉编写 本书在编写过程中得到了NI工程师以及广大网友的热心帮助:我的多位学弟作为本书初稿 的体验读者,提出了宝贵的建议:在此对他们表示衷心的感谢!最后,将爱和感谢献给我美丽的 未婚妻范艳丽,她不仅校对了本书部分章节而且提出了很多宝贵意见:最重要的是,她一如既往 的鼓励与关心使得我在半年多的时间里能够耐心尽力地写好本书的每一个细节。 由于编者水平有限,时间仓促,书中不当之处在所难免,敏请读者批评指正,不吝赐教。本 书作者开设了自己的LabVIEW博客讨论区:htp:/labviewstudy..blog.edu.cn,无论您有任何建议或 问题,都可以在这里给作者留言。您也可以发送E-mail至chenxh@ihep,ac.cn,作者将尽心尽力地 为您服务! 陈锡辉 2007年3月于中国科学院高能物理所 PDG
TENTS 目 录 基础篇 第1章揭开LabVIEW的面纱… 1.1 LabVIEW简介 1l.l什么是LabVIEW 1.1.2 LabVIEW的作用 1.13选择LabVIEW的原因 12 LabVIEW的起源与发展历程 1.2.】起源… 122发展历得 1.3 LabVIEW8.0与LabVIEW8,20新增特性列表 LabVIEW8.0新增特性列表 1.3.2 LabVIEW8.20新增特性列表 1.4 LabVIEW学习捷径… 10 第2章牛刀小试 21基于模板创建一个新V… 2.2在V1前面板中添加控件 3 编辑V1程序框图 2.4运行V4 2.5小结 第3章开始LabVIEW之旅 3.】计算机性能要求…… 3.2安装LabVIEw820专业开发: 33 LabVIEW编程环境 3.3.1启动界面 33.2T程管理窗口(Pi时Explorer) 3.3.3前面板(Front Panel)和程序框图(Block Diagram) 3.34 菜单栏和工具栏 3.3.5控件选板(Controls Palette) …27 3.3.6函数选板(Functions Palette 337控件选板和函数选板的使用 338 工其选板(Tools Palette 3.3.9导航窗口(Navigation Window) 29 3.3.10指助 33.1范例查找器 3.3.12定制自己的编程环境
20序设计从入门到精通 3.4编辑前面板… 44…32 5.2.2输入和输出数组 58 3.4.1 控件风格 33 5.2.3移位寄存器(Shift Register) 459 3.4.2输入控件(Controls)和显示控件 5.2.4反馈节点(Feedback Node) 3 53whie循环 6 3.4.3前面板控件的着色和排版 34 53.1初识While循环 60 34.4对象的复制和删除 6 5.3.2添加定时器 61 3.45控件属性 5.33使用移位寄存器和反馈节点 6 3.5编辑程序框图 .37 5.4Case结构 63 35.1程序框图中的控件对象 1 5.4.1等价于if.else语句的Case结构…63 3.52程序框图节点 …37 5.4.2从Case结构中输出数据 64 3.5.3对象连线 5.4.3等价于switch语句的Case结构64 3.54程序根图中的对象捧版 5.5事件结构(Event Structure) 3.6程序注释…… .30 5.5.1事件结构的常用方法 6的 3.7运行和调试V1 39 5.52 Filter事件 68 …68 3.71运行1… 5.6使能结构… +40 37.2调试1 0 56.1框图使能结构 一一注释程序框图一68 5.62条件使能结构 69 5.7公式节点(Formula node) -70 第4章数据操作 5.7.1复杂公式的实现 41数据类型 5.72文本编程语言的实现 72 41.1数字型 44 一模拟温府采维监测系统…75 4.12布尔型 5.8跟着实例学 4.1.3枚举类型 6 第6章字符串 数组、簇和矩阵 76 44时间类型(Time Stamp 6.1字符串(String) +76 4.l.5 ariant数据类型 6.11字符串控件 .76 4.1.6局部变量和全局变开 48 61.2 表格和树形控件 42数据运算 50 613字符电函数 79 421算术运算符 50 62 数组(Aray) 85 422关系运算符 51 6.21数组控件 4.2.3逻辑运算符 62.2数组之间的算术运算 86 42.4表达式节点(Expression Node)52 623数组函数 6.3簇(Cluster) _abVIEW中的结构体 第5章程序结构 变量… …95 顺序结构(Sequence Structure 5 631能的创球 5.l.】LabVIEW程序的执行顺序 55 632 族操作函数 96 6.3.3 error in和cTor0ut簇n99 Sequence Structure 6.4矩阵(Matrix) 5.13在领间传递数据 52For循环 5 第7章图形化显示数据一图表和图形102 52.1初识F0r循环…57 7.I波形数据(Vaveform) 4102
7.1.1波形数据控件 02 9.3文本文件和表单文件 134 7.12波形数据操作函数 -103 931文本文件 :134 7.2趋热图(Chat) 10 9.32表单文件 135 72.1波形趋势图(Waveform Chart) 106 94二讲制文件(Binary Files) 136 7.22定制趋势图显示样式 107 9.5数据记录文件(Datalog Files) -136 723 带时间轴的实时曲线 9.6 XML文件 -136 7.3图表(Granb) 109 9.7配置文件(Configuration Files) 137 73定制图表属性 98 波形文件(Waveform Files) 7.32波形图 9.9基丁文本的测量文件(LVM文件) 139 733Xy曲线图 …114 9.I0数据存储文件(TDM文件) .130 7.3.4亮度图 9.I1高速数据流文件(TDMS文件) …141 Intensity Graph Chart)...116 912小结 …143 7.35数字波形图(Digita Waveform Graph 117 第10章子1 144 7.4三维图形(3 Graph) 10.1创建子T… 144 7.5图形控件(Picture) 121 10.2查看VI层次结构(VI Hierarchy) 145 7.51 Picture控件的基本用法 -122 10.3定义子V1属性 146 7.5.2利用Picture控件绘制各种曲线 -123 103.l可重入(Reentrant)子VI 1032设置子V1遇用属性 …147 第8章Express VⅥ一 快速搭建专业 10.33自定义子V1图标形状 148 测试系统… *125 10.4多态(Polymorphic)I- -148 8.1初识Express技术 ............. 125 8.2动态数据类型 127 第11章属性节点和方法节点…151 8.3 Express VIs简介 -128 Il.I属性节点(Property Node) an151 83.信号输入(Input)Express VIs -128 112 方法节点(Invoke Node) 152 8.3.2信号分析(Signal Analysis) 113通过子V1调用控件的属性和方法…153 Express VIs 128 1.4 几种常用控件的编程举例… -153 8.3.3输出(Output)Express V1s…129 1l.4.1Ring控件和Enum控件 153 8.3.4信号操作(Signal Manipulation) 11.42列表框(Listbox) …154 Express VIs" …129 ll4.3树形控件(Tree Control -155 8.3.5算术与比较(Arithmetic&Comparison 11.4.4自动图例举例 156 Express VIs -130 11.5 小结 158 83.6执行控制Express v刀s 130 84跟着实例学一基于Express VI的声音信号 第12章 人机界面交互设计 -159 采集系统 130 12.1V1属性设置 12.2对话框 161 第9章文件/O… 132 1221普通对话框 9.1选择合适的文件类型 4444…32 12.2.2用户自定义对话框 162 92 文件的基本操作· 3 12.3错误处理… 162
LabVl作W8.20程序设计从入门到精通 12.4菜单 -165 3111公式解析, 103 12.41运行染单 13.1.12 MathScript Run-Time Menu) 166 132数字信号处理 79 12.4.2右键快捷菜单(Run-Time 132.1信号发生 108 Shortcut Menu)" 168 132.2信号调理 125鼠标指针 -169 1323波形测量 -200 12.6播放声音 170 13.24时域分析 12.7自定义控件和白定义数据类型 -170 132.5频域分析 202 12.71自定义控件 1326窗函数 205 Custom Controls 170 132.7 数字滤波器 -208 12.7.2自定义数据类型 13.2.8逐点分析库 210 (Tyne Definition .172 12.8自定义控件选板和函数选板一172 12.9设计形象生动的用户界面 第14章数据采集与仪器控制: .214 12.9.1修饰静态界面… .174 14.1数据采集(DAQ) 214 12.02动态交互界面 .175 14.1.】数据采集系统的构成 214 2.10关于V1程序设计的些规则 14.1.2 NI-DAOmx -218 12.10.1关于前面板的设计 176 142仪器控制简介 22y 12.10.2关于程序框图的设计 .178 14.3选择合话的总线 …222 1431独立总线 .223 14.32模块化总线 第13章数学分析与信号处理 180 14.4仪器驱动程序 13.1数学分析 180 1441 可编程仪器标准命令SCP列 22 13.11图形化编程与数学分析 14.4.2VjSA 229 13.1.2 基本数学函数 -l8 144.31V 一可互换的嘘拟仪器 1313线性代数 182 驱动程序· 231 13.14曲线拟合 235 1315 插值 145.仪器0助手(Instrument 1 13.1.6数值积分与数值微分 187 236 131.7将率上与统计… .188 13.18最优化 189 14.5.2 Port l/O 238 13.1.9常微分方程 -19 14.5.3N1Spy—一调试聚动的好帮手…239 13.1.10空间解析几何… 192 14.6与第三方硬件连接 239 高级篇 第15章管理与开发LabVIEW 15.1.4程序编码 250 大型项目 15,1.5软件测试 251 15.1LabV1Ew与软件程 15.1.6文档 …251 15.11生命周期模型 …243 15.2 LabVIEW项日管理器 15.12需求分析 -247 -Project Explorer 252 15.1.3软件设计…248 15.2.I创建LabVIEW Project- …252
152.2项目库(Project Library)…253 183.3使用ActiveX容器 30 153源代码理T具一SCC 18.3.4使用ActiveX事件 +301 (Source Code Control) …255 183.5通过外部程控制LabVIEW…302 15.3.1日置SCC 255 18.3.6小结 15.32使用SCC 18.4 LabVIEW与MATLAB混和编程 .304 154总结… 258 18.41 MATLAB Script节点 -305 ② 18.42利用ActiveX与MATLAB 第16章LabVIEW中的面向对象编程…259 连接 -306 16.1面向对象的基本概念 259 16.2在LabVIEW中实现面向对象编程 …261 第19章访问数据库 …308 16,2.1创建类和对象… 26 19.1 ODBC. .308 16.2.2继承 263 191.1什么是ODBC …308 16.2.3静态方法(Statie Methods)和动态 19.12建立数据源… 309 方法(Dynamie Methods) …264 19.2AD0简介 310 16.2.4 LabVIEW面向对象编程的 …312 些特点 19.3 LabSQL 6 19.3.1 LabSQL的安装 …312 16.3跟若实例学 一电路板检测 …269 19.3.2 LabSOL VIs …312 19.33 LabSQL应用举例 313 第17章动态程序控制技术 …273 19.4小结 35 17.1V1服务器… 273 17.2 Application引用 275 17.3动态V1控制… 第20章LabVIEW网络编程 -316 …27万 20.1选择合话的倒络通信方式 …316 17.31编程控制V1属性 277 27 20.2共享变量 317 173.2动态战入V1 20.2.1共享变量简介 …317 17.3.3老面板程序设计 …280 17.3.4利用Subpanel实现动态 20.2.2 创建与使用共享变量 317 2023其享变量引鉴…320 载入界面 20,24 通过编程访问共享变量 …321 .322 第18章LabVIEW外部程序接口 …284 181 DLL与API用 284 20.3.1 DataSocket简介 322 181.动态链接库(DLL)与API 20.3.2 DataSocket Server m323 简介… …284 20.3.3利用DataSocket函数访问OPC 18.12调用DLL 286 HTTP、FTP和文件 326 20.4TCp与UDP通信 .327 18.13配置参数类型… 287 181.4阔用Windows APl .290 20.4.1TCP与UDP简分 327 ,329 182CN节点- 29 20.4.2TCP通信 18.3 ActiveX. .296 20.4.3UDP通信 333 18.3.1 ActiveX简介 296 20.5运程V面板连接 336 18.3.2使用ActiveX自动化…297 20.5M配置LabVIEW Web服务器 336
W2理序量计从入门到 20.5.2通过LabVIEW Run-Time引肇连接 22.1.3启动界面与后台程序… 361 远程V1面板 338 22.2LabV1Ew与多线程 36 20.53通过树页连接远程1面板 -339 222.1多任务、多线程与影处理器…365 222.2多线程的优缺占 365 第21章定时结构与同步技术 …34 2.23 在LabVIEW中实现多线程 369 m 21.】定时结构(Timed Structure)…341 22.2.4LabV1EW的执行系统m …367 21.11定时循环(Timed Loop -34 22.2.5任务优先级 369 21.12定时顺序结构 22.3优化V1性能 Timed Sequence 344 22.3.1 V1性能和内存监测工具… +371 21.l3含的定时循环(Timed Loop 2232内存管理… -372 with Frames)ta……344 22.33用户界面 375 21.2同s步技术(Synchronization) 344 22.34 子V1调用 375 212.1通知(Notification)技术… 2235读写设备或文件 …345 …376 21.2.2队列(Oueue)技术 …349 212.3信号量(Semaphore)技术 -352 第23章发布应用程序 377 23.1生成独立可执行应用程序(EXE)…378 212.4集合点(Rendezvous)技术…354 232生成安结得序(1 nstaller) 212.5事件发生(Occurrence)技术- 356 生成动态链接库(DLL) …383 21.3用户事件(User Event) …357 附录A本书技巧实例索引 385 第22章LabVIEW程序优化设计 …359 22.1 LabVIEW程序设计模式 …359 附录B LabVEW8.20快捷键一览 …391 2.11状态机 22.1.2主/从结构… -362 参考文献 394