LabVIEW寶典

LabVIEW寶典

《LabVIEW寶典》是2011年3月電子工業出版社出版的圖書,作者是陳樹學、劉萱。本書可作為高等院校通信、測量技術、自動控制等相關課程的教材和教學參考書,也可作為相關工程技術人員設計開發儀器或自動測試系統的技術手冊。

基本介紹

  • 書名:LabVIEW寶典
  • 作者:陳樹學、劉萱 
  • ISBN:9787121129612
  • 頁數:624
  • 定價:79.00元
  • 出版社:電子工業出版社
  • 出版時間:2011年3月
  • 開本:16開
內容簡介,目錄,前言,

內容簡介

本書詳盡講解了LabVIEW常用的編程方法、編程技巧和工程套用技術。全書共分為3篇,其中:入門篇歸納總結了LabVIEW編程人員必須掌握的基礎知識,包括LabVIEW的基本概念、基本函式的用法和常用的運行結構,以及LabVIEW的基本數據結構和檔案存儲方式;高級篇細緻地講解了引用、屬性、方法以及各類高級控制項的運用,LabVIEW的文本方式編程以及DLL、C語言接口,基於Matlab語法的MathScript編程技術,LabVIEW基於組件的高級編程方法和編程模式;工程套用篇介紹了串口、並口和網路通信的常用方法,數據採集的基本原理和方法,LabVIEW實時系統的構建和編程,以及各種常用專業工具包的使用方法,包括資料庫連線工具包、數據監控與記錄工具包、報表生成工具包、狀態圖工具包等等。

目錄

