LabVIEW寶典(第3版)( 簡體 字) | |
作者:陳樹學,劉萱 | 類別:1. -> 程式設計 -> Labview |
出版社:電子工業出版社 | 3dWoo書號: 55735 詢問書籍請說出此書號! 有庫存 NT售價: 690 元 |
出版日:4/1/2022 | |
頁數:708 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787121411670 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第1部分 入門篇
第1章 打開LabVIEW編程之門 2 1.1 從VI開始 2 1.1.1 創建VI 3 1.1.2 控件屬性設置與快捷菜單 6 1.1.3 創建控件、常量、局部變量、引用、屬性節點和方法節點 8 1.1.4 創建自定義控件 10 1.2 編輯前面板和程序框圖 12 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 基本控件及其使用方法 24 1.4.1 基本數值控件 24 1.4.2 基本布爾控件 30 1.4.3 控件的通用編輯方法 33 1.4.4 字符串和路徑控件 35 1.4.5 下拉列表與枚舉控件 38 1.4.6 數組控件及其屬性設置 39 1.4.7 簇控件 40 1.4.8 時間標識控件與波形數據控件 42 1.5 小結 44 第2章 LabVIEW基本函數 45 2.1 必須了解的一些基本算術運算函數 45 2.1.1 基本運算函數 45 2.1.2 標量之間的基本運算 46 2.1.3 標量與數組的運算 46 2.1.4 數組與數組的運算 46 2.1.5 數組運算相關函數 47 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 比較模式 62 2.3.2 通用關系運算函數 62 2.3.3 “比較0”關系運算函數 63 2.3.4 復雜關系運算函數 64 2.3.5 字符關系運算函數 67 2.3.6 表達式節點與公式快速VI 67 2.4 群體函數 69 2.4.1 集合與映射表函數選板 69 2.4.2 創建集合 69 2.4.3 集合的基本運算 70 2.4.4 創建映射表 70 2.4.5 注冊與注銷映射表 71 2.5 小結 72 第3章 LabVIEW的程序運行結構 73 3.1 兩種不同的循環結構 73 3.1.1 For循環的組成和特點 73 3.1.2 For循環與數組 75 3.1.3 For循環與移位寄存器 77 3.1.4 For循環中的continue和break 78 3.1.5 While循環,不僅僅是循環 79 3.1.6 While循環與定時 80 3.1.7 反饋節點 86 3.2 定時結構 86 3.2.1 定時循環的基本組成要素和配置對話框 87 3.2.2 定時順序結構 90 3.3 獨特的條件結構 90 3.3.1 條件結構的基本結構 90 3.3.2 布爾型輸入 91 3.3.3 錯誤簇輸入 91 3.3.4 數值型輸入 91 3.3.5 枚舉型輸入 92 3.3.6 下拉列表輸入 93 3.3.7 字符串和組合框輸入 93 3.3.8 輸入/輸出隧道 93 3.3.9 多重If-Else的處理方法 94 3.4 不和諧的順序結構 94 3.4.1 多線程運行次序 95 3.4.2 兩種不同的順序結構 95 3.4.3 隧道與順序局部變量 96 3.4.4 順序結構的替代 97 3.4.5 順序結構的典型應用 97 3.5 程序框圖禁用結構 98 3.6 局部變量、內置全局變量和功能(LV2型)全局變量 98 3.6.1 局部變量 98 3.6.2 內置全局變量 100 3.6.3 功能(LV2型)全局變量 102 3.7 事件結構 103 3.7.1 事件結構的基本構成和創建方法 104 3.7.2 事件的分類及其特點 105 3.7.3 事件結構之間的數據傳送與共享 107 3.7.4 事件發生的次序、事件過濾和轉發 108 3.7.5 正確地使用事件結構 109 3.8 小結 110 第4章 LabVIEW的數據結構及內存優化 111 4.1 常用數據類型轉換函數 111 4.1.1 “強制類型轉換”函數 111 4.1.2 “平化至字符串”函數與“從字符串還原”函數 112 4.1.3 變體數據 113 4.1.4 變體數據數據類型解析 113 4.2 整數的類型轉換及內存映射 114 4.2.1 布爾型數據與字符串和數值之間的相互轉換 115 4.2.2 U8類型數據與字符串之間的相互轉換 115 4.2.3 整數類型之間的相互轉換 115 4.3 其他標量數據的類型轉換及內存映射 116 4.3.1 定點數、浮點數的類型轉換與內存映射 116 4.3.2 復數的類型轉換及內存映射 119 4.3.3 時間標識的類型轉換與內存映射 119 4.4 復合數據類型 120 4.4.1 標量數組的內存映射 120 4.4.2 字符串、路徑和字符串數組的內存映射 121 4.4.3 LabVIEW使用的編碼 122 4.5 簇的內存映射 123 4.5.1 由標量組成的簇 123 4.5.2 包含數組和字符串的簇 123 4.6 類型描述符 124 4.6.1 類型描述符的基本構成要素 124 4.6.2 常用類型描述符列表 124 4.6.3 常見數據類型的類型描述符結構 125 4.7 OpenG中有關類型描述符的函數 126 4.7.1 類型描述符函數 127 4.7.2 利用類型描述符處理枚舉型數據 128 4.7.3 利用類型描述符處理簇 128 4.8 幾種常用的內存分析工具和方法 128 4.8.1 內存的重要性 129 4.8.2 內存和性能查看工具 130 4.8.3 VI使用的內存 131 4.8.4 優化內存的一般注意事項 132 4.8.5 數組與內存優化 133 4.8.6 避免在循環中進行不必要的計算、讀/寫控件或者變量 136 4.9 影響VI運行速度的因素 137 4.9.1 硬件輸入/輸出 137 4.9.2 屏幕顯示 138 4.10 小結 138 第5章 字符串與文件存儲 139 5.1 字符串 139 5.1.1 幾種常用的字符串常量 139 5.1.2 幾種常用的字符串函數 140 5.1.3 “匹配模式”和“匹配正則表達式”函數 141 5.1.4 字符串與數值的相互轉換 144 5.1.5 功能強大的“格式化字符串”函數和“掃描字符串”函數 145 5.1.6 數組與電子表格字符串 148 5.1.7 附加字符串函數 148 5.2 文件存儲 149 5.2.1 文本文件與二進制文件的區別 149 5.2.2 文件常量和通用目錄、文件函數 150 5.2.3 構造路徑的方法 151 5.2.4 文本文件的讀/寫 154 5.2.5 數據記錄文件的讀/寫 158 5.2.6 讀/寫二進制文件 159 5.2.7 INI文件的讀/寫 161 5.2.8 XML文件的讀/寫 163 5.2.9 注冊表的讀/寫 165 5.2.10 TDM文件 166 5.2.11 TDMS文件 168 5.3 小結 171 第2部分 高級篇 第6章 LabVIEW對象的解析 174 6.1 LabVIEW控件對象的層次繼承結構 174 6.1.1 布爾控件的層次繼承結構 174 6.1.2 通用類的屬性 175 6.1.3 圖形對象類 177 6.2 圖形對象類的子類 178 6.2.1 前面板類 178 6.2.2 窗格類和分隔欄類 179 6.2.3 LabVIEW的坐標映射 180 6.2.4 修飾類 182 6.3 控件類 184 6.3.1 控件類的常用屬性 184 6.3.2 控件類的常用方法 186 6.3.3 數值控件類 187 6.4 常用控件的專有屬性 188 6.4.1 布爾控件的專有屬性 189 6.4.2 枚舉控件和下拉列表控件的專有屬性 189 6.4.3 字符串控件、路徑控件和組合框控件的專有屬性 190 6.4.4 數組控件的屬性和方法 192 6.4.5 簇的屬性及方法 194 6.5 引用句柄 195 6.6 VI的屬性 197 6.6.1 獲取VI的引用句柄 197 6.6.2 常用VI屬性 197 6.7 常用VI方法 200 6.7.1 獲取前面板、程序框圖和VI圖標的圖像 201 6.7.2 打印控制 201 6.7.3 默認值方法 201 6.8 動態調用VI 202 6.8.1 靜態調用和動態調用的比較 202 6.8.2 通過“引用節點調用”函數動態調用VI 203 6.8.3 一般類型VI的動態調用 205 6.8.4 創建閃屏 207 6.8.5 創建后臺運行程序 207 6.8.6 創建向導程序 208 6.8.7 動態調用VI之間的數據交換 209 6.9 應用程序的屬性和方法 210 6.9.1 獲取應用程序的引用句柄 210 6.9.2 應用程序的常用屬性 211 6.10 小結 212 第7章 高級控件的運用 213 7.1 列表框 213 7.1.1 列表框的創建及顯示風格 213 7.1.2 列表框的常用屬性、方法與事件 213 7.1.3 列表框的應用舉例 214 7.2 多列列表框 217 7.2.1 顯示多列項目并排序 218 7.2.2 多列列表框的特效制作 220 7.3 表格 220 7.3.1 表格的常用屬性和方法 221 7.3.2 表格的應用舉例 224 7.4 樹形控件 228 7.4.1 樹形控件的創建與靜態編輯 228 7.4.2 樹形控件的常用屬性、方法和事件 229 7.4.3 樹形控件高級應用舉例 231 7.5 波形圖表 232 7.5.1 波形圖表的組成要件 233 7.5.2 波形圖表的輸入類型 235 7.5.3 波形圖表專用屬性 235 7.5.4 波形圖表應用舉例 237 7.6 波形圖 238 7.6.1 波形圖控件的創建和組成要件 239 7.6.2 波形圖控件的輸入類型 239 7.6.3 波形圖控件的專用屬性 242 7.6.4 波形圖控件的高級應用舉例 244 7.7 XY圖 246 7.7.1 XY圖的輸入數據類型 247 7.7.2 XY圖的高級應用 249 7.8 強度圖表和強度圖 251 7.9 數字數據、數字波形數據與數字波形圖 251 7.9.1 數字數據 252 7.9.2 數字波形數據和數字波形圖 252 7.10 圖片控件 253 7.10.1 利用圖片控件顯示圖片 253 7.10.2 常用繪圖操作函數 255 7.10.3 圖片控件的高級應用 257 7.11 小結 259 第8章 文本式編程與外部程序接口 260 8.1 公式節點 260 8.1.1 公式節點的數據類型、語法與控制結構 260 8.1.2 公式節點的應用舉例 262 8.2 調用庫函數 263 8.2.1 DLL與API函數 263 8.2.2 如何調用DLL函數 265 8.2.3 常用API函數的調用 270 8.2.4 LabVIEW調用DLL的局限性 273 8.3 CIN 276 8.3.1 CIN創建的一般過程 277 8.3.2 CIN的數據類型和常用函數 279 8.3.3 CIN與內存管理器 283 8.3.4 CIN的運行過程和數據共享 286 8.4 系統命令 289 8.5 剪貼板 290 8.6 DDE庫 291 8.6.1 DDE概述 291 8.6.2 LabVIEW中的常用DDE方法 292 8.7 ActiveX控件與ActiveX文檔 294 8.7.1 ActiveX的基本概念 294 8.7.2 ActiveX控件的調用過程 294 8.7.3 ActiveX應用實例 295 8.7.4 ActiveX自動化服務器 297 8.8 .NET技術 298 8.8.1 .NET控件 298 8.8.2 .NET服務 299 8.8.3 利用.NET創建托盤程序 301 8.9 小結 304 第9章 MathScript 305 9.1 如何使用MathScript 305 9.1.1 使用MathScript節點 305 9.1.2 使用MathScript交互窗口 306 9.2 MathScript常用命令 307 9.3 MathScript基礎知識 308 9.3.1 創建向量和矩陣的基本方法 308 9.3.2 矩陣的基本運算 309 9.3.3 標準矩陣 310 9.3.4 矩陣元素的插入、替換、刪除和提取 310 9.3.5 矩陣元素的排序和搜索特征值 312 9.3.6 常用的矩陣變換函數 313 9.3.7 矩陣中元素的數據類型及轉換 314 9.3.8 關系運算、邏輯運算和位操作 316 9.3.9 集合函數 316 9.3.10 時間、日期和計時函數 317 9.4 程序控制結構與函數 318 9.4.1 For循環和While循環 318 9.4.2 If條件結構和Switch分支條件結構 319 9.4.3 函數和腳本文件 320 9.5 數據統計和數據插值擬合 322 9.5.1 常用數據統計函數 322 9.5.2 數據插值 325 9.6 多項式、積分和微分 327 9.6.1 多項式 327 9.6.2 極值與零點 328 9.6.3 積分和微分 329 9.7 數據的圖形顯示 329 9.7.1 窗口類屬性與常用窗口操作函數 330 9.7.2 繪圖區域屬性 332 9.7.3 線對象和文本對象的屬性及常用函數 334 9.7.4 基本繪圖函數 335 9.8 小結 338 第10章 組件、同步技術、面向對象編程 339 10.1 數據的封裝與隔離 339 10.1.1 合理地使用數據流 339 10.1.2 LV2型全局變量 340 10.1.3 值變化與上升、下降沿 342 10.1.4 定時觸發與計數器 344 10.2 動作機(Action Engine) 346 10.2.1 準備建立動作機 346 10.2.2 建立動作機的步驟 347 10.3 用戶事件與動態注冊事件 348 10.3.1 用戶事件 348 10.3.2 動態注冊事件 351 10.4 堆棧與數據緩沖區 352 10.4.1 堆棧的實現 353 10.4.2 數據緩沖區 354 10.5 同步控制技術 354 10.5.1 隊列 355 10.5.2 通知器 360 10.5.3 信號量與集合點 363 10.6 項目管理器 364 10.6.1 項目管理器的結構 364 10.6.2 虛擬文件夾 365 10.6.3 庫 365 10.7 面向對象編程 367 10.7.1 面向對象編程的基本概念 368 10.7.2 類的封裝特性 368 10.7.3 類的繼承特性 371 10.7.4 類的多態性 374 10.7.5 類變量 378 10.7.6 調用父類中的重寫方法 378 10.7.7 類的引用轉換 379 10.7.8 簡單工廠模式 381 10.7.9 類的動態加載與插件功能 381 10.7.10 類方法的遞歸功能 382 10.7.11 類的單態模式 382 10.7.12 接口 383 10.8 自適應VI(VIM) 385 10.8.1 內置函數的自適應 385 10.8.2 多態VI的缺點 385 10.8.3 創建自適應VI 386 10.8.4 擴充自適應VI數據類型范圍 387 10.8.5 限制自適應VI數據類型范圍 388 10.9 利用通道在循環之間交換數據 388 10.9.1 創建通道 389 10.9.2 串流的基本概念與分類 389 10.9.3 串流的基本用法 390 10.9.4 Tag 392 10.9.5 消息器 392 10.9.6 事件消息器 394 10.10 小結 396 第11章 人機交互與編程風格 397 11.1 對話框 397 11.1.1 內置對話框 397 11.1.2 用戶輸入和顯示對話框 398 11.1.3 定制對話框 399 11.2 菜單 399 11.2.1 創建靜態菜單 399 11.2.2 菜單相關函數 400 11.2.3 動態創建菜單 402 11.2.4 調用多個靜態菜單,存儲運行時菜單 403 11.2.5 自動觸發預定義的菜單項 404 11.2.6 控件的快捷菜單 404 11.3 光標工具 405 11.3.1 “設置為忙碌狀態”VI與“取消設置忙碌狀態”VI 406 11.3.2 設置控件光標 406 11.3.3 使用光標文件 406 11.4 選項卡、子面板與分隔欄 407 11.4.1 選項卡控件 407 11.4.2 選項卡控件的頁面 407 11.4.3 頁面的公用控件 408 11.4.4 分隔欄控件 408 11.4.5 分隔欄與窗格滾動條 409 11.4.6 利用分隔欄創建工具欄與狀態欄 409 11.4.7 利用分隔欄自動縮放控件 410 11.4.8 子面板控件 410 11.4.9 動態調用VI插入子面板 411 11.4.10 異步調用VI插入子面板 412 11.4.11 并行的靜態調用VI插入子面板 412 11.4.12 在多個子面板插入相同VI 413 11.4.13 判斷VI是否插入子面板 413 11.4.14 子面板的屬性 414 11.5 XControl 414 11.5.1 Hover按鈕 415 11.5.2 新建XControl 415 11.5.3 修改數據控件和狀態控件 415 11.5.4 “外觀”VI 416 11.5.5 創建屬性和方法 418 11.5.6 調試XControl 419 11.5.7 自定義屬性對話框與快捷菜單 420 11.6 錯誤處理 421 11.6.1 錯誤簇 421 11.6.2 常用錯誤處理函數 422 11.7 LabVIEW的編程風格 423 11.7.1 編程風格的內涵 423 11.7.2 前面板設計應該遵循的原則 424 11.7.3 程序框圖設計應該遵循的原則 426 11.7.4 連線板設計應該遵循的原則 427 11.7.5 圖標設計應該遵循的原則 427 11.7.6 數據結構應該遵循的原則 428 11.7.7 錯誤處理應該遵循的原則 429 11.8 小結 429 第3部分 工程應用篇 第12章 LabVIEW設計模式與狀態圖工具 432 12.1 程序的基本單元VI 432 12.1.1 VI的可重入屬性 432 12.1.2 不可重入VI 432 12.1.3 可重入VI 433 12.2 VI模板與代碼重用 434 12.2.1 內置的VI模板 434 12.2.2 用戶自定義模板 434 12.3 VI的調試 435 12.3.1 連續運行VI 435 12.3.2 高亮執行 436 12.3.3 單步運行 436 12.3.4 探針 436 12.3.5 自定義探針 437 12.3.6 斷點 437 12.4 VI的重構 438 12.4.1 無用編程舉例 438 12.4.2 查找框圖中重復的功能 439 12.4.3 創建VI代替重復的功能 440 12.4.4 創建多態VI處理相似的功能 440 12.5 LabVIEW標準設計模式 441 12.5.1 用戶界面事件處理器設計模式 441 12.5.2 生產者/消費者設計模式(事件) 442 12.5.3 生產者/消費者設計模式(數據) 443 12.5.4 主/從設計模式 443 12.6 用戶界面事件處理器模式的拓展 444 12.6.1 用戶界面事件處理器+順序結構設計模式 444 12.6.2 用戶界面事件處理器+用戶事件 444 12.6.3 用戶界面事件處理器+超時分頻 445 12.6.4 用戶界面事件處理器+定時循環 446 12.7 隊列消息處理器(QMH)設計模式 446 12.7.1 基本隊列消息處理器模式(字符串數組) 446 12.7.2 基本隊列消息處理器模式(字符串) 447 12.7.3 基于生產者/消費者設計模式(隊列)的隊列消息處理器 447 12.7.4 AMC隊列消息處理器 448 12.7.5 基于隊列消息處理器的命令模式 450 12.8 有限狀態機設計模式 451 12.8.1 標準狀態機設計模式 452 12.8.2 早期界面處理狀態機 452 12.8.3 順序狀態機 453 12.8.4 處理公共狀態 454 12.8.5 狀態機+用戶界面事件處理器 454 12.8.6 進入、運行和離開狀態的處理 455 12.8.7 有限狀態機+LVOOP 455 12.9 狀態圖工具 458 12.9.1 調用狀態圖工具 458 12.9.2 使用狀態圖編輯器 458 12.9.3 添加轉換條件和狀態代碼 458 12.9.4 選擇獨立運行或者子VI方式 459 12.10 隊列消息狀態機 460 12.10.1 通用隊列消息狀態機自定義模板 460 12.10.2 消息+數據隊列狀態機 461 12.10.3 事件驅動隊列消息狀態機 462 12.11 JKI事件驅動隊列消息狀態機 462 12.11.1 JKI狀態機模板 463 12.11.2 JKI狀態機的初始化 463 12.11.3 JKI狀態機的預定義事件 464 12.11.4 JKI狀態機的退出 465 12.12 簡單狀態機項目模板 465 12.12.1 簡單狀態機項目模板的基本構成 465 12.12.2 簡單狀態機 466 12.12.3 簡單狀態機范例(有限次測量) 466 12.13 隊列消息處理器項目模板 468 12.13.1 隊列消息處理器項目模板的基本構成 468 12.13.2 隊列消息處理器 468 12.13.3 隊列消息處理器的退出機制 469 12.13.4 隊列消息處理器的錯誤處理機制 470 12.13.5 隊列消息處理器的拓展 470 12.14 Delacor隊列消息處理器 472 12.14.1 DQMH項目模板的基本構成 472 12.14.2 DQMH模塊的基本構成與對外接口 473 12.14.3 DQMH模塊測試器 474 12.14.4 DQMH模塊 476 12.14.5 使用DQMH模塊 476 12.15 操作執行者框架 478 12.15.1 操作者框架概述 479 12.15.2 創建操作者和消息 479 12.15.3 啟動、停止操作者,發送消息至操作者 481 12.15.4 創建操作者界面 482 12.15.5 操作者的定時功能 483 12.15.6 嵌套操作者 484 12.15.7 嵌套操作者的動態啟動與停止 485 12.16 操作者框架項目模板 486 12.16.1 閃屏引導VI 486 12.16.2 操作者框架根操作者 487 12.16.3 Alpha嵌套操作者 488 12.16.4 Beta嵌套操作者 489 12.17 狀態圖工具包(Statechart) 490 12.17.1 狀態圖工具包簡介 490 12.17.2 同步與異步方式 490 12.17.3 創建狀態圖 491 12.17.4 同步型狀態圖 492 12.17.5 狀態圖的調用和調試 495 12.17.6 異步型狀態圖 496 12.17.7 區域、超級狀態和子狀態 497 12.17.8 多區域并發、連接、分叉與子圖 499 12.17.9 高級應用函數 501 12.18 小結 503 第13章 LabVIEW通信與DSC 504 13.1 串口通信 504 13.1.1 串口通信的基本概念 504 13.1.2 串口通信的準備工作 505 13.1.3 串口通信函數 507 13.1.4 串口通信典型應用舉例 508 13.2 并口通信 510 13.2.1 設置并口通信模式 510 13.2.2 傳送字節型數據 510 13.2.3 傳送EPP模式數據 511 13.3 共享變量 512 13.3.1 共享變量與共享變量引擎 512 13.3.2 創建與監視共享變量 513 13.3.3 共享變量的內部緩沖機制 515 13.3.4 共享變量的批量創建、部署與引用 516 13.4 DataSocket 518 13.4.1 DataSocket支持的協議與URL 518 13.4.2 DataSocket服務器與服務管理器 519 13.4.3 DataSocket API 520 13.4.4 DataSocket API應用舉例 521 13.4.5 DataSocket控件綁定 522 13.5 TCP與UDP網絡通信 523 13.5.1 TCP通信 523 13.5.2 TCP STM庫 524 13.5.3 UDP通信 525 13.6 網絡流 526 13.6.1 在應用程序之間傳遞命令或者數據 526 13.6.2 網絡流基本函數 527 13.6.3 創建網絡流URL 527 13.6.4 網絡流應用舉例 528 13.7 DSC工具包 529 13.7.1 OPC與DSC的基本概念 529 13.7.2 DSC強大的圖形顯示能力 531 13.7.3 OPC配置與I/O變量 531 13.7.4 Modbus 534 13.7.5 共享變量的屬性 536 13.7.6 共享變量引擎SVE函數 537 13.7.7 預警與事件 539 13.7.8 數據記錄 542 13.7.9 安全與權限管理 546 13.8 小結 548 第14章 數據庫與報表工具包 549 14.1 準備使用數據庫連接工具包 549 14.1.1 創建數據庫 549 14.1.2 建立數據源 550 14.1.3 數據庫工具包支持的數據類型 551 14.1.4 ADO模型 552 14.2 數據庫基本操作 552 14.2.1 建立連接 552 14.2.2 表操作 554 14.2.3 插入數據 555 14.2.4 讀取數據 556 14.2.5 記錄集與數據瀏覽 558 14.2.6 事務與提交 561 14.2.7 使用命令對象和SQL語句 562 14.3 報表與報表工具包 563 14.3.1 LabVIEW中的報表VI 563 14.3.2 VI說明信息與HTML報表 565 14.3.3 報表布局與高級報表VI 566 14.3.4 利用Word和Excel模板創建報表 567 14.4 利用報表工具包操作Excel 568 14.4.1 常用的簡單Excel VI 568 14.4.2 單元格格式 570 14.4.3 圖表與圖片VI 571 14.4.4 Excel通用VI和高級VI 572 14.5 利用報表工具包操作Word 574 14.5.1 Word簡單VI 574 14.5.2 Word通用VI 575 14.5.3 Word表格與圖表VI 576 14.6 小結 577 第15章 LabVIEW與實時操作系統 578 15.1 實時操作系統 578 15.1.1 實時操作系統的特點與實現 578 15.1.2 操作系統的有關名詞解釋 579 15.1.3 LabVIEW中的實時開發軟件 580 15.1.4 LabVIEW支持的實時操作系統 581 15.1.5 LabVIEW實時平臺概述 581 15.2 實時控制器軟件的安裝及配置 583 15.2.1 配置實時系統BIOS(PXI) 583 15.2.2 在MAX下安裝PXI實時軟件 584 15.2.3 識別遠程設備 584 15.2.4 建立實時項目 585 15.3 實時應用軟件高級編程及技巧 586 15.3.1 在實時操作系統下LabVIEW不支持的特性 587 15.3.2 實時操作系統下的多線程 587 15.3.3 實時系統中時間確定性的實現 590 15.3.4 實時系統中的線程間通信 594 15.3.5 實時控制系統的網絡通信 597 15.3.6 實時控制系統的軟件架構 604 15.4 小結 607 第16章 LabVIEW實現數據采集 608 16.1 數據采集的基本概念 608 16.1.1 信號 608 16.1.2 傳感器 609 16.1.3 信號處理 610 16.2 數據采集卡 612 16.2.1 數據采集卡的定義及分類 612 16.2.2 多功能數據采集卡原理圖 613 16.2.3 數據采集的關鍵參數和概念 613 16.2.4 數據采集卡與信號接地 618 16.3 采樣定理 620 16.4 降低系統噪聲和提高精度 622 16.5 如何選購采集卡 624 16.6 數據采集軟件基礎 625 16.6.1 采集系統的安裝 625 16.6.2 NI采集卡的常用函數 628 16.6.3 研華常用采集函數 632 16.7 基于NI-DAQmx的高級編程 633 16.7.1 觸發信號 633 16.7.2 采集系統時鐘 635 16.7.3 多板卡之間的同步采集 638 16.7.4 數據傳輸機制 640 16.7.5 完整波形輸出 643 16.7.6 并行結構采集 644 16.7.7 通過硬件信號觸發定時循環運行 645 16.7.8 使用NI-DAQmx的事件編寫事件驅動程序 646 16.7.9 選擇合適的讀取策略 647 16.7.10 使用NI-DAQmx控制任務安全終止采集 649 16.7.11 計數器/定時器及其應用 650 16.8 小結 654 第17章 FPGA開發 655 17.1 FPGA的基本概念與CRIO的組成 655 17.1.1 FPGA的基本概念 655 17.1.2 CRIO的構成 656 17.1.3 構建FPGA項目 657 17.2 FPGA編程 658 17.2.1 FPGA基本I/O之模擬量輸入/輸出 658 17.2.2 FPGA基本I/O之數字量輸入/輸出 659 17.2.3 FPAG定時、時鐘與分頻 661 17.2.4 FPGA計數器應用 662 17.2.5 觸發與外部時鐘循環 665 17.2.6 FPGA常用函數 666 17.2.7 FPGA多線程與線程之間的數據交換 668 17.2.8 FPGA IP Core 672 17.3 FPGA與RT程序之間的數據交換 672 17.3.1 讀寫控件方式 672 17.3.2 中斷 673 17.3.3 FIFO 675 17.3.4 掃描方式 677 17.3.5 專用C模塊 681 17.3.6 FPGA程序的優化 683 17.4 Spartan-3E開發板 685 17.4.1 Spartan-3E開發板簡介 685 17.4.2 建立Spartan-3E FPGA項目 686 17.4.3 編譯FPGA程序 687 17.5 小結 688 詳盡講解了LabVIEW常用的編程方法、編程技巧和工程應用技術。全書共分為3篇,其中,入門篇歸納總結了LabVIEW編程人員必須掌握的基礎知識,包括LabVIEW的基本概念、基本函數的用法和常用的運行結構,以及LabVIEW的基本數據結構和文件存儲方式;高級篇細致地講解了引用、屬性、方法及各類高級控件的運用,LabVIEW的文本方式編程及DLL、C語言接口,基于MATLAB語法的math*編程技術,LabVIEW基于組件的高級編程方法和編程模式;工程應用篇介紹了串口、并口和網絡通信的常用方法,數據采集的基本原理和方法,LabVIEW實時系統的構建和編程,以及各種常用專業工具包的使用方法,包括數據庫連接工具包、數據監控與記錄工具包、報表生成工具包、狀態圖工具包等。《LabVIEW寶典》可作為高等院校通信、測量技術、自動控制等相關課程的教材和教學參考書,也可作為相關工程技術人員設計開發儀器或自動測試系統的技術手冊。
計算機的出現,徹底改變了人們的工作和生活方式。如今計算機已經無處不在,進入了每個人的生活之中。在工程技術人員看來,計算機不僅僅是人們常見的PC,也包括各種微處理器。從這個角度看,我們無時無刻不在使用計算機,例如,電視、洗衣機、自動提款機等都依賴計算機來實現各種便捷的功能。
相同的計算機可以完成不同的工作,在于它們使用不同的程序,而程序是由計算機編程語言創建的。短短幾十年中,出現了眾多的編程語言,這些編程語言的共同特點是采用文本方式創建程序。文本方式編程對編程人員要求很高,這使得計算機編程只能是少數人才可以從事的職業。 美國國家儀器公司(National Instruments,NI)的創新軟件產品LabVIEW,允許用圖形方式編程,摒棄了晦澀難懂的文本代碼,使得計算機編程不再是少數人的專利。LabVIEW的最早版本誕生于1986年,幾乎和Windows的最早版本同步,這注定了LabVIEW是多平臺的編程語言,適用于不同的操作系統。 20世紀80年代初,NI公司是GPIB總線設備的主要供貨商,豐富的硬件經驗和強大的軟件開發需求,促使NI公司的工程師們決心尋找一種代替傳統編程語言的開發工具,這促成了1986年LabVIEW的橫空出世。LabVIEW是由測試工程師開發的專用編程語言,因此,LabVIEW具有鮮明的行業特點,最早主要用于測試測量領域。NI公司獨創了虛擬儀器的概念,提出了“軟件就是儀器”的理念,并逐步成為業界的標準。 隨著LabVIEW的不斷發展,幾乎每隔一兩年,都要推出新的版本。LabVIEW的應用范圍已經覆蓋了工業自動化、測試測量、嵌入式應用、運動控制、圖像處理、計算機仿真、FPGA等眾多領域。以LabVIEW為核心,采用不同的專用工具包和統一的圖形編程方式,可以實現不同技術領域的需求。 由于LabVIEW版本升級過快,導致許多函數、VI的名稱與圖標發生了變化。使用LabVIEW新版本的讀者,會發現本書前兩版中程序框圖中的函數、VI與新版LabVIEW對應不上,而且LabVIEW每次更新都增加了很多新功能。鑒于此,我們編寫了本書的第3版。第3版在前兩版的基礎上,修改了一些程序框圖,同時也針對新功能,增加了對應的內容。 本書要點 本書作者多年使用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愛好者有所幫助,是我們最大的愿望。 |