41061435-lập-trinh-lab-view

49
VNArmy http://www.dientuvietnam.net 1 LI NÓI ĐẦU Trong thi đại ngày nay, khoa hc kthut rt là phát trin. Các công chtrngười làm khoa hc rt nhiu đặc bit là công cmáy tính. Vic sdng công cmáy tính ssgim thiu được nhng công vic nng nhc không cn thiết đối vi người ksư đồng thi công cmáy tính scũng gim thiu nhng sai sca tín hiu. Đồng thi công cmáy tính scũng giúp cho người sdng có ththun tin trong vic quan sát tín hiu ca các thiết b. Hin nay, để ghép ni máy tính vi thiết bbên ngoài có thdùng rt nhiu chun quc tế như GPIB, VXI. Tuy nhiên các chun đó mc dù rt mnh nhưng li có nhược đim là giá thành rt ln. Chun ghép ni RS 232 là mt chun ghép ni tuy không hin đại nhưng li có giá thành r. Hơn na nó là mt chun dsdng và có sn trong thc tế. Hu như thiết bnào cũng được htrchun RS 232. Ngôn nglp trình LabVIEW là mt ngôn nghtrmnh trong lĩnh vc thu thp và xlý tín hiu. Thông qua ngôn nglp trình LabVIEW người làm vic có thtránh được nhng công vic không cn thiết như tchc hthng. Qua đó người dùng có thnâng cao được hiu qucông vic. Được sđộng viên hướng dn ca các thy giáo trong khoa kthut điu khin và đặc bit là shướng dn, giúp đỡ tn tình ca thy giáo-tiến skhoa hc Nguyn Công Định chúng em mnh dn nhn đề tài này vi mong mun góp mt phn công sc nhbé ca mình vào vic khai thác và tng bước làm chngôn nglp trình đồ hoLabVIEW trong lĩnh vc đo lường-điu khin. Đề tài gii quyết các vn đề sau: - Chương 1: Kthut lp trình trên LabVIEW. - Chương 2: Thiết bđo thông minh HP 34970A. - Chương 3: Xây dng các bài thí nghim trên bthí nghim máy đin. Do hn chế vthi gian và khnăng nên đề tài còn nhiu vn đề cn bxung. Em rt mong được schbo ca các thy giáo và các bn hc viên để đề tài được hoàn chnh hơn. Xin chân thành cm ơn. Các tác gi.

Upload: nhan-bui

Post on 05-Dec-2014

66 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 1

LỜI NÓI ĐẦU

Trong thời đại ngày nay, khoa học kỹ thuật rất là phát triển. Các công cụ hỗ trợ người làm khoa học rất nhiều đặc biệt là công cụ máy tính. Việc sử dụng công cụ máy tính số sẽ giảm thiểu được những công việc nặng nhọc không cần thiết đối với người kỹ sư đồng thời công cụ máy tính số cũng giảm thiểu những sai số của tín hiệu. Đồng thời công cụ máy tính số cũng giúp cho người sử dụng có thể thuận tiện trong việc quan sát tín hiệu của các thiết bị.

Hiện nay, để ghép nối máy tính với thiết bị bên ngoài có thể dùng rất nhiều chuẩn quốc tế như GPIB, VXI. Tuy nhiên các chuẩn đó mặc dù rất mạnh nhưng lại có nhược điểm là giá thành rất lớn. Chuẩn ghép nối RS 232 là một chuẩn ghép nối tuy không hiện đại nhưng lại có giá thành rẻ. Hơn nữa nó là một chuẩn dễ sử dụng và có sẵn trong thực tế. Hầu như thiết bị nào cũng được hỗ trợ chuẩn RS 232.

Ngôn ngữ lập trình LabVIEW là một ngôn ngữ hỗ trợ mạnh trong lĩnh vực thu thập và xử lý tín hiệu. Thông qua ngôn ngữ lập trình LabVIEW người làm việc có thể tránh được những công việc không cần thiết như tổ chức hệ thống. Qua đó người dùng có thể nâng cao được hiệu quả công việc.

Được sự động viên hướng dẫn của các thầy giáo trong khoa kỹ thuật điều khiển và đặc biệt là sự hướng dẫn, giúp đỡ tận tình của thầy giáo-tiến sỹ khoa học Nguyễn Công Định chúng em mạnh dạn nhận đề tài này với mong muốn góp một phần công sức nhỏ bé của mình vào việc khai thác và từng bước làm chủ ngôn ngữ lập trình đồ hoạ LabVIEW trong lĩnh vực đo lường-điều khiển.

Đề tài giải quyết các vấn đề sau:

- Chương 1: Kỹ thuật lập trình trên LabVIEW.

- Chương 2: Thiết bị đo thông minh HP 34970A.

- Chương 3: Xây dựng các bài thí nghiệm trên bệ thí nghiệm máy điện.

Do hạn chế về thời gian và khả năng nên đề tài còn nhiều vấn đề cần bổ xung. Em rất mong được sự chỉ bảo của các thầy giáo và các bạn học viên để đề tài được hoàn chỉnh hơn.

Xin chân thành cảm ơn.

Các tác giả.

Page 2: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 2

Chương 1 GIỚI THIỆU VỀ NGÔN NGỮ LẬP TRÌNH LABVIEW §1.1. KỸ THUẬT LẬP TRÌNH CƠ BẢN TRÊN LABVIEW.

I. LabVIEW là gì? LabVIEW (Laboratory Virtual Instrument Engineering Workbench) là một môi trường phát triển chương trình, rất giống môi trường phát triển của C hay Basic và National Instrument Lab Windows/CVI. LabVIEW khác với các ứng dụng đó ở một điểm rất quan trọng. Hệ thống lập trình khác sử dụng ngôn ngữ text-based để tạo các dòng mã lệnh, trong khi LabVIEW sử dụng ngôn ngữ lập trình đồ hoạ,G, để tạo các chương trình dưới dạng sơ đồ khối. II. Thế mạnh của LabVIEW. LabVIEW, giống như C hay Basic, là một hệ thống lập trình đa dụng với các thư viện lớn chứa các hàm cho bất kỳ nhiệm vụ lập trình nào. LabVIEW cũng chứa các công cụ phát triển chương trình thông thường nên bạn có thể đặt điểm gãy (break point), làm sống động quá trình thực hiện (highlight excution) để xem dữ liệu truyền trong chương trình như thế nào và thực hiện từng bước chương trình để tiến hành gỡ rối và phát triển chương trình dễ dàng hơn. LabVIEW cung cấp khả năng xây dựng những chương trình cho các hệ thống khoa học và kĩ thuật. LabVIEW cung cấp cho bạn một ngôn ngữ lập trình linh hoạt và có tính khả thi. LabVIEW cung cấp cách nhanh hơn để lập trình với các thiết bị và các hệ thống thu thập dữ liệu. Với việc dùng LabVIEW, bạn có giảm bớt thời gian phát triển hệ thống và tăng hiệu suất làm việc. LabVIEW cung cấp những công cụ mạnh cho việc ghép nối với các các thiết bị vật lý bên ngoài mà không phải qua phần thiết kế hệ thống một cách phức tạp như trong các ngôn ngữ khác. LabVIEW là ngôn ngữ lập trình đồ hoạ nên rất trực quan và dễ sử dụng. LabVIEW chứa các thư viện cho việc thu nhận dữ liệu, điều khiển thiết bị GPIB và Serial, phân tích dữ liệu, biểu diễn dữ liệu và cất giữ dữ liệu. Với một thư viện phong phú cho các hệ thống điều khiển, LabVIEW có thể ứng dụng mạnh trong việc lập trình điều khiển hệ thống. III. Các thành phần của LabVIEW. LabVIEW là một hệ thống lập trình đa dụng nhưng nó còn chứa các thư viện của các hàm và các công cụ phát triển được thiết kế đặc biệt cho việc thu nhận dữ liệu vầ điều khiển thiết bị. Chương trình LabVIEW được gọi là các thiết bị ảo (Virtual Instrument-VI) bởi vì sự hiển thị và vận hành có thể làm giả các thiết bị thực. Tuy nhiên, các VI tương tự như các hàm của các ngôn ngữ lập trình thông thường. Một VI bao gồm một giao diện với người sử dụng, một đồ hình truyền dữ liệu mà phục vụ như là mã nguồn và biểu tượng kết nối ( icon conection) để cho phép có thể gọi được từ các VI cấp cao. Chi tiết hơn các VI có cấu trúc như sau:

