You are on page 1of 26

Bài 1.

Các vòng lặp và chart


A. Lý Thuyết
1. Vòng lặp While
 Thực thi lệnh cho đến khi gặp điều kiện dừng. Trong Block Diagram, chọn Functions >
Structures, dùng trỏ chuột click và chọn đường biên vòng lặp sao cho bao quanh đoạn
code cần thực hiện.

 Vòng lặp While thực thi chương trình bên trong vòng lặp cho đến khi conditional
terminal nhận 1 giá trị Boolean nhất định nào đó. Khi điều kiện dừng là Continue If True,
vòng lặp While sẽ thực thi chương trình cho đến khi conditional terminal nhận giá trị
False. Iteration Terminal biểu thị số lần lặp lại đã thực hiện xong. Khi thực hiện vòng lặp
lần thứ nhất, Iteration Terminal trả lại giá trị là 0.

 Block diagram sau cho ta thấy, vòng lặp While thực thi chương trình cho đến khi giá trị
ngõ ra từ SubVI nhỏ hơn 10 hay điều khiển Enable có giá trị là False.
 Ngược lại, ta có thể thay đổi hoạt động của conditional terminal bằng cách click phải
chuột hay đường biên của vòng lặp While và chọn Stop If True. Vòng lặp sẽ ngừng cho
đến khi conditional terminal nhận giá trị TRUE như hình sau.
2. Waveform Chart
 Chọn Controls > Graph palette . Waveform chart cho phép hiển thị cùng lúc 1 hay
nhiều plot, một hay nhiều tín hiệu như sau:


 Chart có 3 kiểu khác nhau để hiển thị data. Click phải chuột, chọn Advanced >
Update Mode, chọn Strip Chart, Scope Chart hay Sweep Chart. Kiểu mặc định là Strip
Chart.
• Strip Chart: hiển thị dữ liệu đang running liên tục từ trái sang phải
• Scope Chart: hiển thị một phần của dữ liệu từ trái sang phải
• Sweep Chart: tương tự như Scope chỉ hiện thị một phần của dữ liệu nhưng lại
hiển thị data cũ bên phải và data mới bên trái ngăn cách với nhau bởi 1 vạch thẳng
đứng như hình sau:
 Trong Block Diagram, ta có thể nối trực tiếp ngõ ra scalar đến 1 waveform chart
như sau:

 Để hiển thị nhiều plot cùng lúc, chọn Functions > Cluster . Có thể thêm nhiều plot
bằng cách thay đổi lại kích thước của Bundle như hình sau:

3. Thanh ghi dịch (shift registers)


 Với các vòng lặp While và For, ta có thể sử dụng Shift register để truyền giá trị từ
1 vòng lặp này đến vòng lặp khác. Để tạo shift register, click phải chuột tại đường biên
của vòng lặp và chọn Add shift register. Shift register chứa 2 terminal ngược nhau trên
đường biên của vòng lặp như hình sau:
 Terminal bên phải chứa giá trị dữ liệu sau khi hoàn tất 1 vòng lặp, sau đó dữ liệu
này được dịch khi kết thúc vòng lặp và nó xuất hiện tại terminal bên trái bắt đầu 1 vòng
lặp mới như hình sau:

 Một shift register có thể lưu trữ bất kỳ loại dữ liệu nào: numeric, boolean, string,
array…. Ta có thể cấu hình shift register lưu trữ các giá trị từ các vòng lặp trước, thuận
lợi khi chúng ta cần tính trị trung bình của các điểm giá trị. Để tạo thêm các terminal cho
phép truy xuất các giá trị từ các vòng lặp trước đó, click phải chuột vào terminal bên trái
và chọn Add Element.

 Để khởi tạo thanh ghi dịch với 1 giá trị cho trước bên ngoài vòng lặp, ta nối giá trị
khởi tạo này với terminal bên trái của shift register. Giá trị khởi tạo chính là giá trị mặc
định cho loại dữ liệu của shift register. Nếu loại dữ liệu của shift register là Boolean thì
giá trị khởi tạo có giá trị là False. Nếu shift register có loại dữ liệu là numeric thì giá trị
khởi tạo là 0.
4. Vòng lặp For
Khác với vòng lặp While thực thi chương trình cho đến khi gặp gặp điều kiện dừng, vòng
lặp For thực thi chương trình với số lần lặp lại cho trước. Vòng lặp For gồm 2 terminal: count
terminal định số lần thực thi chương trình và iteration terminal biểu hiện số lần lặp đã thực hiện
xong.