第1部分 入門篇 1
第1章 打開LabVIEW編程之門 2
1.1 從VI開始 2
1.1.1 創建VI 3
1.1.2 控制項屬性設定與快捷選單 5
1.1.3 創建控制項、常量、局部變數、引用、屬性節點和方法節點 8
1.1.4 創建自定義控制項 10
1.2 編輯前面板和程式框圖 11
1.2.1 選擇、移動和刪除對象 12
1.2.2 使用布局工具 13
1.3 VI及其屬性對話框 17
1.3.1 VI的層次結構 17
1.3.2 調用子VI 19
1.3.3 VI的屬性設定 19
1.4 基本控制項及其使用方法 23
1.4.1 基本數值控制項 23
1.4.2 基本布爾控制項 29
1.4.3 控制項的通用編輯方法 32
1.4.4 字元串和路徑控制項 34
1.4.5 下拉列表與枚舉控制項 38
1.4.6 數組控制項及其屬性設定 38
1.4.7 簇控制項 39
1.4.8 時間標識控制項與波形數據控制項 41
1.5 小結 43
第2章 LabVIEW基本函式 44
2.1 必須了解的一些基本算術運算函式 44
2.1.1 基本運算函式 44
2.1.2 標量之間的基本運算 45
2.1.3 標量與數組的運算 45
2.1.4 數組與數組的運算 45
2.1.5 數組的函式 46
2.1.6 標量與簇的基本運算 55
2.1.7 簇與簇的運算 56
2.1.8 簇的函式 56
2.2 必須了解的位運算函式和邏輯運算函式 59
2.2.1 常用邏輯運算函式 59
2.2.2 位運算 59
2.2.3 深入理解複合運算函式 60
2.3 必須了解的關係運算函式和比較函式 61
2.3.1 比較模式 61
2.3.2 通用關係運算函式 62
2.3.3 “比較0”關係運算函式 63
2.3.4 複雜關係運算函式 63
2.3.5 字元關係運算函式 66
2.3.6 表達式節點與公式快速VI 67
2.4 小結 68
第3章 LabVIEW的程式運行結構 69
3.1 兩種不同的循環結構 69
3.1.1 For循環的組成和特點 69
3.1.2 For循環與數組 71
3.1.3 For循環與移位暫存器 73
3.1.4 For循環中的continue和break 74
3.1.5 While循環,不僅僅是循環 74
3.1.6 While循環與定時 76
3.1.7 反饋節點 81
3.2 定時結構 81
3.2.1 定時循環的基本組成要素和配置對話框 82
3.2.2 定時順序結構 85
3.3 獨特的條件結構 85
3.3.1 條件結構的基本結構 85
3.3.2 布爾型輸入 86
3.3.3 錯誤簇輸入 86
3.3.4 數值型輸入 87
3.3.5 枚舉型輸入 88
3.3.6 下拉列表輸入 88
3.3.7 字元串和組合框輸入 88
3.3.8 輸入、輸出隧道 89
3.3.9 多重If-Else的處理方法 89
3.4 不和諧的順序結構 90
3.4.1 多執行緒運行次序 90
3.4.2 兩種不同的順序結構 91
3.4.3 隧道與順序局部變數 92
3.4.4 順序結構的替代 93
3.4.5 順序結構的典型套用 93
3.5 程式框圖禁用結構 94
3.6 局部變數、內置全局變數和功能(LV2型)全局變數 94
3.6.1 局部變數 94
3.6.2 內置全局變數 96
3.6.3 功能(LV2型)全局變數 98
3.7 事件結構 99
3.7.1 事件結構的基本構成和創建方法 100
3.7.2 事件的分類及其特點 101
3.7.3 事件結構之間的數據傳送與共享 103
3.7.4 事件發生的次序、過濾和轉發 104
3.7.5 正確地使用事件結構 105
3.8 小結 106
第4章 LabVIEW的數據結構及記憶體最佳化 107
4.1 常用數據類型轉換函式 107
4.1.1 “強制類型轉換”函式 107
4.1.2 “平化至字元串”與“字元串還原”函式 108
4.1.3 變體數據 109
4.2 整數的類型轉換及記憶體映射 109
4.2.1 布爾型數據與字元串和數值的相互轉換 109
4.2.2 U8類型數據與字元串之間的相互轉換 110
4.2.3 整數與整數類型的相互轉換 110
4.3 其他標量數據類型的類型轉換及記憶體映射 111
4.3.1 定點數和浮點數的類型轉換與記憶體映射 111
4.3.2 複數的類型轉換及記憶體映射 114
4.3.3 時間標識的類型轉換與記憶體映射 114
4.4 複合數據類型 115
4.4.1 標量數組的記憶體映射 115
4.4.2 字元串、路徑和字元串數組的記憶體映射 116
4.4.3 LabVIEW使用的編碼 117
4.5 簇的記憶體映射 118
4.5.1 標量組成的簇 118
4.5.2 包含數組和字元串的簇 118
4.6 類型描述符 119
4.6.1 類型描述符的基本構成要素 119
4.6.2 常用類型描述符列表 120
4.6.3 常見數據類型的類型描述符結構 120
4.7 OpenG中有關類型描述符的函式 121
4.7.1 類型描述符函式 122
4.7.2 利用類型描述符處理枚舉型數據 123
4.7.3 利用類型描述符處理簇 123
4.8 幾種常用的記憶體分析工具和方法 124
4.8.1 記憶體的重要性 124
4.8.2 記憶體和性能查看工具 125
4.8.3 VI使用的記憶體 126
4.8.4 最佳化記憶體的一般注意事項 127
4.8.5 數組與記憶體最佳化 129
4.8.6 在循環中避免不必要的計算、讀/寫控制項或者變數 131
4.9 影響VI運行速度的因素 132
4.9.1 硬體輸入/輸出 133
4.9.2 螢幕顯示 133
4.10 小結 133
第5章 字元串與檔案存儲 134
5.1 字元串 134
5.1.1 幾種常用的字元串常量 134
5.1.2 幾種常用的字元串函式 135
5.1.3 “匹配模式”和“匹配正則表達式”函式 136
5.1.4 字元串與數值的相互轉換 139
5.1.5 功能強大的“格式化字元串”和“掃描字元串”函式 140
5.1.6 數組與電子表格字元串 143
5.1.7 附加字元串函式 143
5.2 檔案存儲 144
5.2.1 文本檔案與二進制檔案的區別 144
5.2.2 檔案常量和通用目錄、檔案函式 145
5.2.3 構造路徑的方法 146
5.2.4 文本檔案的讀寫 148
5.2.5 數據記錄檔案的讀寫 153
5.2.6 讀/寫二進制檔案 154
5.2.7 INI檔案的讀寫 156
5.2.8 註冊表的讀寫 158
5.2.9 TDM檔案 159
5.2.10 TDMS檔案 162
5.3 小結 165
第2部分 高級篇 167
第6章 LabVIEW對象的解析 168
6.1 LabVIEW控制項對象的層次繼承結構 168
6.1.1 布爾控制項的層次繼承結構 168
6.1.2 通用類的屬性 169
6.1.3 圖形對象類 171
6.2 圖形對象類的子類 172
6.2.1 前面板類 172
6.2.2 窗格類和分隔欄類 173
6.2.3 LabVIEW的坐標映射 175
6.2.4 修飾類 177
6.3 控制項類 178
6.3.1 控制項類的常用屬性 179
6.3.2 控制項類的常用方法 181
6.3.3 數值控制項類 181
6.4 常用控制項的專用屬性 183
6.4.1 布爾控制項的專用屬性 183
6.4.2 枚舉和下拉列表控制項的專用屬性 184
6.4.3 字元串、路徑和組合框控制項的專用屬性 184
6.4.4 數組的屬性和方法 186
6.4.5 簇的屬性及方法 187
6.5 引用句柄 188
6.6 VI的屬性 190
6.6.1 獲取VI的引用 190
6.6.2 常用VI屬性 190
6.6.3 VI前面板屬性 191
6.7 常用VI方法 194
6.7.1 獲取前面板、程式框圖和VI圖示的圖像 194
6.7.2 前面板的運行位置控制方法 194
6.7.3 列印控制 194
6.7.4 默認值方法 194
6.8 動態調用VI 195
6.8.1 靜態調用和動態調用的比較 195
6.8.2 通過“引用節點調用”函式動態調用VI 196
6.8.3 一般類型VI的動態調用 198
6.8.4 創建閃屏 200
6.8.5 創建後台運行程式 200
6.8.6 創建嚮導程式 201
6.8.7 動態調用VI之間的數據交換 201
6.9 應用程式的屬性和方法 203
6.9.1 獲取應用程式引用句柄 203
6.9.2 常用應用程式的屬性 204
6.10 小結 205
第7章 高級控制項的運用 206
7.1 列表框 206
7.1.1 列表框的創建及顯示風格 206
7.1.2 列表框的常用屬性、方法與事件 206
7.1.3 列表框的套用舉例 207
7.2 多列列表框 210
7.2.1 顯示多列項目並排序 210
7.2.2 多列列表框的特效製作 212
7.3 表格 212
7.3.1 表格的常用屬性和方法 213
7.3.2 表格的套用舉例 214
7.4 樹形控制項 217
7.4.1 樹形控制項的創建與靜態編輯 217
7.4.2 樹形控制項的常用屬性、方法和事件 218
7.4.3 樹形控制項高級套用舉例 219
7.5 波形圖表 220
7.5.1 波形圖表的組成要件 221
7.5.2 波形圖表的輸入類型 223
7.5.3 波形圖表專用屬性 223
7.5.4 波形圖表套用舉例 225
7.6 波形圖 226
7.6.1 波形圖控制項的創建和組成要件 226
7.6.2 波形圖控制項的輸入類型 227
7.6.3 波形圖控制項的專用屬性 228
7.6.4 波形圖控制項的高級套用舉例 230
7.7 XY圖 232
7.7.1 XY圖的輸入數據類型 233
7.7.2 XY圖的高級套用 234
7.8 強度圖表和強度圖 235
7.9 數字數據、數字波形數據與數字波形圖 236
7.9.1 數字數據 236
7.9.2 數字波形數據和數字波形圖 236
7.10 圖片控制項 237
7.10.1 利用圖片控制項顯示圖片 237
7.10.2 常用繪圖操作函式 239
7.10.3 圖片控制項的高級套用 240
7.11 小結 242
第8章 文本式編程與外部程式接口 243
8.1 公式節點 243
8.1.1 公式節點的數據類型、語法與控制結構 243
8.1.2 公式節點的套用舉例 245
8.2 調用庫函式 246
8.2.1 DLL與API函式 246
8.2.2 如何調用DLL函式 248
8.2.3 常用API函式的調用 254
8.2.4 LabVIEW調用DLL的局限性 256
8.3 CIN 259
8.3.1 CIN創建的一般過程 260
8.3.2 CIN的數據類型和常用函式 262
8.3.3 CIN與記憶體管理器 266
8.3.4 CIN的運行過程和數據共享 269
8.4 系統命令 272
8.5 剪下板 274
8.6 DDE庫 275
8.6.1 DDE概述 275
8.6.2 LabVIEW中DDE的常用方法 276
8.7 ActiveX控制項與ActiveX文檔 277
8.7.1 ActiveX的基本概念 277
8.7.2 ActiveX控制項的調用過程 278
8.7.3 ActiveX套用實例 279
8.7.4 ActiveX自動化伺服器 281
8.8 .NET技術 282
8.8.1 .NET控制項 282
8.8.2 .NET服務 283
8.8.3 利用.NET創建托盤程式 285
8.9 小結 287
第9章 MathScript 288
9.1 如何使用MathScript 288
9.1.1 使用MathScript節點 288
9.1.2 使用MathScript互動視窗 289
9.2 MathScript常用命令 290
9.3 MathScript基礎知識 291
9.3.1 創建向量和矩陣的基本方法 291
9.3.2 矩陣的基本運算 292
9.3.3 標準矩陣 293
9.3.4 矩陣元素的插入、替換、刪除和提取 294
9.3.5 矩陣元素的排序和搜尋特徵值 295
9.3.6 常用的矩陣變換函式 296
9.3.7 矩陣中元素的數據類型及其轉換 297
9.3.8 關係運算、邏輯運算和位操作 299
9.3.9 集合函式 299
9.3.10 時間、日期和計時函式 300
9.4 程式控制結構與函式 301
9.4.1 For循環和While循環 301
9.4.2 If條件結構和Switch分支條件結構 303
9.4.3 函式和腳本檔案 304
9.5 數據統計和數據插值擬合 306
9.5.1 常用數據統計函式 306
9.5.2 數據插值 309
9.6 多項式、積分和微分 310
9.6.1 多項式 311
9.6.2 極值與零點 311
9.6.3 積分和微分 312
9.7 數據的圖形顯示 313
9.7.1 視窗類屬性與常用視窗操作函式 313
9.7.2 繪圖區域屬性 316
9.7.3 線對象和文本對象的屬性及常用函式 318
9.7.4 基本繪圖函式 319
9.8 小結 322
第10章 面向對象編程與運行控制技術 323
10.1 數據的封裝與隔離 323
10.1.1 合理地使用數據流 323
10.1.2 LV2型全局變數 324
10.1.3 值變化與上升下降沿 326
10.1.4 定時觸發與計數器 328
10.2 動作機(Action Engine) 329
10.2.1 準備建立動作機 329
10.2.2 建立動作機的步驟 330
10.3 用戶事件與動態註冊事件 331
10.3.1 用戶事件 331
10.3.2 動態註冊事件 334
10.4 堆疊與數據緩衝區 335
10.4.1 堆疊的實現 335
10.4.2 數據緩衝區 336
10.5 同步控制技術 337
10.5.1 佇列 337
10.5.2 通知器 341
10.5.3 信號量與集合點 343
10.6 項目管理器 344
10.6.1 項目管理器的結構 344
10.6.2 虛擬資料夾與項目庫 345
10.7 面向對象編程 346
10.7.1 面向對象編程的基本概念 346
10.7.2 類的封裝特性 347
10.7.3 類的繼承特性 349
10.7.4 類的多態特性 351
10.7.5 類變數 352
10.7.6 動態載入類與引用轉換 353
10.8 小結 355
第11章 人機互動與編程風格 356
11.1 對話框 356
11.1.1 內置對話框 356
11.1.2 用戶輸入和顯示對話框 357
11.1.3 定製對話框 357
11.2 選單 358
11.2.1 創建靜態選單 358
11.2.2 選單相關函式 359
11.2.3 動態創建選單 360
11.2.4 調用多個靜態選單 361
11.2.5 存儲動態建立的選單 361
11.2.6 自動觸發預定義選單項 361
11.3 游標工具 362
11.3.1 “設定為忙碌狀態”VI與“取消設定為忙碌狀態”VI 362
11.3.2 使用游標檔案 362
11.4 選項卡、子面板與分隔欄 362
11.4.1 選項卡控制項 363
11.4.2 分隔欄控制項 364
11.4.3 子面板控制項 365
11.5 XControl 367
11.5.1 Hover按鈕 367
11.5.2 新建XControl 368
11.5.3 修改數據控制項和狀態控制項 368
11.5.4 修改“外觀”VI 368
11.5.5 創建屬性和方法 371
11.5.6 調試XControl 372
11.5.7 自定義屬性對話框與快捷選單 373
11.6 錯誤處理 374
11.6.1 錯誤簇 374
11.6.2 常用錯誤處理函式 374
11.7 LabVIEW的編程風格 376
11.7.1 編程風格的內涵 376
11.7.2 前面板設計應該遵循的原則 377
11.7.3 程式框圖設計應該遵循的原則 378
11.7.4 連線板設計應該遵循的原則 379
11.7.5 圖示設計應該遵循的原則 380
11.7.6 數據結構應該遵循的原則 380
11.7.7 錯誤處理應該遵循的原則 381
11.8 小結 382
第3部分 工程套用篇 383
第12章 LabVIEW設計模式與狀態圖工具 384
12.1 程式的基本單元VI 384
12.1.1 VI的可重入屬性 384
12.1.2 VI模板與代碼重用 385
12.1.3 VI的調試 386
12.1.4 VI的重構 388
12.2 LabVIEW標準設計模式 391
12.2.1 使用事件的頂層應用程式 392
12.2.2 使用事件的對話框 392
12.2.3 標準狀態機設計模式 392
12.2.4 佇列訊息處理器設計模式 393
12.2.5 用戶界面事件處理器設計模式 394
12.2.6 生產者/消費者設計模式(事件) 394
12.2.7 生產者/消費者設計模式(數據) 394
12.2.8 主從設計模式(Master/Slave) 395
12.3 簡單設計模式 396
12.3.1 順序結構簡單設計模式 396
12.3.2 事件結構與定時結構簡單設計模式 396
12.4 古典型狀態機 398
12.4.1 早期界面處理狀態機 398
12.4.2 順序結構的缺陷 398
12.4.3 順序狀態機 399
12.4.4 處理公共狀態 399
12.4.5 事件狀態機 400
12.5 狀態機工具包(State diagram) 400
12.5.1 調用狀態機工具 401
12.5.2 使用狀態圖編輯器 401
12.5.3 添加轉換條件和狀態代碼 401
12.5.4 選擇獨立運行或者子VI方式 402
12.6 訊息佇列狀態機 402
12.6.1 訊息佇列狀態機的基本結構 402
12.6.2 訊息數據佇列狀態機 404
12.6.3 進入、運行和離開狀態的處理 405
12.6.4 事件驅動方式訊息佇列狀態機 405
12.7 狀態圖工具包(Statechart) 406
12.7.1 狀態圖工具包簡介 406
12.7.2 同步和異步方式 406
12.7.3 創建狀態圖 407
12.7.4 同步型狀態圖 408
12.7.5 狀態圖的調用和調試 410
12.7.6 異步型狀態圖 411
12.7.7 區域、超級狀態和子狀態 413
12.7.8 多區域並發、連線、分叉與子圖 414
12.7.9 高級套用函式 416
12.8 小結 419
第13章 LabVIEW通信與DSC 420
13.1 串口通信 420
13.1.1 串口通信的基本概念 420
13.1.2 串口通信的準備工作 422
13.1.3 串口通信函式 423
13.1.4 串口通信典型套用舉例 424
13.2 並口通信 426
13.2.1 設定並口通信模式 426
13.2.2 傳送位元組型數據 426
13.2.3 傳送EPP模式數據 427
13.3 共享變數 428
13.3.1 共享變數與共享變數引擎 428
13.3.2 創建與監視共享變數 429
13.3.3 共享變數的內部緩衝機制 431
13.3.4 共享變數的批量創建、部署與引用 431
13.4 DataSocket 433
13.4.1 DataSocket支持的協定與URL 433
13.4.2 DataSocket伺服器與服務管理器 435
13.4.3 DataSocket API 435
13.4.4 DataSocket API套用舉例 436
13.4.5 DataSocket控制項綁定 437
13.5 TCP與UDP網路通信 438
13.5.1 TCP通信 438
13.5.2 TCP STM庫 439
13.5.3 UDP通信 440
13.6 DSC工具包 441
13.6.1 OPC與DSC的基本概念 441
13.6.2 DSC強大的圖形化能力 442
13.6.3 OPC配置與I/O變數 443
13.6.4 Modbus 445
13.6.5 共享變數的屬性 446
13.6.6 共享變數引擎SVE函式 448
13.6.7 預警與事件 449
13.6.8 數據記錄 453
13.6.9 安全與許可權管理 457
13.7 小結 459
第14章 資料庫與報表工具包 460
14.1 準備使用資料庫工具包 460
14.1.1 創建資料庫 460
14.1.2 建立數據源 461
14.1.3 資料庫工具包支持的數據類型 462
14.1.4 ADO模型 463
14.2 資料庫基本操作 463
14.2.1 建立連線 463
14.2.2 表操作 465
14.2.3 插入數據 466
14.2.4 讀取數據 467
14.2.5 記錄集與數據瀏覽 469
14.2.6 事務與提交 472
14.2.7 使用命令對象和SQL語句 473
14.3 報表與報表工具包 474
14.3.1 LabVIEW中的報表VI 475
14.3.2 VI說明信息與HTML報表 476
14.3.3 報表布局與高級報表VI 477
14.3.4 利用Word和Excel模板創建報表 478
14.4 利用報表工具包操作Excel 479
14.4.1 常用的簡單Excel VI 479
14.4.2 單元格格式 481
14.4.3 圖表與圖片VI 482
14.4.4 Excel通用VI和高級VI 483
14.5 利用報表工具操作Word 486
14.5.1 Word簡單VI 486
14.5.2 Word通用VI 486
14.5.3 Word表格與圖表VI 487
14.6 小結 488
第15章 LabVIEW與實時作業系統 489
15.1 實時作業系統 489
15.1.1 實時作業系統的特點與實現 489
15.1.2 作業系統的有關名詞解釋 490
15.1.3 LabVIEW中的實時開發軟體 491
15.1.4 LabVIEW支持的實時作業系統 492
15.1.5 LabVIEW實時平台概述 493
15.2 實時控制器軟體安裝及其配置 494
15.2.1 配置實時系統BIOS(PXI) 495
15.2.2 MAX下安裝PXI實時軟體 495
15.2.3 識別遠程設備 495
15.2.4 建立實時項目 496
15.3 實時套用軟體高級編程及技巧 498
15.3.1 實時作業系統下LabVIEW不支持的特性 498
15.3.2 實時作業系統下的多執行緒 498
15.3.3 實時系統中時間確定性的實現 501
15.3.4 實時系統中的執行緒間通信 505
15.3.5 實時控制系統的網路通信 508
15.3.6 實時控制系統的軟體架構 516
15.4 小結 519
第16章 LabVIEW實現數據採集 520
16.1 數據採集的基本概念 520
16.1.1 信號 520
16.1.2 感測器 521
16.1.3 信號處理 522
16.2 數據採集卡 524
16.2.1 數據採集卡的定義及分類 524
16.2.2 多功能數據採集卡原理圖 525
16.2.3 數據採集的關鍵參數和概念 525
16.2.4 數據採集卡與信號接地 530
16.3 採樣定理 532
16.4 降低系統噪聲和提高精度 534
16.5 如何選購採集卡 536
16.6 數據採集軟體基礎 537
16.6.1 採集系統的安裝 537
16.6.2 NI採集卡的常用函式 540
16.6.3 研華常用採集函式 544
16.7 基於NI-DAQmx的高級編程 545
16.7.1 觸發信號(Trigger) 545
16.7.2 採集系統時鐘 547
16.7.3 多板卡之間的同步採集 550
16.7.4 數據傳輸機制 552
16.7.5 完整波形輸出 556
16.7.6 並行結構進行採集 557
16.7.7 通過硬體信號觸發定時循環運行 557
16.7.8 用NI-DAQmx的事件編寫面向事件驅動的程式 559
16.7.9 選擇合適的讀取策略 560
16.7.10 使用NI-DAQmx控制任務安全中止採集 562
16.7.11 計數器/定時器及其套用 563
16.8 小結 567
第17章 FPGA開發 568
17.1 FPGA的基本概念與CRIO的組成 568
17.1.1 FPGA的基本概念 568
17.1.2 CRIO的構成 569
17.1.3 構建FPGA項目 570
17.2 FPGA編程 571
17.2.1 FPGA基本I/O之模擬量輸入/輸出 571
17.2.2 FPGA基本I/O之數字量輸入/輸出 572
17.2.3 FPAG定時、時鐘與分頻 574
17.2.4 FPGA計數器套用 576
17.2.5 觸發與外部時鐘循環 579
17.2.6 FPGA常用函式 580
17.2.7 FPGA多執行緒與執行緒之間的數據交換 582
17.2.8 FPGA IP Core 585
17.3 FPGA與RT程式之間的數據交換 585
17.3.1 讀寫控制項方式 585
17.3.2 中斷 587
17.3.3 FIFO 588
17.3.4 掃描方式 591
17.3.5 專用C模組 594
17.3.6 FPGA程式的最佳化 596
17.4 Spartan-3E開發板 599
17.4.1 Spartan-3E簡介 599
17.4.2 建立Spartan-3E FPGA項目 600
17.4.3 編譯FPGA程式 601
17.5 小結 603