Page 3: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 3

• Giao diện với người dùng của một VI được gọi là Front Panel bởi vì nó mô phỏng panel của một thiết bị vật lý. Front Panel có thể bao gồm các nút bấm, nút xoay, đồ thị và các bộ điều khiển (control) và chỉ thị (Indicator)

• VI nhận các lệnh từ Block Diagram mà bạn tạo nên từ ngôn ngữ G. Block Diagram là sự giải quyết bằng hình ảnh cho một vấn đề lập trình. Block Diagram cũng là mã nguồn cho VI của ban.

• VI có tính phân cấp và modul. Bạn có thể dùng chúng như là những VI cấp cao hay như những chương trình con cùng với những chương trình khác. Một VI được gắn với một VI khác được gọi là subVI. Icon và conector của một VI làm việc như một danh sách các tham số đồ hoạ để các VI khác có thể gửi dữ liệu đến subVI. Với những đặc điểm trên, LabVIEW khuyến khích và gắn với khái niệm

lập trình modul. Bạn chia một ứng dụng thành một loạt các nhiệm vụ con đơn giản. Xây dựng VI để hoàn thành mỗi nhiệm vụ con và sau đó tổ hợp những VI đó trên Block Diagram khác để hoàn thành nhiệm vụ lớn. Cuối cùng, VI mức cao nhất bao gồm một sự tập hợp lại các subVI mà biểu diễn hàm ứng dụng.

Vì bạn có thể thực hiện mỗi subVI bởi chính nó, riêng rẽ với phần còn lại của ứng dụng, nên việc gỡ rối có thể trở nên dễ dàng hơn. Hơn nữa, nhiều subVI cấp thấp thường thực thi những nhiệm vụ mà chung cho nhiều ứng dụng nên bạn có thể phát triển một tập đặc biệt của các subVI cho ứng dụng mà bạn xây dựng. Phần sau đây sẽ giải thích rõ hơn về Front Panel, Block Diagram, icon, conector và các đặc điểm liên quan khác. 1. Front Panel

Hình 1-1 minh hoạ một Front Panel trong LabVIEW. Giao diện sử dụng của một subVI thường giống giao diện sử dụng của các thiết bị vật lí. Nó được gọi là Front Panel.

Front Panel chủ yếu là một tổ hợp các control và indicator. Control mô

phỏng các thiết bị đầu vào của máy và cung cấp dữ liệu cho Block Diagram. Indicator mô phỏng các thiết bị đầu ra của máy để hiển thị các dữ liệu thu được hay được phát ra từ Block Diagram của VI.

Có thể đặt các control hay indicator lên Front Panel thông qua bảng động Control.

Hình 1-1. Front Panel.

Page 4: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 4

2. Block Diagram. Bạn có thể chuyển từ Front Panel sang Block Diagram bằng cách chọn

Windows>>Show diagram từ bảng thực đơn. Cửa sổ Diagram nắm giữ Block Diagram của VI là mã nguồn đồ hoạ cho VI. Xây dựng Block Diagram bằng cách nối với nhau các đối tượng gửi hay nhận dữ liệu, thực hiện các hàm cụ thể, điều khiển quá trình truyền. Phần Diagram thể hiện những đối tượng chính của chương trình - các node, các terminal, các dây nối. Hình 1-2 minh hoạ một Block Diagram.

• Terminal Các terminal là các vùng trên một VI hay các hàm mà dữ liệu gửi qua đó. Terminal tương tự như các tham số trong ngôn ngữ lập trình text_based. Khi bạn đặt một control hay indicator lên Front Panel, một terminal tương ứng sẽ tạo trên Block Diagram. Bạn không thể xoá một terminal mà thuộc một control hay indicator. Terminal chỉ biến mất khi bạn xoá control hay indicator của nó trên Panel. Các terminal mà tạo ra dữ liệu được tham chiếu như các terminal nguồn dữ liệu và các terminal mà nhận dữ liệu là các terminal đích dữ liệu.

• Node (Nút). Node là các phần tử thực hiện chương trình. Chúng tương tự như các câu lệnh, các toán tử, các hàm và các thủ tục trong các ngôn ngữ thông thường. G có một thư viện lớn của các hàm toán học so sánh, chuyển đổi, vào ra v.v... Có sáu kiểu node chính là hàm, subVI, cấu trúc, Code Interface Node (CIN) , node công thức và Attibute Node.

• Wire ( Dây nối). Wire là đường dẫn dữ liệu giữa các terminal nguồn và terminal đích. Bạn không thể nối một terminal nguồn với một terminal nguồn cũng như không được nối một terminal đích với một terminal đích khác. Tuy nhiên một terminal nguồn có thể nối với một vài terminal đích. Mỗi đường dẫn có một kiểu và màu riêng, phụ thuộc vào giá trị mà truyền qua dây nối.

• Data flow ( Luồng dữ liệu). Data flow là nguyên lý mà điều khiển sự thực hiện chương trình của G. Một node thực hiện khi tất cả các đầu vào dữ liệu đã đến; node đó lại cung cấp dữ liệu tất cả các đàu ra của nó khi nó kết thúc việc thực hiện; dữ liệu

Hình 1-2. Block Diagram.

Page 5: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 5

được gửi ngay lập tức từ nguồn tới đích. Data flow trái ngược với phương thức truyền trong các ngôn ngữ truyền thống. Trong các ngôn ngữ đó, các lẹnh được thực hiện tuần tự theo thứ tự mà chúng được viết

3. Icon và connector. Khi một icon của một VI được dặt lên diagram của một VI khác, nó trở

thành một subVI. Các control và indicator của một subVI nhận dữ liệu và trả lại dữ liệu cho diagram của VI gọi.

Connector là một tập hợp các terminal mà tương ứng với các control và indicator của subVI. Icon hoặc là biểu diễn bằng hình ảnh mục đích của VI hoặc là sự mô tả văn bản của VI hay các terminal của nó.

Mỗi VI đều có một icon mặc định ở góc phải phía trên cửa sổ Front Panel và Block Diagram. Hình sau minh hoạ một icon mặc định.

Tất cả các VI đều có connector mà có thể được truy nhập vào bằng cách chọn Show connector từ menu pop-up ở ô icon trên Front Panel. Khi bạn gọi connector lần đầu tiên, bạn sẽ thấy một mẫu connector. Bạn có thể chọn mẫu connector khác nếu bạn muốn. Thông thường thì connector có một terminal cho mỗi control và indicator trên Front Panel nhưng bạn có thể gán lên đến 28 terminal.

4. Các bảng động trong LabVIEW. * Bảng Control.

Bảng Control là bảng động chỉ có đối với Front Panel. Để đặt các control và indicator lên Front Panel có thể dùng bảng Control. Nếu bảng không hiện có thể chọn Windows>>Show Control palette hoặc là kích chuột phải lên một vùng trống trên Front Panel. Hình 1-4 minh hoạ bảng động Control. Bảng Control gồm các control và indicator sau: - Kiểu số học (hình 1-5) bao gồm các control và indicator kiểu số, kiểu slide,

kiểu rotate, kiểu ring …

Hình 1-3 Icon mặc định.

Hình 1-4. Bảng Controls.

Page 6: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 6

Hình 1-7. String Hình 1-8. List & Ring

Hình 1-9. Array & Cluster

Hình 1-10. Graph & Chart.

- Kiểu Boolean (hình 1-6) mô phỏng các nút có hai chế độ như các nút bật/tắt, các chuyển mạch và mô phỏng các đèn LED và các bóng đèn.

- Kiểu chuỗi (hình 1-7) chứa các control, indicator và constant kiểu chuỗi. - List và ring (hình 1-8). - Mảng và cluster (hình 1-9) chứa các vỏ kiểu mảng và cluster, các indicator

báo lỗi. - Graph và chart (hình 1-10) chứa các indicator để hiển thị dữ liệu dưới dạng

đồ thị. - Path và refnum (hình 1-11). - Active X (hình 1-12).

Hình 1-5. Numeric Hình 1-6. Boolean.