B. Thực hành
Bài 1.
a. Thực hiện chương trình sử dụng vòng lặp While tạo tín hiệu ngẫu nhiên và hiển thị trên Scope
Chart như sau:
có Block diagram như sau:

 Hướng dẫn:
• Chọn Waveform Chart, click phải chuột, chọn Visible Item > Plot Legend cho
phép ẩn legend
• Chọn trục x-axis, click phải chuột, chọn Visible Scale Label để xóa label của trục
x.
• Chọn Functions > Time & Dialog, định thời gian thực hiện 1 vòng lặp.
• Functions > Numeric, chọn hàm Random number.
b. Thực hiện chương trình tạo 1 số ngẫu nhiên đến khi bằng với 1 giá trị cho trước có Front Panel
và Block Diagram như sau:
 Hướng dẫn:
• Number to match control chỉ rõ giá trị cần đạt đến
• Current Number indicator hiển thị giá trị ngẫu nhiên hiện thời
• # iteration hiển thị số lần lặp lại trước khi bằng với giá trị cần.
• Thiết lập data range cho Number to match control: 0 – 10000.
• Thiết lập độ chính xác cho các controls và indicators.
• Chạy chương trình với number to match control: 50, 100, 11000. Nhận xét?
Bài 2.
Thực hiện chương trình ứng dụng shift register như sau:
Bài 3. Thực hiện chương trình sử dụng vòng lặp For như sau:
a. Tạo 100 số ngẫu nhiên và xuất ra waveform chart.

b. Thực hiện VI biểu diễn 2 plot ngẫu nhiên trên Sweep chart: plot biểu diễn tín hiệu ngẫu nhiên
và 1 plot còn lại biểu diễn trị trung bình của 4 giá trị trước đó.
 Hướng dẫn:
• Sử dụng vòng lặp For (N = 200)
• Sử dụng 3 terminal bên trái để lấy trị trung bình của 4 giá trị dữ liệu trước đó.
• Chọn Functions > Cluster để nhóm giá trị ngẫu nhiên và trị trung bình trước khi vẽ
chúng trên cùng 1 chart.
Bài 4. Chỉ sử dụng vòng lặp While, kết hợp vòng lặp While và For sao cho chương trình dừng
lại khi nó đạt đến giá trị cho trước trên control panel hoặc khi bật nút Stop.
Bài 2. Mảng, giản đồ và cấu trúc Cluster
A. Lý thuyết
1. Array.
Mảng là tập hợp các phần tử dữ liệu cùng loại (numeric, string, Boolean, cluster). Một
mảng có thể là 1 hay nhiều chiều, mỗi chiều có đến 231 phần tử.
 Các bước tạo array control hay indicator:
 Chọn Controls > Array & Cluster
 Drag chọn đối tượng dữ liệu vào bên trong phần tử array.

Mảng 2 chiều cần 2 chỉ số hàng và cột.

 Tạo array constant:


Chọn Functions > Array. Drag các đối tượng dữ liệu với các loại khác nhau vào array shell:

2. Graph:
 Giản đồ cho phép biểu thị dữ liệu 2D hay nhiều hơn nữa. Có 2 loại là XY graph và
waveform graph.
3. Cluster
 Cluster là loại cấu trúc dữ liệu kết hợp một hay nhiều thành phần dữ liệu thành 1
loại dữ liệu mới. Cluster khác với array là các thành phần hình thành nên cluster có thể là
các loại dữ liệu khác nhau như Boolean, String, Numeric.
 Tạo Cluster control hay indicator: Controls > Array & Cluster. Tất cả các đối
tượng dữ liệu trong cùng 1 cluster phải hoàn toàn là controls hoặc hoàn toàn là indicator.
 Để tạo 1 cluster constant, chọn Functions > Cluster > Cluster Constant.
 Cần lưu ý thứ tự của các đối tượng dữ liệu trong 1 cluster. Muốn thay đổi thứ tự,
click phải chuột, chọn Reorder Controls in Cluster.
B. Thực hành
Bài 1. Thực hiện array sử dụng các vòng lặp
a. Thực hiện array 1 chiều sử dụng vòng lặp For/While sử dụng khả năng auto-indexing

b. Click phải chuột trên đường biên của vòng lặp, chọn Disable Indexing. Cho biết kết quả?
c. Tạo array 2 chiều:

Bài 2. Thực hiện một số chức năng của array