前言

計算機的出現,徹底改變了人們的工作和生活方式。如今計算機已經無處不在,進入了每個人的生活之中。在工程技術人員看來,計算機不僅僅是人們常見的PC,也包括各種微處理器。從這個角度看,我們無時無刻不在使用計算機,例如,電視、洗衣機、自動提款機等都依賴計算機來實現各種便捷的功能。
相同的計算機可以完成不同的工作,在於它們使用不同的程式,而程式是由計算機程式語言創建的。短短几十年中,出現了眾多的程式語言,這些程式語言的共同特點是採用文本方式創建程式。文本方式編程對編程人員要求很高,這使得計算機編程只能是少數人才可以從事的職業。
美國國家儀器公司(National Instruments,簡稱NI)的創新軟體產品LabVIEW,允許用圖形方式編程,摒棄了晦澀難懂的文本代碼,使得計算機編程不再是少數人的專利。LabVIEW的最早版本誕生於1986年,幾乎和Windows的最早版本同步,這注定了LabVIEW是多平台的程式語言,適合於不同的作業系統。
20世紀80年代初,NI公司是GPIB匯流排設備的主要供貨商,豐富的硬體經驗和強大的軟體開發需求,促使NI公司的工程師們決心尋找一種代替傳統程式語言的開發工具,這導致了1986年LabVIEW的橫空出世。LabVIEW是由測試工程師開發的專用程式語言,因此,LabVIEW具有鮮明的行業特點,最早主要用於測試測量領域。NI公司獨創了虛擬儀器的理念,提出了“軟體就是儀器”的理念,並逐步成為業界的標準。
隨著LabVIEW的不斷發展,幾乎每隔一兩年,都要推出新的版本。LabVIEW的套用範圍已經覆蓋了工業自動化、測試測量、嵌入式套用、運動控制、圖像處理、計算機仿真、FPGA等眾多領域。以LabVIEW為核心,採用不同的專用工具包,統一的圖形編程方式,可以實現不同技術領域的需求。
本書要點
本書作者多年使用LabVIEW作為主要的程式語言,因此特別關注LabVIEW在工業領域的具體運用以及LabVIEW的實用編程技術。本書共17章,分為入門篇、高級篇、工程套用篇。
第1~5章為入門篇,介紹了LabVIEW的基本概念、基本函式的用法和常用的運行結構,詳盡地分析了LabVIEW的基本數據結構和檔案存儲方式。
第6~11章為高級篇,介紹了應用程式、VI和控制項的引用、屬性和方法,以及各類高級控制項的運用方法。第8章介紹了LabVIEW的文本編程方式以及DLL、C語言接口,第9章詳細介紹了基於Matlab語法的MathScript編程技術,第10章介紹了LabVIEW基於組件的編程方法。
第12~17章為工程套用篇,具體而細緻地講解在做實際工程開發時所用到的LabVIEW編程技術。本篇結合LabVIEW的常用工具包,具體分析了計算機串口、並口、網路通信方面的內容,以及數據記錄和監控工具包、資料庫連線工具包、報表生成工具包、狀態圖工具包、FPGA工具包等等。第13、第14章詳細介紹了數據採集的基本原理和常用編程方法,其中重點介紹了LabVIEW在實時系統下的運用。第15章講解LabVIEW實時系統的開發案例。第16章講解了LabVIEW數據採集系統開發案例。第17章講解了FPGA的開發案例,利用LabVIEW圖形編程方式,提高開發效率。
本書讀者
本書可作為高等院校通信、測量技術、自動控制等相關課程的教材和教學參考書,也可作為相關工程技術人員設計開發儀器或自動測試系統的技術手冊。
本書特色
本書內容非常豐富,在每個章節都採用了大量的實例,針對具體編程實踐中遇到的問題,提出了多種解決方法。在兼顧基礎知識介紹的前提下,深入討論了LabVIEW的高級編程方法和編程技巧。
本書的宗旨是作為實用工具書,側重於來自工程實踐的一線案例。筆者在寫作過程中,與眾多的LabVIEW愛好者進行了充分的溝通與交流,總結編程過程中經常遇到的問題,並作為本書的重要內容。
本書使用了大量篇幅,重點講解NI公司各種專用工具包的運用,具有一定的深度和實用價值,特別適合於具有一定基礎的編程人員使用。在基礎篇中,雖然也介紹了許多LabVIEW的基礎知識,但還是側重於具體套用,其中大量的例程可以直接在具體項目中使用。
在高級篇中,重點介紹了LabVIEW常用的編程模式,以及狀態圖工具包的運用,同時介紹了新增的面向對象的編程方法。
補遺說明
本書寫作時主要使用8.6版本,但是書中介紹的具體內容並不限於特定的版本,因此無版本限制。本書案例檔案和相關課件在網址中提供下載,這樣方便讀者更好地提高學習效率,也方便教師教學。此外,對於比較重要的內容,為了讓讀者印象深刻,我們以“學習筆記”的體例呈現出來。
致謝與分工
本書由陳樹學、劉萱兩位工程師編寫,我們有大量LabVIEW的實際開發經驗,經歷了多年的濃縮和總結才成此書。在編寫本書過程中獲得張國強老師的大力支持,他為我們提供了開發硬體,使得寫作能在真實的開發環境中進行,應該說沒有他的熱心幫忙完成本書是難以想像的事情。此外,參與本書部分編寫工作的人員還有:李偉、朱誠、陳洪軍、黃北軍、路錦正、謝昀、張洪亮、趙會春、王曉、余松、周俊傑、陳軍等。因為本書作者為工程技術人員,對於寫作並不擅長,書中錯漏之處在所難免,敬請批評指正。能夠為LabVIEW在國內的推廣使用,做一點力所能及的貢獻,能對廣大的LabVIEW愛好者有所幫助,是我們最大的願望。

相關詞條

熱門詞條

聯絡我們