Hình 1-11. Path & Refnum.

Hình 1-12. ActiveX.

Page 7: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 7

* Bảng Functions.

Để đặt các hàm và các node của ngôn ngữ lập trình G lên Block Diagram bạn có thể chọn chúng từ bảng Functions. Để cho hiện bảng Functions chọn Windows>>Show Function palette. Một cách khác để chọn phần tử của bảng Functions là bấm chuột phải lên vùng trống ở trên Block Diagram. Hình 1-13 minh hoạ bảng Functions trong LabVIEW.

Bảng Functions chứa các hàm và các node sau: - Numeric (hình 1-14) chứa các hàm làm việc trên các phần tử kiểu numeric.

Ngoài ra nó còn chứa các hằng số như pi, e… - Boolean (hình 1-15) chứa các hàm làm việc trên các phần tử kiểu boolean

như and, or, xor, not… - Các hàm quan hệ hình (1-16) như lớn hơn, nhỏ hơn, bằng, khác… - Structure (hình 1-17) chứa các phần tử điều khiển luồng dữ liệu như vòng

for, while, cấu trúc case, sequence và formula node.

Hình 1-13. Bảng Functions.

Hình 1-14. Numeric.

Hình 1-16. Hàm quan hệ.

Hình 1-15. Hàm logic.

Hình 1-17. Structure.

Page 8: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 8

Ngoài ra bảng Functions còn chứa các hàm làm việc trên dữ liệu như các hàm xử lý mảng (Functions>>Array), xử lý cluster (Functions>>Cluster), xử lý chuỗi (Functions>>String), vào ra với tệp (Functions>>I/O File) và các thư viện xử lý đa dạng như thư viện xử lý tín hiệu (Functions>>Signal Processing), toán học (Functions>>Mathematics), vào ra với thiết bị (Functions>> Instrument I/O)… * Bảng Tools. Mỗi công cụ trong bảng là một trạng thái hoạt động đặc biệt của con trỏ chuột. Các công cụ này được dùng để xác định hoạt động xảy ra khi kích chuột trên Front Panel hay Block Diagram. Để lấy một công cụ, kích chuột vào công cụ đó ở trên bảng công cụ Tools Palette. Bảng công cụ có cho cả Front Panel và Block Diagram. Nếu nó đang ẩn thì có thể cho hiện bằng cách chọn Windows>>Show Tools Palette. Các công cụ trong bảng bao gồm:

Hình 1-18. Bảng Tools.

Operating tool - thay đổi giá trị của control và chọn phần văn bản gắn với control.

Labeling tool - soạn thảo phần văn bản và tạo các label tự do.

Wiring tool - nối các đối tượng với nhau trên Block Diagram.

Positioning tool - chọn vị trí, thay đổi kích thước và chọn đối tượng.

Object Pop-up Menu tool - mở thực đơn pop-up của một đối tượng.

Scroll tool - cuộn cửa sổ mà không cần thanh cuốn.

Breakpoint tool - đặt điểm gãy trên các VI, hàm, vòng lặp, cấu trúc sequence và case.

Probe tool - tạo các điểm dò trên các dây nối.

Color Copy tool - sao chép màu để dán.

Color tool - đặt màu và màu nền.

Page 9: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 9

5. Các bước soạn thảo một VI trong LabVIEW. 1)Tạo giao diện sử dụng. Có thể tạo giao diện sử dụng đồ hoạ trên Front Panel bằng cách lấy các control và indicator từ bảng Control. a) Tạo một VI mới bằng cách chọn New VI từ hộp hội thoại LabVIEW hoặc từ

File>>New. b) Đặt các control và indicator lên Front Panel để tạo giao diện sử dụng cho

chương trình. 2) Tạo mã nguồn và chạy chương trình. Có thể tạo mã nguồn cho chương trình bằng cách xây dựng Block Diagram cho VI. Để tạo các phần tử của Block Diagram có thể dùng bảng Functions. a) Chuyển từ Front Panel sang Block Diagram bằng cách chọn trong

Windows>> Show Diagram. b) Lấy các đối tượng cần thiết từ trong bảng Functions để đặt lên Block

Diagram. c) Sử dụng công cụ Wiring tool để nối các phần tử trên Block Diagram với

nhau. Việc này sẽ xác định data flow của chương trình. d) Quay trở lại Front Panel và kích chuột vào nút Run trên thanh công cụ. Việc

dừng chương trình có thể lập trình hoặc kích vào nút Abort Excution trên thanh công cụ.

3) Lưu chương trình vào đĩa. Lưu chương trình vào đĩa bằng cách vào mục Save hoặc Save as trong thực đơn File. Ví dụ soạn thảo một VI đơn giản trong LabVIEW. Bước 1: Thiết kế giao diện sử dụng. a) Mở một VI mới bằng cách chọn New VI từ hộp hội thoại hoặc chọn File>>

New VI. b) Đặt các control và indicator lên Front Panel.

- Chọn Tank từ Control>>Numeric và đặt lên Front Panel. - Đánh Volume vào hộp label text và kích chuột vào bất kì đâu trên Front

Panel. - Thay đổi thang đo của Tank từ 0 đến 1000 bằng cách: + Sử dụng công cụ label kích vào 10.00 ở trên Tank để làm nổi nó. + Đánh 1000 vào kích ở vị trí bất kì trên Front Panel. Thang đo sẽ tự động

thay đổi mức tăng trung gian. - Đặt Thermometer cũng từ Control >>Numeric lên Front Panel. Đặt tên

nó Temp và thay đổi thang đo từ 0 đến 100.

Page 10: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 10Hình 1-20. Sơ đồ khối đơn giản.

Bây giờ giao diện sử dụng của bạn như hình 1-19.

Bước 2: Tạo mã nguồn cho chương trình. a) Đặt các đối tượng sau lên Block Diagram.

b) Sử dụng công cụ Wiring để nối các đối tượng theo như sơ đồ khối hình 1-20. c) Ấn vào nút Run trên thanh công cụ để thực hiện chương trình.

Quay về Front Panel để xem kết quả. Và ấn vào nút Abort Excution để dừng

chương trình.

Bước3: Vào thực đơn File>>Save as để lưu chương trình với tên Temp & Vol.vi. Để đóng VI chọn File>>Close.

Hình 1-19. Giao diện sử dụng chương trình.

Process Monitor (lấy từ Functions>>Select a VI và vào thư mục

LabVIEW \Activity) mô phỏng việc đọc dung tích và nhiệt độ từ sensor.

Random Number (lấy từ Functions>>Numeric) tạo ra các số ngẫu

nhiên giữa 0 và 1.

Hàm nhân (lấy từ Functions>> Numeric) thực hiện nhân hai số và trả lại

kết quả. Chương trình này sử dụng 2 hàm nhân. Có thể tạo ra 2 hàm này

bằng cách lấy 2 lần từ bảng hoặc sao chép từ một hàm và dán để tạo ra

Hằng số (lấy từ Functions>>Numeric): tạo ra 2 cái. Sử dụng công cụ label

để thay đổi giá trị của nó thành 10.00.

Page 11: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 11

6. Chương trình con trong LabVIEW. a) Thiết kế phân cấp. Các chương trình con trong LabVIEW cũng giống như các chương trình con trong các ngôn ngữ lập trình khác. Nó là một VI được dùng trong Block Diagram của một VI khác được gọi là subVI.

Khi bạn tạo một subVI là bạn đang ở VI mức cao nhất và định nghĩa các đầu vào và đầu ra cho ứng dụng. Sau đó, cấu trúc các subVI để thực hiện các hoạt động cần thiết trên dữ liệu khi nó chảy trong Block Diagram. Nếu một Block Diagram có một số lượng lớn các biểu tượng, tập hợp chúng vào một VI cấp thấp để Block Diagram đơn giản hơn. Sự tiếp cận theo module khiến các ứng dụng dễ dàng gỡ rối, hiểu và bảo dưỡng. b) Tạo subVI từ VI.

Để gọi một VI từ một Block Diagram của một VI khác, trước hết cần phải tạo biểu tượng và đầu nối cho nó. * Tạo biểu tượng của VI.

Mở VI mà sẽ tạo thành subVI cho VI khác. Để tạo biểu tượng của VI cần cho hiện cửa sổ Icon Editor. Có thể gọi cửa