a. Chức năng Array size:

b. Chức năng Initialize array:

c. Chức năng Build array:


d. Chức năng Array subset

e. Chức năng Array index

Bài 3. Thực hiện VI sau:


Bài 4. Viết VI đảo ngược 1 mảng n phần tử tạo trước, vd: a[0] ↔ a[n-1], a[1] ↔ a[n-2], …
Bài 5. Thực hiện các giản đồ sau
a. Giản đồ trình bày 1 plot duy nhất:

b. Giản đồ trình bày nhiều plot:

c. XY graph:

Bài 6. Thực hiện VI sau:


a.
b.
Bài 3. Cấu trúc case và chuỗi
A. Lý thuyết.
1. Cấu trúc Case
Chọn Functions > Structures, Case. Tùy thuộc vào selector terminal: nếu là numeric hay
string sẽ có 231 – 1 trường hợp cho cấu trúc Case, nếu là Boolean thì có 2 trường hợp True và
False.

2. Chuỗi: Thực hiện chương trình theo trình tự


3. Formula Node: Thực hiện các biểu thức đa biến và phức tạp một cách đơn giản hơn


Chọn Functions > Structures > Formula Node. Click phải chuột trên đường biên, chọn
Add Input/ Add Output để tạo các biến đầu vào và biến ngõ ra. Các biểu thức trong Node cách
nhau bởi dấu chấm phẩy.
B. Thực hành
Bài 1. Thực hiện các VI sau
a.

b.
Bài 2. Thực hiện VI sau:
 Hướng dẫn:
• Thực hiện chương trình trong vòng lặp While trước.
• Chọn Functions > Structures > Sequence Structure bao quanh đoạn code vừa thực hiện.
• Click phải chuột vào đường biên, chọn Add Frame After.
• Chọn frame chứa vòng lặp While, click phải chuột, chọn Make This Frame >>0.
• Chọn Functions > Time & Dialog > Tick count: đọc giá trị hiện thời của đồng hồ hệ
thống.
Bài 3. Thực hiện các Formula Node như sau
a.

b. Vẽ graph biểu thị phương trình sau: y = f(x)^3 + f(x) với f(x) = tanh(x) + cos(x).
Bài 4.
a. Chỉ sử dụng 1 Formula Node để giải 2 phương trình sau:

b. Thực hiện Front Panel gồm 2 ngõ vào và 1 indicator biểu diễn kết quả các phép toán: cộng,
trừ, nhân chia từ 2 giá trị ngõ vào.
c. Thực hiện chương trình gồm 2 ngõ vào: 1 là giá trị ngưỡng và 1 input aray. Một ngõ ra biểu
diễn giá trị ngõ vào bé hơn giá trị ngưỡng cho trước.
Bài 4. String và file I/O
A. Lý thuyết
1. String
 String là chuỗi các ký tự ASCII có thể hoặc không thể hiển thị. String là kiểu dữ liệu
không phụ thuộc platform.
 String được dùng để: Tạo thông báo dạng text, chuyển dữ liệu dạng số thành chuỗi để
truyền và chuyển ngược lại khi xử lý, lưu thông tin vào file, tạo hướng dẫn hoặc nhắc nhở
trong hộp thoại.
 Trên Front Panel, String có thể xuất hiện ở Text Entry Box, Table hoặc Label
 Các kiểu hiển thị String: Normarl display, Code display, Password display và Hex
display.
 Tạo String, Controls > String & Path
2. File I/O:
Cho phép lưu trữ hay thu nhận thông tin từ file hoặc đĩa khác. Chọn Functions > File I/O.
Labview hỗ trợ rất nhiều hàm cho các thao tác file I/O. Chia làm 3 loại sau:
• Loại High-Level File Vis
• Loại Imtermediate File Functions
• Loại Advanced File Functions:
B. Thực hành
Bài 1: Thực hiện các chức năng của String:
a. String length:

b. Concatenate Strings:

c. String Subset:
d. Math Pattern:

e. Chuyển từ string sang số

f. Chuyển từ số sang string

Bài 2. Thực hiện VI sau


Bài 3. Thực hiện VI sau
a. Write function
b. Read functions:
Bài 4. Thực hiện VI sau:

 Hướng dẫn:
• Chọn Analyze > Signal Processing > Signal Generation cho Sine pattern,
Uniform White Noise.
• Chọn Functions > Array cho Transpose 2D Array
Bài 5. Thực hiện VI sau:

You might also like