GV: Nguyễn Thanh Tần Lập trình LabVIEWTerminals trong Block Diagram Terminal là đối tượng tồn tại trong Block Diagram lẫn Front panel Luôn tồn tại các đường vào ra để truyền thông giữa F
Trang 1GV: Nguyễn Thanh Tần Lập trình LabVIEW
Học phần
LẬP TRÌNH labVIEW CƠ BẢN
Trang 2LabVIEW
Trang 3GV: Nguyễn Thanh Tần Lập trình LabVIEW
labVIEW
Trang 4Lập trình
B1: Phương pháp phát triển phần mềm
B2: Xây dựng giải thuật
B3: Thiết kế giải thuật
B4: Thực thi
B5: Kiểm tra
B6: Bảo trì – Sữa chữa
Trang 5GV: Nguyễn Thanh Tần Lập trình LabVIEW
Nội dung
1 Thao tác trên labVIEW
2 Kỹ thuật gỡ rối (Debug) cho VI
3 Lập trình theo Modul
4 Lập trình trong VI
Trang 6Phần 1
THAO TÁC TRÊN LABVIEW
Trang 7GV: Nguyễn Thanh Tần Lập trình LabVIEW
Khởi động LabVIEW
Trang 8Giao diện labVIEW
Tham khảo Thanh menu
Tạo new VI (Blank VI)
Mở file đã lưu
Trang 9GV: Nguyễn Thanh Tần Lập trình LabVIEW
Tạo một VI mới
Trang 11GV: Nguyễn Thanh Tần Lập trình LabVIEW
Virtual Instruments (VIs)
Giao diện chính
• Controls = Inputs (Vào)
• Indicators = Outputs (Ra)
Biểu đồ khối
• Các khối chương trình của giao diện chính
• Các thành phần đi dây
Trang 12Icon/Connector pane
Icon: biểu tượng của một VI hay một subVI
Connector pane: Bản đồ chỉ thị các input và output của một VI
Icon/Connector pane rất cần thiết cho một VI cũng như subVI
Trang 13GV: Nguyễn Thanh Tần Lập trình LabVIEW
Giao diện lập trình
Trang 14Giao diện lập trình
Trang 15GV: Nguyễn Thanh Tần Lập trình LabVIEW
Thanh công cụ
Trang 16Bảng công cụ
LabVIEW tự động chọn những công cụ cần thiết
Hiển thị trên Front panel và trên biểu đồ thiết lập
hệ thống
Sử dụng các công cụ để tạo và chỉnh sửa giao dịên chính và các đối tượng của biểu đồ khối
Hiển thị bảng công cụ (Tools Palette), chọn
View»Show Tools Palette
Trang 17GV: Nguyễn Thanh Tần Lập trình LabVIEW
Front panel
Lập trình:
1 Thực hiện tạo lệnh chương trình bằng cách nhấp chuột phải (lấy các control và indicator)
Trang 18Front panel
Trang 19GV: Nguyễn Thanh Tần Lập trình LabVIEW
Front panel
-Tạo các lệnh trên FP
-Thay đổi nhãn, chỉnh text và định dạng
-Thay đổi đặc tính đối tượng
Trang 20Block diagram
Functions (Hàm) nằm trong Block Diagram
Nhằm tạo chương trình hoàn chỉnh
Ví dụ: While loop, For Loop
Webcam
Trang 21GV: Nguyễn Thanh Tần Lập trình LabVIEW
Block diagram
Trang 22Block diagram
1 Cực liên kết với FP
2 Đường lệnh: Truyền dữ liệu (Wires)
3 Các giao điểm trên mỗi đối tượng (Nodes)
4 Dạng dữ liệu của đối tượng
1
Trang 23GV: Nguyễn Thanh Tần Lập trình LabVIEW
Kiểu dữ liệu trên Block Diagram
Trang 24Block diagram
Chức năng tự sắp xếp
Nhấn tổ hợp Ctrl+B để xóa các đường dây bị đứt
Trang 25GV: Nguyễn Thanh Tần Lập trình LabVIEW
Terminals trong Block Diagram
Terminal là đối tượng tồn tại trong Block Diagram lẫn Front panel
Luôn tồn tại các đường vào ra để truyền thông giữa Front panel và Block Diagram
Thay đổi kiểu hiển thị của các terminals bằng cách
nhấp phải chuột và chọn View as Icon
Trang 27GV: Nguyễn Thanh Tần Lập trình LabVIEW
So sánh
Front panel
Chứa các biểu tượng điều
khiển và hiển thị (giao diện
Truy cập Function Palette (chuột phải)
Bao gồm các terminals, VIs, subVIs, functions, constants, Structures, wires,….
Trang 28Tìm kiếm và Help
Tìm Controls, Functions, Vis sử dụng nút Search
trên Controls và Functions palette
Chọn Help>>Show Context Help (Ctrl+H) hoặc
nhấp vào biểu tượng
Help: Search the labVIEW Help, NI Example Finder, hiển thị các thông tin cơ bản về đối tượng labVIEW
Trang 29GV: Nguyễn Thanh Tần Lập trình LabVIEW
Phần 2
KỸ THUẬT GỠ RỐI (DEBUG)
Trang 31GV: Nguyễn Thanh Tần Lập trình LabVIEW
DEBUG
1 Execution Highlighting được sử dụng để xem
các luồng dữ liệu chạy trên Block Diagram
2 Single Stepping
Single-step: chạy xuyên qua VI để xem kết quả
hoạt động của mỗi VI trên Block Diagram
Tạm dừng thực thi một subVI để chỉnh sữa giá trị
các Control và Indicator
Trang 323 Probes để quan sát các giá trị và dữ liệu tức thì để
kiểm tra lỗi ngõ ra của VI và function
4 Giữ lại giá trị trong các dây để có thể quan sát dữ
liệu trên dây sau khi thực hiện xong
5 Breakpoint: VI sẽ tạm dừng và nút Pause sẽ xuất
hiện màu đỏ tại vị trí Breakpoint
Trang 33GV: Nguyễn Thanh Tần Lập trình LabVIEW
Phần 3
LẬP TRÌNH THEO MODUL
Trang 34Một VI trong một VI khác gọi là subVI
Một subVI xem như một chương trình con trong
Trang 35GV: Nguyễn Thanh Tần Lập trình LabVIEW
subVIs
Trang 36sub VIs
Trang 37GV: Nguyễn Thanh Tần Lập trình LabVIEW
subVIs
Trang 38Icon của subVI
Ta có thể tạo và tùy chỉnh Icon bằng cách nhấp
chuột phải vào biểu tượng ở góc trên bên phải của
front panel hoặc block diagram và chọn Edit icon
Nhấp chuột phải vào biểu tượng ở góc trên bên
phải của front panel và chọn Show connector để
xác định các terminal vào/ra cho subVI
Trang 39GV: Nguyễn Thanh Tần Lập trình LabVIEW
Để sử dụng một VI giống như một subVI, ta tạo một Icon và Connector pane sau đó thiết kế Front panel
và Blockdiagram
Trang 40Tạo Icon
Icon: biểu tượng miêu tả gợi nhớ của một VI
Click chuột phải lên Icon pane (Panel hoặc
Diagram) ở góc cửa sổ và chọn Edit icon
Trang 41GV: Nguyễn Thanh Tần Lập trình LabVIEW
Tạo Connector Pane
Connector pane : bản đồ chỉ thị các input và output của một VI
Nhấp chuột phải vào biểu tượng ở góc trên bên
phải của front panel và chọn Show connector để
xác định các terminal vào ra
Chọn điểm
Trang 42Trợ giúp và phân loại đầu cuối
Phân loại đầu vào/ra:
Required — Lỗi nếu không kết nối
Recommended — Cảnh báo nếu không kết nối
Optional — Không có tác dụng nếu không kết nối
Trang 43GV: Nguyễn Thanh Tần Lập trình LabVIEW
Trợ giúp và phân loại đầu cuối
Trang 44Sử dụng subVIs
Để đặt subVI trên block diagram:
Click chọn một VI trên Function palette
Di chuyển đến VI bạn muốn sử dụng như một subVI
Double click lên nó để đặt trong Block diagram
Để đặt một VI đang mở trên Block diagram của VI đang mở khác
Click vào biểu tượng của VI bạn muốn sử dụng như một subVI
Kéo biểu tượng (Icon) cho vào Block diagram của VI khác
Trang 45GV: Nguyễn Thanh Tần Lập trình LabVIEW
Tạo một subVIChọn phần nào muốn đưa vào subVI
Chọn Edit>> Create SubVI
Trang 46Phần 4
LẬP TRÌNH TRONG VI
Trang 47GV: Nguyễn Thanh Tần Lập trình LabVIEW
Trang 49GV: Nguyễn Thanh Tần Lập trình LabVIEW
Các kiểu dữ liệu trong labVIEW
Terminals: thiết bị đầu cuối trực quan hiển thị các kiểu dữ liệu
Numeries: kiểu dữ liệu số học hiển thị các con số
hoặc biến số (chọn Representation thay đổi kiểu
dữ liệu numeric)
Trang 50Các kiểu dữ liệu trong labVIEW
Boolean: kiểu True/False, 1/0, đúng/sai
Boolean: có thể là control (Knob, công tắc, ) hay hiển thị (led,…)
Trang 51GV: Nguyễn Thanh Tần Lập trình LabVIEW
Các kiểu dữ liệu trong labVIEW
String: một chuỗi các hiển thị hoặc không hiển thị các ký tự ASCII
Trang 52Các kiểu dữ liệu trong labVIEW
Enum bao gồm một cặp giá trị, một chuỗi và một số, các Enum có thể là một danh sách được xác định bằng các giá trị
Enum liệt kê các control, constant hoặc indicator
Trang 53GV: Nguyễn Thanh Tần Lập trình LabVIEW
Các kiểu dữ liệu trong labVIEW
Dynamic: kiểu dữ liệu động để lưu trữ các thông tin được tạo ra hoặc thu thập bởi VI Express
Nếu sử dụng VI thích hợp thì labVIEW sẽ tự động chuyển đổi thành kiểu dữ liệu động
Trang 54KỸ THUẬT LẬP TRÌNH
Trang 55GV: Nguyễn Thanh Tần Lập trình LabVIEW
Thư viện trong Block Diagram
Functions\Programming:
Structures: các cấu trúc vòng lặp (while, for, case,
sequence, formula, feedback,….)
Array: các kiểu trích lọc, biến đổi, tạo mảng,…
Cluster: cấu trúc gom nhóm (bundle, unbundle,…)
Numeric: số học (toán học, random numer, hằng số…) Boolean: dạng logic (cổng, biến đổi số boolean, ….)
String: text (string constant, biến đổi chuỗi,…)
Comparision: các hàm so sánh
Timing: hàm trễ thời gian
Dialog & user : button, thông báo, giao diện,….
File I/O: đọc, ghi file trong labVIEW.
Trang 56Thư viện trong Block Diagram
Measurement I/O: DAQmx – Data Acquisiton (thu thập dữ liệu): DAQ Assistant
Instrument I/O: thu thập dữ liệu qua các giao tiếp nối tiếp,…
Mathematics: các hàm toán học, tín hiệu (sin,cos )Signal Processing: tín hiệu mô phỏng, dạng sóng, đồ thị, lọc, phổ,…
Express: Input (DAQ, scope, simulate sig), signal analysis, output, Merge signals, Arithmatic &
Trang 57GV: Nguyễn Thanh Tần Lập trình LabVIEW
Thư viện trong Front Panel
Modern:
Numeric: số control, indicator,
Boolean: logic (SW, button, led,…)
String & path: text control, text indicator, file path,
Array, matrix & cluster: mảng control, indicator, gom
nhóm,…
Graph: đồ thị (waveform chart, waveform graph, )
System / Classic: các dạng control, indicator khác: số học, boolean, text, button, SW,…
Express: numeric control, numeric indicator, tex
control, text indicator, button& Swithes, led, Graph,
Trang 58While Loop
Trang 59GV: Nguyễn Thanh Tần Lập trình LabVIEW
Trang 61GV: Nguyễn Thanh Tần Lập trình LabVIEW
While Loop - Tunnels
Tunnel – truyền dữ liệu vào ra cho vòng lặp
Dữ liệu vượt ra khỏi vòng lặp sau khi nó chấm dứtKhi một đường dữ liệu nối vào Tunnel của một vòng lặp, vòng lặp chỉ thực thi sau khi dữ liệu đến Tunnel hoặc dữ liệu xuất ra Tunnel sau khi kết thúc vòng
lặp
Trang 62While Loop – Error Checking và Error
Handling
Dùng một error cluster trong while loop để dừng
vòng lặp while loop nếu xảy ra lỗi
Trang 63GV: Nguyễn Thanh Tần Lập trình LabVIEW
For Loop
Trang 65GV: Nguyễn Thanh Tần Lập trình LabVIEW
For Loops – Conditional Terminal
Conditional Terminal: điều kiện dừng, vòng lặp For Loop sẽ dừng lại khi nhận một Boolean Conditional hoặc một lỗi xảy ra
Trang 66For Loops – Conditional Terminal
Một khối vuông màu đỏ được gắn vào giống như while loop
Điều kiện dừng nằm ở góc phải của vòng lặp
Trang 67GV: Nguyễn Thanh Tần Lập trình LabVIEW
For Loops – Numeric Conversion
8 bytes 4 bytes
Trang 68Ví dụ
Trang 69GV: Nguyễn Thanh Tần Lập trình LabVIEW
So sánh For Loop/ While Loop
Trang 70Định thời cho một VI (Timing)
Tại sao phải định thời?
Kiểm soát tần số mà tại đó vòng lặp thực hiện
Cung cấp tài nguyên cho bộ vi xử lý và thời gian để hoàn thành các nhiệm vụ khác, chẳng hạn như tác vụ xử lí
giao diện người dùng
Trang 71GV: Nguyễn Thanh Tần Lập trình LabVIEW
Timing – Wait Functions
Một Wait Function trong vòng lặp cho phép VI ở
trạng thái Sleep với thời gian được định trước
Cho phép bộ xử lý thực hiện các tác vụ khác trong quá trình chờ đợi
Sử dụng xung đồng hồ của hệ điều hành tính bằng
ms
Trang 72Thanh ghi (Shift Registers)
Thực hiện việc truyền kết quả vào/ra vòng lặp hoặc
từ vòng lặp trước sang vòng lặp sau
Trang 73GV: Nguyễn Thanh Tần Lập trình LabVIEW
Trang 74Shift Registers
Output=2 Output=4 Output=3 Output=5
Trang 75GV: Nguyễn Thanh Tần Lập trình LabVIEW
Stacked Shift Registers
Ngăn xếp thanh ghi lưu trữ nhiều giá trị từ các lần lặp trước và truyền giá trị này đến lần lặp kế tiếp
Click chuột phải vào thanh ghi dịch (Shift register)
bên trái và chọn Add Element
Trang 77GV: Nguyễn Thanh Tần Lập trình LabVIEW
Nút phản hồi
Đi dây từ đầu ra tới đầu
vào được tự động tạo ra
Trang 78Cấu trúc Case
Thực hiện và hiển thị chỉ có một trường hợp hoặc một sơ đồ con trong một thời điểm
Ngõ vào sẽ xác định cho phép trường hợp nào hay
sơ đồ nào được thực thi
Cấu trúc Case cũng tương tự như cấu trúc
If then else trong các ngôn ngữ lập trình dạng text
Trang 79GV: Nguyễn Thanh Tần Lập trình LabVIEW
Cấu trúc Case
Case Selector Label: chứa tên của trường hiện tại
Trang 80Cấu trúc Case
Đầu vào luôn có sẵn cho tất cả các trường hợp
Phải xác định mỗi đầu ra tunnel cho mỗi trường hợp
Trang 81GV: Nguyễn Thanh Tần Lập trình LabVIEW
Cấu trúc Case - Default
Nếu ngõ vào không rơi vào bất kì trường hợp nào thì cấu trúc Case sẽ thực hiện chương trình mặc định (default)
Nếu không có dây nào đưa vào thì các kiểu dữ liệu
sẽ được default theo bảng sau:
Trang 82Cấu trúc Case - Boolean
Ngõ vào là Boolean chỉ tạo ra hai trường hợp: True hoặc False
Trang 83GV: Nguyễn Thanh Tần Lập trình LabVIEW
Cấu trúc Case - Integer
Ta có mỗi trường hợp (case) cho mỗi số nguyên
Nếu số nguyên mà không có một trường hợp được xác định thì tự động chọn trường hợp mặc định
Trang 84Cấu trúc Case - String
Mỗi trường hợp tương ứng với một chuỗi nhất địnhChuỗi không xác định thì nó sẽ chọn trường hợp mặc định
Trang 85GV: Nguyễn Thanh Tần Lập trình LabVIEW
Cấu trúc Case - Enum
Cung cấp cho người dùng một danh sách các bảng ghi để chọn
Trang 86Cấu trúc Case – Error Checking và
Error Handling
Sử dụng cấu trúc Case trong VI để thực thi chương trình khi không có lỗi, và bỏ qua chương trình khi có lỗi phát sinh
Trang 87GV: Nguyễn Thanh Tần Lập trình LabVIEW
Mảng (Arrays)
Một mảng (Array) đặc trưng bởi kích thước và phần
tử trong nó
Phần tử (Element): dữ liệu nằm trong mảng
Kích thước: chiều dài và chiều rộng, cột x hàng y
Mảng có thể có một hoặc nhiều chiều và có (2^31-1)
phần tử trên mỗi chiều
Mảng sử dụng một tập hợp cùng kiểu dữ liệu và các phép toán mang tính lặp lại nhiều lần
Trang 88Tạo mảng
1 Đặt một mảng trắng (array shell) lên front panel
2 Kéo hoặc thả đối tượng hoặc phần tử vào array
shell
3 Ví dụ: mảng hằng
Trang 89GV: Nguyễn Thanh Tần Lập trình LabVIEW
Array – Auto Idexing
Khi chế độ Auto index được mở ở ngõ ra tunnel,
mảng ở ngõ ra nhận từng phần tử mới ở mỗi vòngMảng tạo ra luôn có kích thước (số phần tử) bằng với số lần thực thi của vòng lặp
Click chuột phải lên tunnel và chọn enable/disable
auto- indexing
Trang 91GV: Nguyễn Thanh Tần Lập trình LabVIEW
Tạo mảng 2D
Có thể tạo 2 vòng lặp For loop lồng vào nhau để tạo mảng 2D
Trang 92Array
Trang 93GV: Nguyễn Thanh Tần Lập trình LabVIEW
Clusters – Kiểu gom nhóm
Clusters là tập hợp nhiều kiểu dữ liệu khác nhau
Dùng hàm Bundle hoặc Unbundle để tổ hợp hoặc phân giải một Cluster
Trang 94Tạo một Cluster
Để tạo một Cluster control hoặc indicator trên front panel:
Đặt một cluster shell trên front panel
Kéo thả các đối tượng hoặc phần tử vào cluster shell
như: numeric, boolean, string, path, refnum, array,…
Trang 95GV: Nguyễn Thanh Tần Lập trình LabVIEW
Code: kiểu 32 bits Signed integer xác định mã lỗi
Source: kiểu string xác định nơi bị lỗi
Trang 96Cluster chứa nhiều kiểu dữ liệu khác nhau; còn
array chỉ chứa một kiểu dữ liệu duy nhất
Trang 97GV: Nguyễn Thanh Tần Lập trình LabVIEW
MỘT SỐ KỸ THUẬT
THÔNG DỤNG
Trang 98Lập trình phân đoạn (Sequential
Trang 99GV: Nguyễn Thanh Tần Lập trình LabVIEW
Lập trình phân đoạn (Sequential
Programming)
Sử dụng error clusters để ưu tiên quá trình thực thi
Trang 100Lập trình phân đoạn (Sequential
Trang 101GV: Nguyễn Thanh Tần Lập trình LabVIEW
Lập trình phân đoạn (Sequential
Programming)
Tránh sử dụng quá nhiều cấu trúc phân đoạn
Bạn không thể dừng thực thi một thành phần trong một đoạn
Trang 102Lập trình phân đoạn (Sequential
Programming)
Cách tốt nhất để viết VI này là đính kèm các hộp
thoại trong cấu trúc Case, dây error cluster sẽ
được nối tới bộ chọn của cấu trúc case(case
selectors)
Trang 103GV: Nguyễn Thanh Tần Lập trình LabVIEW
Trạng thái máy (State Machines)
Lập trình trạng thái(State Programming) là mẫu thiết
kế nhằm thực hiện một sơ đồ trạng thái hoặc một
lưu đồ
Khi nào sử dụng state machines?
− Thường được sử dụng để tạo các giao diện, đối với mỗi người dùng khác nhau thì sẽ có giao diện khác nhau
− Thường được sử dụng để thử nghiệm quá trình,
trong đó mỗi trạng thái đại diện mỗi phân đoạn của quá trình
Trang 104Trạng thái máy (State Machines)
•Một state machine bao gồm nhiều trạng thái và một chức năng chuyển tiếp đến các trạng thái kế tiếp
Mỗi trạng thái có thể dẫn tới một hoặc trạng thái
hoặc kết thúc quá trình thực thi
Trang 105GV: Nguyễn Thanh Tần Lập trình LabVIEW
File I/O
File I/O đọc và ghi vào một file
Một phương pháp điển hình để truy xuất file:
Trang 106 LVM— LabVIEW measurement data file (.lvm) định
dạng của LabVIEW, chứa bản tính và văn bản
TDMS—Một kiểu file Binary ñược tạo bởi các sản
Trang 107GV: Nguyễn Thanh Tần Lập trình LabVIEW
− Truy xuất các tập tin từ các ứng dụng khác
− Không quan tâm đến bộ nhớ trống, và tốc độ I/O của file
− Không nên truy xuất dạng random read hoặc
write
Trang 108High-level File I/O
High-level VIs
Để truy xuất I/O file phải qua 3 bước chung
Không hiệu quả cho việc cấu hình hoặc thiết kế cho các tính năng riêng của file
Low-level VIs
VI riêng biệt cho mỗi bước
Nếu ghi file trong một vòng lặp, sử dụng hàm low-level