sổ này bằng cách kích đúp chuột vào ô biểu tượng ở góc bên phải hoặc kích chuột phải và chọn mục Edit Icon... Khi đó cửa sổ sẽ hiện lên như hình 1-21.

Sử dụng các công cụ ở bên trái biểu tượng để tạo biểu tượng theo ý muốn. Có thể chọn OK để lưu biểu tượng và quay về Front Panel hay Cancel để quay về Front Panel mà không lưu bất cứ thay đổi nào. * Chọn mẫu đầu nối.

Hình 1-21. Cửa sổ Edit Icon.

Hình 1-22. Thực đơn Pattern.

Page 12: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 12

Để có thể nhận hay truyền dữ liệu bạn cần phải có các conector. LabVIEW có rất nhiều mẫu conector mà có thể chọn bằng cách pop-up trên conector và chọn Paterns từ thực đơn pop-up sẽ được một bảng các mẫu của conector như hình 1-22.

Nếu muốn thêm một terminal vào mẫu, đưa con trỏ đến chỗ muốn thêm, pop-up và chọn Add Terminal. Nếu muốn bỏ một terminal, pop-up trên terminal muốn bỏ và chọn Remove Terminal. Nếu muốn thay đổi sự sắp xếp không gian thì có thể chọn một trong các lệnh sau: Flip Horizontal, Flip Vertical hoặc Rotage 90 degrees. * Gán các terminal cho các control và indicator. Bước 1: Kích chuột vào một terminal của conector. Công cụ tự động chuyển thành công cụ Wire. Terminal chuyển thành màu đen. Bước 2: Kích chuột vào control hay indicator trên Front Panel tương ứng với terminal đã chọn ở bước trước. Một đường nét đứt chuyển động bao quanh control hay indicator (như hình 1-23) để báo rằng nó đang được chọn.

Bước 3: Kích chuột vào một vùng trống trên Front Panel. Terminal được chọn chuyển thành màu theo kiểu dữ liệu của control hay indicator được nối thông báo rằng terminal đã được gán, nếu terminal là màu trắng tức là đã nối sai. Bước 4: Lặp lại bước 1 và 2 với các control và indicator bạn muốn nối. c) Tạo các subVI từ một phần của VI.

Có thể chuyển đổi một phần của một VI thành một SubVI để gọi từ VI khác. Chọn một phần của VI và chọn Edit>>Creat SubVI. Các control và indicator được tự động tạo cho SubVI mới, SubVI được tự động nối với các dây nối đang có và một biểu tượng thay thế cho phần được chọn của Block Diagram của VI gốc. Tạo một SubVI từ một phần của VI giống như việc bỏ một phần của SubVI và thay thế bằng một SubVI ngoại trừ các hoạt động sau:

- Không một terminal của Front Panel nào mà được chứa trong phần đó bị bỏ đi khỏi VI gọi. Thay vào đó, các terminal đó được giữ lại và được nối với SubVI. - Tất cả các thuộc tính trong phần chọn giữ lại trong VI gọi và được nối với SubVI. Những thuộc tính được chọn bị thay thế bởi các terminal của Front Panel trong SubVI mà biểu diễn như các kênh cho việc truyền giá trị của một thuộc tính, bên trong hoặc ngoài của SubVI. - Khi phần chọn chứa một biến địa phương,nó được thay thế bởi terminal của Front Panel trong SubVI. Biến địa phương được giữ lại trên VI gọi và

Hình 1-23. Chọn indicator cho subVI.

Page 13: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 13

được nối với SubVI. Khi có nhiều hơn một trường hợp của các biến địa phương giống nhau, trường hợp đầu trở thành terminal của Front Panel và phần còn lại trở thành biến địa phương trong SubVI. Chỉ có một trường hợp của biến địa phương được giữ lại trên VI gọi còn phần còn lại bị bỏ đi và được chuyển đến SubVI. - Bởi các biến địa phương có thể cả đọc và ghi từ một terminal của Front Panel, khi các trường hợp của các biến địa phương cả đọc và ghi được chọn, hai đối tượng của Front Panel được tạo - một gửi giá trị của biến địa phương vào SubVI, một gửi giá trị của biến địa phương ra khỏi SubVI. Các terminal của Front Panel được tạo để biểu diễn biến địa phương đọc (ghi) sẽ có hậu tố read (write) thêm vào tên của nó.

7. Thực hiện gỡ rối trong LabVIEW. Một VI không thể biên dịch hoặc chạy nếu nó bị gãy. Bình thường, VI bị

gãy trong khi đang tạo hoặc soạn nó cho tới khi nối tất cả các biểu tượng trong Block Diagram. Nếu nó bị gãy khi đã hoàn thàn, thử chọn Remove Bad Wires từ thực đơn Edit. Thông thường việc này sữa chữa một VI gãy.

Khi VI không thể thực hiện được, một mũi tên gãy hiện lên thay cho nút Run. Để liệt kê các lỗi, kích chuột vào nút Run gãy. Kích vào một trong các lỗi được liệt kê và sau đó kích vào Find để hiện đối tượng hoặc terminal mà đã thông báo lỗi.

Khi VI thực hiện thanh công cụ sẽ như hình trên. Với mục đích gỡ rối, bạn có thể muốn thực hiện Block Diagram từng node một. Việc này gọi là single-stepping. Để cho khả năng chạy từng bước, kích vào nút StepInfo hay StepOver. Nếu node là một cấu trúc hoặc VI thì có thể chọn StepOver để thực hiện node nhưng không thực hiện từng bước qua node. Để thực hiện từng bước qua node là cấu trúc hay SubVI chọn nút StepInfo.

Việc thực hiện từng bước thường đi với việc sử dụng Highlight Excution để quan sát sự chảy của dữ liệu trong Block Diagram. Sử dụng Highlight Excution bằng cách kích chuột vào nút Highlight Excution. Sử dụng Highlight Excution khiến cho VI trông sống động hơn. Một cách nữa để xem dữ liệu trong Block Diagram là sử dụng điểm dò (Probe). Có thể đặt điểm dò ở dây nối đầu ra của một node nhờ công cụ Probe trong bảng công cụ Tools hoặc kích chuột phải trên dây nối tại điểm muốn đặt điểm dò và chọn Probe từ thực đơn pop-up. IV. Các cấu trúc trong LabVIEW.

Cấu trúc là các phần tử điều khiển chương trình. Các cấu trúc điều khiển dòng dữ liệu của một VI. G có năm cấu trúc: While loop, For loop, Case, Sequence và Formula Node. 1. Vòng While. Vòng While là một cấu trúc mà lặp lại một phần của mã cho tới khi một điều kiện được gặp. Nó có thể tương đương như vòng Do-While hoặc Repeat Until trong các ngôn ngữ lập trình truyền thống. Vòng While là một hộp có kích thước thay đổi được. Nó thực hiện đoạn mã ở trong nó cho tới khi giá trị kiểu Boolean được gửi đến terminal điều kiện (một terminal đầu vào) là False. VI

Page 14: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 14

kiểm tra điều kiện ở cuối mỗi lần lặp, do đó vòng While luôn thực hiện ít nhất một lần. Terminal lần lặp là một terminal đầu ra, nó gửi ra số lần vòng lặp đã thực. Tuy nhiên vòng lặp luôn được đếm từ 0 nên nếu vòng lặp chỉ thực hiện một lần, đầu terminal lặp lại sẽ xuất ra giá trị 0. Vòng While tương đương đoạn giả mã sau: Do Execute Diagram inside the Loop (which sets the condition) While Condition is true. Để đặt vòng While lên Block Diagram vào Function>>Structures. Vòng While không đặt lên Block Diagram ngay mà thay vào đó ta có thể đặt vị trí và thay đổi kích thước của nó. Để thực hiện, kích chuột vào khu vực phía trên bên trái của những terminal mà ta muốn đặt trong vòng. Sau đó kéo chuột để nó bao các terminal đó và thả ra. 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.

Page 15: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 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

Page 16: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 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)

Page 17: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 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;

Page 18: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 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.

Page 19: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 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.

Page 20: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 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

Page 21: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 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.

Page 22: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 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.

Page 23: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 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.

