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ònglặp này đến vòng lặp khác.. Shift register chứa 2 terminal ngư
Trang 1
Vòng lặp While thực thi chương trình bên trong vòng lặp cho đến khi conditionalterminal 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ặplầ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ảichuộ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
Trang 2• 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:
Trang 3 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ònglặ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ònglặp và chọn Add shift register Shift register chứa 2 terminal ngược nhau trên đường biêncủ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ặpmới như hình sau:
Trang 4 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 khichú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éptruy 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ởitạ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 địnhcho 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
Trang 54 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ònglặ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: countterminal đị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ệnxong
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 ScopeChart như sau:
Trang 6có 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:
Trang 7 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:
Trang 8Bà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 đó
Trang 9 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
Trang 10Bà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ộtmả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
Trang 11
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ácloạ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ự, clickphả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ả?
Trang 12c 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:
Trang 13d Chức năng Array subset
e Chức năng Array index
Bài 3 Thực hiện VI sau:
Trang 14Bà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:
Trang 15b
Trang 16
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 haystring 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ọnAdd 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áchnhau bởi dấu chấm phẩy
B Thực hành
Bài 1 Thực hiện các VI sau
Trang 17a
b
Trang 18
Bài 2 Thực hiện VI sau:
Trang 19 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)
Trang 20Bà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ểudiễn giá trị ngõ vào bé hơn giá trị ngưỡng cho trước
Trang 21Bà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à Hexdisplay
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:
Trang 22d 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
Trang 23Bài 3 Thực hiện VI sau
a Write function
Trang 24b Read functions:
Trang 25Bài 4 Thực hiện VI sau:
Hướng dẫn:
• Chọn Analyze > Signal Processing > Signal Generation cho Sine pattern, UniformWhite Noise
• Chọn Functions > Array cho Transpose 2D Array
Bài 5 Thực hiện VI sau: