Thiết bịHP34970A được gắn một đồng hồsốvạn năng để đọc dữliệu. Để
thu được dữliệu từ đồng hồnày, ta phải tạo một lần quét. Tập lệnh SCPI có hộ
trợ đối với việc thực hiện quét đểcó thể điều khiển từmáy tính. Từmáy tính có
thể đặt khoảng thời gian quét, sốlần quét, độdữchậm của mỗi kênh Các bước
thực hiện một lần quét gồm:
a) Đặt danh sách quét.
Mỗi lần quét chỉthực hiện khi có danh sách quét (scanlist). Khi quét, máy
sẽchỉthực hiện quét qua các kênh có trong danh sách quét theo thứtựtăng dần
từkhe 100 đến 300 còn các kênh khác bỏqua. Để đặt scanlist có thểdùng lệnh
sau:
ROUTe:SCAN(@scanlist)
Ví dụ: ROUT:SCAN (@101:105,112,114)
Đểhỏi vềdanh sách quét hiện tại sửdụng lệnh:
ROUTe:SCAN?
b) Đặt nguồn khởi động quét.
Mỗi khi có tín hiệu từnguồn khởi động quét thiết bịsẽthực hiện lần đảo
qua các kênh. Lệnh thực hiện của nó nhưsau:
TRIGger:SOURce {BUS|IMMediate|EXTernal|ALARm{1|2|3|4}|TIMer}
Có thểkhởi động lần đảo qua này bằng lệnh phần mềm (tham sốBUS),
thực hiện liên tục (tham sốIMM), khởi động từxung TTL bên ngoài (tham số
EXT), từ đồng hồbáo nguy (tham sốALAR) hoặc từbộ đồng hồbên trong
(tham sốTIM). Mặc định là sửdụng tham sốTIM.
Đểhỏi vềnguồn khởi động có thểdùng lệnh hỏi:
49 trang |
Chia sẻ: lethao | Lượt xem: 4730 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đề tài Hướng dẫn lập trình Labview, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
a. Nếu muốn đặt một đối tượng vào trong vòng While thì
phải kéo đối tượng vào vòng While chứ không được kéo vòng While đè lên đối
tượng. Đây cũng là nguyên tắc chung đối với các structure trong LabVIEW.
* Thanh ghi dịch.
Thanh ghi dịch (có sẵn đối với vòng While và For) chuyển các giá trị từ
một lần lặp đến lần lặp kế tiếp. Có thể tạo thanh ghi dịch bằng cách pop-up trên
viền trái hoặc phải của vòng lặp và chọn Add Shift Register.
Thanh ghi dịch bao gồm một cặp terminal đối diện nhau ở trên mặt đứng
của viền vòng lặp. Terminal bên phải lưu trữ giư liệu khi hoàn thành một lần lặp.
Dữ liệu dịch chuyển đến cuối mỗi lần lặp và chuyển sang terminal trái ở đầu của
lần lặp kế tiếp. Mỗi thanh ghi dịch có thể lưu trữ bất kì kiểu dữ liệu nào. Thanh
ghi dịch tự động thích ứng với kiểu dữ liệu của đối tượng đầu tiên nối vào thanh
ghi dịch. Hình 2-25 minh hoạ cách dùng thanh ghi dịch trong vòng lặp.
Hình 1-24.Vòng While.
VNArmy
15
Để thêm thanh ghi dịch, kích chuột phải vào terminal ở bên phải hoặc trái và
chọn Add Element.
2. Vòng For.
Vòng For cũng thực hiện lặp một đoạn mã như vòng While nhưng số lần
lặp lại được xác định trước. Vòng For cũng giống như vòng For trong các ngôn
ngữ lập trình truyền thống. Nó tương đương với đoạn giả mã sau:
For i=1 to N-1
Excute Diagram inside The Loop.
Theo đó thì vòng For gồm 2 terminal như minh hoạ ở hình 1-26. Trong
đó:
Để đặt vòng For lên Block Diagram cũng thực hiện như vòng While.
3. Case & Sequence Structure.
Cấu trúc Case và Sequence có thể có hai hoặc nhiều đồ hình con
(subdiagram) mà chỉ một trong số chúng thực hiện khi cấu trúc thực hiện. Tại
đỉnh của viền mỗi cấu trúc có một cửa sổ biểu diễn subdiagram. Cửa sổ này gồm
một mục nhận dạng đồ hình (diagram identifier) ở giữa và các nút tăng giảm ở
mỗi cạnh. Đối với cấu trúc Case, phần diagram identifier là một danh sách các
Hình 1-26. Vòng lặp For
Count terminal là một terminal vào xác định số lần lặp.
Iteration terminal là terminal ra, đếm số lần phép lặp đã thực hiện.
Hình 1-25. Cách dùng thanh ghi dịch trong vòng lặp
Trước khi bắt đầu vòng lặp Lần lặp đầu tiên
Giá trị
ban đầu
Giá trị
ban đầu
Giá trị
mới
Giá trị
mới
Giá trị
trước
Giá trị
trước
Giá trị
mới
Giá trị
mới
Lần lặp cuối cùng Lần lặp tiếp theo
VNArmy
16
giá trị để chọn subdiagram, còn với Sequence là số khung theo trình tự (0 đến
n-1). Hình 1-27 minh hoạ cấu trúc Case và Sequence.
a) Cấu trúc Case.
Cấu trúc Case có hai hoặc nhiều subdiagram (các case) mà chỉ có một
case thực hiện. Điều này phụ thuộc vào giá trị của kiểu dữ liệu được nối vào
cạnh ngoài của terminal lựa chọn hay còn gọi là selector. Hình 1-28 minh hoạ
một cấu trúc Case.
Với cấu trúc Case bạn có thể thực hiện:
- Chỉ định danh sách hoặc dãy của các giá trị selector tương ứng với mỗi
case.
- Sử dụng một số nguyên, một số Boolean, một chuỗi hay một kiểu định
nghĩa như một selector.
- Chỉ định một case mặc định (hoặc hoạt động).
- Sắp các case theo giá trị selector đầu tiên.
Để tham khảo về cấu trúc Case có thể tham khảo Online help của nó.
b) Cấu trúc Sequence.
Cấu trúc Sequence trông giống một khung phim thực hiện các subdiagram
hay các khung (frame) bên trong nó một cách tuần tự. Trong các ngôn ngữ lập
trình truyền thống, các lệnh được thực hiện theo thứ tự được viết ra nhưng trong
LabVIEW chương trình được thực hiện theo nguyên tắc dataflow tức là các
node sẽ thực hiện khi tất cả các đầu vào của nó đã sẵn sàng. Tuy nhiên thỉnh
thoảng, vẫn cần phải thực hiện một node trước một node khác. Để điều khiển
việc này G sử dụng cấu trúc Sequence như một phương thức để thực hiện các
node theo thứ tự. Trong cấu trúc này G sẽ thực hiện các node trong sơ đồ của
frame 0 rồi đến frame1, cứ thế cho tới frame cuối cùng thì dữ liệu mới được gửi
ra ngoài.
Hình 1-27. Cấu trúc Case và Sequence
Hình 1-28. Cấu trúc Case
Selection
Terminal
(Selector)
VNArmy
17
Để thêm frame vào cấu trúc, kích chuột phải vào viền của frame và chọn
Add Frame After hoặc Add Frame Before. Hình 1-29 minh hoạ cấu trúc
Sequence.
Để gửi dữ liệu từ frame này sang frame sau nó có thể sử dụng Sequence
Local. Để tạo Sequence Local kích chuột phải vào viền của frame và chọn Add
Sequence Local.
4. Formula node.
Hình 1-30 minh hoạ một node công thức trong LabVIEW. Với node công
thức, ta có thể nhập vào một hay nhiều công thức đơn giản hay phức tạp thay vì
tạo những sơ đồ con cồng kềnh. Để nhập công thức vào sử dụng Label tool. Cần
chú ý rằng cuối mỗi công thức phải có dấu chấm phảy (;). Để tạo các đầu vào
hay đầu ra cho node công thức, kích chuột phải vào biên của node và chọn Add
Input hoặc Add Ouput và đánh tên biến vào. Các biến phân biệt chữ thường
với chữ hoa.
Hình 1-29. Cấu trúc Sequence
y= 4 *x^ 2 + 3 *x+ 1 ;
yx
Hình 1-30. Formula Node.
y=x^2+x+1;
VNArmy
18
Ví dụ về sử dụng cấu trúc.
Hình 1-31 minh hoạ Front Panel và Block Diagram của một chương trình
sử dụng các phần tử điều khiển luồng trong LabVIEW.
IV. Mảng.
1. Khái niệm chung.
Mảng là tập hợp của các phần tử dữ liệu có cùng kiểu. Mảng có kích
thước có thể thay đổi. Mảng có thể có một hoặc nhiều chiều và lên đến 231-1
phần tử mỗi chiều. Có thể truy cập vào mỗi phần tử qua chỉ số của nó. Chỉ số
của các phần tử trong mảng từ 0 đến n-1 với n là số phần tử của mảng. Phần tử
đầu tiên của mảng có chỉ số 0, phần tử thứ 2 có chỉ số 1 …
Hình 1-31.
VNArmy
19
2. Tạo các mảng.
Có thể tạo mảng của các control hay indicator trên Front Panel bằng cách
lấy vỏ mảng từ Control >>Array & Cluster đặt lên Front Panel. Sau đó chọn
đối tượng cần tạo mảng (chẳng hạn kiểu Boolean) đặt vào trong vỏ mảng. Khi
đó sẽ tạo ra mảng của các đối tượng kiểu Boolean. Tương tự nếu ta chọn vỏ
mảng trong Functions >> Array rồi đặt đối tượng vào ta cũng có thể tạo ra
mảng các hằng số theo kiểu vừa chọn ở trên Block Diagram.
3. Tự động ghi chỉ mục.
Các vòng lặp For và While có thể ghi chỉ mục và tích luỹ các mảng ở biên
của nó một cách tự động. Khả năng tích luỹ này được gọi là auto-indexing. Khi
cho phép khả năng này và nối một mảng hoặc một chiều bất kì của mảng vào
đường hầm đầu vào ở biên vòng lặp thì các thành phần của mảng đó nạp vào
vòng lặp mỗi lần một thành phần, bắt đầu từ thành phần đầu tiên. Vòng lặp đặt
chỉ mục cho các phần tử vô hướng từ mảng một chiều và mảng một chiều từ
mảng hai chiều. Tương tự như đối với đường hầm đầu ra, vòng lặp sẽ tích luỹ
các phần tử vào mảng một chiều và mảng một chiều vào mảng hai chiều …
4. Sử dụng các hàm xử lí mảng.
G có nhiều hàm để thực hiện trên mảng được đặt trong
Functions>>Array. Sau đây sẽ giới thiệu một số hàm thông dụng.
a) Build Array.
Hàm Build Array có một hay nhiều đầu vào và một đầu ra. Trong đó, đầu
vào có thể là kiểu mảng hay vô hướng. Hàm Build Array gán các mảng array và
phần tử element ở đầu vào của hàm theo thứ tự từ trên xuống thành mảng array
with appended element(s). Để tạo mảng có n chiều thì các đầu vào array phải
có cùng n chiều và các phần tử element phải có n-1 chiều.
b) Initialize Array.
Tạo mảng n chiều trong đó các phần tử của mảng có cùng giá trị của đầu
vào element và chiều thứ i có số phần tử là dimention i-1.
c) Array Size.
Hàm Array Size trả lại số phần tử trong mỗi chiều của mảng.
d) Array Subset.
VNArmy
20
Hàm Array Subset được dùng để trích ra một phần của mảng hoặc ma
trận. Hàm này sẽ trả lại một phần của mảng bắt đầu từ vị trí index và bao gồm
length phần tử. Chú ý rằng chỉ mục của mảng bắt đầu từ 0.
e) Index Array.
Hàm Index Array sử dụng để truy nhập vào phần tử của mảng. Hàm này
còn được sử dụng để cắt mảng nhiều chiều thành một mảng con của mảng gốc.
Để cắt mảng thực hiện theo các bước sau:
- Kéo hàm Index Array để nó chứa thêm các đầu vào index. Số các đầu vào
này bằng với số chiều của mảng đầu vào.
- Số các chiều của phần lấy ra bằng với số các đầu vào index ở chế độ
Disable Indexing. Muốn chọn Disable Indexing thì kích chuột phải vào đầu
vào index và chọn Disable Indexing từ thực đơn pop-up. Ví dụ, muốn lấy ra
phần tử vô hướng thì không chọn cho đầu vào index nào, muốn lấy ra mảng
một chiều thì cho một đầu vào index ở chế độ Disable Indexing, muốn lấy ra
mảng hai chiều thì cho hai đầu vào index ở chế độ Disable Indexing…
- Các đầu vào index còn lại được nối với giá trị sẽ xác định giá trị của chiều
cần lấy ra. Ví dụ đối với mảng 2 chiều nếu nối đầu vào này với 2 thì sẽ lấy ra
được mảng 1 chiều là cột hoặc hàng tuỳ vào đầu vào ở chế độ Disable
Indexing là thứ nhất hay thứ hai.
Để tham khảo thêm về các hàm xử lý mảng xem thêm trong Online Help
của nó.
Ví dụ về sử dụng mảng.
Hình 1-32
VNArmy
21
Hình 1-32 minh hoạ về việc sử dụng mảng và các hàm xử lý mảng trong
LabVIEW. Hàm Build Array xây dựng một mảng 3 chiều từ 3 mảng 2 chiều.
Hàm Index Array lấy mảng 2 chiều ra từ mảng 3 chiều.
V. Cluster.
1.Khái niệm chung.
Cluster là một kiểu dữ liệu mà có thể bao gồm các phần tử có kiều dữ liệu
khác nhau. Khi dùng cluster, subVI yêu cầu số đầu nối ít hơn. Kiểu dữ liệu
cluster có thể so sánh như kiểu bản ghi trong Pascal và kiểu cấu trúc trong C.
Khác với mảng, cluster có kích thước không đổi. Cũng giống như mảng, cluster
cũng có thể là control hay indicator nhưng cluster không thể chứa cả control và
indicator. Hai cluster chỉ có thể nối với nhau khi các phần tử tương ứng có cùng
kiểu. Hai phần tử tương ứng là hai phần tử có cùng thứ tự trong cluster.
2. Tạo cluster.
Để tạo cluster vào Control>>Array & Cluster và đặt vỏ cluster lên Front
Panel. Sau đó đặt các phần tử vào cluster như đối với mảng. Thứ tự đặt phần tử
vào cluster sẽ qui định thứ tự của phần tử trong cluster. Nếu muốn thay đổi thứ
tự của cluster, kích chuột phải vào cluster và chọn Cluster Order… trong thực
đơn pop-up của nó.
3. Các hàm xử lý đối với Cluster.
Để lắp ráp cluster có 3 hàm là:Bundle và Bundle By Name để lắp ráp
cluster từ những phần tử riêng biệt còn Array To Cluster chuyển mảng thanh
cluster. Tương ứng với các hàm này là 3 hàm tháo rỡ cluster là: Unbundle và
Unbundle By Name để tháo cluster thành các phần tử riêng biệt còn Cluster To
Array để chuyển cluster của các phần tử cùng kiểu thành mảng. Có thể truy cập
vào các hàm này từ Functions >> Cluster. Có thể tham khảo thêm về các hàm
của cluster trong Online Help của nó.
VI. Graph và Chart.
1. Khái niệm chung.
Graph là một thể hiện hai chiều của một hay nhiều đồ thị. Graph nhận dữ
liệu theo khối. Chart cũng thể hiện các đồ thị nhưng chart nhận và cập nhật dữ
liệu từ điểm tới điểm hay mảng tới mảng, giữ lại một chút các điểm trước trong
vùng đệm với mục đích biểu diễn. Có 3 loại graph và 2 loại chart ở trong
Controls >> Graph là: Waveform Graph, XY Graph, Intensity Graph và
Waveform Chart, Intensity Chart.
2. Waveform Graph và XY Graph.
Waveform Graph để biểu diễn các giá trị được lấy mẫu như nhau. XY
Graph có thể biểu diễn bất kì tập các điểm nào dù nó có được lấy mẫu như nhau
không. Waveform Graph chỉ vẽ được các hàm đơn trị với các điểm được phân
bố như nhau dọc theo trục x. XY Graph có thể vẽ được các hàm đa trị. Để vẽ
được đồ thị thì bạn phải có kiểu dữ liệu riêng cho mỗi đồ thị.
a) Vẽ đồ thị đơn.
* Các kiểu dữ liệu cho Waveform Graph.
VNArmy
22
Có 2 kiểu dữ liệu cho Waveform Graph là:
1) Dữ liệu kiểu mảng của các giá trị. Graph sẽ đối xử như các điểm và
tăng lên 1 bắt đầu từ x=0.
2) Dữ liệu là một cluster gồm một giá trị khởi tạo x0, giá trị Δx và một
mảng dữ liệu y.
* Các kiểu dữ liệu cho XY Graph.
Có 2 kiểu dữ liệu cho XY Graph là:
1) Dữ liệu là một cluster chứa một mảng dữ liệu x và một mảng dữ liệu y.
2) Dữ liệu là một mảng các điểm mà mỗi điểm là một cluster của x và y.
b) Vẽ nhiều đồ thị.
* Các kiểu dữ liệu cho Waveform Graph.
Có 5 kiểu dữ liệu cho Waveform Graph là:
1) Kiểu dữ liệu là một mảng hai chiều mà mỗi hàng là một đồ thị như
trong trường hợp vẽ đơn đồ thị. Để chuyển thành mỗi cột biểu diễn
một đồ thị có thể chọn Transpose Array trong thực đơn pop-up của
graph.
2) Dữ liệu là một cluster của một giá trị khởi tạo x, một giá trị Δx và một
mảng 2 chiều y.
3) Kiểu dữ liệu thứ 3 là một mảng của các cluster. Các cluster này chứa
một mảng dữ liệu y. Mảng bên trong mô tả các điểm trong một đồ thị
còn mảng bên ngoài chứa mỗi phần tử ứng với một đồ thị. Kiểu dữ liệu
này rất hữu dụng khi số lượng các phần tử trong mỗi đồ thị là khác
nhau.
4) Kiểu dữ liệu thứ 4 là một cluster của một giá trị x, một giá trị Δx và
một mảng cluster của mảng dữ liệu y.
5) Kiểu dữ liệu thứ 5 là một mảng của các cluster. Mỗi cluster gồm có
một giá trị x, một giá trị Δx và một mảng dữ liệu y.
* Kiểu dữ liệu cho XY Graph.
Có 2 kiểu dữ liệu cho XY Graph là:
1) Mảng các cluster chứa các đồ thị mà mỗi đồ thị là mảng của các điểm.
Mỗi điểm là 1 cluster chứa một giá trị x và một giá trị y.
2) Mảng các cluster chứa các đồ thị mà mỗi đồ thị là một cluster của một
mảng x và một mảng y.
3. Waveform Chart.
Chart khác với graph ở chỗ nó giữ lại các giá trị cũ, lên đến một giá trị mà
ta có thể xác định. Giá trị mới được gắn thêm vào với giá trị cũ để bạn có thể
thấy được giá trị mới trong mạch với giá trị trước đó.
* Kiểu dữ liệu của Waveform Chart.
Có thể gửi cho chart một giá trị hay nhiều giá trị cùng lúc. Chart sẽ quản
lý mỗi giá trị như một phần của dạng sóng cách đều, với mỗi điểm cách điểm
trước đó một điểm theo trục x.
Có thể gửi một giá trị vô hướng hay một mảng cho đồ thị đơn. Chart sẽ
đối xử với chúng như giá trị mới cho đồ thị đơn.
VNArmy
23
Có nhiều cách để gửi dữ liệu cho đa đồ thị. Có thể gửi qua một hay một
mảng cluster của các số vô hướng mà mỗi số biểu diễn một điểm trên đồ thị.
Cũng có thể gửi một mảng 2 chiều cho chart trong đó mỗi hàng sẽ cập nhật cho
một đồ thị. Có thể cho mỗi cột sẽ cập nhật cho một đồ thị bằng cách chọn
Transpose Array từ thực đơn pop-up của chart.
4. Intensity Chart và Intensity Graph.
LabVIEW có hai cách để biểu diễn các mảng dữ liệu 3 chiều: Intensity
Graph và Intensity Chart. Cả hai đồ thị này cũng chấp nhận mảng 2 chiều của
các số mà mỗi số được gắn với một màu.
Ví dụ về sử dụng graph và chart.
Hình 1-33 minh hoạ việc sử dụng graph và chart trong LabVIEW. Chương trình
gửi cho chart từng giá trị một và gửi dữ liệu cho graph theo kiểu cluster của
phần tử khởi tạo X0, Delta X và mảng dữ liệu Y.
VII. Chuỗi.
1. Khái niệm chung.
Hình 1-33.
VNArmy
24
Chuỗi là một tập các kí tự ASCII. Chuỗi có ứng dụng rất rộng rãi. Trong
điều khiển thiết bị, có thể gửi dữ liệu đi như một chuỗi kí tự và sau đó lại chuyển
các chuỗi nhận về thành các số. Khi lưu trữ giữ liệu trước tiên phải chuyển dữ
liệu thành các chuỗi sau đó lưu vào tệp ASCII.
2. Tạo các control và indicator kiểu chuỗi.
Có thể tạo các control và indicator kiểu chuỗi từ Control >> String &
Table. Để nhập hay thay đỗi văn bản bên trong control kiểu chuỗi băng
Operating Tool hay Label Tool. Để tiết kiệm không gian, ta có thể cho chuỗi
hiện thanh scrollbar bằng cách chọn Show >> Scrollbar trong thực đơn pop-up
của nó. Bình thường mục này bị mờ. Để cho nó hiện lên có thể sử dụng
Positioning Tool kéo đủ dài control hay indicator ra.
3. Các hàm xử lý chuỗi.
a)Hàm Format Into String.
Hàm Format Into String chuyển đổi các tham số đầu vào thành chuỗi
result string với việc định dạng nó theo tham số format string. Tham số định
dạng có thể tham khảo trong Online help.
b) Hàm String Length.
Hàm này trả lại số kí tự của chuỗi string trong length.
c) Hàm String Subset.
Hàm String Subset trả lại chuỗi substring được cắt ra từ chuỗi string bắt
đầu từ offset và chứa length kí tự. Offset đối với kí tự đầu tiên là 0.
d) Hàm Scan From String.
Hàm này quét input string và chuyển đổi theo tham số định dạng format
string.
VNArmy
25
Ví dụ về việc sử dụng string trong LabVIEW.
VIII. Tệp.
1. Khái niệm chung.
Các hàm vào ra tệp trong G (Functions>>File I/O) là các công cụ mạnh
và linh hoạt để làm việc với các tệp. Cùng với việc đọc và ghi dữ liệu, hàm vào
ra tệp trong LabVIEW có thể di chuyển và đổi tên các tệp và các thư mục, tạo
các tệp kiểu bảng biểu ASCII, có thể đọc và ghi dữ liệu kiểu nhị phân để tăng
tốc độ và nén tối thiểu.
Có 3 loại tệp khác nhau trong LabVIEW:
- ASCII Byte Stream - Nên lưu trữ dữ liệu dạng ASCII khi muốn truy
cập nó từ gói phần mêm khác như xử lý từ hoặc chương trình bảng
biểu. Để lưu dữ liệu dạng này cần phải chuyển đổi tất cả dữ liệu thành
chuỗi ASCII.
- Tệp Datalog - Những tệp này ở dạng nhị phân mà chỉ G mới có thể
truy nhập được. Datalog tương tự như các tệp cơ sở dữ liệu vì có thể
cất nhiều kiểu dữ liệu khác nhau vào một bản ghi của tệp.
- Binary Byte Stream - Những tệp kiểu này là phương thức lưu trữ dữ
liệu nén chặt nhất và nhanh nhất. Cần chuyển đổi dữ liệu thành dạng
chuỗi nhị phân và phải biết chính xác kiểu dữ liệu nào đang đưọc sử
dụng để lưu trữ vào hay phục hồi lại từ tệp.
2. Các hàm vào ra tệp.
Hầu hết các hoạt động vào ra tệp bao gồm 3 bước cơ bản: mở một tệp
đang có hoặc tạo tệp mới; ghi vào hoặc đọc ra từ tệp; đóng tệp. Do đó LabVIEW
Hình1-34
VNArmy
26
bao gồm nhiều VI tiện ích trong Functions>>File I/O. Phần này sẽ mô tả các
tiện ích mức cao. Những hàm này được xây dựng trên các VI mức trung gian mà
kết hợp chặt chẽ việc kiểm tra và điều khiển lỗi với các hàm vào ra tệp.
a) Write Characters To File VI.
VI này ghi một chuỗi kí tự character string vào một tệp kiểu byte stream
mới hoặc nối thêm chuỗi vào một tệp đang có. VI này mở hoặc tạo tệp, ghi dữ
liệu và sau đó đóng tệp.
b) Read Characters From File VI.
VI này đọc một lượng kí tự từ một tệp kiểu byte stream bắt đầu tư cự ly
xác định. VI này mở hoặc tạo tệp và sau đó đóng tệp.
c) Read Lines From File VI.
VI này đọc một lượng xác định các dòng từ một tệp kiểu byte stream bắt
đầu tư cự ly xác định. VI này mở hoặc tạo tệp và sau đó đóng tệp.
d) Write To Spreadsheet File VI.
Chuyển đổi một mảng 1 hoặc 2 chiều của các số chính xác đơn thành
chuỗi văn bản và ghi chuỗi vào tệp kiểu byte stream hoặc nối thêm vào tệp đã
có. Có thể chuyển vị dữ liệu tuỳ ý. VI này mở hoặc tạo tệp và sau đó đóng tệp.
Có thể dùng VI này để tạo một tệp văn bản có thể đọc bởi hầu hết các chương
trình bảng tính.
e) Read From Spreadsheet File VI.
VNArmy
27
Đọc một lượng xác định các dòng hoặc cột từ một tệp văn bản kiểu số ở
cự ly xác định và chuyển dữ liệu thành mảng 2 chiều kiểu số chính xác đơn. Có
thể chuyển vị dữ liệu tuỳ ý. VI này mở tệp trước khi đọc và sau đó đóng tệp. Có
thể dùng VI này để đọc tệp bảng biểu lưu dưới dạng văn bản.
Ví dụ về sử dụng tệp trong LabVIEW.
Trong ví dụ có sử dụng hàm Write Spreadsheet File để ghi một mảng 2
chiều sang một tệp mà có thể truy nhập bởi các chương trình bảng tính như
Excel chẳng hạn. Việc này cũng tạo điều kiện cho LabVIEW giao tiếp với ngôn
ngữ khác. Hình 1-35 minh hoạ Front Panel và Block Diagram của chương trình.
Hình 1-35.
VNArmy
28
§1.2.LẬP TRÌNH NÂNG CAO TRÊN LABVIEW.
I. Biến đổi Fourier rời rạc.
1. Khái niệm chung.
Khi lấy mẫu tín hiệu, các mẫu của tín hiệu tạo thành sự biểu diễn miền
thời gian của tín hiệu. Sự biểu diễn này đưa ra các biên độ của tín hiệu ở các
khoảng thời gian nó được lấy mẫu. Tuy nhiên, trong nhiều trường hợp ta lại
quan tâm đến tần số của tín hiệu hơn là biên độ của các mẫu. Sự biểu diễn tín
hiệu theo tấn số được gọi là sự biểu diễn theo miền tần số của tín hiệu. Sự biểu
diễn miền tần số có thể cho biết bản chất bên trong của tín hiệu và hệ thống tạo
ra tín hiệu.
Để chuyển các mẫu dữ liệu từ miền thời gian sang miền tần số có thể
dùng thuật toán biến đổi Furier rời rạc - Discrete Fourier Transform (DFT).
Thuật toán DFT thiết lập mối liên quan giữa các mẫu của một tín hiệu trong
miền thời gian và sự biểu diễn của chúng trong miền tần số. Thuật toán DFT
được ứng dụng rộng rãi trong phân tích phổ, cơ học ứng dụng, viễn thông …
Biến đổi Fourier nhanh.
Thuật toán DFT xử lý N mẫu với độ phức tạp thuật toán xấp xỉ N2. Nếu N
là một số luỹ thừa của 2 (N=2m) thì độ phức tạp thuật toán xấp xỉ NlnN. Như
vậy thuật toán DFT có thể tính nhanh hơn và gọi là biến đổi nhanh Fourier - Fast
Fourier Transform (FFT).
Ưu điểm của thuật toán FFT là tốc độ và bộ nhớ vì nó có thể tính FFT
trực tiếp tức là không phải có thêm bộ nhớ đệm. Tuy nhiên, nó chỉ áp dụng được
khi độ dài của dãy là luỹ thừa của 2. Thuật toán DFT có thể áp dụng với dãy có
độ dài bất kì nhưng nó lại chậm hơn và dùng nhiều bộ nhớ hơn vì phải cấp phát
bộ đệm phụ để lưu các kết quả trung gian trong quá trình thực hiện.
Một kĩ thuật thường được dùng để làm đầu vào có số phần tử là luỹ thừa
của 2 là thêm các điểm 0 vào cuối của dãy đầu vào. Việc thêm vào này không
làm ảnh hưởng đến phổ của tín hiệu.
Thư viện phân tích của LabVIEW có 2 VI tính FFT của tín hiệu là Real
FFT VI và Complex FFT VI. Trong đó, Real FFT VI tính FFT của tín hiệu thực
còn Complex FFT VI tính giá trị của tín hiệu phức.
2. Các VI xử lí tín hiệu.
a)Các VI miền tần số.
Hình 2-1 minh hoạ các VI miền tần số. Để lấy các VI miền tần số có thể
truy nhập vào Functions>>Signal Processing>>Frequency Domain. Các VI
miền tần số gồm có:
Buneman Frequency Estimator, Power Spectrum, Cross Power, Complex
FFT, Real FFT, Inverse Real FFT, Inverse Complex FFT, STFT Spectrogram,
Fast Hilbert Transform, Inverse Fast Hilbert Transform Unevenly Sampled
Signal Spectrum, FHT, Inverse FHT,Walsh Hadamard,Walsh Hadamard
Inverse, WVD Spectrogram, Laplace Transform Real, Wavelet Transform
Daubechies4, Wavelet Transform Daubechies4 Inverse.
VNArmy
29
Để tham khảo thêm về các VI này có thể xem thêm trong Help Online
của chúng.
b) Các VI miền thời gian.
Hình 2-2 minh hoạ các VI miên thời gian. Để truy cập vào các VI này vào
Functions>>Signal Processing>>Time Domain. Các VI miền thời gian gồm
có:AutoCorrelation, Convolution, CrossCorrelation, Decimate, Deconvolution,
Derivative x(t), Integral x(t), Unwrap Phase, Y[i] = Clip, {X[i]}, Y[i] = X[i-n],
Zero Padder.
II. Các bộ lọc số- Digital Filter.
1. Giới thiệu về các bộ lọc số.
Các bộ lọc tương tự là một phần quan trong trong khi thiết kế mạch. Các
công cụ lấy mẫu và xử lý tín hiệu số hiện đại khiến nó có thể được thay thế bằng
các bộ lọc số trong các ứng dụng đòi hỏi sự linh hoạt và lập trình được. Các bộ
lọc số tiên tiến hơn những bộ lọc tương tự ở các điểm sau:
- Chúng là các phần mềm có thể lập trình.
- Chúng ổn định và có thể dự đoán được.
- Chúng không bị trôi bởi nhiệt độ và độ ẩm và không yêu cầu phải có
các thành phần chính xác.
2. Các bộ lọc IIR và FIR.
Sự phân biệt giữa IIR và FIR là dựa trên đáp ứng xung của nó. Các bộ lọc
IIR là các bộ lọc có đáp ứng xung vô hạn còn các bộ lọc FIR có đáp ứng xung
hữu hạn. Đáp ứng xung là hữu hạn hay vô hạn là dựa vào cách tính toán ở đầu
ra. Các bộ lọc FIR có đầu ra chỉ phụ thuộc vào giá trị đầu vào hiện tại còn IIR
thì không những phụ thuộc vào đầu vào hiện tại mà còn phụ thuộc vào các đầu
ra trước đó. Vì vậy bộ lọc IIR còn gọi là các bộ lọc đệ qui còn FIR là các bộ lọc
không đệ qui.
Nhược điểm của các bộ lọc IIR là đáp ứng pha của chúng là phi tuyến.
Nếu ứng dụng không yêu cầu thông tin về pha thì có thể dùng IIR.
a) Bộ lọc IIR.
Bộ lọc IIR là các bộ lọc có đáp ứng xung về lý thuyết là vô hạn. Phương
trình sai phân của chúng có dạng như sau:
Hình 2-1. Các VI miền tần số. Hình2-2. Các VI miền thời gian.
VNArmy
30
⎟⎟
⎟
⎠
⎞
⎜⎜
⎜
⎝
⎛
∑
−
= −∑
−
= −−=
1
1
1
00
1 a
N
k ki
yka
bN
j ji
xjbai
y
Bộ lọc IIR trong LabVIEW có các đặc điểm sau:
- Các chỉ số âm mà là kết quả của phương trình (*) được giả sử bằng 0 ở
lần đầu gọi VI.
- Vì trạng thái khởi tạo được giả thiết bằng 0 (với các chỉ số âm) nên quá
trình quá độ diễn ra trước khi bộ lọc ổn định sẽ tỉ lệ với bậc (order) của bộ
lọc. Sự tồn tại của đáp ứng quá độ hay thời gian giữ chậm (Delay) đối với
các bộ lọc thông cao và thông thấp bằng với bậc bộ lọc (Delay=order).
- Thời gian tồn tại của quá trình quá độ đối với bộ lọc dải thông và dải chặn
bằng 2 lần bậc của bộ lọc (Delay=2*order).
- Có thể loại bỏ đáp ứng quá độ ở lần gọi kế tiếp bằng cách đặt bộ nhớ
trạng thái hoạt động. Để thực hiện đặt init/cont control của VI bằng TRUE.
Ưu điểm của bộ lọc này là bộ lọc yêu cầu ít hệ số hơn để thực hiện. Do đó
bộ lọc hoạt động nhanh hơn và không yêu cầu vùng nhớ mở rộng.
Nhược điểm của bộ lọc là đáp ứng pha của nó là phi tuyến.
LabVIEW có các bộ lọc IIR sau:
- Các bộ lọc Butterworth: Đáp ứng tần số của bộ lọc là đáp trơn ở tất cả các
tần số và giảm đơn điệu từ tần số cắt. Bộ lọc Butterworth là trơn tối đ
Các file đính kèm theo tài liệu này:
- LAP-TRINH-LABVIEW.pdf