Page 24: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 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.

Page 25: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 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

Page 26: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 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.

Page 27: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 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.

Page 28: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 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.

Page 29: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 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.

Page 30: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 30

⎟⎟⎟

⎜⎜⎜

⎛∑−

= −∑−

=−−=

1

1

1

00

1 aN

k kiykabN

j jixjbaiy

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 đa - đáp ứng lý tưởng bằng 1 ở dải thông và bằng 0 ở dải chặn. Ưu điểm của nó là có đáp ứng tần số trơn và giảm đơn điệu. Sau khi đặt tần số cắt, LabVIEW sẽ đặt độ dốc của quá trình quá độ tỉ lệ với bậc của bộ lọc. Bộ lọc bậc càng cao thì càng tiến tới bộ lọc thông thấp lí tưởng.

- Các bộ lọc Chebyshev: Các bộ lọc Chebyshev giảm tối thiểu đỉnh lỗi ở dải thông. Đặc tuyến của đáp ứng tần số có đáp ứng biên độ lớn ở dải thông, giảm đơn điệu biên độ ở dải chặn và có vùng chuyển tiếp sắc hơn bộ lọc Butterworth. Điều này khiến sai số tuyệt đối nhỏ hơn và tốc độ thực hiện nhanh hơn.

- Bộ lọc Chebyshev II hay còn gọi là bộ lọc Chebyshev đảo: bộ lọc này tương tự như bộ lọc Chebyshev nhưng có phân bố sai số trên dải chặn và có sự bằng phẳng nhất ở dải thông.

- Bộ lọc Eliptic (Cauer): các bộ lọc loại này giảm tối đa các sai số đỉnh bằng cách phân bố chúng trến khắp dải thông và dải chắn. So với các bộ lọc Butterworth và Chebyshev cùng bậc thì bộ lọc Eliptic có quá trình QUá độ giữa dải thông và dải chặn là sắc nhất. Vì vậy, nó được dùng rộng rãi.

- Bộ lọc Bessel: có thể dùng để giảm sự méo pha phi tuyến vốn có trong các bộ lọc IIR. Ở các bộ lọc bậc cao hơn và với vùng gấp dốc hơn thì méo pha càng rõ nét đặc biệt ở vùng quá độ của bộ lọc. Bộ lọc này có đặc tuyến trơn tối đa ở cả pha và biên độ. Đặc tuyến pha ở dải thông của bộ lọc thì gần như tuyến tính. Cũng giống như bộ lọc Butterworth, bộ lọc Bessel đòi hỏi bộ lọc bậc cao để giảm sai số, vì vậy nó ít được dùng.

b)Bộ lọc FIR.

(*)

Page 31: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 31

Các bộ lọc đáp ứng xung hữu hạn FIR là các bộ lọc số mà có đáp ứng xung là hữu hạn. Các bộ FIR cũng gọi là các bộ lọc không đệ qui. Phương trình sai phân của bộ lọc là:

∑−

= −=1

0

n

k kixkhiy

Trong đó x biểu diễn dãy đầu vào, y biểu diễn dãy đầu ra, h biểu diễn hệ số bộ lọc. Các bộ lọc FIR có các đặc điểm quan trọng sau:

- Chúng có thể đạt được pha tuyến tính bởi sự đối xứng của hệ số. - Chúng luôn ổn định. - Có thể thực hiện các hàm lọc dùng tương quan chéo và nói chung luôn

gắn một khoảng trễ với dãy đầu ra.

21−

=nDelay với n là số hệ số của bộ lọc FIR.

Có thể truy cập vào các bộ lọc trong LabVIEW bằng cách chọn Functions>> Signal Processing>>Filters. Hình 2-3 minh hoạ các bộ lọc trong LabVIEW.

III. Tổng quan về VISA. 1. Khái niệm về VISA.

VISA (Virtual Instrument System Architecture) là một chuẩn vào/ra giao diện chương trình ứng dụng (API) cho thiết bị lập trình được. VISA tự bản thân nó không cung cấp khả năng lập trình thiết bị mà là một API mức cao mà có thể gọi đến các driver mức thấp hơn. Sự phân cấp của NI-VISA như hình sau:

VISA có thể điều khiển các thiết bị theo chuẩn VXI, GPIB, hoặc Serial.

Bởi vì VISA là một công nghệ chuẩn để phát triển các trình điều khiển thiết bị,

Hình 2-3. Các bộ lọc trong LabVIEW.

Hình 3-2. Sự phân cấp của VISA API

Page 32: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 32

nên hiện tại có rất nhiều instrument driver được viết bởi hãng National Instrument trên VISA và được hỗ trợ trên nền Windows, Macintosh, HP-UX,.. 2. Điểm mạnh của VISA.

- Được chuẩn hoá: VISA là một API chuẩn để xây dựng các trình điều khiển thiết bị. Bạn chỉ cần sử dụng một API để điều khiển các thiết bị có kiểu khác nhau, có thể theo chuẩn VXI, GPIB, hoặc serial.

- Có giao diện độc lập: VISA sử dụng các hoạt động tương tự nhau để kết nối với thiết bị mà không cần quan tâm tới kiểu giao diện của chúng. Lấy một ví dụ, VISA viết một xâu ASCII (một message-based) tới một thiết bị thì lệnh này là chung cho tất cả các kiểu thiết bị (VXI, GPIB, serial). Điều này làm cho việc chuyển đổi bus giao diện trở nên dễ dàng. Bạn chỉ cần biết một kiểu API là đã có thể sử dụng nó cho các kiểu giao diện khác nhau.

- Nền độc lập: VISA được thiết kế để có thể hoạt động dễ dàng trên các hệ điều hành khác nhau. Để đảm bảo sự độc lập khi hoạt động VISA đã định nghĩa một cách rất cẩn thận các kiểu dữ liệu của nó. Bởi vậy các kích cỡ, số byte của biến do các HĐH quy định không làm ảnh hưởng đến chương trình VISA. Các hàm của VISA gọi và liên kết các tham số của chúng là như nhau trên tất cả các nền. Nó có thể chạy trên các HĐH khác nhau mà không cần phải biên dịch lại.

- Tính tương thích cao: một lợi thế khác của VISA là nó dễ dàng tương thích với các giao diện thiết bị mới sẽ được phát triển trong tương lai.

Có thể nói VISA là một công cụ điều khiển phần mềm hiệu quả để tận dụng, phát huy và nâng cao các thế mạnh phần cứng của thiết bị. 3. Các thành phần cơ bản của VISA:

Cấu trúc đơn giản của một VISA API như sau:

a) Default Resource Manager.

Hình 3-3. Cấu trúc VISA API.

Page 33: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 33

Default Resource Manager ở mức cao nhất của hoạt động VISA. LabVIEW sẽ tự động tổ chức việc trao đổi thông tin với Default Resource Manager ở lần gọi VISA VI đầu tiên. Default Resource Manager sẽ quản lý tài nguyên và phiên kết nối.

Tài nguyên (resource) là một đối tượng mà bạn có thể trao đổi thông tin với nó. Resource có thể là thiết bị (INSTR) hoặc memory access (MEMACC).

Phiên kết nối (session) là một sự kết nối tới một resource đang tồn tại. Session được VISA sử dụng để mở một phiên làm việc với thiết bị. Có thể chọn kiểu thiết bị trong session (GPIB, VXI, GPIB-VXI, serial, hoặc all INSTR) song cần lưu ý khi đã chọn duy nhất một kiểu thiết bị (chẳng hạn Serial) thì không thể mở một kiểu thiét bị khác. Do vùng nhớ dành cho session có hạn nên mỗi khi thao tác xong ta cần phải đóng phiên làm việc lại.

Để xác định tài nguyên phải dùng bộ mô tả thiết bị (instrument descriptor). Instrumnet descriptor có cú pháp như sau:

Interface Type[board index]::Address::VISA Class Interface Type đặc trưng cho từng kiểu thiết bị (GPIB, VXI, hoặc serial).

Đối với các thiết bị sử dụng chuẩn GPIB hoặc VXI thì board index dùng để xác định số card giao tiếp gắn trên main board.

Với thiết bị VXI thì address được hiểu là địa chỉ logic còn với thiết bị GPIB thì đó là địa chỉ phụ (primary address). Lấy ví dụ một máy tính có hai card GPIB gắn trên main board thì địa chỉ của một thiết bị nối với card thứ nhất sẽ là: GPIB0::0::INSTR. Thiết bị Serial không sử dụng Address. Ví dụ ASRL2:INSTR sẽ mô tả cổng COM2.

VISA class là một lớp mà đón gói một vài hoặc tất cả các hoạt động VISA cho một thiết bị hoặc sự kiện. Lớp chung nhất là INSTR bao gồm tất cả các thao tác VISA cho một thiết bị. Nếu VISA Class để trống thì nó sẽ mặc định là lớp INSTR. b) Communication.

VISA cung cấp hai kiếu giao thức để trao đổi thông tin với thiết bị, đó là phương thức thông báo (Message-Based)-hỗ trợ cho tất cả các kiểu thiết bị theo chuẩn GPIB, VXI, Serial và phương thức thanh ghi (Register-Based)-chỉ cho các thiết bị VXI. Trong giới hạn của đề tài chúng ta sẽ quan tâm tới các thiết bị Message-Based device.

Với giao thức Message-Based chương trình sẽ gửi một thông báo lệnh tới hoặc nhận một thông báo dữ liệu từ message-based device. Các thông báo lệnh (command-string) mà chương trình gửi tới thiết bị là các tập lệnh riêng của từng thiết bị do nhà sản xuất cung cấp. Đó có thể là lệnh đặt cấu hình hoặc lệnh yêu cầu gửi dữ liệu. Các thông báo nhận được từ thiết bị có thể là các yêu cầu phục vụ (SQR) hoặc dữ liệu dưới dạng string. Chương trình sẽ sử dụng các hàm chuyển đổi xâu-số để chuyển dữ liệu về dạng số để xử lý tiếp. c) VISA propertopies.

Là các thuộc tính của VISA resources mà ta có thể thiết lập hoặc nhận được từ chương trình. Có thể kể ra sau đây một vài properties thường gặp: Serial baud rate, Serial data bits, GPIB readdresing, GPIB unaddresing, VXI logical address,.. Lưu ý rằng có một vài thuộc tính là thuộc tính chỉ đọc (read only), do đó không thể thiết lập lại giá trị của chúng.

Page 34: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 34

Ngoài ra còn có các VISA Events để lập trình theo sự kiện mà trong khuôn khổ đề tài này không bàn đến Các hàm VISA trong LabVIEW.

LabVIEW cung cấp sẵn một thư viện hàm để phối ghép và điều khiển thiết bị thông qua chuẩn VISA. Để truy cập vào thư viện hàm này chọn Function>>Instrument I/O>>VISA. Trong đó bạn có thể sử dụng các hàm khởi tạo, đặt thuộc tính, các hàm VISA mức cao hoặc mức thấp…

Để tham khảo thêm có thể vào Online Help của chúng.

Hình 3-4. VISA functions

Page 35: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 35

Chương2 Thiết bị đo thông minh HP34970A

I. Tập lệnh của máy HP34970A. 1. Một số qui ước.

Dấu [ ] biểu thị các tham số hay từ khoá là tuỳ chọn. Dấu { } chứa các tham số chọn cùng với câu lệnh. Dấu < > biểu thị các tham số mà bắt buộc phải thay bằng giá trị. Dấu | để phân cách giữa các tham số.

2. Cách sử dụng danh sách quét (scanlist). Hầu hết các câu lệnh của HP34970A đều có một scanlist đi kèm. Scanlist

có dạng (@scc). Trong đó, s là kí hiệu của khe cắm (100,200 hay 300) còn cc là số hiệu của kênh. Có thể cấu hình scanlist gồm một hay nhiều kênh hay gồm một dãy kênh. Ví dụ:

(@101) đặt scanlist là một kênh 01 của khe cắm 100. (@101,203,305) đặt scanlist gồm 3 kênh 101,203 và 305. (@101:110,204) đặt scanlist gồm các kênh từ 101 đến 110 và kênh 204.

3. Các lệnh đặt cấu hình kênh. a) Cấu hình đo nhiệt độ.

CONFigure:TEMPerature {TCouple},{B|E|J|K|N|R|S|T|DEF} [,1[,<resolution>|MIN|MAX|DEF}]] ,(@<scan_list>) Ví dụ: CONF:TEMP TC,B,1,0.003,(@101,102,201) Lệnh này đặt cấu hình cho các kênh trong scanlist đo nhiệt độ sử dụng cặp

nhiệt ngẫu với các kiểu cặp nhiệt ngẫu khác nhau (mặc định là kiểu J). Độ chính xác của kênh được xác định bằng thông số resolution.

CONFigure:TEMPerature {RTD|FRTD},{85|91|DEF} [,1[,<resolution>|MIN|MAX|DEF}]] ,(@<scan_list>) Ví dụ: CONF:TEMP RTD,91,1,0.001,(@103,203) Lệnh này đặt cấu hình cho các kênh trong scanlist đo nhiệt độ dùng 2-wire

RTD hay 4-wire RTD (FRTD). Tham số 85 và 91 tương ứng với α=0.00385 và α=0.00391.

Đối với phép đo dùng FRTD thì thiết bị sẽ tự động cặp kênh thứ n và kênh thứ n+10 (đối với 34901A) hoặc n+8 (đối với 34902A).

CONFigure:TEMPerature {THERmistor},{2252|5000|10000|DEF} [,1[,<resolution>|MIN|MAX|DEF}]] ,(@<scan_list>) Ví dụ: CONF:TEMP THER,10000,1,0.0001,(@101,102) Lệnh này đặt cấu hình cho phép đo nhiệt độ dùng bộ biến đổi thermistor.

Mặc định là dùng thermistor 5KΩ. b) Các lệnh đặt cấu hình đo điện áp.

CONFigure:VOLTage:DC CONFigure:VOLTage:AC

Page 36: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 36

[{<range>|AUTO|MIN|MAX|DEF} [,<resolution>|MIN|MAX|DEF}],] (@<scan_list>) Ví dụ: CONF:VOLT:DC AUTO,0.0003,(@101,103) hoặc CONF:VOLT:AC AUTO,0.0003(@101,103) Cấu hình các kênh trong scanlist để đo điện áp một chiều hoặc xoay

chiều. c) Các lệnh đặt cấu hình đo điện trở.

CONFigure:RESistance CONFigure:FRESistance [{<range>|AUTO|MIN|MAX|DEF} [,<resolution>|MIN|MAX|DEF}],] (@<scan_list>) Ví dụ: CONF:RES (@101,102) hoặc CONF:FRES (@101,102) Cấu hình các kênh trong scanlist để đo điện trở. Lệnh với tham số RES sẽ

sử dụng phép đo 2-wire. Lệnh với tham số FRES sẽ sử dụng phép đo 4-wire và thiết bị cũng tự động cặp đôi kênh n với n+10 (34901A) hoặc n+8 (34902A). d) Các lệnh đặt cấu hình đo điện áp.

CONFigure:CURRent:DC CONFigure:CURRent:AC [{<range>|AUTO|MIN|MAX|DEF} [,<resolution>|MIN|MAX|DEF}],] (@<scan_list>)

Ví dụ: CONF:CURR:DC (@121) hoặc CONF:CURR:AC (@122)

Cấu hình các kênh trong scanlist để đo dòng điện một chiều hoặc xoay chiều. Các phép đo dòng chỉ cho phép đo trên kênh 21 và 22 của HP 34901A multiplexer module. e) Các lệnh đặt cấu hình đo tần số và chu kì.

CONFigure:FREQuency CONFigure:PERiod [{<range>|AUTO|MIN|MAX|DEF} [,<resolution>|MIN|MAX|DEF}],] (@<scan_list>)

Ví dụ: CONF:FREQ (@109,110) CONF:PER (@111) Cấu hình các kênh trong scanlist đo chu kì hay tần số. f) Các lệnh đặt cấu hình đo tín hiệu số.

CONFigure:DIGital:BYTE (@<scan_list>) Ví dụ: CONF:DIG:BYTE (@201) Cấu hình thiết bị để đọc các kênh đầu vào số của khối multifunction

module mà được chỉ định trong scanlist. Dạng của kênh số đầu vào có dạng s01 và s02 với s là số của khe cắm. Nếu cho cả 2 kênh đầu vào số vào scanlist thì thiết bị sẽ đọc từ cả 2 cổng trong cùng một lúc. Điều này cho phép gộp hai tín hiệu 8-bit thành 1 tín hiệu 16-bit. g) Các lệnh đặt cấu hình bộ đếm.

CONFigure:TOTalize {READ|RRESet} ,(@<scan_list>)

Page 37: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 37

Ví dụ: CONF:TOT READ,(@203) Cấu hình thiết bị đọc kênh bộ đếm trong multifunction module. Kênh

của bộ đếm có dạng s03 với s là số hiệu của khe cắm. Để bộ đếm không đặt lại trong khi quét thì sử dụng tham số READ. Để đọc bộ đếm trong quá trình quét và đặt lại bộ đếm về không sau khi đọc dùng tham số RRESet. h) Lệnh hỏi cấu hình kênh.

CONFigure? [(@<ch_list>)] Ví dụ: CONF? (@303) Lệnh này hỏi về cấu hình của kênh và trả về một loạt các chuỗi. Chuỗi trả

về gồm một loạt các trường được phân cách bởi dấu phảy. Mỗi trường chứa các tham số của kênh như chức năng, giới hạn, độ chính xác. Ví dụ: "FRES +1.000000E+02,+3.000000E-04" ,

"TEMP TC,K,+1.000000E+00,+3.000000E-06" 4. Các lệnh đặt đặt cấu hình để thực hiện quét (scan).

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: TRIGger:SOURce?

c) Đặt khoảng thời gian quét. Sau mỗi lần đảo qua các kênh có thể đặt khoảng thời gian đợi bằng lệnh:

TRIGger:TIMer {<seconds>|MIN|MAX} Khoảng thời gian có thể đặt từ 0 giây đến 359 999 giây (99:59:59 giờ). Các tham số MIN, MAX tương ứng với giá trị 0 và 359 999. Để hỏi về khoảng thời gian quét dùng lệnh:

Page 38: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 38

TRIGger:TIMer?

d) Đặt số lần quét. TRIGger:COUNt {<count>|MIN|MAX|INFinity} Lệnh này sẽ đặt số lần đảo qua các kênh mà một lần quét thực hiện. Số lần

quét có thể đặt từ 1 đến 50 000 hoặc liên tục (tham số INF). Giá trị MIN=1 và MAX=50 000.

Để hỏi về số lần đảo qua này có thể dùng lệnh: TRIGger:COUNt?

e) Đặt khoảng thời gian trễ giữa các kênh. ROUTe:CHANnel:DELay <seconds>[,(@<ch_ list>)] Lệnh này sẽ thiết lập khoảng thời gian trễ giữa các kênh trong ch_list

bằng tham số seconds. Có thể thiết lập khoảng thời gian trễ tự động bằng lệnh sau: TRIGger:CHANnel:DELay:AUTO {OFF|ON}[,(@<ch_list>)]

f) Khởi tạo lần quét. Có thể khởi tạo lần quét bằng lệnh INIT hoặc READ?. Sự khác nhau

giữa hai lệnh này là lệnh INIT sẽ lưu các kết quả vào bộ nhớ đệm của thiết bị. Ngoài ra để khởi động từ giao diện từ xa có thể dùng lệnh *TRG.

5. Các lệnh định dạng dữ liệu. Khi thực hiện quét dữ liệu sẽ được lưu trong bộ nhớ của thiết bị dưới dạng

sau:

Ở dạng mặc định các dữ liệu kèm theo này để ở chế độ tắt. Để bật hay tắt các dữ liệu kèm theo khi đọc về có thể dùng các lệnh sau đây:

- FORMat:READing:ALARm {OFF|ON} bật hay tắt dữ liệu báo nguy. - FORMat:READing:CHANnel {OFF|ON} bật hay tắt dữ liệu kênh. - FORMat:READing:TIME {OFF|ON} bật hay tắt dữ liệu về thời gian. - FORMat:READing:TIME:TYPE {ABSolute|RELative} sử dụng thời

gian tuyệt đối hay tương đối. - FORMat:READing:UNIT {OFF|ON} có hay không đơn vị kèm theo. Để hỏi xem các dữ liệu kèm theo này ở dạng bật hay tắt có thể dùng lệnh

hỏi có dấu hỏi kèm theo mỗi lệnh ví dụ như FORMat:READing:TIME?. 6. Các lệnh đặt mức đo.

Thiết bị HP34970A cho phép đặt thang đo cho dữ liệu gồm độ khuyếch đại và giá trị bù. Giá trị thu được sẽ được tính theo công thức sau:

Giá trị=Giá trị đo * Khuyếch đại - Giá trị bù - CALCulate:SCALe:GAIN <gain>[,(@<ch_list>)] đặt độ khuyếch đại cho

giá trị.

Page 39: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 39

- CALCulate:SCALe:OFFSet <offset>[,(@<ch_list>)] đặt giá trị bù. - CALCulate:SCALe:UNIT <quoted_string>[,(@<ch_ list>)] đặt đơn vị đo

theo ý của người dùng như PRM, PSI.5

7. Các lệnh đọc dữ liệu. - DATA:POINts? đếm tổng số giá trị đọc hiện đang lưu trong bộ nhớ. - DATA:REMove? <num_rdgs> đọc và xoá khỏi bộ nhớ bắt đầu từ giá trị

cũ nhất. Lệnh này thường để xoá có chu kì khỏi bộ nhớ để khỏi tràn bộ nhớ. Dữ liệu thu được sẽ có dạng do lệnh định dạng dữ liệu qui định.

- FETCh? chuyển dữ liệu được lưu trong bộ nhớ ra của thiết bị sang máy tính. Lệnh này không xoá các dữ liệu khỏi bộ nhớ. Dữ liệu ra có dạng theo như lệnh định dạng dữ liệu qui định.

- R? [<max_count>] đọc và xoá tất cả dữ liệu trong bộ nhớ theo giá trị max_count qui định. Đây là một phiên bản của lệnh DATA:REMove? nhưng thực hiện nhanh hơn. nếu bỏ qua tham số max_count thì lệnh này đọc và xoá 50000 giá trị từ bộ nhớ. Lệnh này cũng bị ảnh hưởng bởi lệnh định dạng dữ liệu. Dữ liệu trả về theo dạng khối độ dài xác định.

- READ? đọc dữ liệu từ thiết bị và gửi trực tiếp ra bộ đệm ra chứ không lưu trữ vào bộ nhớ như lệnh FETC?

- MEASure? có cấu trúc lệnh như là lệnh CONFigure và thực hiện như cặp lệnh CONF và theo sau là lệnh READ?. Tuy nhiên lệnh này không tiện bởi khi thực hiện thiết bị sẽ đặt cấu hình phép đo theo các giá trị mặc định và thực hiện ngay.

II. Sơ đồ thuật toán đo lường dùng chuẩn RS-232. 1. Giới thiệu về chuẩn RS-232.

Chuẩn RS-232 là chuẩn giao tiếp thông dụng nhất giữa máy tính và thiết bị ngoại vi. Hầu hết mỗi máy tính đều có một vài cổng nối tiếp COM. Kết nối bằng RS-232 có thể có khoảng cách lớn. Tuy nhiên nó cũng có nhược điểm là tại một thời điểm chỉ kết nối được với một máy. Tốc độ truyền của RS-232 cũng chậm hơn so với các chuẩn khác. 2. Các VI làm việc với chuẩn RS-232 trong LabVIEW.

LabVIEW cung cấp một số VI để làm việc với chuẩn RS-232. Có thể truy nhập vào chúng trong Functions>>Instrument I/O>>Serial.

Hình2-1. Các hàm Serial

Page 40: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 40

Các hàm này gồm :

- Serial Port Init: khởi tạo công Serial theo tham số đã chọn.

- Byte at Serial Port: trả lại trong byte count số byte ở bộ đệm vào của cổng port number.

- Serial Port Read: đọc từ cổng port number số byte yêu cầu.

- Serial Port Write: gửi dữ liệu trong string to write ra cổng port number.

Page 41: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 41

3. Thuật toán thu dữ liệu từ chuẩn RS-232. Bước 1: Khởi tạo. Bước này gồm có mở thiết bị, khởi tạo đường truyền tín hiệu và xoá thiết bị. Bước 2: Lập cấu hình cho các kênh. - Sử dụng lệnh SENS để đặt cấu hình đo cho từng kênh. - Dùng lệnh CALC: SCAL để đặt mức đo cho mỗi kênh. - Dùng lệnh ROUT:SCAN để đặt danh sách quét.

Tiếp tục

Khởi tạo

Lập cấu hình hệ thống

Lập cấu hình cho các kênh

Lập cấu hình quét

Lập cấu hình cho dữ liệu ra

Thu dữ liệu về và xử lý

Đóng thiết bị

Page 42: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 42

Bước 3: Lập cấu hình quét. - Đặt nguồn khởi động quét bằng lệnh TRIG:SOUR - Đặt khoảng thời gian quét bằng lệnh TRIG:TIM - Đặt số lần quét bằng lệnh TRIG:COUN - Khởi tạo lần quét bằng INIT. Bước 4: Định dạng dữ liệu thu về Để định dạng dữ liệu thu về có thể dùng lệnh FORM:READ. Bước 5: Thu dữ liệu về và xử lý. Có nhiều lệnh để đọc dữ liệu về nhưng thuận tiện nhất là dùng 2 lệnh DATA:POIN? và DATA:REM?.Dữ liệu thu về dưới dạng gồm nhiều trường khác nhau như giá trị, kênh, thời gian .. Để bóc tách lấy dữ liệu ta dùng Data to 3DArray VI để tách lấy phần dữ liệu cần xử lý. Bước 6: Đóng thiết bị.

Để đóng thiết bị có thể dùng hàm VISA Close của LabVIEW.

Page 43: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 43

Chương 3 Xây dựng bài thí nghiệm trên bệ thí nghiệm máy điện.

I. Môc ®Ých cña bµi thÝ nghiÖm. Thùc hiÖn ®o vµ quan s¸t tÝn hiÖu cña bÖ thÝ nghiÖm m¸y ®iÖn. TÝn hiÖu

thu vÒ sÏ ®−îc biÓu diÔn trªn m¸y tÝnh ®Ó häc viªn tiÖn quan s¸t. Häc viªn cã thÓ thay ®æi mét sè tham sè trªn bÖ thÝ nghiÖm ®Ó quan s¸t tÝn hiÖu thu vÒ. II. M« t¶ bµi thÝ nghiÖm.

Sau khi thiÕt lËp c¸c subVI vµ thuËt to¸n ë ch−¬ng 2, chóng ta tiÕn hµnh thu tÝn hiÖu tõ bÖ thÝ nghiÖm m¸y ®iÖn qua thiÕt bÞ HP 34970A. Front Panel vµ Block Diagram cña nã cã d¹ng nh− h×nh sau:

Hình 3-1. Front Panel của bài thí nghiệm

Page 44: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 44

Front Panel của bài thí nghiệm (hình 3-1) bao gồm một control Channel

Configuration mà mỗi phần tử của nó là một cluster để đặt cấu hình cho các kênh đo; một control để chọn tài nguyên nối mạng; một control để chọn tần số lấy mẫu; một bộ hiển thị waveform chart để biểu diễn bằng đồ thị tín hiệu thu được; một núm xoay để chọn kênh hiển thị và một nút stop để ngừng chương trình.

Block Diagram của bài thí nghiệm sẽ thực hiện theo như sơ đồ thuật toán thu tín hiệu đã lập ở chương 2. Block Diagram của nó như hình 3-2. Nó gồm có phần khởi tạo đường truyền dùng subVI Initalize. Phần này sẽ đặt đường truyền cho chuẩn RS 232 theo như các tham số của thiết bị HP 34970A. Mã nguồn của nó như hình 3-3.

Hình 3-2. Block Diagram của bài thí nghiệm

Hình 3-3. Block Diagram của subVI INIT.

Page 45: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 45

Phần khởi tạo kênh đo bằng subVI Channel Config. SubVI này sẽ đặt cấu hình cho các kênh của thiết bị HP 34970A. Mã nguồn của subVI này như sau.

Các kênh được đặt cấu hình sẽ được đưa vào vòng lặp For. Sử dụng hàm

Unbundle By Name để tách lấy các tham số của kênh. Các tham số này sẽ được gửi đến các subVI tương ứng để gửi tới thiết bị HP 34970A. Phần danh sách kênh sẽ được tích lại trên biên của vòng For để thành mảng các string. Sau đó dùng hàm Array to Spreadsheet String để thành scanlist và gửi tới subVI Scanlist. SubVI này sẽ đặt danh sách quét cho thiết bị HP 34970A.

Phần khởi tạo nguồn khởi động bằng subVI Trigger Config. Block Diagram của subVI này như hình 3-5. Các tham số của lệnh trigger sẽ được chọn bằng các dùng các hàm xử lý string. Sau đó nó sẽ được gửi tới thiết bị HP 34970A để đặt cấu hình nguồn khởi động cho thiết bị.

Hình 3-4. SubVI Channel Config Block Diagram.

Hình 3-5. Trigger config Block

Page 46: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 46

Phần đọc và xử lý tín hiệu được đưa vào trong một vòng lặp While. Dữ liệu được đọc bằng subVI Read. Block Diagram của nó có dạng như sau.

Dữ liệu đọc về có dạng chuỗi. Để tách ra các thành phần của nó cần phải

dùng subVI List To 3DArray. Block Diagram của nó như hình 3-7. Để tách ra phần dữ liệu có thể dùng hàm Array Index. Dữ liệu đọc về sẽ

được đưa qua bộ lọc Butterworth thông thấp để lọc bỏ nhiễu loạn. Sau đó tín hiệu sẽ được gửi ra waveform chart để biểu diễn. Quá trình này được lặp cho tới khi nào bấm vào nút stop để kết thúc chương trình.

Khi thực hiện chương trình, trước hết chọn cấu hình của kênh từ control Channel Configuration. Sau đó chọn tần số lấy mẫu. Sau đó cho chương trình thực hiện. Khi thực hiện chương trình sẽ gọi đến các VI dạng dialog để đặt cấu hình cho đường truyền và cấu hình các kênh. Khi muốn hiển thị kênh nào trên đồ thị sử dụng núm xoay Channel Selection.

Danh mục một số bài thí nghiệm đã thực hiện: - Quan sát phổ của tín hiệu máy điện. - Tính toán các tham số của máy điện.

Hình 3-6. Read VI Block Diagram.

Hình 3-7. List To 3DArray Block Diagram.

Page 47: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 47

KẾT LUẬN CHUNG. Đề tài đã nêu được cách tiếp cận với ngôn ngữ lập trình LabVIEW thông

qua kỹ thuật lập trình cơ bản và nâng cao. Đề tài cũng nghiên cứu tập lệnh của thiết bị thông minh HP 34970A và đưa ra được lưu đồ thuật toán để thu tín hiệu thông qua chuẩn RS-232. Qua lưu đồ đó thực hiện kết nối máy tính với thiết bị HP 34970A để điều khiển thiết bị từ bệ thí nghiệm máy điện. Đề tài đã xây dựng được chương trình cụ thể để thu và biểu diễn tín hiệu.

Hướng phát triển tiếp theo của đề tài: - Xây dựng hệ thống đo lường và điều khiển thiết bị bằng chuẩn GPIB hoặc

VXI. - Xây dựng các VI để mô phỏng các thiết bị ảo như HP34970, Kyowa ..

Page 48: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 48

MỤC LỤC Lời nói đầu 1 Chương 1 Kỹ thuật lập trình trên LabVIEW 2

1.1. Kỹ thuật lập trình cơ bản trên LabVIEW 1 1.2.Lập trình nâng cao trên LabVIEW 26

Chương 2 Thiết bị đo thông minh HP34970A 33Chương 3 Xây dựng bài thí nghiệm trên bệ thí nghiệm máy điện 41Kết luận chung 45

Page 49: 41061435-lập-trinh-Lab-View

VNArmy

http://www.dientuvietnam.net 49

TÀI LIỆU THAM KHẢO LabVIEW User Manual G Programming Reference Manual HP 34970A Data Acquisittion/Switch Unit