You are on page 1of 223

NGUYỄN BÁ HẢI

LẬP TRÌNH LABVIEW


BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
THÀNH PHỐ HỒ CHÍ MINH
*******************

NGUYỄN BÁ HẢI

NHÀ XUẤT BẢN ĐẠI HỌC QUỐC GIA


THÀNH PHỐ HỒ CHÍ MINH
3
LỜI NÓI ĐẦU

Bộ sách học lập trình LabVIEW từ cơ bản đến nâng cao gồm 7 tập:
- Tập 1: Lập trình LabVIEW hướng dẫn lập trình LabVIEW trình
độ cơ bản.
- Tập 2: Cơ điện tử ứng dụng với LabVIEW hướng dẫn xây dựng
các ứng dụng với LabVIEW trong các ngành kỹ thuật.
- Tập 3: Sổ tay các hàm trong LabVIEW giải thích tường tận cách
sử dụng các hàm trong các module của LabVIEW.
Song song ba tập sách trên là 4 tập sách chuyên đề kỹ thuật chuyên sâu:
- Tập 4: Kỹ thuật mô phỏng trong với LabVIEW
- Tập 5: Đo lường và kiểm tra tự động
- Tập 6: Những bài báo khoa học chọn lọc sử dụng LabVIEW
được công bố tại các tạp chí, hội thảo quốc tế phục vụ học viên sau
đại học, các sinh viên khá giỏi và kỹ sư muốn nghiên cứu chuyên
sâu.
- Tập 7: 101 ứng dụng hay với LabVIEW là tập sách hướng dẫn thực
hiện các ứng dụng dùng cho mọi lứa tuổi, chuyên ngành. Từ học sinh
lớp 5 đến các giảng viên đại học các ngành Vật lý, Toán học, Kỹ
thuật.
Tất cả các tập sách này được viết cho đối tượng là người mới bắt đầu
tìm hiểu LabVIEW, phù hợp với sinh viên, giảng viên và kỹ sư có nhu
cầu tự học và xây dựng các ứng dụng thuộc các ngành kỹ thuật đo lường,
điều khiển tự động, kỹ thuật ôtô, robotics, vật lý, tự động hóa. Tài liệu
này có ba ưu điểm quan trọng không có trong các tài liệu khác sẽ giúp
bạn:
- Học nhanh LabVIEW nhờ cách tiếp cận vấn đề “học để làm” đặc
trưng mà Hocdelam Group đã phát triển và áp dụng thành công
trong nhiều năm.
- Học trọng tâm nhờ vào các kết luận, quy tắc vàng, mẹo vặt (tip) do
bản thân tác giả rút ra từ kinh nghiệm lập trình LabVIEW nhiều năm.
- Học và xây dựng các ứng dụng dễ dàng nhờ vào gói sản phẩm: 1-
Phần mềm LabVIEW, 2-Bộ thí nghiệm đa năng HDL-9000 giá
thành thấp tương thích LabVIEW, 3-Giáo trình hướng dẫn và ví dụ
mẫu.
3
Sách hướng dẫn xây dựng các ứng dụng dựa trên những phần cứng
chính hãng như CompactRIO, USB 6008/6009, PCI7250 và những phần
cứng giá thành thấp như Hocdelam USB-9001, Hocdelam USB 9090.
(Xem sản phẩm tại http://sanpham.hocdelam.org hoặc http://ni.com).
Để sử dụng phần đầu của tập 1 hướng dẫn lập trình LabVIEW, bạn
chỉ cần đặt phần mềm LabVIEW. Phần đầu của cuốn sách tập trung vào
các khái niệm về LabVIEW, cấu trúc chung của chương trình LabVIEW,
các loại control và indicator, vòng lặp, cấu trúc, mảng, bó, phân tích dữ
liệu, mà còn cung cấp kiến thức về giao tiếp máy tính qua cổng COM
theo chuẩn RS232 và cổng USB, giao tiếp mạng TCP/IP, mô phỏng và
điều khiển mobile robot, trong môi trường 3D, thu thập và xử lý ảnh.
Ngoài ra, quy tắc vàng khi lập trình, kỹ thuật xây dựng giao diện người
dùng (GUI) cũng sẽ được đề cập chi tiết.
Phần 2 của tài liệu hướng dẫn bạn phát triển các ứng dụng thực tế
như điều khiển PID động cơ DC, lập trình Robocon, thu thập dữ liệu và
điều khiển thiết bị, bạn cần trang bị phần cứng của NI, Hoa kỳ hoặc bộ
thí nghiệm đa năng HDL-9000, card Hocdelam USB-9001, Hocdelam
USB-9090 giá thành thấp.
Để học LabVIEW hiệu quả, người học cần thực hiện theo hướng
dẫn của mỗi bài. Thực hành nhiều lần các ví dụ và hoàn thành các bài tập
trong sách.
Tác giả chân thành cảm ơn PGS. TS. Đỗ Văn Dũng đã truyền cảm
hứng trong suốt quá trình nghiên cứu những năm qua, quý thầy cô tại ĐH
Sư phạm Kỹ thuật TP HCM, đặc biệt là sự giúp đỡ quan trọng của
National Instruments cho việc nghiên cứu cùng những khích lệ từ ông
Chandran Nair–Giám đốc NI ASEAN, ông Suntisuk–Giám đốc quản lý
Thái Lan-Việt Nam, ông Phạm Quốc Hùng và ông Nguyễn Hồ Nam tại
NI Việt Nam. Chân thành cảm ơn PGS. TS. Từ Diệp Công Thành, ĐH
Bách khoa TP HCM, TS. Nguyễn Đức Hùng từ ĐH Tamania, Úc, TS.
Chung Tấn Lâm đã đọc bản thảo và góp ý cho tập sách.
Hiểu biết của tác giả còn hạn chế nên không thể tránh khỏi các sai
sót, thư liên hệ và góp ý vui lòng gửi về: Nguyễn Bá Hải – ĐH Sư phạm
Kỹ thuật TP HCM, Số 01-Võ Văn Ngân, Quận Thủ Đức, Tp.HCM;
Email: bahai@hcmute.edu.vn. Số điện thoại trợ lý: 098 8868 524.
Tác giả

4
MỤC LỤC

Bài 1: Giới thiệu LabVIEW


1.1 LabVIEW là gì? 09
1.2 Các ứng dụng của LabVIEW 10
1.3 Download và cài đặt LabVIEW 16
1.4 Phương pháp để học LabVIEW hiệu quả 18
1.5 Bài tập 20
Bài 2: Các phép toán trong LabVIEW
2.1 Chương trình đầu tiên: Phép cộng hai số x,y 21
2.2 Phân tích cấu trúc một bài trình LabVIEW 26
2.3 Ba quy tắc vàng khi lập trình LabVIEW 27
2.4 Các phép toán thông thường 28
2.5 Lưu file, mở file, tìm ví dụ, công cụ trợ giúp 29
2.6 Phần đọc thêm 31
2.7 Bài tập 32
Bài 3: Các loại Control và Indicator
3.1 Các control thường dùng 33
3.2 Các dạng indicator thường dùng 35
3.3 Kiểu dữ liệu trong LabVIEW và chuyển đổi dữ liệu 37
3.4 Bài tập 38
Bài 4: Vòng lặp while, vòng lặp for
4.1 Vòng lặp while 39
4.2 Vòng lặp for 41
4.3 Ứng dụng vòng lặp 42
4.4 Bài tập 44
Bài 5: Cấu trúc case
5.1 Cấu trúc case 45
5.2 Ứng dụng cấu trúc case 46
5
5.3 Bài tập 51
Bài 6: Các hàm và công cụ hữu dụng thường gặp khác
6.1 Mô phỏng tín hiệu 53
6.2 Biến cục bộ (Local variable) 56
6.3 Formula node 59
6.4 Bài tập 62
Bài 7: Mảng và bó
7.1 Mảng 63
7.2 Bó 67
7.3 Bài tập 71
Bài 8: Tạo subVI, định thời gian, lưu dữ liệu, tạo file.EXE
8.1 Tạo và sử dụng subVI 73
8.2 Định thời gian trong LabVIEW 79
8.3 Lưu dữ liệu 81
8.4 Tạo file.EXE 85
8.5 Bài tập 88
Bài 9: Giao diện người dùng (GUI)
9.1 Khái niệm về giao diện người dùng 89
9.2 Xây dựng một GUI thẩm mỹ và hiệu quả 91
9.3 Tạo file .exe (application file) 94
9.4 Bài tập 94
Bài 10: Các ứng dụng với card Hocdelam USB-9001 và
HDL-9000 và card Hocdelam USB-9090
10.1 Giới thiệu card Hocdelam USB-9001 95
10.2 Các ứng dụng với Card Hocdelam USB-9001 98
10.3 Điều khiển PID động cơ DC 108
10.4 Giới thiệu và các ứng dụng với card Hocdelam USB-9090 115
10.5 Bài tập 131
Bài 11: Thu thập dữ liệu với card NI USB-6008/6009

6
11.1 Giới thiệu card NI USB 6008/6009 133
11.2 Hướng dẫn lập trình Card NI USB6008/6009 136
11.3 Thực hành lập trình LabVIEW đo analog với card NI USB- 139
6008
11.4 Kỹ thuật phát xung tín hiệu với card NI USB-6008/6009 142
11.5 Bài tập 146
Bài 12: Điều khiển vị trí và vận tốc chất lượng cao với card
PCI 7356
12.1 Chuẩn bị thiết bị phần cứng và phần mềm 147
12.2 Cài đặt phần mềm 148
12.3 Thử phần mềm và phần cứng 152
12.4 Thiết lập các thông số trong MAX 156
12.5 Thử động cơ và chương trình điều khiển động cơ một chiều 157
DC bằng Analog output
12.6 Điều khiển chuyển động 159
12.7 Một số lỗi thường gặp với card PCI 7356 164
12.8 Bài tập 166
Bài 13: Giao tiếp RS232 trong LabVIEW
13.1 Giao tiếp nối tiếp RS232 169
13.2 Thực hành giao tiếp RS232 171
13.3 Bài tập 176
Bài 14: Giao tiếp TCP/IP
14.1 Khái niệm giao tiếp TCP/IP 177
14.2 Ví dụ Lập trình TCP/IP với LabVIEW 179
14.3 Bài tập 180
Bài 15: Các chuyên đề mở rộng
15.1 Điều khiển hình ảnh (2D và 3D) trong LabVIEW 181
15.2 Lập trình Vi điều khiển ARM với LabVIEW 193
15.3 Giải pháp về thời gian thực với LabVIEW 196
15.4 Xử lý ảnh với LabVIEW 202
7
15.5 Bài tập 208
Bài 16: Hỗ trợ người học
16.1 Bảng phím tắt 209
16.2 Quy tắc vàng 215
16.3 Ghi chú 216

8
Bài 1
GIỚI THIỆU LABVIEW
Học xong bài này, bạn sẽ nắm được:
- Khái niệm về LabVIEW và một số thuật ngữ
- Phân biệt được LabVIEW với các ngôn ngữ khác
- Các ứng dụng thường gặp của LabVIEW
- Ưu điểm của LabVIEW và nhược điểm của LabVIEW
- Cài đặt được phần mềm LabVIEW và nắm được phương pháp học

1.1 LABVIEW LÀ GÌ?


LabVIEW (viết tắt của Laboratory Virtual Instrumentation Engineering
Workbench) là môi trường lập trình đồ họa hiệu quả trong việc giao tiếp đa
kênh giữa con người, thuật toán và các thiết bị.
Về cách thức lập trình, LabVIEW khác với các ngôn ngữ truyền thống
như C, Python, hay Basic ở điểm thay vì sử dụng các từ vựng (từ khóa) được
định nghĩa trước, LabVIEW sử dụng các khối hình ảnh sinh động (gọi là các
hàm) và các dây nối để tạo ra các lệnh như trong hình 1.1. Sự cải tiến đặc biệt
này của LabVIEW giúp cho việc lập trình trở nên đơn giản hơn bao giờ hết, đặc
biệt, LabVIEW rất phù hợp đối với kỹ sư, nhà khoa học, hay giảng viên. Cũng
nhờ sự đơn giản, dễ học và dễ nhớ đã giúp LabVIEW trở thành một trong
những công cụ phổ biến nhất trong các ứng dụng thu thập dữ liệu từ các cảm
biến, phát triển các thuật toán, và điều khiển thiết bị tại các phòng thí nghiệm
trên thế giới.

Hình 1.1. Mã nguồn viết bằng LabVIEW


Thông thường LabVIEW được dùng để lập trình ra các chương trình
(source code: mã nguồn) trên máy tính tương tự các ngôn ngữ lập trình dựa
trên chữ (text-based language) như C, Python, Java, Basic, vv.

9
LabVIEW hỗ trợ các kỹ sư, nhà khoa học và sinh viên, vv. xây dựng
(thực thi) các thuật toán một cách nhanh chóng nhờ các khối hình ảnh có tính
gợi nhớ và cách thức hoạt động theo kiểu dòng dữ liệu (data flow) lần lượt từ
các hàm bên trái đến các hàm bên phải trong một chương trình. Ngoài ra,
LabVIEW giúp việc kết nối các thuật toán này từ máy tính đến các mạch điện
và cơ cấu chấp hành thông qua các chuẩn giao tiếp như chuẩn giao tiếp RS232
(giao tiếp qua cổng COM), chuẩn USB, chuẩn giao tiếp mạng TCP/IP, UDP,
chuẩn GPIB, vv. Do có nhiều chuẩn như vậy nên LabVIEW được coi là một
ngôn ngữ giao tiếp đa kênh với các thiết bị.
LabVIEW hỗ trợ hầu hết các hệ điều hành (Windows (2000, XP, Vista,
Windows7), Linux, MacOS, Window Mobile, Window Embedded. Hiện tại,
LabVIEW 2012 là phiên bản mới nhất. Một số phiên bản cũ của LabVIEW bao
gồm 2011, 2009, 8.6, 8.5, 7.1, 6i. Nhìn chung hai phiên bản kề nhau 2010 và
2009 không có sự khác nhau nhiều. Tuy nhiên có sự khác biệt đáng kể giữa các
bản LabVIEW 7.1, LabVIEW 8.5 và LabVIEW 2009. Bạn có thể chọn một
trong ba phiên bản sau cùng để dùng cho việc học lập trình, trong cuốn sách
này, chúng tôi sử dụng LabVIEW 2009.

Bạn có biết?
LabVIEW được tiến sĩ James Truchard, Đại học Texas, Hoa Kỳ sáng
tạo ra vào năm 1986, và đã trở thành một công cụ không thể thiếu
trong các ngành kỹ thuật. Sản phẩm đầu tiên bắt đầu trong nhà để xe
của Chủ tịch, CEO và đồng sáng lập NI – James Truchard ở Austin,
Texas, Hoa Kỳ.

1.2 CÁC ỨNG DỤNG CỦA LABVIEW


LabVIEW được sử dụng trong các lĩnh vực đo lường, tự động hóa, cơ
điện tử, robotics, vật lý, toán học, sinh học, vật liệu, ôtô, vv. Nhìn chung:
- LabVIEW giúp kỹ sư kết nối bất kỳ cảm biến, và bất kỳ cơ cấu chấp
hành nào với máy tính.
- LabVIEW có thể được sử dụng để xử lý các kiểu dữ liệu như tín hiệu
tương tự (analog), tín hiệu số (digital) hình ảnh (vision), âm thanh
(audio), vv.
- LabVIEW hỗ trợ các giao thức giao tiếp khác nhau như RS232,
RS485, TCP / IP, PCI, PXI, và như vậy.
- Bạn cũng có thể tạo ra các thực thi độc lập và các thư viện chia sẻ (ví
dụ thư viện liên kết động DLL), bởi vì LabVIEW là một trình biên
dịch 32-bit.
LabVIEW đã trở nên phổ biến ở các phòng thí nghiệm các quốc gia phát
triển. Phần này trình bày một số ứng dụng của LabVIEW tiêu biểu trong các
lĩnh vực khác nhau.

10
Ứng dụng đo lƣờng, trong hình 1.2 là giao diện thu thập dữ liệu các
thông tin cần thiết của tàu vũ trụ cỡ nhỏ tại cơ quan hàng không và vũ trụ
NASA, Hoa Kỳ.

Hình 1.2. Thu thập dữ liệu tại NASA


Ứng dụng thu thập dữ liệu cho thiết bị dẫn đƣờng cho ngƣời khiếm
thị, hình 1.3 là một đề tài đặc biệt do nhóm nghiên cứu TS. Nguyễn Bá Hải, KS.
Lê Thành Tuyên, Phạm Văn Long thực hiện. Một phần của đề tài này ứng dụng
LabVIEW để tạo cơ sở dữ liệu bằng cách thu thập các tín hiệu khoảng cách,
điều khiển các cơ cấu tạo cảm giác xúc giác (haptics) tại vành nón, sau đó xử lý
và điều chế các tín hiệu (xung PWM) để tạo ra cảm giác xúc giác nhằm dẫn
đường cho người mù tránh những chướng ngại vật khi họ di chuyển mà không
cần phải sử dụng gậy dò đường. Đề tài đoạt giải nhân văn Robocon Techshow
2012 của Đài truyền hình Việt Nam và nhóm tác giả của sản phẩm đoạt giải
Nhà sáng chế Việt Nam tuần 5 – 2012. Video clip sản phẩm này tại:
youtube.com/watch?v=xwW13Yk5VUc và: youtube.com/watch?v=8rTEx3z5akw

Hình 1.3. Thiết bị dẫn đường cho người khiếm thị


Điều khiển xe ô tô từ xa, hình 1.4 là giao diện điều khiển ôtô bảy chỗ
(xe Captival) từ xa được thực hiện bởi thành viên Hocdelam Group tại phòng
thí nghiệm Biorobotics, Hàn Quốc. Giao diện này hoàn toàn được xây dựng
trong môi trường lập trình LabVIEW có khả năng hiển thị các thông số và tín
hiệu thực như: vận tốc xe, mực xăng, vị trí tay số của xe, video truyền từ xe qua
11
mạng không dây, âm thanh từ động cơ tỷ lệ thuận với vị trí bướm ga cũng được
giả lập làm cho việc điều khiển xe từ xa giống với việc lái xe trực tiếp nhằm
nâng cao chất lượng điều khiển xe.

Hình 1.4. Giao diện lái và chiếc ôtô được điều khiển từ xa
Mô phỏng 3D, hình 1.5 mô tả ứng dụng mô phỏng một hệ thống lái
không trục lái có kết nối 3D solidworks do ThS. Trần Văn Lợi, KS. Lê Toàn,
KS. Diệp Hiếu tại Hocdelam Group thực hiện.

Hình 1.5. Điều khiển tay Robot


Điều khiển phƣơng tiện không ngƣời lái, hình 1.6 mô tả ứng dụng
LabVIEW điều khiển robot không người lái nhằm dò tìm và khám phá dưới
nước của tập đoàn Nexans.

Hình 1.6. Robot dưới nước (Spider) được phát triển dựa trên của công ty
Nexans
12
Thu thập hình ảnh và mô phỏng động lực học, hình 1.7 trình bày ứng
dụng mô phỏng hệ thống lái không trục lái trong ô tô. Đồng thời, hình ảnh từ
webcam (webcam thông thường gắn qua cổng USB) được thu thập và đưa lên
giao diện người dùng (Graphical User Interface – GUI). Xem chi tiết đề tài này
bằng cách search google cụm từ sau: “Steer-By-Wire Systems with Realistic
Steering Feel”. Xem video clip Steer-by-wire.avi và file Steer-By-Wire Systems
with Realistic Steering Feel.pdf trong CD kèm theo sách này.

Hình 1.7. Hệ thống lái không trục lái tại phòng thí nghiệm Biorobotics
Thuật toán điều khiển tự động vị trí động cơ DC theo thuật toán PID
và giao diện trực quan trong hình 1.8 được Hocdelam Group viết dựa trên cơ
sở phần mềm LabVIEW. Với giao diện này, người điều khiển sẽ dễ dàng quan
sát giá trị vị trí mong muốn, và vị trí thực tế của động cơ, đồng thời, so sánh và
đánh giá được tốc độ đáp ứng, độ ổn định của động cơ DC trong quá trình vận
hành.

Hình 1.8. Điều khiển động cơ DC theo thuật toán PID


Đo lƣờng, giám sát và điều khiển hệ thống công nghiệp (SCADA),
hình 1.9 trình bày ứng dụng của LabVIEW trong hệ thống điều khiển và giám
sát dùng trong công nghiệp.

13
Hình 1.9. Đo lường, giám sát và điều khiển trong công nghiệp
Tới đây, bạn đã hình dung phần nào những ích lợi và sức mạnh của ngôn
ngữ lập trình đồ họa LabVIEW. Vậy, chúng ta hãy cùng bắt tay vào học và sử
dụng LabVIEW nhé.
Điều khiển robot chó, hình 1.10 trình bày nhóm nghiên cứu và sinh viên
tại ĐH Sư phạm Kỹ thuật Tp.HCM với sản phẩm là chó robot biết nói, biết hát
và cử động như chó thật khi có người vào nhà. Được báo Vnexpress đăng tải
tại: vnexpress.net/gl/khoa-hoc/2012/01/cho-may-da-nang-cua-sinh-vien-
viet-nam

Hình 1.10. Robot chó biết hát ru trẻ em, tự động sủa “gâu, gâu” khi có người
đột nhập vào nhà
Các bài toán điều khiển trong giáo dục, hình 1.11 là mô hình điều
khiển con lắc ngược do học viên Hocdelam.org thực hiện. Đề tài này triển khai
thuật toán PID, Fuzzy Logic để giữ thăng bằng con lắc trong suốt thời gian điều
khiển ngay cả khi có tác động làm mất thăng bằng từ con người.

14
Hình 1.11. Mô hình con lắc ngược điều khiển với LabVIEW
Điều khiển hệ thống giàn lạnh trong công nghiệp, hình 1.12 là dự án
đo lường cảm biến nhiệt độ, điều khiển quạt trong hệ thống lạnh do các học viên
thực hiện.

Hình 1.12. Mô hình hệ thống giàn lạnh


Xử lý ảnh nhận dạng lỗi dán nhãn các chai bia, hình 1.13 trình bày sản
phẩm hệ thống băng tải và phần mềm nhận dạng lỗi dán nhãn các chai bia do
học viên Đoàn Nguyên Mỹ thực hiện tại http://hocdelam.org.

Hình 1.13. Tác giả bên mô hình băng tải xử lý ảnh phân loại chai bia bị lỗi

15
Thu thập dữ liệu trong ô tô, hình 1.14 giới thiệu việc sử dụng
LabVIEW và card Hocdelam USB 9001 hoặc NI USB 6008 để thực hiện đo tín
hiệu, vẽ biểu đồ đặc tuyến các cảm biến trong ôtô và thực nghiệm thuật toán
chuyển đổi cảm biến nhằm hạ giá thành sửa chữa xe ôtô. Ứng dụng này được
thực hiện tại Đại học Sư phạm Kỹ thuật Tp.HCM năm 2008.

Hình 1.14. Thu thập dữ liệu từ cảm biến đo gió trong ôtô
Điều khiển xe quân sự từ xa tại ĐH Sư phạm Kỹ thuật Tp.HCM do
nhóm nghiên cứu gồm PGS. TS. Đỗ Văn Dũng, TS. Nguyễn Bá Hải, cùng 4 học
viên thạc sĩ và 2 sinh viên đại học thực hiện. Công trình đã đăng được 1 bài báo
quốc tế ISI và 4 bài báo tại các tạp chí khoa học chuyên ngành trong nước.

Hình 1.15. Xe quân sự từ xa được điều khiển với LabVIEW

1.3 DOWNLOAD VÀ CÀI ĐẶT LABVIEW


Để học và làm việc với LabVIEW, ta chỉ cần cài bản LabVIEW dùng thử
(evaluation version), so với phiên bản có bản quyền (như bản professional
version) thì bản dùng thử có giới hạn 30 ngày (bạn có thể cài lại hoặc đặt lại
thời gian hệ thống sau khi hết hạn dùng thử), và trong bản dùng thử, số thư viện
hàm (function library) sẵn có bị giới hạn. Tuy nhiên, thật may mắn là ta hoàn
16
toàn có thể tự xây dựng các thư viện này từ những hàm cơ bản có sẵn trong bản
dùng thử. Hãy yên tâm học và sử dụng LabVIEW nếu bạn chưa có đủ kinh phí
để trang bị cho mình LabVIEW có bản quyền.
Bạn tải phần mềm LabVIEW 2009 tại http://hocdelam.org hoặc đặt mua
bộ đĩa CD phần mềm LabVIEW và giáo trình lập trình LabVIEW qua Email:
supports@hocdelam.org | Hotline: 098 8868 524. Nhìn chung, các phiên bản
LabVIEW 8.5, 8.6 và 2010 có cách đặt tương tự với các bước như sau:
Giải nén file LabVIEW 2009.rar, chạy file Setup.exe trong thư mục
LabVIEW 2009. Sau đó bạn cài đặt phần mềm theo các bước lần lượt ở các
hình sau (các hình này không được đánh số hình).

Chọn Next liên tục cho đến khi gặp hình sau:

Chọn I accept và chọn Next, sau đó tiếp tục


chọn Next. Chọn Later khi được hỏi cài Driver, chọn Finish để hoàn thành cài đặt.

Khi khó khăn về cài đặt, vui lòng gửi email về: supports@hocdelam.org

17
1.4 PHƢƠNG PHÁP ĐỂ HỌC LABVIEW HIỆU QUẢ
Để học LabVIEW nhanh và hiệu quả, bạn nên:
- Tự mình lập trình lại các ví dụ và bài tập trong sách sau khi đã cài
đặt phần mềm LabVIEW.
- Trong quá trình học luôn thực hiện “3 quy tắc vàng” khi lập trình.
Ba quy tắc này được trình bày tại bài 2.
- Học nhanh LabVIEW cơ bản qua các video clip (Download miễn phí
tại: http://hocdelam.org

Bạn có biết?
Đối với việc học lập trình thì con đường duy nhất, nhanh nhất để giỏi là bạn
phải thực hành.

Tài liệu tiếng Việt khác tại: Tài liệu tiếng Anh tại:
 hocdelam.org  ni.com
 vagam.dieukhien.org  lava.org
 ino.com.vn  google.co.uk (bạn cần search các từ
khóa bằng tiếng Anh như “LabVIEW
 google.com.vn (bạn cần search
tutorial”, “labview book”, “labview
các từ khóa bằng tiếng Việt như
demonstration”, labview
“tài liệu labview”, “giáo trình
application”,vv).
labview”,…).
 Một số cuốn sách tham khảo gồm:
LabVIEW for everyone, LabVIEW
advanced programing technique, vv.
Đăng ký các khóa học thông qua các trình đào tạo LabVIEW tại Việt
Nam được cung cấp bởi các trung tâm, trường học sau:
 Nhóm nghiên cứu Hocdelam Group cung cấp chương trình đào tạo
LabVIEW tốt nhất theo nhu cầu của doanh nghiệp, nhà máy, trường
học và cá nhân trong cả nước (Đường dây nóng hỗ trợ: 098 8868
524).
 Đặc biệt: Bạn có thể đăng ký khóa học từ thiện cho cộng đồng 1 đô la
(xem hình học viên tại khóa học 1 đô la) qua website: hocdelam.org:

18
Hình 1.16. Các học viên tham gia lớp học 1 đô la về LabVIEW tại Tp.HCM
 Đối với người bận rộn, bạn có thể đăng ký học LabVIEW trực tuyến
(online) tại http://hocdelam.org.
 Trường Đại học Sư phạm Kỹ thuật thành phố Hồ Chí Minh tổ chức
các chương trình đào tạo các khóa học liên quan LabVIEW cho học
viên sau đại học, sinh viên hệ đại học chính quy ngành Cơ khí Động
lực.
 Các khóa lập trình LabVIEW cơ bản tại Trường Kinh tế Kỹ thuật Phú
Lâm, Q6, Tp.HCM.
 Học tại Công ty TNHH thương mại dịch vụ kỹ thuật LINH PHÚ, Q.
Gò Vấp, Tp.HCM.
 Nếu có vốn tiếng Anh tốt, bạn có thể đăng ký học trực tuyến tại
http://ni.com.
Xây dựng ứng dụng thực tế
Để học nhanh LabVIEW và xây dựng được các ứng dụng thực tế bạn có
thể trang bị phần cứng như card giao tiếp máy tính (giá thành thấp như
Hocdelam USB 9090, Hocdelam USB 9001, NI USB 6009) dùng để thực tập
thu thập tín hiệu cảm biến và điều khiển tự động động cơ, lò nhiệt,... với
LabVIEW. Địa chỉ cung cấp phần cứng trực tuyến hoặc tại Tp.HCM.
 htt://hocdelam.org
 Công ty TNHH thương mại dịch vụ kỹ thuật LINH PHÚ, Q. Gò Vấp,
Tp.HCM.
 Công ty Tân Minh Giang, P.10 - Q. Gò Vấp - Tp.HCM.
 http://ino.com.vn
 http://ni.com
19
1.5 BÀI TẬP
Câu 1: Hãy nêu khái niệm về LabVIEW
Câu 2: Source code là gì?
Câu 3: Ưu điểm của ngôn ngữ lập trình đồ họa LabVIEW so với các
ngôn ngữ khác lập trình khác là gì?
Câu 4: Nêu một số ứng dụng của LabVIEW trong giáo dục và công
nghiệp

THAM KHẢO
[1] http://hocdelam.org
[2] http://ni.com
[3] Nguyễn Bá Hải “Thật đơn giản: Điều khiển động cơ DC theo thuật toán
PID”, 2010.
[4] wikipedia.org
[5] Google.com – tham khảo nguồn một số hình ảnh trong bài viết

20
Bài 2
CÁC PHÉP TOÁN TRONG LABVIEW
Học xong bài này, bạn sẽ nắm được:
- Cấu trúc chung của một chương trình LabVIEW
- Ba quy tắc vàng khi lập trình LabVIEW
- Các phép toán trong LabVIEW
- Lưu file, tìm ví dụ, các công cụ trợ giúp

2.1. CHƢƠNG TRÌNH ĐẦU TIÊN: PHÉP CỘNG HAI SỐ X, Y


Để đơn giản, hãy xem LabVIEW như phần mềm soạn thảo văn bản
Microsoft Office Word. Và việc soạn thảo văn bản trong Word cũng
tương tự việc tạo ra Source Code trong LabVIEW. Hãy cùng làm thực
hiện chương đầu tiên – Phép cộng hai số x,y như sau:
Bình thường, để cộng hai số x,y bằng máy tính bỏ túi (pocket
calculator) như Hình 2.1. Ví dụ x=2, y=3, thì ta phải nhấn số 2, nhấn dấu
+, và nhấn số 3, sau đó nhấn dấu =, và kết quả sẽ hiển thị ra một màn
hình LCD. Như vậy ta sẽ có hai nút nhấn (2 và 3) để nhập giá trị, một
LCD để hiển thị giá trị ra của phép cộng, và hàm cộng (+).

Hình 2.1. Máy tính bỏ túi


Trong LabVIEW, các nút nhấn được gọi là các Control, các LCD
gọi là các Indicator. Phép cộng gọi là hàm (Function). Các control và
indicator sẽ nằm ở cửa sổ trước (Front panel), và hàm nằm ở cửa sổ sau
(Block diagram), còn gọi là cửa sổ chứa các sơ đồ khối. Xem thêm Hình
2.2.

21
Hình 2.2. Phân tích ví dụ tổng của x và y
Bây giờ ta thực hiện trong LabVIEW. Khởi động LabVIEW bằng
cách vào: All program> National instruments> LabVIEW
2009> LabVIEW. Hộp thoại xuất hiện và bạn chọn vào
Cửa sổ giao diện LabVIEW xuất hiện như Hình 2.3.

Hình 2.3. Cửa sổ giao diện LabVIEW khi mới khởi động
Tạo file mới: Tương tự trình tạo văn bản Microsoft Office Word,
để tạo file mới ta có 3 cách: chọn Blank VI (VI trắng) (Hoặc chọn: File>
New hoặc phím tắt Ctrl+N), ta thấy xuất hiện hai của sổ - màu xám
(Front panel) và màu trắng (Block diagram) như trong Hình 2.4. Nhấn
Ctrl+T để canh đều hai cửa sổ Front panel (FP) và Block diagram (BD).

22
Hình 2.4. Front panel và Block digram
 Tạo control để nhập số 2 và 3 như sau:
- Click chuột phải (Right click) lên front panel (FP) lấy khối
Numeric Control bằng cách click chọn khối như[hình 2.5].

Hình 2.5. Lấy numeric control trên FP

- Rê chuột ra vùng trống của FP , chọn vị trí cần đặt Control


này.
- Nhấn chuột trái (Left Click) chuột phải để thả Control xuống FP

- Nhập chữ A vào mục tô đen để thay đổi tên khối

- Tương tự ta tạo khối B để có hai khối A,B

 Tạo indicator để hiển thị kết quả của tổng như sau:
- Right click lên FP, vào Num Inds (Numeric Indicator) lấy khối
Numeric Indicator bằng cách click chọn khối như Hình 2.6.

23
Hình 2.6. Lấy numeric indicator trên FP
- Thả xuống vùng trống của FP.

- Sửa tên khối này thành A+B. Ta được

 Lấy hàm cộng (+) để thực hiện phép cộng hai số 2 và 3 bằng cách:
- Right Click lên Block Diagram (BD). Chọn vào dấu mũi hai mũi
tên để xổ của sổ xuống.

Hình 2.7. Lấy hàm cộng tại BD

- Chọn vào thư viện , chọn vào , chọn hàm cộng .

Hoặc chọn Express> , chọn hàm cộng như Hình 2.8.

24
Hình 2.8. Lấy hàm cộng tại BD
- Đặt ra vùng trống trong BD (không thể đặt hàm tại FP). Ta được

- Di chuột ra các vị trí đầu (hình của các khối Control và Indicator),

sẽ thấy hình cuộn chỉ hiện ra,


- Left Click khi cuộn chỉ hiện ra, sau đó rê chuột tới đầu nối của

hàm cộng rồi nhất Left Click để kết nối.


- Tƣơng tự, ta nối B vào hàm cộng. Và nối đầu nhọn bên phải của
tam giác hàm cộng vào Indicator A+B

- Ta đƣợc (Xem ví dụ này trong CD kèm theo tại


đường dẫn: CD/Bài 2/Vi du2-1 - Phep cong hai so A,B.vi
 Chạy chƣơng trình
- Nhập giá trị 2 vào ô Control A, 3 vào ô Control B
- Nhấn nút Run có hình tam giác bên FP hoặc bên BD đều
được để chạy chương trình.
- Indicator A+B xuất ra giá trị (trả về giá trị) 5:

Như vậy, bạn đã vừa hoàn thành chƣơng trình đầu tiên trong
LabVIEW. Xin chúc mừng bạn!
Lưu ý: Thư viện hàm Express là tập con của thư viện
Programming. Nói cách khác là những hàm đặt trong thư viện Express
đều có trong thư viện Programming. Thư viện Express chỉ chứa những
hàm thường dùng.

25
2.2. PHÂN TÍCH CẤU TRÚC MỘT BÀI TRÌNH LABVIEW
Qua ví dụ mục 2.1 ta thấy, một chương trình LabVIEW dù đơn
giản nhất hay phức tạp nhất cũng được tạo nên một cách rất đơn giản từ 4
thành phần cơ bản sau: các khối Control đóng vai trò input (hay giá trị
nhập vào), các Indicator đóng vai trò Ouput (giá trị hiển thị ra, kết quả),
các hàm và các đƣờng dây nối (wire) các khối và hàm lại. Nếu bạn đã
thực hiện được chương trình phép cộng trên thì mọi chương trình phức
tạp sau này bạn cũng sẽ hoàn toàn thực hiện đƣợc khi theo dõi kỹ các
tập sách này.
Các Control thì luôn nối vào các nút bên trái của hàm. Các
Indicator thì luôn nối vào các nút bên trái của hàm như Hình 2.9. Đặc
điểm này là một lưu ý vô cùng quan trọng khi sử dụng qui tắc vàng
Change to sau này.
Nút bên phải
hàm

Các nút bên trái


hàm
Hình 2.9. Các nút bên trái và bên phải của hàm cộng
Ta cũng nhận thấy, các Control thì có các nút mũi tên lên-xuống
để tăng giảm giá trị (hoặc nhập trực tiếp vào ô Control). Các Indicator thì
không thể nhập giá trị vào. Control thì có màu trắng, còn Indicator thì có
màu xám.
Một Control có thể đổi thành Indicator (hoặc Constant) bằng cách
nhấp Right Click lên Control cần đổi, chọn Change to Indicator. Hoặc
ngược lại, một Indicator có thể đổi thành Control bằng phép Change to
Control được đề cập chi tiết ở mục 2.3. Constant chính là một Control có
giá trị không đổi suốt thời gian chạy (Run) chương trình.
Các Control và Indicator đều có ảnh của chính mình bên BD, ảnh
này tự động tạo ra khi ta lấy các Control và Indicator bên FP.
Bạn có biết?
Hướng dẫn thực hiện phép cộng này còn được trình bày dưới dạng
Video Clip có thể download được miễn phí từ http://hocdelam.org.

26
2.3. BA QUY TẮC VÀNG
Ba quy tắc vàng là những hoạt động phải thực hiện liên tục trong
suốt quá trình lập trình LabVIEW. Ba quy tắc này là:
Quy tắc 1: Right Click> Create/Replace/Change to để lấy các khối,
tạo khối, thay thế khối và đổi chức năng khối.
Quy tắc 2: Ctrl + H để xem sơ đồ chân của hàm và đọc hướng dẫn
tóm tắt của một hàm bất kỳ (context help).
Quy tắc 3: Search để tìm kiếm các hàm, đối tượng
Nếu biết kết hợp các quy tắc này, việc lập trình LabVIEW của bạn
sẽ đạt hiệu quả cao như: rút ngắn thời gian, giảm bớt các công đoạn vào
thư viện lấy Control, Indicator, vv. Hãy xem cách áp dụng quy tắc thứ
nhất trong ví dụ tính tổng hai số A+B trên như sau:
- Lấy hàm cộng từ BD như Hình 2.8
- Rê chuột vào 2 nút phía trái hàm (Hình 2.9) cho tới khi hình cuộn chỉ
hiện ra . Right Click như hình 2.10, chọn Create, chọn Control.

Hình 2.10. Cách tạo Control theo quy tắc vàng 1


- Tương tự, ta tạo Control thứ 2.
- Rê chuột lên nút bên trái còn lại của hàm. Right Click, Chọn
Create, Chọn Indicator như Hình 2.11.

Hình 2.11. Cách tạo Indicator theo quy tắc vàng 1


Như vậy, khi áp dụng quy tắc vàng 1 giúp bỏ qua việc lấy các
Control và Indicator từ FP và giúp việc lập trình trở nên nhanh hơn, hạn
chế số lần Click chuột để tìm các khối cần thiết trong lập trình.
Về quy tắc Ctrl+H, hãy lấy hàm cộng ra tại Block Diagram, và
nhấn Ctrl+H, sau đó đưa chuột lên hàm cộng. Ta sẽ thấy sơ đồ chân và
27
lời giải thích về hàm cộng, nếu nhấn tiếp Ctrl+H lần nữa thì sơ đồ chân
sẽ ẩn đi.

Hình 2.12. Context help hiển thị sơ đồ chân của Control (x,y) và
Indicator (x+y)
Về quy tắc Search, bạn chọn Right Click vào FP hoặc BD, sau đó
chọn chữ Search ở góc phải phía trên của hộp thoại thư viện hàm, sau đó
gõ tên tiếng anh của các control hoặc indicator (đối với FP) hoặc tên
hàm (đối với BD) thì sẽ dễ dàng tìm ra các hàm. Cách này giúp người lập
trình tiết kiệm thời gian trong việc tìm kiếm các hàm. Hãy yên tâm nếu bạn
không giỏi tiếng Anh vì bạn có thể dễ dàng tra cứu tên của control,
indicator hoặc tên hàm bằng các từ điển Việt-Anh hoặc công cụ Google
Translate trực tuyến.
Ngoài ra, bạn cũng cần lưu ý tới các ví dụ có sẵn của LabVIEW tìm thấy
trong menu Help> Find examples để tìm các ví dụ (Example) có sẵn
trong LabVIEW. Các ví dụ này giúp bạn tiết kiệm đáng kể thời gian để
tìm hiểu và làm chủ LabVIEW.

2.4. CÁC PHÉP TOÁN THÔNG THƢỜNG


Từ bài toán trên, ta có thể viết chương trình tính tích và tổng hai số
A,B như Hình 2.13. Để thực hiện, bạn chỉ cần lấy thêm hàm nhân (cùng
vị trí với hàm cộng trong BD), sau đó đƣa chuột lên dây nối từ A đến
hàm cộng , Click chuột trái lên dây này, và nối vào đầu vào của hàm
nhân.

Hình 2.13. Tính tích và tổng hai số A,B

28
Phần này hướng dẫn cách làm các phép toán thông thường trong
LabVIEW như phép chia lấy dư, phép tính căn bậc 2, hàm số mũ, trị
tuyệt đối, nhân với -1, vv.
Chuột phải trên BD, Chọn Programming, Chọn Numeric, ta lấy

hàm căn bậc hai và chia lấy dư . Tạo các Contronl và


Indicator như hình. Ta sẽ tính được căn của A là 1.41421. Và với phép
chia B cho C (10:3) ta được phần nguyên là 3, phần dư là 1.

Hình 2.14. Phép tính căn và chia lấy dư


Tương tự, ta có phép trị tuyệt đối và nhân với -1 như trong Hình
2.15. Hãy mở file ví dụ 3: các phép tính để tham khảo chương trình mẫu

Hình 2.15. Phép trị tuyệt đối và nhân với -1


Bạn có thể xem ví dụ về các phép toàn trong CD kèm theo sách tại
thư mục CD/Bài 2/Vi du2-2 Cac phep toan.vi

2.5. LƢU FILE, MỞ FILE, TÌM VÍ DỤ, CÔNG CỤ TRỢ GIÚP


Trong LabVIEW, để lưu file ta chọn File, Save, Chỉ đường dẫn vị
trí để lưu file và đặt tên cho file cần lưu là Vi du 1, nhấn OK. Đối với
file chương trình LabVIEW thì đuôi của nó là .VI (tương tự như văn bản
trong Microsoft Word có đuôi là .DOC hoặc .DOCX). Chữ VI viết tắt
của chữ Virtual Instrumentation – thiết bị ảo.

Hình 2.16. Lưu file

29
Để tạo lưu file hiện tại đang mở thành một file mới ta chọn Save
As, hộp thoại như Hình 2.17 sau sẽ hiện ra. Ý nghĩa của ba lựa chọn
trong mục Copy là:
- Substitute… có nghĩa File mới tạo sẽ được mở, file cũ sẽ đóng lại.
- Create… có nghĩa file cũ sẽ được mở, file mới tạo được đóng lại.
- Open… có nghĩa cả hai file cũ và mới tạo sẽ được mở.
Nếu bạn chọn mục Rename thì không có file mới nào được tạo ra
nhưng bạn có thể thay đổi tên của file hiện tại.

Hình 2.17. Các lựa chọn khi lưu file bằng Save As
Để mở file, ta vào File, Open và chọn File cần mở. Lưu ý, các file
LabVIEW được lập trình bởi LabVIEW phiên bản quá cũ sẽ không mở
được bằng phần mềm LabVIEW phiên bản cao. Và bạn cũng không thể
mở các file được lưu bằng LabVIEW có phiên bản cao hơn bằng
LabVIEW có phiên bản thấp hơn. Để khắc phục điều này, bạn hãy sử
dụng chức năng Save for previous version (trong File) khi muốn file
của bạn có thể mở bằng các phiên bản LabVIEW thấp hơn.
Context Help nhằm giúp giải thích các hàm, các đối tượng trong
LabVIEW là một công cụ vô cùng thiết thực. Để hiện Context Help của
bất kỳ hàm nào bạn chưa nắm rõ cách dùng, Chọn Ctrl + H. Sau đó đưa
chuột lên hàm bất kỳ (ví dụ, hàm tính căn bậc 2), ta sẽ thấy Context Help
hiện ra. Để làm mất Context Help, ta nhấn Ctrl + H một lần nữa.

Hình 2.18. Nhấn Ctrl + H và đưa chuột vào vị trí hàm để thấy Context Help
30
Để đọc chi tiết Context Help, bạn chọn Detailed Help màu xanh. Từ
Detailed Help, bạn có thể cuộn chuột xuống dưới cùng để mở các ví dụ
có sẵn trong LabVIEW để tham khảo thêm về hàm đang tìm
hiểu. Học qua ví dụ là một phương pháp tốt cho những người mới bắt đầu.

2.6. PHẦN ĐỌC THÊM


Phần này giới thiệu tóm tắt các thư viện của LabVIEW nằm trong BD.
Khi mở BD của LabVIEW bạn thấy có rất nhiều thư viện như trong hình 2.19.

Hình 2.19. Các thư viện hàm trong LabVIEW


Các thư viện đó có ý nghĩa như sau:
Programming là nơi chứa hỗ trợ công cụ, hàm lập trình nói chung
(giống các ngôn ngữ khác như C, Matlab, vv…)
SignalExpress hỗ trợ thu thập dữ liệu, hiển thị tín hiệu trên máy tính.
Advanced Signal Processing Toolkit hỗ trợ xử lý tiến hiệu nâng cao.
Control Design and Simulation hỗ trợ xây dựng các mô hình động lực
học của các hệ thống và thiết kế bộ điều khiển (giống Matlab Simulink).
Digital Filter Design Toolkit hỗ trợ thiết kế bộ lọc số.
PID and Fuzzy Logic Toolkit hỗ trợ thiết kế bộ điều khiển PID
hoặc Fuzzy Logic

31
FPGA hỗ trợ lập trình FPGA
Real-Time hỗ trợ lập trình ứng dụng thời gian thực
Internet Toolkit hỗ trợ giao tiếp qua mạng Internet.
Database Connectivity Toolkit hỗ trợ kết nối cơ sở dữ liệu.
Vision Development Module hỗ trợ công cụ phát triển hệ thống
thu thập và xử lý ảnh.
Simulation Interface Toolkit cho phép kết nối LabVIEW và
Matlab Simulink.
Vision and Motion hỗ trợ lập trình chuyển động nhiều bậc.
LabVIEW Embedded Modudle là modun lập trình nhúng, dùng để lập
trình vi điều khiển.
Express: Là nơi chứa các hàm thường dùng. Các hàm thường dùng
là tập con của thư viện LabVIEW Programming.
Trong các thư viện thì thư viện Programming là quan trọng nhất.
Đó chính là nơi chứa toàn bộ hàm cơ sở của môi trường lập trình đồ họa
LabVIEW. Và ở tập sách này, chúng ta sử dụng các hàm trong
Programming, sau đó áp dụng các hàm này để bắt tay vào thực hành thu
thập dữ liệu, điều khiển PID động cơ DC,…với phần cứng thực.
Từng module trên sẽ trình bày chi tiết trong các tập sách xuất bản
tới đây. Các yêu cầu và đóng góp cho các tập sách tiếp theo, vui lòng liên
hệ tác giả qua E-mail: bahai.ce@gmail.com.

2.7. BÀI TẬP


Câu 1: Nêu ý nghĩa của Front Panel và Block Diagram.
Câu 2: Nêu cấu trúc chung của một chương trình LabVIEW
Câu 3: Viết chương trình thực hiện phép cộng, trừ, nhân, chia hai
số A,B. A,B được nhập vào từ bàn phím.
Câu 4: Viết chương trình tính hai phép tính sau biết A,B,C,n được
nhập vào từ bàn phím.
2 B  3C
a) A (17 B  C ) b) 1102 A
2011
2011( A  B)
n
c) (gợi ý câu 4c: Hãy chọn công cụ search ở BD để
C
tìm hàm “power of x”).

32
Bài 3
CÁC LOẠI CONTROL VÀ INDICATOR
Học xong bài này, bạn sẽ nắm được:
- Các loại Control, Indicator thường dùng
- Các kiểu dữ liệu của các Control và Indicator
- Chuyển đổi qua lại giữa các kiểu dữ liệu
- Bảng, biểu đồ, đồ thị

3.1. CÁC CONTROL THƯỜNG DÙNG


Các control thường dùng gồm các dạng: numeric, fill slide, pointer
slide, knob, dial, constant, string, simulated signal,vv.
Để lấy các Control, ta vào thư viện theo đường dẫn: FP> Express
> Numeric Control như Hình 3.1 và chọn Control cần lấy. Ví dụ lấy
Numeric control: Right click trên cửa sổ FP, chọn Express, chọn
Numeric Control, Chọn Numeric Control và đặt ra màn hình. Tương
tự đối với Slide control và String control ta làm như trên.

Hình 3.1. Cách lấy Control


Ta có thể copy nhanh các Control bằng cách nhấn Ctrl (Trên bàn
phím) và kéo thả các Control bằng chuột trái.

Hình 3.2. Copy nhanh bằng việc kéo thả


Các Control thường dùng được tóm tắt tại bảng sau:

33
Numeric control: là control dạng số

Fill slide: Control có dạng một thanh trượt

Pointer slide: Control dạng thanh trượt có nút kéo

Knob: Nút vặn

Dial: Đĩa xoay

Constant: hằng số, hay có thể xem là một dạng


numeric control nhưng giá trị không thay đổi trong
suốt quá trình chạy chương trình. Để tạo Constant ta
lấy một Numeric control, chuột phải lên Numeric
control chọn Change to constant (Quy tắc vàng 1).
String control: là 1 dòng chữ hay còn gọi là text
control. Sử dụng text Control này để nhập các chữ
hoặc chuổi ký tự, hoặc một câu văn, xem thêm bài 4
– case structure.
Simulated signal: một tín hiệu được mô phỏng sẵn
trong LabVIEW có thể dùng như một Indicator trong
một số trường hợp. Lấy Simulated signal bằng cách
vào: BD> Express> Input> Simulated Signal. Xác lập
các thông số khi bảng thông số hiện ra.

Nối đầu ra của khối vừa lấy với một Graph bằng cách
chọn Right Click lên đầu ra, Create> Indicator.

Thường các control được chia làm 3 dạng: Boolean, Numeric và


String.

34
Ví dụ về sử dụng các loại control và Indicator khác nhau được trình
bày trong hình 3.3. Xem ví dụ này trong CD kèm theo sách này tại thư
mục CD/Bài 3/Vi du3-1 cac dang Control va Indicator.vi

Hình 3.3. Ví dụ về các control và Indicator

3.2. CÁC DẠNG INDICATOR THƯỜNG DÙNG


Tương tự các Control, ta cũng có các Indicator như: numeric,
string, slide, vv… Giữa Control và Indicator có thể chuyển đổi qua lại
nhờ vào thao tác Right Click> Change to Control hoặc Change to
Indicator. Như vậy ta lại thấy quy tắc vàng Right Click đã phát huy
hiệu quả (việc chuyển đổi qua lại) trong trường hợp này.
Để lấy các Indicator, ta vào thư viện theo đường dẫn: FP> Express
> Numeric Indicator> như Hình 3.1 và chọn Control cần lấy. Ví dụ lấy
Numeric control: Right click trên cửa sổ FP, chọn Express, chọn
Numeric Indicator, Chọn Numeric Indicator và đặt ra màn hình.
Tương tự đối với Slide control và String control ta làm như trên.

Hình 3.4. Cách lấy Indicator

35
Bảng tóm tắt các Indicator như sau:
Numeric indicator: là Indicator dạng số

Meter: Indicator có dạng đồng hồ vuông

Gauge: Indicator dạng đồng hồ vuông

Thermometer: Cột nhiệt độ

Graduated Bar: Thanh hiển thị quá trình

String: là 1 dòng chữ hay còn gọi là text Control, dùng


để xuất các chữ hoặc chuỗi ký tự, hoặc một câu văn,
xem thêm bài 4 – Case structure.
Lấy string indicator tại FP> Modern> String & Path>
String Indicator.
Chart: là biểu đồ hiển thị các giá trị theo trục thời gian

Graph: là đồ thị thường được dùng để hiển thị các tín


hiệu dạng sóng (waveform).

XY Graph: đồ thị hiển thị quan hệ giữa hai tín hiệu X


và Y hoặc dùng trong bài vẻ đồ thị hàm số y=f(x) – được
trình bày trong bài 4.
Ví dụ về sử dụng Chart trình bày như hình 3.4.

Hình 3.5. Cách lấy Indicator


36
Trong hình trên, để tạo sóng Sine, ta lấy Simulated Input theo
đường dẫn: BD> Express> Input> Simulated Input và đặt thông số như
mặc định trong hình 3.5.

Hình 3.6. Cách lấy Indicator


Ngoài ra, một Numeric Indicator đã được sử dụng để chỉnh
Amplitude (biên độ) của sóng Sine, và một Graph Indicator để hiển thị
sóng Sine. Xem file Vi du 3-2 Waveform display.vi trong CD kèm theo
sách.

3.3. KIỂU DỮ LIỆU TRONG LABVIEW VÀ CHUYỂN ĐỔI DỮ LIỆU


Kiểu dữ liệu là công cụ dùng để gán (ép) một numeric hay
indicator vào một dãy giá trị nào đó. Ví dụ, ta muốn một Numeric
Control có giá trị (và chỉ nằm trong giá trị đó ngay cả khi người điều
khiển nhập giá trị khác) là 0-255 thì ta sẽ gán Numeric Control đó vào
kiểu dữ liệu Unsigned 8 bit (Viết tắt là U8). Muốn đổi kiểu dữ liệu của
một Control, ta chọn Right Click lên Control đó> Chọn Representation>
Chọn Kiểu cần gán. Hình 3.6 liệt kê các kiểu dữ liệu trong LabVIEW.

37
Hình 3.7. Các kiểu dữ liệu trong LabVIEW
Trong LabVIEW có nhiều kiểu dữ liệu khác nhau, ví dụ:
Ký Kiểu dữ liệu Số bit Khoảng giá trị
hiệu
Byte signed integer 8 –128 tới 127
Word signed integer 16 –32,768 tới 32,767
Long signed integer 32 –2,147,483,648 tới
2,147,483,647
Quad signed integer 64 –1e19 tới 1e19
Byte unsigned integer 8 0 tới 255
Word unsigned integer 16 0 tới 65,535
Long unsigned integer 32 0 tới 4,294,967,295
Cách chuyển đổi kiểu dữ liệu: chuột phải lên đối tượng muốn
chuyển đổi chọn Represention rồi chọn kiểu dữ liệu mong muốn.

3.4. BÀI TẬP


Bài 1: Viết chương trình tính y  4 x 2  8 , với x nhập từ bàn
phím. Trong đó, x có kiểu Numeric Control, y là Indicator kiểu đồng
hồ.
Bài 2: Viết chương trình vẽ đồ thị: y  n 2 x 2  m . Tập xác định
(TXĐ): x  x  Z | 100  x  100. Trong đó, n được nhập vào từ bàn
phím và có dạng Numeric Control.
Bài 3: Viết chương trình tính Y= | b-c |
Y là Numeric có kiểu Unsigned 8 bit.
b, c là các Numeric kiểu Double pricision.

38
Bài 4
VÒNG LẶP WHILE (WHILE LOOP)
VÒNG LẶP FOR (FOR LOOP)
Học xong bài này, bạn sẽ nắm được:
- Sử dụng được vòng lặp, cấu trúc thường gặp trong LabVIEW
- Các ứng dụng của while loop, for loop

4.1. VÒNG LẶP WHILE


Vòng lặp while là vòng lặp có điều kiện như trong hình 4.1. Ý
nghĩa của vòng lặp while là cho phép chạy chương trình mãi tới khi nào
nút stop được nhấn thì mới dừng lại. Để lấy while loop ta vào BD>
Express> Execution> While loop như trình bày trong hình 4.1

Hinh 4.1. Lấy while loop tại BD


While loop sẽ lặp lại chương trình được đặt trong vòng lặp này,
tới khi nút Stop (conditional terminal) nút Stop tại FP được nhấn
(Lưu ý rằng nút Stop có dạng dữ liệu là Boolean-true hoặc false).
Xét ví dụ trong hình 4.2 như sau: Có hai phép tính cộng. Phép cộng
A là cộng Numeric 1 và Numeric 2 hiển thị kết quả ra Indicator 1, phép
cộng B là phép cộng Numeric 2 và Numeric 3 hiển thị kết quả ra
Indicator 2. Khác biệt duy nhất là phép cộng A đặt ngoài vòng lặp còn
phép cộng B đặt trong vòng lặp. Bạn hãy chạy chương trình (nhấn phím
tắt Ctrl+R), sau đó thay đổi giá trị của Numeric 1, 2, 3, 4. Ta sẽ quan sát
39
thấy phép cộng A sẽ không có giá trị thay đổi tại Indicator 1. Còn
Indicator 2 sẽ thay đổi giá trị khi bạn thay đổi giá trị nhập vào Numeric 3
và 4. FP và BD của ví dụ này được trình bày trong hình 4.2. Xem ví dụ
này trong CD> Bài 4> while loop.vi

Hình 4.2. Tính tổng với while loop


Ngoài ra, trong while loop còn có chân iteration (i) có ký hiệu ( ) là
bộ đếm số lần lặp hiện tại (current loop iteration count) (lần thực hiện đầu
tiên i=0). Giá trị lớn nhất của (i) là 2,147,483,647 (231,), và giữ mãi mãi
sau đó. Nếu cần giá trị lớn hơn 2,147,483,647, dùng shift registers có
miền giá trị integer lớn hơn, hoặc sử dụng một vòng lặp for loop trong
trường hợp này.
Ngoài ra, ta còn có thể sử dụng shift-register trong while loop.
Shift-register là một thanh ghi hoạt động như một ô nhớ. Ta sử dụng
thanh ghi này để truy cập lịch sử giá trị của một tín hiệu nào đó, ví dụ
chương trình của chúng ta đang chạy ở thời gian là 10:30am, và ta muốn
xem lại giá trị của tín hiệu đo được từ cảm biến nhiệt độ ở thời điểm
10:29am. Ngoài ra, Shift register cũng có thể dùng để thực hiện các phép
toán cộng dồn (Xem trong bài điều khiển PID trong tập 2).
Nói cách khác là có thể dùng shift registers để “chuyển” giá trị của
đối tượng/tín hiệu nào đó ở vòng lặp này sang vòng lặp kế tiếp. Bạn đọc
có thể xem them ví dụ cách sử dụng Shift register trong CD/Bài 4/shift
register.vi hoặc ví dụ dùng shift register để lập trình bộ điều khiển PID
điều khiển động cơ DC sử dụng card Hocdelam USB-9001 ở bài 10 và
tải ví dụ này tại tại website http://labview.hocdelam.org (Mục ví dụ
mẫu).

40
Hình 4.3. Sử dụng shift register

4.2. VÒNG LẶP FOR


Cũng như while loop, for loop là vòng lặp mà số lần lặp lại có thể
định trước bởi người lập trình. Lấy for loop trong thư viện hàm như sau:
BD> Express> Execution> For loop.
Ví dụ ta muốn chạy chương trình tính tổng A+B trong 100 lần thì
sau 100 lần lặp lại phép tính tổng thì chương trình sẽ tự thoát (tự dừng).
Như trong hình ta đã đặt số vòng lặp cần lặp lại là 100 (đặt thông qua
khối Numeric). Sau khi chạy chương trình thì Numeric 2 (đóng vai trò là
Indicator chỉ ra số vòng đã lặp được) sẽ báo số 99. Lý do là LabVIEW
đếm vòng lặp đầu tiên có giá trị (i)=0.

Hình 4.4. For loop

41
4.3. ỨNG DỤNG VÒNG LẶP ĐỂ VẼ ĐỒ THỊ
Áp dụng XY Graph trong bài 3 và While loop trong bài này để vẽ
đồ thị hàm số y=f(x) theo yêu cầu sau: Viết chương trình vẽ đồ thị:
y  2 x . Tập xác định (TXĐ): x  x  Z | 100  x  100.
Theo cách vẽ đồ thị thông thường được hướng dẫn bởi các thầy,
cô dạy toán học phổ thông thì việc vẽ đồ thị được thực hiện như sau:
- Lập bảng biến thiên: Do y  2 x có dạng đường thẳng nên ta chỉ
cần lấy tọa độ x,y của hai điểm mà đường thẳng đó đi qua, sau đó
nối hai điểm đó lại sẽ cho ta đồ thị của đường thẳng. Bước sau
cùng là xóa đồ thị nằm phía ngoài TXĐ và chỉ để lại phần đồ thị
nằm trong khoảng 100  x  100 .
- Bảng biến thiên:
Giống như kiến thức ở phổ thông đã học, ta dễ dàng lập bảng biến
thiên bằng cách cho giá trị của x=0 và x=1. Tính y theo công thức
y  2x .
Bảng 4.1. Bảng biến thiên của hàm số y  2 x
X -∞ 0 1 +∞
Y 0 2
Từ bảng biến thiên trên ta có kết luận là đồ thị y  2 x là một
đường thẳng đi qua hai điểm A(0;0) trùng với gốc tọa độ O và B(1;2).
Đồ thị được vẽ dễ dàng bằng thước kẻ nối hai điểm A,B như sau:

Hình 4.5. Đồ thị hàm số y  2 x


Hãy cùng vẽ đồ thị này bằng LabVIEW sử dụng XY Graph như sau:
42
- Lấy While loop tại BD>Express>Exec Control>While loop như
hình 2.7.

Hình 4.6. Lấy hàm while loop


- Lấy đồ thị XY Graph để vẽ đồ thị tại FP>Express> Graph
Indicator> XY Graph và tạo các Control, Indicator như hình 2.8.

Hình 4.7. Vị trí của XY Graph


Xem file Vi du 4-1 Dothi y=2x.vi trong CD kèm theo sách.

Hình 4.8. Đồ thị hàm số y=2x vẽ bằng LabVIEW sử dụng hàm while
loop
Trong block diagram ở hình 2.9, ta cần tạo hai Boolean control tại
hai chân: Enable – cho phép vẽ đồ thị là True và Reset – xóa đồ thị là
43
False. Việc tạo hai Boolean Control này có thể sử dụng quy tắc Right
click> Create constant hoặc ta tạo Control và chọn Right click> Change to
constant.

Bạn có biết?
Nếu đã hoàn thành phần này, bạn đã có đủ khả năng để thực hiện các
ứng dụng thú vị với LabVIEW thông qua một trong các Card DAQ
(card thu thập dữ liệu) như NI USB-6008, NI USB-6009, hoặc phần
cứng giá rẻ dành cho sinh viên, giảng viên Hocdelam USB-9001,
Hocdelam USB-9009, các ứng dụng bạn có thể nhanh chóng thực hiện
là:
- Thu thập dữ liệu từ các cảm biến đo nhiệt độ LM35, đo khoảng
cách Sharp, đo áp suất, đo độ chân không, độ pH., đo vận tốc
động cơ DC, độ nghiêng của một mặt phẳng, vv.
- Điều khiển đèn LED, động cơ DC, AC, vv…
- Để thực hiện ngay được các ứng dụng này, bạn vui lòng bỏ qua
các bài tiếp theo và xem tiếp các Bài 10, 11.
- Phần cứng có thể đăng ký mượn (nếu bạn là sinh viên hoặc giảng
viên) hoặc đặt mua tại: http://sanpham.hocdelam.org.

4.4. BÀI TẬP


Câu 1: Hãy nêu khái niệm về while loop
Câu 2: Vẽ đồ thị hàm số sau: y  Ax  B , A và B được nhập vào từ
bàn phím.
Câu 3: Thực hành đo lường các cảm biến vào máy tính. (Tham
khảo thêm Bài 10, 11 để thực hiện câu này).

44
Bài 5
CẤU TRÚC TRƯỜNG HỢP (CASE
STRUCTURE)
Học xong bài này bạn sẽ:
- Nắm được vị trí hàm cấu trúc case tại BD, khái niệm và các sử
dụng cấu trúc trường hợp
- Nắm được các dạng cấu trúc trường hợp
- Thực hiện được các ví dụ với cấu trúc case

5.1. CẤU TRÚC TRƯỜNG HỢP (CASE STRUCTURE)


Một cấu trúc Case bao gồm một số trường hợp khác nhau. Các
trường hợp khác nhau đó được chia ra thành các ô khác nhau (trong hình
51. ta thấy có hai cửa sổ true và false). Ứng với các ô đó là code
LabVIEW cho từng trường hợp.
Tại một thời điểm nào đó thì chỉ có duy nhất một trường hợp được
kích hoạt. Việc kích hoạt trường hợp nào sẽ phụ thuộc vào giá trị được
nối với Case slector (bộ chọn trường hợp). Cụ thể như trong hình 5.1, cấu
trúc case sẽ thực hiện các lệnh đặt trong hai cửa sổ True hoặc False tương
ứng với giá trị True hoặc False được nối vào case selector – đây là cấu
trúc case dạng Boolean Control.
Ngoài ra, trong kỹ thuật có nhiều nhóm trường hợp khác nhau như: cấu
trúc trường hợp là Numeric Control, Boolean Control hoặc String control.

Hình 5.1. Cấu trúc Case


45
5.2. ỨNG DỤNG CẤU TRÚC CASE
Ví dụ 1: Cấu trúc trường hợp dựa trên Boolean Control
Trong cuộc sống có một số trường hợp như sau: Tắt đèn bằng cách
đưa công tắc (switch) về vị trí OFF và bật đèn bằng cách đưa công tắc về
vị trí ON. Như vậy dựa vào vị trí công tắc mà hệ thống điện sẽ đóng hay
ngắt điện tới bóng đèn.
Việc chuyển công tắc (bởi tay người điều khiển) là tín hiệu đầu vào
để hệ thống điện sinh ra sự ngắt hay cấp điện tới bóng đèn.
Ứng dụng viết chương trình tắt bật một số bóng đèn theo yêu cầu
sau: Có ba bóng đèn, tùy vào vị trí công tắc ON hay OFF thì cả ba bóng
đèn sẽ tắt hoặc bật.
Thực hiện trong LabVIEW như sau:
- Lấy case structure bằng cách vào BD>Express>Execution> Case
structure như hình vẽ 5.1.
- Lấy nút nhấn (công tắc) bằng cách vào FP> Express> Bottom>
Chọn kiểm công tắc gặt lên-xuống
- Nối nút nhấn vào case selector.
- Quan sát thấy hai cửa sổ True/False của Case. Tùy vào vị trí công
tắc đang ON hay OFF thì cấu trúc sẽ thực thi những hàm đặt trong
cửa sổ True hay False tương ứng.
- Thêm vòng lặp vào chương trình để có được chương trình như hình 5.3.

Hình 5.2. Vị trí của hàm cấu trúc case


Hình ảnh FP và BD của chương trình bật/tắt ba bóng đèn như hình
5.3, xem file mẫu Case - boolean 1.vi trong đĩa CD/Bài 5. Trong ví dụ
Case - boolean 1.vi, tùy vào giá trị của nút nhất đang gạt lên hay xuống
thì chương trình trong cửa sổ True hay False sẽ được thực hiện.
46
Hình 5.3. FP và BD của cấu trúc case
Tham khảo thêm ví dụ Case - boolean 2.vi trong thư mục bài 5
trong đĩa CD để tham khảo thêm ví dụ về dạng cấu trúc case dựa trên
kiểu Boolean này. Trong ví dụ Case

Hình 5.4. Ví dụ 2 của Case dạng boolean


Ví dụ 2: Cấu trúc trường hợp dựa trên Numeric Control
Ví dụ: Viết chương trình hiển thị các lời chào khác nhau tùy vào
các giá trị nhập vào khác nhau. Đây là cấu trúc trường hợp dựa trên
Numeric number (số). Giá trị nhập vào đó chính là Case selector. Số này
là cơ sở (giá trị đầu vào) để cấu trúc case biết cần thực thi cửa sổ lệnh
nào? Thực hiện một ví dụ về case dựa trên numeric control trong
LabVIEW như sau:
- Save as ví dụ trên thành ví dụ mới.
- Chọn lên số 10 và hàm so sánh lớn hơn, nhấn Delete để xóa đi các
đối tượng này.

Hình 5.5. Xóa các đối tượng


47
- Nhấn Ctrl+B để xóa đi các đường nối bị vỡ.
- Nối x vào case selector và quan sát thấy hai giá trị True/False sẽ
được tự động chuyển thành hai giá trị 0 và 1. Đây chính là một case
selector dạng numeric. Bây giờ, tùy vào giá trị của x là 0 hay 1 thì
lệnh trong cửa sổ 0 và sửa 1 được thực hiện.

Hình 5.6. Hai giá trị 0,1 sẽ tự động hiện ra khi nối x vào case selector
Khác với case dạng Boolean thì case dạng số cho phép người dùng
tạo ra nhiều trường hợp. Ta hãy tạo ra một trường hợp x=2 nữa như sau:
- Chọn RC lên khung của cấu trúc Case (Được tô xanh).
- Chọn Add Case After
- Tự động có 1 case mang số 2 được tạo ra.

Hình 5.7. Tạo thêm một case sau case 1

48
Hình 5.8. Case số 2 được tạo ra
- Tạo string constant “Chao anh Bac va anh Nam” trong case số 2 vừa
tạo.

Hình 5.9. Tạo string constant


- Nhập string vào.
- Như vậy, giờ chạy chương trình, indicator sẽ hiện các lời chào khác
nhau tùy vào các giá trị x=0,1 hoặc 2 khác nhau. Tuy nhiên bạn cần
phải tạo 1 Boolean constant nữa thì chương trình mới chạy được.
Chương trình hoàn thiện như hình 5.10. Xem file CD>Bai 5> Case
- numeric 2.vi

Hình 5.10. Chương trình hoàn thiện có 3 giá trị của x tương ứng 3 lời
chào khác nhau

49
Ví dụ 3: Cấu trúc trường hợp dựa trên String Control
Cấu trúc này dựa trên một String Control. Từ String Control này
mà các cửa sổ case được thực thi. Thực hiện ví dụ sau:
- Lưu chế độ Save as file ở trên thành Case-string.vi
- Xóa Numeric control X
- Tạo một String control bằng cách vào FP> Express> Text Control>
String Control> Lấy string Control ra.

Hình 5.11. Lấy String Control ở FP


Ta được chương trình như hình 5.12

Hình 5.12. Kết quả sau khi nối String control


Ngay sau khi kết nối String Control và cấu trúc Case ta sẽ thấy có
các dấu ngoặc kép hai bên các số 0, 1, 2. Điều này có nghĩa hiện tại Case
Structure xem các giá trị này là chữ chứ không phải số. Ta có thể thay
chữ “0” thành “loi chao 1”, giá trị “1” thành “loi chao 2”, giá trị “2”
thành “loi chao 3”. Chương trình sẽ trở thành như hình 5.13.
50
Hình 5.13. Chương trình sau khi đổi các chữ trong Case
- Chạy chương trình, ta sẽ thấy, giờ nếu ta nhập chữ: loi chao 1 vào
string control tại FP thì bên string indicator sẽ xuất hiện ra chữ:
Chao anh Bac.

Hình 5.14. Kết quả chương trình

Bạn có biết?
Bạn có thể sử dụng lệnh Selector để thay thế cho một Case dạng
Boolean. Việc thay thế này giúp code của bạn gọn hơn. Hãy tự mình
suy nghĩ xem cách thay thế này nhé. Nếu gặp khó khăn hãy gửi email
tới supports@hocdelam.org để nhận được lời giải.

5.3. BÀI TẬP


Câu 1: Hãy sử dụng cấu trúc Case để viết chương trình điều khiển
4 cột đèn giao thông (mỗi cột đèn có 3 đèn: Xanh, đỏ, vàng). Kết quả là
một chương trình mô phỏng có 12 đèn hoạt động như các cột đèn tại một
ngã tư (xem hình dưới).
Hãy tạo một mô hình gồm các đèn LED để điều khiển các đèn này
thông qua card giao tiếp máy tính Hocdelam USB-9001 hoặc NI USB
6008/6009.

51
Phần mềm mô phỏng điều khiển đèn giao thông tại ngã tư

Phần mềm được kết nối ra phần cứng gồm các đèn LED
Video clip kết quả:
http://www.youtube.com/watch?v=CcT1oLujHIo
Câu 2: Viết chương trình hiển thị câu: Chao anh ABC, tuoi cua
anh la XYZ. Với: ABC là giá tên người – được nhập bằng 1 String
Control. XYZ là số tuổi có dạng chữ. Số tuổi được nhập bằng số tại một
Numeric Control.
Câu 3: Sử dụng Case structure để tạo một chương trình tính tích,
tổng, thương, hiệu của hai số A,B được nhập vào từ bàn phím. Kết quả
các phép toán sẽ hiển thị ra một Indicator duy nhất.
52
Bài 6
CÁC HÀM VÀ CÁC CÔNG CỤ THƯỜNG DÙNG
Học xong bài này, bạn sẽ nắm được:
- Cách mô phỏng một số tín hiệu hình sin, tam giác, xung vuông, vv…
- Khái niệm về biến cục bộ (Local variable)
- Formulas

6.1 MÔ PHỎNG TÍN HIỆU


Bạn có thể sử dụng công cụ tạo tín hiệu nhanh của LabVIEW để
tạo các tín hiệu hình sin, tam giác, vv. khác nhau như sau.

Hình 6.1. Lấy hàm Simulate signal


- Đặt hàm Simulate signal tại BD> Tự động cửa sổ xác lập các thông
số sẽ hiện ra.
- Bạn điền các giá trị sau: Amplitude: 5. Chọn dấu Add noise.

Hình 6.2. Cửa sổ xác lập tín hiệu


- Tín hiệu sẽ xuất hiện nhiễu như hình 6.3.

53
Hình 6.3. Tín hiệu sau khi add noise (Thêm nhiễu)
- Tạo Graph Indicator bằng cách: RC> Create> Graph indicator

Hình 6.4. Tạo Graph indicator


- Và tạo While loop bao quanh
- Tạo Numeric control ở chân Frequency của hàm Simulate signal.
- Đổi Numeric control thành dạng nút xoay để chỉnh tần số
- Chạy chương trình
- Chỉnh tần số và quan sát hình sine được mô phỏng
- Xem ví dụ mẫu trong: CD>Bai 6> Sine simulate.vi

54
Hình 6.5. Kết quả chương trình hoàn thành
Hoàn toàn tương tự, bạn có thể dễ dàng tạo ra các tín hiệu hình tam
giác, xung vuông bằng cách chọn RC lên hàm Simuate signal>
Properties:

Hình 6.6. Thay đổi kiểu tín hiệu

55
- Bảng xác lập thông số lại hiện ra
- Chọn kiểu Square trong Signal type

Hình 6.7. Chọn lại kiểu square


- Chạy chương trình ta được hình sau:

Hình 6.8. Kết quả sau sau khi đổi kiểu tín hiệu thành square

6.2. BIẾN CỤC BỘ


Là một công cụ hữu ích để truyền tín hiệu từ một Control trong một
while loop này tới một while loop khác hoặc để làm gọn các chương
trình trong LabVIEW, vv.
Bạn có một Numeric Control trong bài mô phỏng tín hiệu ở trên.
Giờ hãy tạo một biến cục bộ này để ta có thể mô phỏng hai tín hiệu (Sine
và square) có cùng một tần số. Nếu sử dụng biến cục bộ, bạn không cần
tạo ra hai Numeric control ở 2 chân tần số của hai hàm.
- RC lên Numeric control cần tạo biến cục bộ tại BD

56
- Chọn Create> Local variable
- Đặt Local variable vừa sinh ra lên BD
- Chọn RC lên Local variable đó chọn: Change to read.
- Xem CD>Bai 6> Local variable.vi

Hình 6.9. Tạo biến cục bộ


- Nối chân của Local variable vào Frequency của hàm tạo tín hiệu
Sine.

Hình 6.10. Nối biến cục bộ vào hàm tạo sóng sine
- Ta được kết quả là một chương trình có 1 Numeric control nhưng
sẽ tác động tới cả 2 giá trị tần số của 2 hàm khác nhau.

57
Hình 6.11. Kết quả chương trình

58
6.3. FORMULA NODE
Là công cụ giúp bạn có thể lập trình dựa trên chữ (giống lập trình
C) trong môi trường LabVIEW.
- Lấy một formula node như sau: BD> Programming> Structure>
Formula node

Hình 6.12. Đường dẫn của hàm formula node


- Tạo 2 Input bằng cách nhấn RC lên thành của Formula node.
- Đặt tên hai Input này là a, b. Tên này nằm tại thành Formula
node:
- Nối các Input này với 2 Numeric Control mang tên a,b.

Hình 6.13. Tạo Input


- Tạo output bằng cách RC lên thành bên phải của Formula node>
Add ouput
- Nối Output này ra một Numeric indicator có tên là c.

59
- Hoàn thiện chương trình thành

Hình 6.14. Tạo xong Input và Output


- Nhập hàm c=a+b; vào không gian bên trong khung của Formula
node.
- Nhập giá trị a=5, b=8 vào hai Numeric control.
- Chạy chương trình ta được kết quả như hình 6.15.
- Như vậy bạn vừa hoàn thành việc tính tổng hai số bằng cách lập
trình dạng chữ thay vì dùng khối cộng dạng hình ảnh của
LabVIEW. Xem CD> Bai 6> Formula node.vi

Hình 6.15. Kết quả phép cộng 2 số


- Bạn hãy tham khảo bảng 6.1 để biết thêm các hàm thường gặp.

Bạn có biết?
Việc sử dụng Formula node sẽ giúp bạn làm gọn chương trình tính
động lực học tay robot và những thuật toán phức tạp khác.

Bảng 6.1. Một số hàm trong Formula node


Hàm Mô tả
abs(x) Tính giá trị tuyệt đối của x
acos(x) Tính nghịch cosine của x đơn vị radians.
asin(x) Nghịch sine của x đơn vị radians.
60
cos(x) cos(x)
int(x) Làm tròn x thành số nguyên
log(x) Logarithm cơ số 10 của x
max(x,y) So sánh x và y, trả về giá trị lớn hơn.
min(x,y) So sánh x và y, trả về giá trị nhỏ hơn.
sqrt(x) Tính căn bậc 2

LabVIEW cũng cung cấp một số đoạn code mẫu để bạn tham khảo
 Sử dụng If-else

 Sử dụng do while loop

 Sử dụng for loop

 Sử dụng case/switch

61
6.4. BÀI TẬP
Câu 1: Hãy mô phỏng các tín hiệu có trong hàm Simulate signal. Sử
dụng biến cục bộ để chỉ dùng một Frequency cho tất cả các dạng tín hiệu
khác nhau.
Câu 2: Thực hiện các phép toán trong Bài 1 của tập sách này bằng
Formula node.

THAM KHẢO
[1] hocdelam.org
[2] LabVIEW Help 2011
[3] wikipedia.org

62
Bài 7
MẢNG VÀ BÓ (ARRAY, CLUSTER)
Học xong bài này, bạn sẽ nắm được:
- Khái niệm về mảng
- Cách tạo một mảng, cộng hai mảng, trích dữ liệu từ mảng
- Bó và cách tạo bó

7.1 MẢNG
7.1.1 Khái niệm về mảng và cách tạo mảng
Ngoài các loại dữ liệu như đã bàn ở các bài trước, LabVIEW cũng hỗ
trợ các cấu trúc dữ kiểu liệu mảng. Như trong ngôn ngữ dựa trên văn bản,
Mảng là một khối có nhiều chiều (n-chiều) của một loại dữ liệu nào đó. Các
phần tử trong mảng được đánh chỉ số. Và ta có thể truy suất các phần tử này
thông qua các chỉ số đó. Không giống như trong các ngôn ngữ dựa trên văn
bản, mảng LabVIEW được tự động thay đổi kích cỡ để phù hợp với dữ liệu
của nó.

Hình 7.1. Mảng 1 chiều dạng số, 2 chiều dạng boolean, và 3 chiều dạng
chuổi
Cách tạo một mảng như sau: Vào FP> Modern >Array, Matrix>
Lấy array ra đặt tại FP

Hình 7.2. Lấy mảng từ FP


63
 Tạo array dạng số bằng cách lấy Numeric control đưa vào array.

Hình 7.3. Tạo Numeric array

Rê chuột trên mảng cho tới khi có biểu tượng sau: , kéo dài
mảng để có một mảng 1 chiều có 5 phần tử.

Hình 7.4. Kéo dài mảng


Copy ra một mảng nữa bằng cách nhấn giữ Ctrl+ và nhấn giữa
chuột trái lên mảng trên và kéo xuống.

Hình 7.5. Copy nhanh một mảng


Dùng phép cộng nối 2 mảng này lại. Tạo Indicator phía bên phải
của hàm cộng, ta được một chương trình tính tổng 2 mảng.

64
Hình 7.6. Chương trình hoàn thiện
Bạn nhập giá trị vào hai mảng Control. Nhấn chạy chương trình. Ta
thấy tổng của hai mảng chính là tổng của các thành phần tương ứng trong
mảng. Xem CD> Bai 7> Array 1.vi

Hình 7.7. Kết quả phép cộng 2 mảng


7.1.2 Trích dữ liệu từ một mảng
Bạn tiếp tục trích một phần tử từ mảng kết quả để nắm thêm về
khái niệm phần tử và chỉ số trong mảng. Xem CD> Bai 7> Index Array
1.vi. Để thực hiện VI này bạn hãy:
- Vào BD> Programming> Array> Index Array

Hình 7.8. Lấy hàm Index array

65
- Nối Index array vào array kết quả từ chương trình trên.
- Nhập giá trị 0 vào ô Index và tạo Indicator tại chân element của
hàm Index array.
Ta được một chương trình cho phép truy xuất các giá trị của mảng.
Ví dụ: Muốn truy xuất giá trị của phần tử có chỉ số 0 thì ta nhập 0 vào ô
Gia tri index. Cụ thể ở đây ta có kết quả là 2. Nếu Giá trị index là 1 thì
ta có kết quả là 3, vv.

Hình 7.9. Chương trình truy xuất giá trị thành phần trong array
Khi sử dụng array trong For loop bạn cần lưu ý một số vấn đề.
Cùng nhau xem một ví dụ trên ni.com trong hình 10 để giải thích rõ hơn
vấn đề này. Chương trình này là một for loop, for loop này lặp lại 15 lần
phép cộng các thành phần trong 2 array (array 1 có 10 phần tử, array 2 có
20 phần tử). Kết quả trả về chỉ là một array có 10 phần tử. Lý do: Khi for
loop thực hiện tới vòng lặp thứ 11 thì array 1 sẽ không có phần tử thứ 11
nên phép cộng không thể tiếp tục thực hiện.

Hình 7.10. Tổng 2 array

66
Các Array lớn hơn 1 chiều bạn có thể dễ dàng tạo ra bằng cách
ghép các For loop lại với nhau theo hướng [5]. Chú ý rằng bạn cần chọn
chế độ Auto-indexing trên thành các For loop trong các trường hợp này.

Hình 7.11. Tạo array 2 chiều


Ta còn khá nhiều hàm trong thư viện array, các hàm này sẽ được đề
cập chi tiết trong lần tái bản tiếp theo.

7.2 BÓ
Bó là kiểu dữ liệu hoạt động như hộp đen có khả năng lưu trữ các
loại dữ liệu khác nhau. Có thể hiểu rằng: Bó được coi là một nhóm các
giá trị dữ liệu được đóng gói với nhau để tạo thành một kiểu dữ liệu phức
tạp hơn, và thường có ý nghĩa hơn.
Ví dụ: Hãy tạo một Output cluster (là một Indicator) chứa các
thông tin sau: Họ tên, tuổi, giới tính. Thực hiện như sau:
- FP> Mordern> Array, Matrix, > Cluster
- Kéo thả cluster ra ngoài FP

Hình 7.12. Kéo thả Cluster ra Front panel

67
- Đưa vào Cluster này 1 Ctring control để nhập họ tên
- Đưa vào thêm 1 Numeric control để nhập tuổi
- Một LED để chỉ định giới tính (Nam thì LED sáng, Nữ thì LED tắt)
- Nhập các dòng: Họ tên: Nguyễn Bá A, Tuổi: 28, Boolean: Sáng.
- Ta được Cluster control như hình 7-13.

Hình 7.13. Cluster đã tạo ra


Bây giờ, ta hãy tạo một Cluster indicator như hình 7-14.

Hình 7.14. Tạo Cluster indicator

68
Cho chương trình chạy, ta được kết quả như hình 7-15. CD> Bai
7> Cluster 1.vi

Hình 7.15. Kết quả là Cluster indicator sẽ hiển thị đúng cluster control
Như vậy bạn vừa biết phương pháp tạo một cluster. Bây giờ tôi sẽ
hướng dẫn các bạn tạo một Cluster như trên bằng cách sử dụng hàm
Bundle (tổng hợp) như sau.
- Lấy các String control, Numeric control và LED đặt tại FP.
- Lấy hàm Bundle tại BD> Programming> Cluster> Bundle. Kết nối
lần lượt các control vào Bundle này và tạo Cluster indicator như bài
trên. Kết quả ta cũng được một Cluster như bài trên. Xem CD> Bai
7> Cluster 2.vi

Hình 7.16. Phương pháp tạo Cluster bằng hàm Bundle


LabVIEW cũng cung cấp hàm Unbundle để ta bóc tách các phần tử
trong một bó.

69
- Lấy một Unbundle nối vào Output cluster. Tạo các indicator từ
hàm Unbundle này. Bạn sẽ có kết quả là Họ tên, Tuổi và giới tính
riêng lẽ. Đây chính là việc bóc tách các phần tử trong một bó. Xem
hình 2-17 và ví dụ: CD> Bai 7> Cluster 3.vi
- Bạn có thể dùng hàm Unbundle by name để bóc tách họ tên.

Hình 7.17. Bóc tách các phần tử trong một bó


Bạn cũng có thể dùng Bundle để đưa nhiều tín hiệu lên một Chart
như hình 7-18. Xem CD> Bai 7> Cluster 4.vi

70
Hình 7.18. Đưa nhiều tín hiệu vào một chart bằng Bundle

Bạn có biết?
Bạn có thể tải các Video clip về các thao tác trong mảng tại
http://www.youtube.com/user/hocdelamgroup, hoặc
http://cnx.org/content/m14768/
Việc xem các video clip giúp bạn thực hiện được các ví dụ này nhanh
hơn việc đọc sách.

7.3 BÀI TẬP


Câu 1: Tạo một Array có 12 phần tử dạng số, 1 array có 10 phần tử
dạng boolean, 1 array có 5 phần tử là 5 String control.
Câu 2: Tạo một cluster chứa các thông tin: Tên kho chứa hàng: Số kg
hàng (kg).
71
Câu 3: Bóc tách số Kg hàng từ câu 2 bằng việc sử dụng hàm
Unbundle by name.
Câu 4: Mô phỏng hai tín hiệu có dạng: y1  3x 2 và
y 2  12 x 2  100 . x tăng tự nhiên từ 0 đến 10 4 . Hãy đưa hai tín hiệu này
lên một chart. Gợi ý: x có thể lấy từ đầu ra của i (số vòng lặp) trong
while loop hoặc for loop.

THAM KHẢO
[1] http://ni.com
[2] http://webcache.googleusercontent.com
[3] http://www.cipce.rpi.edu
[4]
http://www.cipce.rpi.edu/programs/remote_experiment/labview/lesson2/
less on2.shtml
[5] http://zone.ni.com/devzone/cda/tut/p/id/7571

72
Bài 8
SUBVI, ĐỊNH THỜI, LƯU DỮ LIỆU, TẠO FILE .EXE
Học xong bài này, bạn sẽ nắm được:
- Khái niệm về subVI (VI con)
- Phân biệt được subVI và VI
- Cách tạo một subVI
- Phương pháp gọi một subVI vào một VI khác
- Sử dụng một số hàm định thời
- Lưu dữ liệu ra một file và hiển thị ra bảng
- Tạo file .exe

8.1 SUBVI (VI CON)


SubVIs (VI con) khá quan trọng trong việc tổ chức và quản lý các
code lập trình bằng LabVIEW. SubVI (VI phụ) là một VI (chương trình)
được đóng gói và chứa trong một tập tin có đuôi .VI như bình thường. Ý
nghĩa của việc tạo SubVI là nhằm làm gọn các chương trình cũng như
giúp cho kỹ sư lập trình có thể kế thừa các VI một cách linh hoạt, đỡ tốn
dung lượng máy tính, tiện lợi trong việc bảo trì các chương trình được
tạo ra bằng LabVIEW.
Sau khi được tạo thành thì mỗi SubVI được đại diện bởi một icon
đặt trong BD của một VI khác gọi là VI mẹ. VI mẹ là VI chứa SubVI.
Cần lưu ý là: bản thân mỗi VI cũng có thể là một SubVI.
Quan sát ví dụ sau: Ta muốn tạo một VI con (SubVI) là một
chương trình chuyển đổi giá trị góc (Đơn vị là độ) sang giá trị góc (có
đơn vị là radian). Sau đó, ta cùng học cách để gọi SubVI này vào một VI
mẹ khác như thế nào.
Ta đã biết muốn đổi góc từ đơn vị độ sang đơn vị radian ta dựa vào
công thức sau:
  .2
 rad 
360
Để lấy 2 Vào Math constant trong Express>Numeric để lấy hằng
số 2 .

73
Hình 8.1. Lấy 2
Tạo chương trình như FP và BD hình 8.2.

Hình 8.2. FP (ở trên) và BD (phía dưới) của chương trình chuyển đổi
Lưu file này thành một VI có tên là VI Chuyen doi.vi

Hình 8.3. Lưu file


Giờ ta cần biến VI này thành một SubVI bằng các bước sau:
- Tại cửa sổ FP, chọn chuột phải lên biểu tượng LabVIEW, Right
Click> Chọn vào Show Connector. Ta sẽ thấy biểu tượng
LabVIEW được chuyển thành các ô vuông . Ô vuông này chính
là icon của SubVI.
74
Hình 8.4. Show Connector
- Sau đó Right Click lên các ô vuông (hay gọi là icon của SubVI),
chọn Patterns, chọn vào ô tô xanh (ô này có 1 đầu vào và một đầu
ra tương ứng với một ô chủ nhật bên trái và một ô chữ nhật bên
phải). Lý do ta chọn ô một đầu vào (Control) và một đầu ra
(Indicator) là vì chương trình chuyển đổi của chúng ta chỉ có nhập
vào một giá trị góc có đơn vị độ (hay ta chỉ có 1 Control) và một ô
xuất ra giá trị (hay chỉ có 1 Indicator) góc có đơn vị radian.

Hình 8.5. Các Parterns ứng với số Control và Indicator khác nhau
- Rê chuột tự do trên icon, ta thấy hình cuộn chỉ hiện ra.
- Click chuột trái vào ô bên trái, ô sẽ này chuyển sang màu đen, sau
đó click chuột trái vào control (có đơn vị độ), ô bên trái của icon ô
vuông sẽ chuyển sang màu đỏ như hình 8.6.

Hình 8.6. Các bước gán ô bên trái (của icon) vào control
75
- Tương tự, ta gán ô bên phải của icon vào indicator độ (có đơn vị radian).
- Ta đã hoàn thành tạo SubVI, giờ ta có thể tạo icon cho phù hợp
(bước này có thể bỏ qua nếu bạn không muốn thực hiện). Tạo icon
bằng cách: Right click lên icon> Chọn Edit icon (sửa Icon).

Hình 8.7. Edit icon


- Dùng cục gôm (cục tẩy) để tẩy icon cũ đi.

Hình 8.8. Tẩy icon cũ bằng gôm


- Dùng các công cụ trong đây để làm lại icon mới như sau:

Hình 8.9. Sửa lại Icon thành độ (o) ra radian (R)


76
- Chọn OK để thoát chương trình sửa icon. Giờ ta chọn chuột phải
lên icon> Chọn Show icon để thấy được icon vừa tạo. Chọn Ctrl+S
để lưu file lần cuối và tắt file này đi.

Hình 8.10. Show icon


- Giờ mở một VI mới hoàn toàn. VI mới này có công thức là góc
(radian) nhân với một numeric bất kỳ nào đó. Để làm vậy ta phải
gọi SubVI vừa tạo ra lên VI mới này như sau:
- BD> Right click> Select a VI như hình 8.11.

Hình 8.11. Gọi một SubVI vào VI mẹ


Chọn SubVI vừa tạo, kéo và thả vào BD của VI mới. Ta hoàn
thành việc gọi 1 subVI.

Hình 8.12. Kết quả sau khi đưa SubVI vào VI mẹ


77
- Nếu nhấn Control + H, và đưa chuột lên icon của SubVI tại BD ta
sẽ thấy Context help như các hàm khác của LabVIEW.

Hình 8.13. Context help của SubVI vừa tạo


- Bây giờ ta cần thực hiện phép nhân với một Numeric control
- Đưa chuột lên subVI, cuộc chỉ vừa hiện ở control, ta chọn right
click> create control.

Hình 8.14. Tạo control


- Tự động LabVIEW đặt tên Goc (do) như đúng tên bạn đã đặt trước
đây cho SubVI. Tiếp tục tạo indicator và đưa hàm nhân vào, ta
được chương trình như hình 4.15.

Hình 8.15. Sử dụng SubVI trong một VI mẹ


78
8.2 ĐỊNH THỜI GIAN
Định thời gian là việc điều khiển các sự kiện diễn ra trong một
hoàn cảnh mà ở đó, có liên quan tới vấn đề thời gian. Ví dụ: Xác lập thời
gian cần thiết để chương trình thực thi tất cả các lệnh trong một vòng lặp,
thực hiện xong việc A thì trì hoãn một thời gian delta(T) nào đó trước khi
vào thực hiện công việc B, đếm thời gian cần thiết để thực thi một vòng
lặp, lấy giờ/ngày hệ thống (giờ của hệ điều hành), vv. Các hàm về thời
gian nằm tại thư viện sau: BD>Programming>Timing.

Hình 8.16. Thư viện định thời


Một số hàm về thời gian và ý nghĩa của nó được trình bày
trong bảng sau:
Hàm Ý nghĩa
Khi hàm này được gọi, LabVIEW sẽ chờ đợi cho
đến khi giá trị của bộ đếm thời gian có đơn vị là
mili-giây đạt giá trị quy định. Sử dụng chức năng
này để đồng bộ hóa các hoạt động. Bạn có thể gọi
chức năng này trong một vòng lặp để ấn định thời
gian cần chạy hết các lệnh trong một vòng lặp.
Nếu bạn đặt giá trị từ 0 vào Control thì CPU sẽ
hoạt động tối đa để việc thực thi các lệnh trong
vòng lặp được đảm bảo là nhanh nhất.

79
Nói cách khác, hàm này được dùng để ép vòng lặp
chạy trong một thời gian cụ thể nào đó. Thời gian
cụ thể đó được gán vào chân Control của Hàm.

Xem ví dụ Wait until.vi có BD như trên để biết


rằng: Khối Wait until được gán giá trị 5000ms thì
một vòng lặp sẽ PHẢI hoàn thiện trong 5000ms.
Tức nếu ta xuất Indicator tại số vòng lặp. Thì cứ
5000ms (5 giây) ta sẽ thấy số vòng lặp tăng lên 1
giá trị.
Nhập giá trị ms vào control để khiến các tác vụ sẽ
đảm bảo chỉ thực hiện đầy đủ khi và chỉ khi thời
gian này trôi qua. Nói cách khác, các tác vụ sẽ
không thực hiện đầy đủ cho đến khi thời gian quy
định đã trôi qua.
Thời gian tham khảo cơ bản có đơn vị là ms
(miligiây).Bộ đếm này có giá trị 32 bít không dấu:
(Tức nằm trong khoảng (2^32) -1 đến 0). Thường
ta dùng tick count để đếm thời gian thực thi hết
một chương trình trong 1 vòng lặp.
Cho biết thời gian hiện tại. LabVIEW tính toán
thời gian này bằng cách sử dụng số giây trôi qua
kể từ khi chương trình chạy. Thực ra thời gian này
trùng với thời gian của hệ thống. Xem ví dụ Get
time.vi để thấy current time chính là thời gian
hiện tại:

80
Lưu ý: Thời gian này không bị ảnh hưởng bởi các
hàm định thời khác. Xem ví dụ Wait until va Get
time.vi trong CD để biết chi tiết điều này.
Làm trì hoãn một thời gian định trước, hàm này
giống hàm delay trong lập trình C.

Cho biết số lượng thời gian đã trôi qua kể từ khi


thời gian bắt đầu quy định được gán vào Control.
Tham số control: Time Target (có đơn vị là giây)
chỉ định bao nhiêu thời gian trôi qua trước khi thời
gian đã trôi qua Boolean được thiết lập là TRUE.
Tham số indicator Elapsed Time (có đơn vị là giây)
cho biết số lượng thời gian đã trôi qua kể từ thời gian
bắt đầu và thời gian hiện tại có đơn vị là giây.
Time has Elapsed cho thời gian trôi qua (s) là lớn
hơn so với thời gian bắt đầu cộng với thời gian
mục tiêu xác lập bởi Time target có đơn vị là
giây.

8. 3 LƯU FILE
Sau khi tạo ra các chương trình trong LabVIEW, có một nhu cầu mà
người dùng thường gặp lại là lưu thời gian. Ví dụ chương trình mô phỏng
hệ thống điện trong hình 8.17 do học viên cao học tại Hocdelam Group
thực hiện sẽ cho phép người điều hành hệ thống nắm được điện áp, dòng
điện, cos(phi), công suất, vv. Đồng thời, chương trình này cho phép điều
khiển các máy cắt để đóng điện, password dùng để bảo mật chương trình
sau khi đưa chương trình này lên mạng internet (nhúng vào một website).
Chương trình chỉ chạy khi người điều khiển nhập đúng password.

81
Hình 8.17. Chương trình giám sát và điều khiển hệ thống điện 3 pha
Điều ta quan tâm ở đây nhất là việc lưu dữ liệu (SAVE DATA).
Các dữ liệu cần phải được lưu vì khi mất điện đột ngột, hoặc hệ thống
ngưng hoạt động thì người vận hành cần xem lại các giá trị của hệ thống
điện theo giờ, ngày hoặc tháng, năm trước đây nhằm có những kết luận
quan trọng trong giám sát và vận hành hệ thống.
Click vào SAVE DATA, ta sẽ thấy có rất nhiều cột dữ liệu. Và các
cột này được lưu ra một text file trong một địa chỉ nào đó tại ổ cứng do
người dùng chỉ định.

Hình 1.18. Lưu file


Trong bài này, dữ liệu được lưu tại thư mục C:\Elec Sys
SCADA\Hien hanh.lvm như hình 1.19.

82
Hình 1.19. Vị trí lưu file
Code chương trình lưu file được cho trong hình 1.20 (Xem Save
data.vi để biết chương trình này.)

Hình 1.20. Lưu dữ liệu ra file và lưu ra bảng


Hàm lưu giá trị đặt tại vị trí: Programming> File IO> Write to
measurement file.

83
Hình 1.21. Hàm lưu file
Các đặc tính của hàm lưu file dùng để xác lập các lưu file. Hãy
double click lên hàm lưu file tại BD, ta sẽ thấy hộp thoại sau xuất hiện:

Hình 1.22. Các đặc tính của hàm lưu file


Trong hộp thoại hình 1.22 ta cần để ý tới một số thông số như:
 Ask user to chose file: Hãy hỏi người dùng chọn file lưu.
 Rename next existing file: Hãy đổi tên file nếu có một file trùng
tên mà bạn đặt.
84
 Overwrite file: Lưu đè lên file trùng tên.
 File format dạng Text (LVM) là kiểu file lưu ra.
 On header only: Tạo một đầu đề duy nhất cho một file lưu, nếu
không mỗi lần lưu một dữ liệu ta sẽ có một đầu đề làm cho file dữ
liệu khó đọc đối với người dùng.
Hàm tạo bảng được đặt tại: FP> Modern> List, Table…> Ex Table

Hình 1.23. Hàm tạo bảng dữ liệu

8.4 TẠO FILE .EXE


Nhờ việc tạo file ứng dụng (có định dạng là .exe), chúng ta có thể
chạy các file LabVIEW trên các máy tính không có cài đặt phần mềm
LabVIEW nặng tới vài đĩa DVD mà chỉ cần cài LabVIEW Realtime (một
gói phần mềm nhỏ khoảng dưới 70Mbyte). Cách tạo file .exe của một file
.vi như sau: Vào Project, tạo New Project, máy tính sẽ hỏi có thêm file
.vi hiện đang mở không? Nếu muốn bạn chọn Yes.

Hình 1.24. Tạo file .exe


85
(Lưu ý: Nếu muốn thêm file .VI vào Project (dự án), bạn có thể
chọn chuột phải trên My Computer và chọn Add File để thêm file vào.

Hình 1.24. Thêm file vào project


Nếu cần thiết, bạn có thể chọn trong
tab:
Sau đó, bạn có thể tạo ICON cho chương trình bằng cách chọn vào
Icon.

Hình 1.25. Tạo icon


Nhấn Icon Editor để sửa ICON. Chọn chữ T để ghi chữ. Bạn có thể
phối màu tùy ý.

86
Hình 1.26. Trang trí Icon
Bỏ dấu kiểm ở Use defaul LabVIEW icon để lấy một Icon bên
ngoài (có sẵn).

Hình 1.27. Tạo icon


Chọn Add để lấy Icon cần chèn vào. Đổi kích thước Icon vừa chèn
để thấy rõ hình Icon (PC).

Hình 1.28. Tạo icon

87
Bạn chờ sẽ thấy thông báo sau xuất hiện trên màn hình:
Chọn Build (tạo ra file .exe), chương trình khi build sẽ xuất hiện
thông báo với ý nghĩa “Bạn cần chờ đợi trong giây lát vì LabVIEW sẽ
cần thời gian tạo file intaller và copy LabVIEW Runtime vào gói đi kèm
với file installer sau này”.

Hình 1.29. Tạo icon


Việc tạo file .exe sẽ hoàn thành khi xuất hiện thông báo: The build
is complete. Vị trí lưu file sẽ được thông báo trong tin nhắn này theo cấu
trúc đường dẫn cụ thể.

8.5 BÀI TẬP


Câu 1: Hãy tạo một subVI
Câu 2: Giải thích ý nghĩa của khối wait until next milimultiple
Câu 3: Lưu một tín hiệu bất kỳ thành file .txt
Câu 4: Hãy viết chương trình đo tín hiệu từ một cảm biến nhiệt độ và
lưu giá trị đó vào một bảng và một file tại ổ đĩa C trong máy tính của bạn.
Câu 5: Hãy tạo file ứng dụng (.exe) của một mã nguồn bất kỳ với
ICON được thiết kế mới tùy ý.

88
Bài 9
GIAO DIỆN NGƯỜI DÙNG (GUI)
Học xong bài này, bạn sẽ nắm được:
- Khái niệm về giao diện người dùng (GUI).
- Xây dựng một GUI thẩm mỹ và hiê ̣u quả.
- Tạo file.exe (application file)

9.1 KHÁI NIỆM VỀ GIAO DIỆN NGƯỜI DÙNG


Giao diện người dùng (tiếng Anh: graphical user interface - GUI) là
nơi giúp người dùng giao tiếp (tương tác) với hệ thống. Thường các GUI
được hiển thị thông qua các màn hình như màn hình tinh thể lỏng (LCD),
màn hình cảm ứng (touch screen), vv.
Thường một GUI bao gồm các nút nhấn, các đồng hồ chỉ báo, các
LED báo trạng thái hoạt động của một đối tượng nào đó, các ô nhập giá
trị như giá trị đặt (giá trị mong muốn của hệ thống điều khiển tự động)
hay giá trị xác lập ban đầu (như tốc độ truyền tín hiệu, tên thiết bị đang
giao tiếp, vv). Nói cách khác, các giao diện người dùng cho phép người
sử dụng tương tác với các thiết bị điện tử (máy tính, điện thoại, vv) thông
qua các hình ảnh chứ không phải là các lệnh văn bản. Các icon, nút nhấn,
vv…này được kết hợp làm nên GUI trong máy tính, thiết bị cầm tay như
máy nghe nhạc MP3, các phương tiện truyền thông xách tay chơi hoặc
thiết bị chơi game, đồ gia dụng và thiết bị văn phòng.

Hình 9.1. GUI đơn giản của phép tính thông thường
Hình 9.2 (a) mô tả một GUI sử dụng trong hệ thống điều khiển ô tô từ
xa. Giao diện này hiển thị trên máy tính đặt trong phòng điều khiển. Xe
được điều khiển từ xa có thể đang ở cách xa vài trăm tới nhiều ngàn mét.
Trong giao diện này, người điều khiển xe từ xa có thể quan sát thấy
xe thông qua một khung hiển thị hình ảnh thu nhận được từ một camera
đặt trên xe. Vị trí cần số của hộp số hiển thị qua các nút trên một thanh
89
ngang, giao diện còn có các đồng hồ hiển thị tốc động cơ, tốc độ xe, mực
xăng còn trong bình.

Hình 9.2. (a) GUI ví dụ trong điều khiển tay robot theo thuật toán điều
khiển trượt
Hình 9.2 (b1) trình bày một GUI ví dụ trong hệ thống mô phỏng
điện-điện tử ô tô có kết nối máy tính. Tùy vào từng Tab (cửa sổ) trong
giao diện thì người dùng sẽ có những lựa chọn khác nhau. Ví dụ, trong
Tab BASIC (Căn bản) thì người dùng sẽ được học về: Hình tổng thể
động cơ và các hệ thống điện trong ô tô. Hình này có vai trò tạo cảm
hứng cho người học.

Hình 9.2. (b1) GUI ví dụ trong hệ thống mô phỏng điện-điện tử ô tô


Ở Tab Resistor (Điện trở), người dùng sẽ được học về hai phương
U
pháp mắc điện trở điện trở cũng như cách tính dòng điện i  trong
R
một mạch điện một chiều.
90
Hình 9.2. (b2) GUI ví dụ trong hệ thống mô phỏng điện-điện tử ô tô có
kết nối máy tính

9.2 XÂY DỰNG MỘT GUI THẨM MỸ VÀ HIỆU QUẢ


Các công cụ thường sử dụng để tạo GUI trong LabVIEW gồm: thư
viện decoration, các công cụ trong tool palette, canh đều (distribute) và
canh ngay các đối tượng (align), vv.
Giả sử, tại front panel ta có các đối
tượng đang đặt lệch nhau như trong hình
9.3.
Hình 9.3 Các Numeric control đang nằm
lệch nhau

Để canh ngay các Numeric control này ta kéo chuột chọn hết các
đối tượng này và chọn vào Align objects và chọn Left Edges.

91
Hình 9.4. Canh ngay lề trái Hình 9.5. Canh đều cạnh trên làm
chuẩn
Copy nhanh nhiều đối tượng: chọn các
đối tượng, nhấn giữ Ctrl và kéo rê chuột
trái.

Hình 9.6. Copy nhanh các đối tượng

Chọn chuột phải lên đối tượng tại Block diagram > Chọn View as
icon để thu nhỏ các đối tượng lại nhằm làm gọn chương trình.
Trang trí front panel bằng thư viện
decoration theo đường dẫn: Right
Click lên front panel panel >
Chọn vào mũi tên
> Chọn
Modern > Decorations > Raised
box.
Hình 9.7. Thu nhỏ các đối tượng
Hình 9.8. Lấy khối Rasied Box
trong thư viện decorations

Chọn vào khối Rasied box trên Front panel > Chọn vào Reorder
> Move to Back để đưa khối Rasied box lại phía sau các Numeric.
92
Hình 9.9. Đưa khối Rasied box lại phía sau
Sử dụng các mũi tên di chuyển trên bàn
phím để đặt Rasied box đúng vị trí mong
muốn. Bạn tiếp tục di chuyển chuột ra góc khối
Rasied box để chỉnh kích thước của khối này.
Hình 9.10. Chỉnh kích thước khối Rasied box

Tương tự ta lấy các khối Rasied box tiếp theo để được hình 9.11.

Hình 9.11. Lấy thêm các Raised box


Sử dụng Microsoft office PowerPoint để gõ tiếng Việt (hiện tại
việc hỗ trợ tiếng Việt của LabVIEW đã có, tuy nhiên các GUI được
nhập vào bằng tiếng Việt thường bị lỗi ở các máy tính khác nhau. Sau
khi tại Logo và gõ tiêu đề tiếng Việt bạn dung Paint để cắt hình và chọn
Ctrl+V để đưa vào Front panel của LabVIEW như hình.

Hình 9.12. Tạo logo và chữ tiếng Việt cho GUI
Bạn có biết?
Để tạo GUI đẹp bạn cần luôn bám sát những lưu ý sau:
- Đơn giản để tạo nên hiệu quả.
- Thống nhất màu sắc, kích thước, vị trí các nút nhấn, vv.
93
- Giao diện phải đảm bảo các tính: Đầy đủ, xúc tích, logic,
và trực quan.

9.3 TẠO FILE .EXE (APPLICATION FILE)


Tạo file .exe (application) là nhằm mục đích giúp người sử
dụng có thể chạy các chương trình được lập trình bằng LabVIEW trên
những máy tính không cài LabVIEW mà chỉ cần cài LabVIEW Runtime.
File .exe là một định dạng file hay là phần mở rộng tên tập tin
thông thường biểu thị một tập tin thực thi (một chương trình) trong môi
trường DOS, OpenVMS, Microsoft Windows, Symbian, và hệ điều hành
OS/2 mà không cần thêm các trình duyệt file khác. Bên cạnh các chương
trình thực thi, các tập tin EXE nhiều có chứa các thành phần khác được
gọi là tài nguyên, chẳng hạn như bitmap và các biểu tượng mà chương
trình thực thi có thể sử dụng cho giao diện người dùng đồ họa của nó.
LabVIEW Runtime là gói (package) chứa một số mã biên dịch
sẵn để thực hiện các tác vụ thông thường được định nghĩa bởi ngôn ngữ
G (ngôn ngữ lập trình độ họa). Các công cụ LabVIEW Runtime sẽ làm
giảm thời gian biên dịch và cũng cung cấp một giao diện nhất quán cho
hệ điều hành khác nhau, hệ thống đồ họa, thành phần phần cứng, vv. Nói
chung, LabVIEW Runtime có thể giúp chạy chương trình trên nhiều nền
tảng môi trường hệ điều hành khác nhau.

9.4 BÀI TẬP


Câu 1: Hãy nêu các quy tắc cần lưu ý khi tạo một giao diện
Câu 2: Thực hành tạo một giao diện tự chọn (Ví dụ một máy tính bỏ túi
ảo thực hiện được các phép tính: cộng, trừ, nhân, chia, căn bậc 2, căn bậc n, vv.)
Câu 3: Vào website http://hocdelam.org tải ví dụ bất kỳ có sẵn trong thư
viện ví dụ mẫu, sau đó dịch file code đó thành một ứng dụng .exe.

THAM KHẢO
[1] Ba-Hai Nguyen; Jee-Hwan Ryu, "Design of a master device for the
teleoperation of wheeled and tracked vehicles," International Conference
on Control Automation and Systems (ICCAS), 2010, Gyeonggi-do,
Korea
[2] http://wikipedia.org
[3] http://hocdelam.org

94
Bài 10
CÁC ỨNG DỤNG VỚI CARD HOCDELAM USB-
9001, HDL-9000, VÀ HOCDELAM USB-9090

Học xong bài này, bạn sẽ nắm được:


- Thông số kỹ thuật của card Hocdelam USB-9001 và HDL-9000
- Cách thu thập dữ liệu nhanh chóng với Card Hodelam – USB 9001
- Điề u kh iển vận tố c và vi ̣ trí động cơ DC theo thuật toán PID sử
dụng bộ thí nghiệm đa năng HDL-9000.
- Thu thập dữ liệu với card tốc độ cao Hocdelam USB-9090
- Điều khiển thiết bị với card tốc độ cao Hocdelam USB-9090

10.1 GIỚI THIỆU CARD HOCDELAM USB-9001


Card giao tiếp máy tính đa năng giá rẻ Hocdelam USB 9001 có
chức năng tương đương các card thu thập dữ liệu USB do các hãng nước
ngoài sản xuất có trên thị trường trong và ngoài nước như NI USB
6008/6009-Hoa kỳ, Card USB của Advantech – Đài Loan, vv. Card
Hocdelam USB-9001 có thể dùng để giao tiếp với máy tính qua cổng
USB dựa theo chuẩn RS232. Đặc biệt, đây là sản phẩm phần cứng do
Hocdelam Group sản xuất và lập trình thư viện đầy đủ và dễ sử dụng hơn
những sản phẩm trên thị trường. Với card này, người sử dụng được hỗ trợ
tài liệu tiếng Việt đầy đủ và hỗ trợ trực tuyến thông qua kho ví dụ mẫu
tại website http://hocdelam.org để nhanh chóng xây dựng các ứng dụng
của mình.
 Xem ví dụ LabVIEW mẫu: CD> Bai 10> Vi du Hocdelam-9000
PI.vi để biết cách lập trình PID điều khiển động cơ DC. Và Video
clip demo: CD/Demo/DC motor control.

95
Hình 10.1. Điều khiển vị trí động cơ DC theo thuật toán PID
Một ví dụ khác là sử dụng card Hocdelam USB 9001 để điều khiển
một mobile robot như hình 10.2. Chi tiết về lập trình Robot 3D và điều
khiển PID vận tốc robot sẽ được cập nhật trong lần tái bản tiếp theo của
cuốn sách này.

Hình 10.2. Thu thập dữ liệu từ các cảm biến vào máy tính phục vụ điều
khiển mobile robot
Bạn cũng có thể sử dụng card Hocdelam USB-9001 để thực hiện
bài toán điều khiển vận tốc động cơ DC thường gặp trong công nghiệp.

96
Hình 10.3. Điều khiển vận tốc động cơ DC theo thuật toán PID
Tới bày này, bạn đã có thể nghĩ đến việc tự trang bị cho mình một
bộ dụng cụ học tập, nghiên cứu LabVIEW giá thành thấp.
Số
STT Tên Giá tham khảo
lượng
1 Card Hocdelam USB-9001(*) 1 cái 890.000
2 Cảm biến nhiệt độ LM35, biến 1 bộ 30.000
trở, LED, TIP 122
3 Dây diện cỡ nhỏ, lõi cứng 1m 5000
4 Dây USB 1 cái 20.000
5 Động cơ DC loại bé 1 cái 30.000
6 Tua vít nhỏ, kiềm, vv.. 1 cái 15.000
Tổng cộng (VNĐ) 990.000
(*):Chương trình hỗ trợ giáo dục giảm giá 40%.

Hình 10.4. Bộ dụng cụ học tập và nghiên cứu LabVIEW giá thành thấp
97
10.2 CÁC ỨNG DỤNG VỚI CARD HOCDELAM USB-9001
Phần này lần lượt hướng dẫn các bạn thực hiện xây dựng các ứng
dụng thực tế với card Hocdelam USB-9001 gồm:
 Thu thập dữ liệu từ các cảm biến nhiệt độ, biến trở, ánh sáng,
khoảng cách, vv.
 Điều khiển động cơ DC theo thuậ toán P trong bộ PID.
 Điều khiển hệ thống làm mát
Để thực hiện một ứng dụng với LabVIEW, ta phải: 1-Kết nối phần
cứng cần thiết, 2-cài đặt phần mềm cần thiết, và 3-tiến hành lập trình.
10.2.1 Phần cứng
Trường hợp 1: Bạn sử dụng card Hocdelam USB-9001
- Kết nối phần cứng theo sơ đồ hình 10.15: Nối chân Vout (chân
giữa của biến trở, hoặc chân Vout của cảm biến LM35 vào chân
ADC 1 của card Hocdelam USB-9001)

Hình 10.5. Cách kết nối biến trở vào mạch điện
Trường hợp 2: Nếu bạn sử dụng bộ thí nghiệm đa năng HDL-9000
Bộ thí nghiệm đa năng HDL-9000 là một gói giải pháp toàn diện
giá thành thấp (gồm phần cứng, phần mềm tiếng Việt, bài giảng soạn
sẵn, và kho thư viện ví dụ mẫu) trong kỹ thuật dùng đào tạo đo lường
cảm biến, điều khiển thiết bị theo thuật toán PID, Fuzzy logic, điều khiển
và giám sát qua mạng Internet, vv. trong các ngành cơ điện tử, ô tô, tự
động hóa, vật lý, vv. Hiện tại đã có hơn 400 lượt người và doanh nghiệp
trong và ngoài nước sử dụng bộ thí nghiệm này. Xem hình 10.16.
98
Hình 10.6. Bộ thí nghiệm đa năng HDL-9000
Để đo cảm biến nhiệt độ hoặc biến trở với HDL-9000, bạn nối cảm
biến vào mạch điện như hình dưới 10.17.
Vout : Chân tín hiệu của cảm
biến. Ví dụ: Nếu là biến trở thì
chân tín hiệu chính là chân ở
giữa. Hai chân nguồn
5V và 0V là hai chân bìa của biến
trở.

Hình 10.7. Kết nối cảm biến vào bộ thí nghiệm đa năng HDL-9000
Tới đây, bạn đã hoàn tất phần cứng, giờ hãy bắt tay thực hiện việc
cài đặt phần mềm.
10.2.2 Phần mềm
Khi giao tiếp ta cần cài đặt một số phần mềm như sau: NI VISA,
Hocdelam USB-9001 Driver. Bạn có thể tải các phần mềm này trên
website: http://hocdelam.org > Mục tài liệu.
99
Cài đặt NI-VISA (là công cụ để LabVIEW hiểu được các cổng
giao tiếp, ở đây ta dùng cổng USB). Mở CD kèm theo sách bạn sẽ thấy
NI-VISA theo đường dẫn: CD> Phan mem> NI VISA 4.2. (Các hình
hướng dẫn cài đặt sẽ không được đặt tên)
1. Giải nén

2. Chọn OK

3. Chọn Unzip để giải nén.

4. Sau khi giải nén chọn Run WinZip rồi chọn Next

5. Chọn Next
100
6. Chọn Next

7. Chọn Next

8. Sau khi chờ cài đặt xong, bạn chọn Finish

Cài đặt Hocdelam USB 9001 Driver để card Hocdelam USB-9001


có thể giao tiếp được với máy tính (Hệ điều hành) của bạn.
Nếu máy tính của bạn là Windows XP
 Bạn vào CD > Phan mem > 002 Hocdelam USB 9001 Driver >
Giải nén Hocdelam USB 9001 Driver Windows XP.rar
 Chạy file: DRVINSTSE.EXE
 Chương trình tự động cài đặt trong vài giây là hoàn thành.
Bạn thấy hộp thoại sau xuất
hiện và tự biến mất nhanh trên
màn hình thì quá trình cài đặt đã
thành công.

Nếu máy tính của bạn là Windows Vista hoặc Windows 7

101
 Bạn vào CD > Phan mem > 002 Hocdelam USB 9001 Driver >
Giải nén Hocdelam USB 9001 Windows7 Driver.rar
 Chạy file: Hocdelam USB 9001 Windows7 Driver.exe và làm
theo hướng dẫn.
Chọn Next khi hộp thoại sau xuất hiện.
Chọn Finish để kết thúc việc cài đặt.

Đến đây bạn đã hoàn thành công việc chuẩn bị. Giờ ta bắt tay vào
lập trình LabVIEW để thu thập dữ liệu từ một biến trở hoặc một cảm
biến nhiệt độ LM35.
10.2.3 Đo nhiệt độ LM35
Mục tiêu ta phải thu thập
được tín hiệu từ cảm biến nhiệt độ
lên máy tính và vẽ một đồ thị của
cảm biến này theo thời gian thực
(thời gian đo).

Hình 10.8. Kết quả đạt được


Hãy cùng bắt tay vào thực hiện việc lập trình

102
Bước 1: Kiểm tra cổng kết nối của card giao tiếp với máy tính
Kiểm tra xem máy tính đã nhận card chưa.
 RC lên My computer> Chọn Tab Hardware> Chọn vào Port.

Card đã nhận đúng khi và


chỉ khi có dòng chữ tô xanh
trong hình.

 Kiểm tra cảm biến xem còn tốt không


o Cấp nguồn 5V cho cảm biến. Để chân Vout tự do.
103
o Đo Vout bằng đồng hồ đo điện. Khi đo, xoay biến trở thì
bạn thấy Vout sẽ thay đổi tương ứng với sự thay đổi của
vị trí biến trở.
Bước 2: Lập trình thu thập dữ liệu
- Để lập trình thu thập dữ liệu ta tại file mới bằng cách click vào File > New

Chọn select a VI

Chọn IO Library Hocdelam USB 9001 – 2009.

104
- Right click lên Card port > Create control

Tạo Indicator ở ADC1 (Tín hiệu đầu ra của biến trở phải được nối
với chân ADC 1 của card Hocdelam USB 9001).

Tạo While loop như hình.

Chỉnh sửa lại front panel cho tiện dùng và quan sát. Kiểm tra số
cổng COM của Card Hocdelam USB 9001.
105
Chọn card phù hợp

Việc cần làm tiếp theo là chuyển tín hiệu của vi điều khiển (0-
255) thành tín hiệu điện áp (0-5Volt). Ta biết rằng, độ phân giải của
kênh ADC của card Hocdelam USB-9001 là 8bit nên giá trị từ 0 đến
5Volt của cảm biến sẽ được chia thành 28=256 giá trị (tức từ 0 đến 255).
Do vậy ta có công thức chuyển giá trị số thành giá trị điện áp thực như
sau:
5S card
Vđo
255
Như vậy, Vđo
này chính là giá trị
điện áp Vout của cảm
biến mà ta đo được
bằng đồng hồ
Voltmeter.

Bạn đã hoàn thành tốt bài toán thu thập dữ liệu từ biến trở hoặc
cảm biến nhiệt độ lên máy tính. Cùng chương trình này, bạn có thể thay

106
thế cảm biến nhiệt độ hoặc biến trở, đồng thời thay đồng hồ bằng một cột
chỉ thị nhiệt độ như hình 10.16. để tiện quan sát.
Thảo luận về data flow, kiểu dữ liệu và kết nối phần cứng
Trước khi kết thúc phần này, chúng ta hãy cùng thảo luận về data
flow (dòng dữ liệu), và kiễu dữ liệu trong LabVIEW.
Data flow LabVIEW thực thi các lệnh từ trái qua phải. Để quan sát
điều này, bạn chọn hình bóng đèn bên cạnh nút Pause, sau đó chạy
chương trình. Bạn sẽ thấy các “hạt” tín hiệu chạy từ trái qua phải.

Kiểu dữ liệu là công cụ để gán “dãi giá trị” cho một biến nào đó.
Có nhiều loại kiểu dữ liệu với số bit khác nhau. Số bit càng cao thì biến
gán với kiểu dữ liệu đó càng có giá trị lớn. Đôi khi, cần phải thay đổi
kiểu dữ liệu để giá trị đo được hiển thị ra một cách chính xác.
Lưu ý: Trong LabVIEW,
dây hoặc control, hoặc indicator
màu xanh thì có giá trị là
Unsigned 8 bit. Tức giá trị tối đa
của các khối này là 255).

Lưu ý khi làm việc với phần cứng trong LabVIEW là trước khi
khởi động phần mềm LabVIEW, ta phải cắm card USB vào máy. Nếu
LabVIEW đang được mở và card chưa cắm thì ta tắt LabVIEW đi và cắm
107
card vào, sau đó khởi động LabVIEW lên. Nếu đã làm đúng hết các bước
mà bạn không giao tiếp được phần cứng để đọc tín hiệu từ cảm biến thì
hãy liên lạc supports@hocdelam.org hoặc labview.help@gmail.com để
được hỗ trợ.

10.3 ĐIỀU KHIỂN PID ĐỘNG CƠ DC


10.3.1 Lý thuyết điều khiển PID
Có thể nói bộ điều khiển PID (viết tắt của: Proportional–Integral–
Derivative Controller) là một trong những bộ điều khiển phổ biến và
quan trọng nhất trong các thiết bị và hệ thống công nghiệp từ ở đĩa CD
tới vận tốc xe ô tô đều được thực hiện bởi các thuật toán PID. Tài liệu
này đó dùng điều khiển các hệ thống vật lý như động cơ DC (Xem hình
10.9), hệ thống lái tự động trên robot, ô tô, lò nhiệt, vv.

Hình 10.9. Sơ đồ điều khiển động cơ DC theo thuật toán PID


Điều khiển PID là gì? Bộ điều khiển PID (Proportional–Integral–
Derivative Controller) là một bộ hiệu chỉnh có phản hồi nhằm làm giá
trị sai lệch của một tín hiệu đang được điều khiển bằng không. Bộ PID
có ba thành phần: proportional - tỷ lệ, integral - tích phân, và derivative -
đạo hàm), ba thành phần này đều có vai trò đưa sai lệch về không. Tính
chất tác động của mỗi thành phần có đặc điểm riêng được khảo sát chi
tiết trong phần sau. Tín hiệu phản hồi (feedback signal) thường là tín
hiệu thực được đo bằng cảm biến. Giá trị sai lệch là hiệu của tín hiệu đặt
(setpoint) trừ cho tín hiệu phản hồi.
- PID là bộ điều khiển thông dụng nhất trong công nghiệp vì tính dễ
áp dụng, và mang lại chất lượng điều khiển ổn định cho hệ thống. Cụ thể,

108
bộ điều khiển PID thường sử dụng trong điều khiển động cơ DC, robot,
các hệ thống trong ô tô, điều khiển áp xuất, băng truyền, vv.
Ví dụ: Bài điều khiển động cơ trong hình 10.9 được giả sử được
dùng để điều khiển vị trí của đầu 1 gắn trên thanh kim loại trượt không
ma sát trên bề mặt 3 để thanh di chuyển từ A đến B như hình 10.10.

Hình 10.10. Cơ cấu cần điều khiển vị trí


10.3.2 Bản chất toán học của thuật toán PID
Sơ đồ của hệ thống trong hình 10.9 được vẽ lại thành hình 10.11.

Hình 10.11. Bộ PID điều khiển vị trí


Một bộ điều khiển PID có sơ đồ như hình trên. Trong bộ điều khiển
PID, sai lệch e được tính bằng hiệu giá trị đặt hoặc điểm đặt (Set point
 s ) trừ cho giá trị thực tế đo được (measured value của hệ thống  m ).

e  s m (10.1)
Hoạt động của hệ thống điều khiển vị trí. Bộ PID này sẽ đọc và
hiểu giá trị mà người điều khiển mong muốn (gọi là giá trị đặt, ở đây là
vị trí của B có tọa độ xB=20cm), thường người điều khiển đưa giá trị đặt
109
vào bộ điều khiển PID thông qua GUI (Graphical user interface - giao
diện người dùng đồ họa). Bộ điều khiển PID sẽ tính sai lệch e, và qua bộ
PID thành tín hiệu điều khiển u(t)1 tính theo công thức 10.2, sai lệch
sau khi tính toán được truyền ra ngoài hệ thống thực thông qua card
vào/ra (I/O) như card Hocdelam USB-9001 hoặc NI 6009 ở đây tín hiệu
lúc này là tín hiệu điện áp và được gọi là u(t)2. Sau đó, tín hiệu này được
khuếch đại nhờ một bộ Driver (ví dụ Motor driver) để tăng tín hiệu đủ
công suất điều khiển cơ cấu chấp hành (động cơ DC), gọi là tín hiệu U(t).
Tín hiệu điều khiển động cơ sẽ điều khiển cơ cấu 5, khi động cơ quay thì
thanh kim loại trược theo phương X và đầu 1 di chuyển dần từ A tới B.
Hoàn thành một vòng điều khiển. Sau đó bộ điều khiển PID sẽ liên tục
thực hiện lại việc tính toán sai lệch của vị trí đặt (vị trí B) so với giá trị vị
trí thực tế (measured signal) của đầu 1 (nhờ vào bộ đo vị trí gắn với động
cơ), Nếu giá trị sai lệch vẫn còn thì bộ điều khiển PID tiếp tục phát ra tín
hiệu để quay độ động cơ cho tới khi giá trị thực tế của dộng cơ trùng
khớp với giá trị đặt. Tức khi đó sai lệch sẽ bằng 0. Chừng nào còn sai
lệch thì bộ điều khiển PID còn hoạt động để hiệu chỉnh tín hiệu điều
khiển. Bản chất toán học của bộ PID sẽ được giải thích trong công thức
10.2. Giá trị tín hiệu đưa vào động cơ được tính là:
t
d
u (t )  K p e(t )  K i  e( )d  K d e(t ) (10.2)
0
dt
 u (t ) : tín hiệu điều khiển, là tín hiệu do bộ PID sinh ra, (thường tín
hiệu này đi qua một module công suất) và đi vào hệ thống (động cơ
một chiều). Có đơn vị phụ thuộc phần cứng, như đối với điều khiển
động cơ một chiều 24V thông qua module công suất là một Motor
driver 24V thì u (t ) có đơn vị là Volt.
 K p e(t ) : Khâu tỷ lệ.

 K p K , i , K d : các hệ số tỷ lệ, tích phân và vi phân của bộ PID

 e(t ) sai lệch tại thời điểm hiện tại.


 e( )d ( ) : Diện tích S tạo bởi đường cong giá trị thực tế (xem
hình 1.21), đường thẳng giá trị đặt, và các cận là thời điểm trước
và sau một vòng điều khiển (cũng chính là thời gian thực hiện hết
một vòng lặp toàn bộ chương trình điều khiển K trong đồ thị 10.12)
hay nói cách khác K chính là đơn vị thời gian trích mẫu d ( )
(thường thời gian trích d ( ) mẫu bé khoảng ms thậm chí nano
giây).
110
Vậy tích phân từ 0 → t của sai lệch nhân với thời gian lấy mẫu
(trong công thức 10.2) chính là tổng hợp các sai lệch từ khi hệ thống bắt
đầu được điều khiển tới thời điểm hệ thống đang hoạt động hiện tại.

Hình 10.12. Mô tả giá trị đặt, giá trị đo được và diện tích sai lệch
 Các hệ số luôn không âm: Tức K p K , i , K d  0

 d[e(t )] / dt : Tốc độ thay đổi của sai lệch tại thời điểm hiện tại.
Ý nghĩa các hệ số gain trong bộ PID khi tăng các hệ số K p K i , K d độc
lập nhau
 Với cùng một giá trị e(t ) , nếu tăng K p , thì tín hiệu điều khiển u (t )
tăng. u (t ) tăng đồng nghĩa điện áp tác động vào động cơ một chiều
tăng lên, điện áp tăng sẽ làm làm giảm e(t ) nhanh hơn có nghĩa
hiệu giá trị đặt và giá trị đo được sẽ giảm nhanh hơn. Khi đó ta gọi
khả năng đáp ứng của thống nhanh. Đáp ứng của hệ thống được
xem là càng nhanh khi thời gian cần thiết để tín hiệu đầu ra của hệ
thống đạt tới giá trị đặt càng nhỏ.
Tuy nhiên, khi K p quá lớn, thì hệ thống không ổn định vì có hiện tượng
giá trị đo được của hệ thống vượt quá giá trị đặt, gọi là vọt lố (overshoot).
111
 K i có tác dụng làm tăng tốc độ đáp ứng vì nó cũng làm tăng điện
áp (U(t)) đặt vào động cơ. Đồng thời khâu này làm sai lệch tỉnh
(steady-state error) trở về 0 nhờ vào đặc tính cộng dồn sai lệch của
phép toán tích phân. Sai lệch tỉnh là sai lệch sau khi tín hiệu đầu ra
của hệ thống đã ổn định.
 K d Khâu D có tác dụng làm ổn định hệ thống. Khi e(t ) đổi dấu tức
giá trị phản hồi lớn hơn giá trị setpoint, thì khâu D nó có tác dụng
làm giảm tín hiệu điều khiển u (t )
Phương pháp định bộ thông số K p K i , K d (Các hệ số gain) thủ
công thường dựa vào việc thử nghiệm các thông số. Ta xác lập các hệ số
Kp, K i , K d bằng không. Sau đó tăng dần Kp cho tới khi vọt lố đạt bằng
gấn 1,5 lần giá trị đặt. Hiệu chỉnh K i cho sai lệch tỉnh bằng không. Và
hiệu chỉnh K d cho hệ thống giảm rung lắc.
Ngoài ra bạn còn có thể thực hiện việc chọn các hệ số này bằng
phương pháp tìm các hệ số của Zigler–Nichols như bảng 10.1.
Bảng 10.1. Phương pháp chỉnh PID (Phương pháp Ziegler–Nichols)
Dạng điều Kp Ki Kd
khiển
P 0.50Ku

PI 0.45K 1.2Kp / Pu

PID 0.60Ku 2Kp / Pu KpPu / 8

 Ku: Giá trị Kp làm cho hệ thống mất ổn định 150%.
 Pu: Khoảng thời gian dao động của tín hiệu đo được.
Cao hơn phương pháp xác định các hệ số bằng tay thì còn phương
pháp xác định bộ gain Kp, Ki, và Kd tự động sẽ được cập nhật ở các tập
sách tiếp theo cùng tác giả.
10.3.4 Thực hành điều khiển PID cho động cơ DC
Để thực hành bộ điều khiển PID, chúng tôi chọn card Hocdelam
USB 9001, phần cứng hoàn thiện như hình 10.13 và sơ đồ mạch điện
hình 10.14.

112
Hình 10.13. Sơ đồ kết nối phần cứng điều khiển PID động cơ DC

Hình 10.14. Sơ đồ mạch điện kết nối phần cứng điều khiển PID động cơ
DC
Thuật toán điều khiển động cơ DC trong LabVIEW được lưu dưới
dạng File CD>Bai 10> DC motor P control.vi

113
Hình 10.15. Kết quả lập trình P control cho động cơ DC

Hình 10.16. Giao diện người dùng điều khiển P cho động cơ DC
Đáp ứng của vị trí động cơ DC theo thuật toán P khá tốt. Thời gian
đáp ứng là 0.2 giây với K p  0.562 . Sai lệch tiến tới không sau 0.5 giây.
Xem hình 10.17. Đường màu trắng là giá trị đặt, đường màu đỏ là giá trị
đáp ứng (giá trị đo được từ Encoder), màu vàng là sai lệch.

Hình 10.17. Đáp ứng của vị trí động cơ DC


Do giới hạn cuốn sách này chỉ đề cập các vấn đề cơ bản nhất trong
LabVIEW nên để mở rộng và tự lập trình được bài toán PID, bạn hãy đọc
114
bài “Điều khiển động cơ DC theo thuật toán PID cho mọi người, TS.
Nguyễn Bá Hải” tại website LabVIEW Hocdelam theo đường dẫn :
http://hocdelam.org> Nghiên cứu> Báo khoa học
Qua CD kèm theo sách, tác giả cũng tặng ví dụ mẫu điều khiển PI
cho các bạn tự tìm hiểu và khám phá. BD của bài toán điều khiển PI được
cho ở hình 10.26. Xem ví dụ mẫu tại CD> Bai 10> Vi du Hocdelam-
9000 PI.vi

Hình 10.18. Điều khiển khâu PI vị trí động cơ DC

10.4 CÁC ỨNG DỤNG VỚI CARD HOCDELAM-USB 9090


10.4.1 Giới Thiệu card Hocdelam USB-9090
Card USB HDL 9090 là card thu thập dữ liệu và xuất tín hiệu điều khiển
đa năng thế hệ tiếp theo của HDL 9001. Ngoài các chức năng đã có trên
HDL 9001 như thu thập dữ liệu từ các cảm biến, điều khiển ON/OFF,
điều chế xung PWM v.v. HDL 9090 còn có chức năng Digital Input giúp
bạn ứng dụng linh hoạt hơn. Với tính năng vươt trội như tốc độ cao ADC
cao hơn 5 lần và chính xác hơn 4 lần so với HDL 9001, card USB 9090
là lựa chọn tối ưu cho ứng dụng thu thập dữ liệu và điều khiển của bạn.

115
Hình 10.19. Card Hocdelam USB-9090
Mô tả cụ thể các chân tín hiệu của card HDL 9090 như bảng sau:
Ký hiệu Mô tả Loại
GND Ground – chân mát Nguồn
VCC Nguồn 5V lấy từ USB Nguồn
CNT+/CNT- Chân đếm Counter Input
DI1-DI4 Tín hiệu vào dạng số 0-5V Input
SW1-SW4 Tín hiệu ra dạng số 0-5V Output
DIR Set bộ đếm xung đếm lên(5V) hay đếm xuống Input
(0V)
PULSE Đếm xung tín hiệu 0-5V Input
PWM1- Xuất tín hiệu PWM để điều khiển Output
PWM2
ADC1- Nhận tín hiệu vào tương tự (Analog) 0-5V Input
ADC6
Ghi chú: Input là đầu vào (cần cấp tín hiệu vào), Output là đầu ra
(là tín hiệu từ card xuất ra).

116
Hình 10.20. Sơ đồ chân card Hocdelam USB-9090
- Phần mềm đi kèm (các bạn có thể download miễn phí tại website:
http://hocdelam.org)
o NI VISA phiên bản 3.1 hoặc cao hơn: đây là phần mềm của
công ty NI, bạn phải cài phần mềm này trước khi muốn giao tiếp
LabVIEW (PC) với bất kì thiết bị ngoại vi nào.
o Thực hiện các bước kết nối thiết bị USB HDL 9090 vào máy
tính (Xem file Cach Ket Noi HDL 9090)
o Hàm Hocdelam USB 9090: Để truyền nhận tín hiệu từ
LabVIEW với card HDL 9090 chúng ta cần sử dụng hàm này

Hình 10.21. Ý nghĩa các chân trong hàm thư viện card Hocdelam USB-
9090
Mô tả các chân của hàm USB HDL 9090 để lập trình như bảng sau:
Chân Loại Mô tả
USB Card Control Tạo control tại chân này để chọn thiết bị
USB HDL 9090
SW1-SW4 Control Nối giá trị Boolean (TRUE-FALSE) vào
các chân này để phần cứng HDL 9090
xuất ra tín hiệu số tương ứng (TRUEL

117
5V, FALSE 0V)
PWM1-PWM2 Control Nối giá trị số nguyên 0-500 vào để phần
cứng xuất xung PWM có duty cycle
tương ứng là 0-100%
PWM Frequency Control Nối giá trị từ 3000-60000 vào để chọn tần
(3-60kHz) số tín hiệu PWM card xuất ra.
DI1-DI4 Indicator Giá trị tín hiệu số đọc được từ chân DI1-
DI4 trên card. Giá trị mặc định là TRUE
(5V)
ADC1-ADC6 Indicator Giá trị ADC (0-1023) đọc được từ các
chân ADC tương ứng trên card
Encoder Indicator Giá trị encoder 0-100000

10.4.2 Hướng dẫn cách kết nối thiết bị Hocdelam USB 9090 vào máy tính
Tài liệu này hướng dẫn bạn kết nối card Hocdelam USB 9090 vào
máy tính.
Bước 1: Máy tính cần cài NI VISA phiên bản 3.1 hay cao hơn.
Không cắm HDL 9090 vào máy.
Chọn Start >> All Programs >> National Instruments >> VISA
>> Driver Wizard

Hình 10.22. Hướng dẫn kết nối card vào máy tính
Chọn USB >> Next

118
Bước 2:

Hình 10.23. Hướng dẫn kết nối card vào máy tính
Chọn Other... trong khung Device List >> Next

Hình 10.24. Hướng dẫn kết nối card vào máy tính
Lúc này, cắm dây USB HDL 9090 vào máy. Chọn Yes

Hình 10.25. Hướng dẫn kết nối card vào máy tính
Nhập 9090 vào khung USB Manufacturer ID (Vendor ID)
Nhập 0001 vào khung USB Model Code (Product ID)
119
Chọn Next
Bước 3:

Hình 10.26. Hướng dẫn kết nối card vào máy tính
Nhập HDL-9090 vào khung Instrument Prefix (thay cho chữ prefix
có sẵn). Chọn Next

Hình 10.27. Hướng dẫn kết nối card vào máy tính
Chọn mục đầu tiên như hình trên (Install the generated files on this
computer)
Click Finish
Lúc này card HDL 9090 sẽ được cài và nhận dạng trong NI MAX.
Xin chờ một vài phút để quá trình hoàn tất.

120
Bước 4:
Mở MAX ra
Chọn Mục Device & Interface:
Lúc này thiết bị HDL USB 9090 đã được nhận biết ở đây

Hình 10.28. Hướng dẫn kết nối card vào máy tính
Lưu ý: khi bạn cắm một card USB HDL 9090 khác vào máy của
bạn, Found new hardware wizard sẽ yêu cầu Install driver cho card khác
này. Bạn chỉ cần chọn Yes, Ok thì card này sẽ được nhận biết trong
MAX bởi vì đã thực hiện các thao tác ở trên.
10.4.3 Hướng dẫn lập trình card Hocdelam USB-9090
Phần này hướng dẫn bạn thực hiện việc lập trình với card
Hocdelam USB-9090 với mục tiêu sau:
- Thực hành nối cảm biến vào card, thu thập tín hiệu analog từ card
HDL 9090
- Thực hành nối dây encoder vào card và phát xung PWM để điều
khiển động cơ
- Phần cứng bao gồm: card USB HDL 9090, biến trở và cảm biến
nhiệt độ LM35, động cơ với encoder, motor drive để điều khiển
động cơ (dùng bộ thí nghiệm đa năng HDL 9000)
10.4.3.1 Kiểm tra phần mềm và kết nối card HDL 9090 vào máy tính
- LabVIEW 2009, NI VISA, Thư viện kèm theo card HDL 9090
- Thực hiện kết nối card HDL 9090 vào máy tính theo tài liệu hướng dẫn.
10.4.3.2 Thực hành
Sơ đồ chân của card USB HDL 9090:
121
Hình 10.29. Sơ đồ chân
Ví dụ 1. Thu thập dữ liệu từ biến trở:
- Biến trở có 3 chân màu: đỏ, đen, trắng.
- Nối chân màu đỏ vào VCC, chân màu đen vào GND và chân trắng
vào ADC 1 (ví dụ dùng chân 1, 2, 27)

Hình 10.30. Cách kết nối biến trở vào card


- Mở LabVIEW, mở mới một VI
- Trên Block Diagram (BD), Right Click (RC) >> chọn Select a VI..

122
Hình 10.31. Chọn Select a VI
- Chọn IO Library Hocdelam USB 9090

Hình 10.33. Chọn IO Library Hocdelam USB 9090


- Right Click lên hàm này và bỏ chọn mục „View as Icon‟. Lúc này
hàm sẽ có các chân như sau. Khi bạn rê chuột đến chân nào thì tên
của chân đó sẽ hiện lên để nhận biết

Hình 10.34
- Right Click lên hàm tại chân USB Card và chọn Create >>
Control

123
- Right Click tại chân ADC1 và chọn Create >> Indicator

- Bây giờ, bạn có thể chọn thiết bị tại ô USB Card trên Front Panel
và cho chương trình chạy. Giá trị nhận về sẽ trong khoảng 0-1023
vì ADC có độ phân giải 10 bit
- Để biến giá trị ADC này thành điện thế 0-5V thì bạn thực hiện
phép toán (giá trị ADC1 x 5 / 1023) như sau

124
- Sau đó, để hiển thị giá trị điện thế Volt của ADC1, bạn tạo một
đồng hồ trên Front panel, đặt tên là ADC1 Volt và nối như hình
trên.

- Bạn có thể chọn thiết bị USB và chạy thử chương trình để xem giá
trị ADC1 Volt
- Cuối cùng để chương trình chạy liên tục thì bạn dùng 1 vòng lặp
trên block diagram

- Bạn đã hoàn thành bài 1 để thu thập dữ liệu analog từ biến trở và
biến đổi thành giá trị điện thế tương ứng

125
Ví dụ 2: Thu thập dữ liệu từ cảm biến nhiệt độ LM35
- Cảm biến nhiệt độ LM35 cũng có 3 dây đỏ, đen, trắng như biến trở.
Do đo bạn có thể kết nối dây hoàn toàn giống với bài thực hành 1.
(Đỏ - VCC, đen – GND, trắng – ADC1)

- Sau đó bạn sẽ viết code trên block diagram hoàn toàn tương tự bài
1. Một vấn đề nhỏ ở đây là làm sao biến đổi được giá trị điện thế
ADC1 Volt thành giá trị nhiệt độ.
- Để thực hiện biến đổi này thì bạn cần xem thông tin của nhà sản
xuất cảm biến. Cảm biến LM35 có thông số quy đổi là 0.01V ~ 1º
C. Nên bạn sẽ thêm một phép tính nữa là (nhiệt độ = ADC1 Volt /
0.01)

126
- Sau đó bạn quay lại front panel và tạo 1 indicator nhiệt kế để thể
hiện nhiệt độ và nối code như hình trên.

- Chọn thiết bị HDL 9090 trong ô USB Card và chạy chương trình,
bạn sẽ đo được nhiệt độ.

Ví dụ 3: Đọc tín hiệu từ Encoder


- Trong động cơ thường có gắn encoder để đọc được góc quay, vòng
quay của động cơ. Encoder xuất ra tín hiệu xung và card HDL sẽ
đếm số xung này. Từ số xung tính được số vòng và góc quay tùy
theo thông số của encoder (ví dụ 1 vòng = 100 xung)
127
- Encoder có 4 dây nối: VCC, GND, Channel A & Channel B. Nối
dây VCC và GND tương ưng vào card HDL 9090. Dây Channel A
nối vào chân PULSE (chân 17) và dây channel B nối vào chân DIR
(chân 16)

- Lúc này bạn sẽ lập trình chương trình đọc Encoder rất đơn giản.
Trước tiên là làm theo các bước như bài 1 để được block diagram
sau

- Bây giờ, right click lên chân Encoder của hàm và chọn Create >>
Indicator

128
- Chương trình đã hoàn thành. Chọn thiết bị USB HDL 9090 trong ô
USB Card và chạy chương trình. Bạn dùng tay để xoay động cơ thì
sẽ thấy giá trị của Encoder thay đổi tương ứng.

- Bạn đã hoàn thành bài 3 để đọc giá trị từ Encoder.


Ví dụ 4: Phát xung PWM để điều khiển động cơ:
- Cách nối dây giữa card HDL 9090 và motor driver:

- Khi dùng bộ thí nghiệm đa năng HDL 9000 thì có 3 dây chính cần
nối đó là:
 Nối giữa chân PWM1 (chân 20) của card HDL 9090 và chân
PWM của Motor driver
 Nối giữa chân SW1 (chân 11) của card HDL 9090 và chân DIR
của Motor driver
 Nối giữa chân GND của card HDL 9090 và chân BRE của
motor driver
129
- Các dây còn lại và nối mát, nối nguồn và nối giữa motor driver và
động cơ DC. Kiểm tra lại kết nối cho chính xác và cấp nguồn cho
driver motor và động cơ.
- Để phát xung điều khiển động cơ thì cần thêm vào chương trình
đọc encoder đã viết ở trên:
 Right click thư viện HDL 9090, chân PWM Frequency, chọn
Create >> Control
 Right click chân PWM1, chọn Create >> Control
 Right Click chân SW1, chọn Create >> Control

- Chương trình cơ bản đã hoàn thành. Front Panel của chương trình
điều khiển này có thể sửa lại cho đẹp hơn bằng cách dùng control
thanh trượt

130
- Chọn thiết bị HDL 9090 trong ô USB Card, và chạy chương trình.
Bạn nhập giá trị PWM Frequency từ 3000-60000 và nhập giá trị
PWM1 từ 0-500.

- Động cơ sẽ chạy nhanh hay chậm tùy vào giá trị PWM1. Khi muốn
đảo chiều động cơ, bạn click và nút SW1 và quan sát đảo chiều.
- Bạn đã hoàn thành bài 4, phát xung và điều khiển động cơ.
Bạn có biết?
Xem video demo về điều khiển PID trong CD> Demo> DC Motor
Control. Bạn có thể liên lạc supports@hocdelam.org hoặc hotline: 098
8868 524 để đăng ký thực miễn phí hành bài toán điều khiển động cơ DC
theo thuật toán PID tại phòng thí nghiệm của Hocdelam Group (tại Quận
Thủ Đức-Tp.HCM, Quận 6-TPHCM, và Hà Nội). Do lịch đăng ký thực
hành khá đông, nên bạn sẽ phải chờ theo thứ tự đăng ký. Thông thường,
bạn sẽ được xếp lịch sau 4 ngày tính từ khi đăng ký.

10.5 BÀI TẬP


Câu 1: Thực hành đo lường cảm biến nhiệt độ LM35 vào máy tính
và vẽ đồ thị nhiệt độ dựa vào card Hocdelam USB-9001.
Câu 2: Thu thập tín hiệu từ một Encoder vào máy tính qua card
Hocdelam USB-9001. (Gợi ý: Xem ví dụ mẫu CD> Bai 10> Doc
encoder.vi)
131
Câu 3: Thực hành điều khiển khâu P cho động cơ DC (vị trí và vận tốc).
Câu 4: Hãy mô tả hoạt động của bộ điều khiển PID và cách chọn
các hệ số trong bộ điều khiển.
Câu 5: Thực hành lập trình điều khiển khâu PI vị trí động CD
Câu 6: Hãy giải thích tại sao khâu I trong bộ điều khiển PID có thể
khử được sai lệch tỉnh của hệ thống?
Câu 7: Bạn cần nắm một số thuật ngữ tiếng Anh trong điều khiển
tự động trong hình sau (hãy sử dụng từ điển để tra từ).

(Nguồn hình: Wikipedia)

THAM KHẢO BÀI 10


[1] Wikipedia.org
[2] Controls.ame.nd.edu/ame437/S2003/hw1
[3] TS. Nguyễn Bá Hải, “Điều khiển PID vị trí động cơ DC với
LabVIEW”, Hocdelam Group, 2009.
[4] TS. Nguyễn Bá Hải, Thạc Sĩ Ngô Hải Bắc, PGS. TS. Jee-Hwan Ryu
“Điều khiển bền vững động cơ DC” Hội thảo khoa học quốc tế URAI,
Seoul, Hàn Quốc.
132
Bài 11
THU THẬP DỮ LIỆU VỚI CARD NI USB
6008/6009
Học xong bài này, bạn sẽ nắm được:
- Thu thập dữ liê ̣u với các cark DAQ của National Instruments
- Thực hành thu thập dữ liê ̣u và xuấ t tín hiê ̣u điề u khiể n qua card NI-
USB 6008/6009

11.1 GIỚI THIỆU GIAO TIẾP NI USB 6008/6009


Card NI USB 6008/6009 có khả năng đọc 8 kênh analog vào card
(độ phân giải 14-bit, 48 kS/s). Giá thành tham khảo: 202USD cho card
NI USB 6008 và 305USD cho card NI USB 6009. Xuất 2 analog (12-bit,
150 S/s); 12 kênh xuất/nhập tín hiệu số (digital I/O); Bộ đếm 32-bit. Kết
nối với USB của máy tính để bàn (destop) hoặc máy sách tay. Sử dụng
phần mềm LabVIEW, LabWindows/CVI, và Measurement Studio cho
Visual Studio .NET tương thích với NI-DAQmx driver software và NI
LabVIEW SignalExpress software. Bạn cần đo tín hiệu analog như tín
hiệu điện áp của bất kỳ cảm biến nào. Ví dụ: Cảm biến nhiệt độ, cảm
biến độ ẩm, áp suất, vv. NI 6009 cho phép bạn thực hiện nhu cầu trên với
nhiều tính năng và ưu điểm như: dễ dàng thực hiện việc giao tiếp mới
máy tính qua cổng USB với chu kỳ lấy mẫu nhanh, độ chính xác khá cao,
tương thích với môi trường LabVIEW, dùng được cho cả hệ điều hành
Window, Linux hoặc Mac.

Hình 11.1. Card NI USB 6008/6009


Phần mềm cần thiết để lập trình được với card này là: NI
LabVIEW SignalExpress (đọc, phân tích và xuất dữ liệu mà không cần
133
lập trình) dùng với LabVIEW 7.x, LabWindows™/CVI 7.x. Hoặc
Measurement Studio 7.x. USB dùng với Visual Studio .NET, C/C++,
hoặc Visual Basic 6.
Tóm tắt thông số kỹ thuật
Thông số chung
Chuẩn kết nối USB
Hỗ trợ hệ điều hành Windows, Linux, Mac OS, Pocket PC
Kiểu đo Điện áp, xung
Họ DAQ B Series
Đọc tín hiệu Analog
Số kênh 8 SE/4 DI
Tốc độ lấy mẫu 48 kS/s
Độ phân giải 14 bits
Trích mẫu đồng thời Không
Ngưỡng điện áp giới hạn lớn -10 tới 10 V
nhất
Độ chính xác 138 mV
Ngưỡng điện áp nhỏ nhất -1..1 V
Độ chính xác 37.5 mV
Số giới hạn 8
Bộ nhớ tích hợp On-Board 512 B
Xuất tín hiệu Analog
Số kênh 2
Tốc độ cập nhật 150 S/s
Độ phân giải 12 bits
Ngưỡng điện áp giới hạn lớn 0..5 V
nhất
Độ chính xác 7 mV
Ngưỡng điện áp giới hạn nhỏ 0..5 V
nhất

134
Độ chính xác 7 mV
Tín hiệu điều khiển dòng 5 mA/10 mA
điện (Kênh/Tổng)
Các chân xuất/nhập tín hiệu
số
Số kênh 12 DIO
Timing Software
Logic Levels TTL
Ngưỡng điện áp giới vào hạn 0..5 V
lớn nhất
Ngưỡng điện áp ra giới hạn lớn 0..5 V
nhất
Dòng điện vào Sinking, Sourcing
Bộ lọc vào lập trình được No
Output Current Flow Sinking, Sourcing
Dòng điện (Kênh/Tổng) 8.5 mA/102 mA
Bộ đếm và bộ hẹn (định) giờ
Số bộ đếm/hẹn giờ 1
Độ phân giải 32 bits
Tần số nguồn lớn nhất 5 MHz
Độ rộng xung vào nhỏ nhất 100 ns
Mức logic TTL
Ngưỡng cực đại 0..5 V
Độ ổn định 50 ppm
Cho phép thực hiện nhớ tạm Yes
(đêm)
Tác động (Triggering) Digital
Kích thước card NI 6009
Dài 8.51 cm
Rộng 8.18 cm
135
Cao 2.31 cm
Đầu nối vào ra Sử dụng tua vít để mở dễ dàng

11.2 HƯỚNG DẪN LẬP TRÌNH CARD NI USB6008/6009


Hướng dẫn này mô tả làm thế nào để cài đặt và cấu hình NI USB
thu thập dữ liệu (DAQ) thiết bị và làm thế nào để xác minh rằng các thiết
bị đang làm việc đúng cách. Bạn phải là Quản trị viên (Admin) để cài đặt
phần mềm NI và các thiết bị trên máy tính của bạn.
Bước 1. Cài đặt phần mềm ứng dụng NI
Cài đặt phần mềm ứng dụng NI như NI LabVIEW. Xem Bài 1 của
tập sách này nếu bạn quên cách cài đặt.
Bước 2. Cài đặt NI-DAQmx
Cài đặt NI-DAQmx driver trước khi cài đặt phần mềm NI thiết bị
USB để Windows có thể phát hiện chúng. Đưa đĩa kèm với thiết bị của
bạn vào máy tính của bạn. Ifthe NI-DAQmx trình cài đặt không tự động
mở, chọn Start »Run. Nhập x: \ Autorun.exe, trong đó x là các ký tự ổ
đĩa. Hoàn thành hướng dẫn.
Bước 3. Kết nối card vào máy tính
Trước khi cài đặt bạn có thể tiến hành dán nhãn cho card (nhãn sẽ
kèm theo khi bạn mua card). Để cài đặt thiết bị NI USB, cắm cáp USB
vào máy tính và thiết bị theo hình sau:

Hình 11.2. Kết nối card

136
Cắm các connector vào card và
nối dây USB vào card và vào máy
tính. Sau khi kết nối card với máy
tính qua dây USB, Found New
Hardware Wizard sẽ hiện lên và
giúp bạn cài đặt driver. Windows
báo nhận ra thiết bị.
Cửa sổ sau sẽ hiện ra, chọn
Take no action và tiến hành các
bước hướng dẫn tiếp sau đây:

Hình 11.3. Bảng thông tin tự động


hiện khi cắm card vào máy tính

Bước 4: Bắt đầu đo với thiết bị này sử dụng NI LabVIEW


Khởi động MAX (MAX là một công cụ dùng để quản lý phần cứng
và phần mềm, xác lập thông số, kiểm tra phần cứng cũng như tạo driver
cho phần cứng của National Instruments) bằng cách vào: Start /
Programs / National Instruments/

Hình 11.4. Mở MAX


Cửa sổ sau sẽ hiện ra.
Hình 11.5. MAX

137
Bước 5: Xuất tín hiệu DAC0
Trong MAX, bạn chọn Devices and Interfaces, Xem sơ đồ chân
DAC0 của card.

Hình 11.6. Sơ đồ chân


Kiểm tra xem card đã được kết nối
đúng chưa bằng cách vào Test panels.
Chọn Seft-test. Bạn sẽ thấy dòng chữ
Device has passed the seft-test.

Hình 11.7. Kết quả của tự kiểm tra


Vào Test panel, chọn
Update như trong hình sau tại thẻ
Voltage ouput. Dùng đồng hồ đo
để xác định có giá trị 5V tại chân
DAC0 của card.

Hình 11.8. Thẻ xuất điện áp

138
Tiếp theo, chọn thẻ Analog Input bạn phải thấy được tín hiệu như
hình sau:

Hình 11.9. Thẻ đọc tín hiệu điện áp

11.3 THỰC HÀNH LẬP TRÌNH LABVIEW ĐO ANALOG VỚI


CARD NI USB-6008
Mục tiêu của bài viết này của Hocdelam Group nhằm cung cấp
kiến thức cơ sở cho bạn sử dụng và khai thác hiệu quả sản phẩm của
National Instruments USB 6009 hoặc USB 6008. Bạn sẽ được hướng dẫn
chi tiết sơ đồ chân và cách lập trình đếm xung từ một Encoder hoặc đọc
một sự kiện như bật công tắc, vv…
Cách kết nối tín hiệu analog vào card
Phương pháp đo đơn giản là
đo dạng: single-ended. Ở phương
pháp này 1 Analog input (ví dụ AI
1) được nối với nguồn dương cần
đo. Nguồn âm (GND) của card
nối với nguồn âm của nguồn cần
đo (hình 11.10) hoặc diffential
hình 11.11.
Hình 11.10. Cách nối cảm biến có tín hiệu analog vào card NI USB
6008: Phương pháp Single-ended
139
Hình 11.11. Cách nối cảm biến có tín hiệu analog vào card NI USB
6008: Phương pháp Diffential
Bằng phương pháp đo differential, người dùng có thể sử dụng card
NI USB6008/6009 để đo điện áp có giá trị -20V tới +20V. Xem hình 2-2.
Đường đồ thị nét liên tục là tín hiệu điện áp trả về từ card.

Hình 11.12. Kết quả của phương pháp đo 2 kênh analog AI1 và AI5
trong phương pháp đo Differential
Tiến hành đo bằng cách sử
dụng Right Click lên Block
Diagram, chọn Measurement
IO, chọn DAQmx, chọn DAQ
Assistant. Chọn Acquire
Signals.

Hình 11.13. Thu thập tín hiệu Analog bằng Instrument assistant
Chọn Yes và xác lập các thông số sau:

140
Hình 11.14. Đo Analog input
Nhập tên kênh đo.

Hình 11.15. Tạo tên kênh đo


Trên nút data, chọn Right Click > Create > Graph Indicator hình
11.15.

141
Hình 11.16. Tạo Graph indicator
Hoàn thành chương trình đo Analog input ta được code như hình
11.16. Tạo while loop và chạy chương trình, xoay biến trở để xem sự
thay đổi điện áp. Xem CD > Bai 11 > NI 6008 - Analog Input.vi

Hình 11.17. Kết quả chương trình đo Analog input

11.4 KỸ THUẬT PHÁT XUNG TÍN HIỆU VỚI CARD NI USB-


6008/6009
Xem lại sơ đồ chân số (digital) của card như hình 11.17.

Hình 11.18. Sơ đồ chân về chức năng Digital của card (Nguồn hình:
Internet)

142
Như chân PFI 0 (Chân 29) này là có thể dùng như (cấu hình thành)
một chức năng đọc một sự kiện đầu vào (ngắt phần cứng) hoặc một bộ
đếm sự kiện (event couter). Bạn cũng có thể dùng chức năng của PFI O
nhằm làm một ngắt để ra quyết định cho quá trình thu thập tín hiệu
Analog từ chức năng của các Analog Input (AI).
Bây giờ ta cần lưu ý về kỹ thuật ghép nối phần cứng chân tín
hiệu số. Khi sử dụng các chức năng Digital Input, bạn cần kết nối phần
cứng bên ngoài (thiết bị ngoại vi) như hình 11.18. Các chân P0.0 được sử
dụng như một Digital Output (xuất tín hiệu điều khiển LED sáng).

Hình 11.19. Sơ đồ ghép nối các chân Digital


Để sử dụng với Encoder, bạn cần nối chân Mass, và Nguồn
(thường là 5V) cho Encoder. Nối Mass Encoder vào Digital Ground
của USB 6009. Nối kênh A của Encoder vào TFI 0 của Card.
Lập trình trong LabVIEW đọc tín hiệu số bằng cách:
 Chọn Right Click lên Block Diagram, Chọn Measurement IO,
chọn DAQmx, chọn DAQ Assistant. Chọn Acquire Signals,
chọn Counter Input như hình 4, chọn Edge Count, chọn Clt0.
 Chương trình sẽ tự động hoàn thành việc đọc tín hiệu Input (từ
một công tắc) giống như việc đọc Analog input ở trên.
Tiếp theo, ta thực hành phát tín hiệu điều khiển LED như sau:

143
 Chọn Right Click lên
Block Diagram, chọn
Measurement IO, chọn
DAQmx, chọn DAQ
Assistant. Chọn
Generate Signals, chọn
Digital Output, chọn
Line Ouput.

Hình 11.20. Tạo Digital Output điều khiển LED


 Chọn Port0/line0, chọn
Finish
 Tạo Control
Hình 11.20 Tạo Control

 Tạo while loop và một khối Wait để hoàn thành chương trình
như hình 11.21

Hình 11.21. Chương trình điều khiển LED hoàn thành

144
 Nối ra LED để thử.
 Nhấn nút để thấy LED sáng tắt khi ta nhấn LED trong FP của
chương trình.
Bạn cũng có thể lập trình đo Analog input bằng cách dùng các thư
viện của DAQmx mà không dùng DAQ assitant. Tác giả cung cấp ví dụ
này trong CD > Bai 11 > NI 6008 - Analog Input Output.vi

Hình 11.22. Ví dụ tham khảo đọc một kênh Analog Input của tác giả
Finn

Hình 11.23. Ví dụ tham khảo đọc kênh Analog Input của tác giả Finn
Bạn có biết?
Các card của NI có thể đặt mua trực tiếp tại: Công ty National
Instrument Vietnam hoặc mua trực tuyến tại:
http://.hocdelam.org,http://ino.com.vn, http://tanminhgiang.com.
145
11.5 BÀI TẬP
Câu 1: Hãy vẽ sơ đồ kết nối phần cứng để thu thập dữ liệu từ cảm
biến nhiệt độ vào máy tính thông qua card NI-USB 6008/6009.
Câu 2: Lập trình thu thập dữ liệu cảm biến khoản cách SHARP
GP201 qua cổng Analog Input của NI-USB 6008/6009.
Câu 3: Lập trình thu thập tín hiệu on/off (Đóng/ngắt) của một công
tắc.

THAM KHẢO
[1] Giáo trình “Lập trình LabVIEW”, TS. Nguyễn Bá Hải, 2007
[2] http://hocdelam.org
[3] NI-DAQmx for USB Devices Getting Started Guide
[4] http://techteach.no
[5] NI USB-6008-6009 User Guide and Specifications

146
Bài 12
ĐIỀU KHIỂN VỊ TRÍ VÀ VẬN TỐC CHẤT
LƯỢNG CAO VỚI CARD PCI 7356
Học xong bài này, bạn sẽ nắm được:
- Thông số kỹ thuật card PCI 7356
- Lập trình với card PCI 7356
- Xử lý các lỗi thông dụng

Trong tài liệu này, tác giả cung cấp thông tin cài đặt phần mềm và
phần cứng cho điều khiển chuyển động dùng PCI motion controller NI
PCI-73xx hoặc PCI-7356, phương pháp kiểm tra tình trạng làm việc, và
hướng dẫn cách lập trình card trước khi tiến hành lập trình các ứng dụng
cho card NI PCI-73xx. Tài liệu này cũng có thể dùng tham khảo cho các
card PCI DAQ như NI PCI-6010, NI PCI-6220, NI PCI-6503, NI PCI-
6601, NI PCI-6610, NI PCI-4472B, NI PCI-6221, , NI PCI-62xx , PCI
signal generator (NI-FGEN Signal Generator) như NI PCI-5412, NI PCI-
5421, NI PCI-54xx và một số card PCI của advantech. vv. Các thông tin,
tài liệu mới nhất về LabVIEW và ứng dụng các card này được cập nhật
tại: http://hocdelam.org.

12.1 CHUẨN BỊ THIẾT BỊ


Để sử dụng card này bạn cần có phần cứng và phần mềm đi kèm gồm:
Phần cứng
- Card PCI 73xx (ví dụ PCI 7356), là bộ điều khiển.
- Connector (hoặc giao diện đa năng UMI, 68 chân), dùng cắm
dây ra động cơ và encoder.
- Cable nối card ra connector, chuẩn 68 chân.
- Động cơ một chiều DC hoặc động cơ bước, encoder có xung ra
ở mức điện áp 0volt (mức thấp và 5volt (mức cao).
- Máy tính để gắn card.
Phần mềm
- NI motion driver (để máy tính nhận ra card).
147
- LabVIEW từ bản 7.1 tới 2009 (để viết chương trình phát triển
ứng dụng cho card NI PCI73xx).
- Có thể thay LabVIEW bằng LabWindows/CVI hoặc Visual
C++, hoặc Microsoft Visual Basic.

12.2 CÀI ĐẶT PHẦN MỀM


Hệ thống lập trình chuyển động sử dụng card NI PCI và động cơ
DC gồm các bước sau:
12.2.1 Cài đặt NI motion driver (Tải tại http://hocdelam.org). Mục tài
liệu > Driver, toolkits. (Lưu ý, trong lần cài đặt lần đầu tiên, việc cài đặt
driver luôn phải thực hiện trước khi gắn card vào máy tính).

Hình 12.1. Cài đặt NI Motion


Khi chọn các đặc tính
cài đặt, nên chọn các phiên
bản LabVIEW khác nhau ví
dụ LabVIEW 7.1 support,
LabVIEW 8.5 support,
LabVIEW 8.6 support.
Việc này cho phép sử dụng
card PCI 73xx này với bất cả
ba phiên bản LabVIEW này.
Chọn LabVIEW Real-time
Support.

Hình 12.2. Chọn LabVIEW Real-time Support


12.2.2 Phần card NI PCI motion controller (ví dụ NI PCI 7356)
Gắn card NI PCI vào khe PCI của máy tính như hình dưới.

148
Hình 12.3. Cài đặt phần cứng card vào máy tính
12.2.3 Gắn cable nối card NI motion controller vào khối connector
(ví dụ UMI 7764-)
Chú ý: Card PCI
motion controller của NI có
thể điều khiển từ 4 tới 8
trục (tương đương 8 động
cơ) do vậy bạn cần lưu ý
khi gắn cable. Thường nếu
dùng một tới bốn động cơ
thì gắn port motion 1-4.
Sau đó nối cable này tới
card UNI (Universal
Motion Interface).

Hình 12.4. Sơ đồ kết nối vào UMI


12.2.4 Gắn động cơ và encoder
Dựa vào tên các chân của UMI để lần lượt gắn dây điều khiển động
cơ từ card tới motor driver. Có motor driver dùng phương pháp analog
control, tức xung PWM sẽ được sinh ra từ driver khi driver đó được cung
cấp điện áp từ 0-5 volts. Do vậy, trong trường hợp này ta sẽ nối chân
DAC OUT và DAC GDN để gắn với hai dây nguồn động cơ.
Cần nối các dây của Encoder vào UMI theo ký hiệu. (Có thể dùng
hai dây A,B hoặc A,B,Z hoặc cả 6 dây từ encoder).

149
12.2.5 Kết quả kết nối phần cứng

Hình 12.5. Sơ đồ kết nối động cơ và encoder


Kiểm tra việc nhận card của máy tính bằng cách chọn chuột phải
lên My computer > Properties > Hardware > Device Manager, sẽ
thấy card như hình dưới.

Hình 12.6. Card đã được nhận vào máy tính

150
Sau khi cài đặt, nếu máy tính
không nhận ra card thì chọn vào
Control panel > Add and
hardware, chọn Next và làm theo
hướng dẫn.

Hình 12.7. Cập nhật card vào hệ điều hành

Hình 12.8. Chọn Recommended


Lặp lại bước trên
thì máy tính sẽ được card
theo hình với thông báo
Completing the Found
New Hardware Wizard
(tức việc cài đặt hoàn
thành).
Hình 12.9. Hoàn thành cài đặt
Đồng thời góc phải bên dưới màn hình của bạn hiện lên thông báo
Your new hardware is installed and ready to use (card đã được cài đặt
và sẵn sàng cho bạn sử dụng).
151
Hình 12.10. Windows báo đã hoàn tất việc cài đặt

12.3 THỬ PHẦN CỨNG VÀ PHẦN MỀM


Trước khi tiến hành lập trình, cần phải thử lại xem việc kết nối
phần cứng và phần mềm đã đúng chưa? Bằng cách:
- Khởi động MAX (vào Start program > National Instrument >
Measurement & Automation)

Hình 12.11. Khởi động MAX


- Sẽ thấy tên card hiện ra theo đường dẫn sau: My system >
Devices & Interface > PCI-7350(1).
Có hai trường hợp có thể xảy
ra: Card còn tốt nhưng chưa được
cập nhật firmware thì sẽ thấy dấu
chấm than này , nếu card
bị hỏng thì sẽ thấy dấu chéo nền tròn
đỏ này . Có thể
xem thêm tại Tab General để biết rõ
tình trạng của card còn tốt hay đã
hỏng.
Hình 12.12. Giao diện trong MAX
Bạn sẽ thấy dòng chữ Device is not responding or has been
removed from the system khi máy tính chưa nhận được card hoặc card bị
hỏng. Nếu Device status là Firmware out of date thì cần cập nhật
(update) firmware.

152
Nếu card đã được cập nhật firmware và hoạt động bình thường thì
sẽ thấy dòng chữ The controller is in a reset state hoặc working
property.

Hình 12.13. Cập nhật thông tin


Và tại Tab status sẽ là Ready to receive.

Hình 12.14. Báo hiệu đã kiểm duyệt thành công


- Nếu thấy dấu nhân trắng trong vòng tròn nền đỏ
(hoặc dấu chấm than ) thì kiểm tra lại xem máy tính đã
chắc chắn nhận được card trong My computer > Properties.

153
Hình 12.15. Dấu chấm than
- Nếu vẫn còn dấu này
chứng tỏ card cần phải initialize
(khởi tạo) trước khi dùng. Để khởi
tạo, chọn Initialize. Sau khi khởi
tạo hoàn thành, dấu nhân báo lỗi
tại PCI-7350 sẽ mất như hình bên
Hình 12.16 Hết dấu chấm than
dưới.
- Khi initialize, nếu có thông báo cần phải cập nhật Firmware, thì
chọn Yes. Cập nhật xong, chọn Initilaize lại và thực hiện tiếp bước 12.4.

Hình 12.17. Cập nhật firmware


Sau khi cập nhật firmware bạn sẽ nhận được thông báo Firmware
was downloaded successfully.

154
Hình 12.18. Download firmware thành công
Việc cập nhật firmware cũng có thể thực hiện bằng cách vào Tab
firmware và chọn Update firmware (nếu chữ update firmware mờ đi thì
tức là không cần phải update firmware nữa).

Hình 12.19. Đổi ID


- Trường hợp card báo lỗi không cho cập nhật thì vào tab Status.

Hình 12.20. Kiểm tra status


Chọn Test resourse, Nếu thông báo Resource test failed thì chọn Reset
device và làm lại. Sau đó làm lại các bước vừa nêu trong bước 12.3 này.

Hình 12.21. Test báo lỗi


Trước khi tới bước 12.4, bạn cần kiểm tra lại chắc chắn rằng kết
quả Test resources phải là: The device passed the resource test
successfully mới đạt yêu cầu.

Hình 12.22. Test thành công


155
- Nếu vẫn có lỗi bạn cần
remove card từ My Computer
> Properties.
Hình 12.23. Gỡ phần mềm

Và remove trong MAX bằng cách nhấn chuột phải lên PCI-7350,
chọn Remove Device.

Hình 12.24. Gỡ thiết bị


Sau đó vào Control panel thực hiện lại việc add new hardware.

12.4 THIẾT LẬP CÁC THÔNG SỐ TRONG MAX


Tại Default 7350 setting, chọn Open Loop Stepper

Hình 12.25. Thẻ Default


Axis1 > Axis configuration: Chọn stepper motor, và enabled
Encoder, type of feedback là Encoder. Sau đó save to all axes (nếu có
nhiều động cơ). Sau đó chọn Initialize lần nữa để chuyển qua bước 12.5.

156
12.5. THỬ ĐỘNG CƠ VÀ CHƢƠNG TRÌNH ĐIỀU KHIỂN ĐỘNG
CƠ MỘT CHIỀU DC BẰNG ANALOG OUTPUT
Dùng chương trình xuất DAC trong thư viện của Motion. Thư viện
này nằm trong Block diagram.

Hình 12.26. Thư viện lập trình chuyển động


Viết chương trình đơn giản
như sau. (Tải chương trình này
tại).
Hình 12.27. Chương trình hoàn
thiện xuất DAC

Bạn sẽ thấy động cơ quay khi nhập giá trị vào “Nhap gia tri DAC”,
(ví dụ nhập 5000). Đồng thời bạn sẽ đọc được tín hiệu encoder. (xem
hình front panel bên dưới, dấu trừ nói lên chiều quay của động cơ).

157
Hình 12.28. FP của chương trình
Tóm tắt các bƣớc cài đặt và xử lý lỗi cho card PCI-73xx

Hình 12.29. Lưu đồ xử lý lỗi


158
12.6 ĐIỀU KHIỂN CHUYỂN ĐỘNG
12.6.1 Điều khiển chuyển động là gì?
Điều khiển chuyển động là việc sử dụng phần mềm (ví dụ ngôn
ngữ lập trình G trong LabVIEW) để điều khiển phần cứng (ví dụ: động
cơ) theo một chiến lược (strategy) nào đó. Chiến lược đó thường gồm các
yêu cầu về tọa độ (vị trí) của trục động cơ (hoặc vật gắn lên trục động
cơ), thời gian tăng tốc, giảm tốc và vận tốc chuyển động, vv. Ứng dụng
của điều khiển chuyển động thường gặp là máy cắt điều khiển bằng máy
tính CNC, hoặc tay robot hàn di chuyển theo đường hàn giữa hai tấm kim
loại, robot di động đi theo một sơ đồ đường đi được định trước. vv.
12.6.2 Công cụ trong điều khiển chuyển động
Có thể sử dụng các phần mềm sau:
- Motion assistant, cho phép tạo ứng dụng điều khiển chuyển động
rất nhanh. Người thiết kế chỉ cần vẽ các quỹ đạo (đường di chuyển)
mà hệ thống cần đi theo. Sau đó công cụ này tự động xuất ra mã
chương trình (code) dưới dạng ngôn ngữ C/C++, Visual Basic hoặc
LabVIEW.
- Visual C/C++, cho phép viết code dùng ngôn ngữ C để điều khiển
card PCI 73xx.
- Visual Basic, cho phép viết code trong Visual Basic C để điều
khiển card PCI 73xx.
- LabVIEW, là ngôn ngữ đồ họa, dễ sử dụng, và là ngôn ngữ tốt nhất
khi dùng card NI PCI 73xx nói riêng cũng như các phần cứng do
công ty NI sản xuất và cung cấp. Trong tài liệu này LabVIEW
được sử dụng để tạo các ứng dụng.
12.6.3 Sử dụng LabVIEW trong điều khiển chuyển động
Tổng quan về điều khiển chuyển động
Điều khiển động cơ thường theo hai sơ đồ dưới đây. Tức thiết lập
yêu cầu quỹ đạo và chiến lược chuyển động (Trajectory), sau đó đọc tín
hiệu phản hồi (Encoder), qua bộ điều khiển (PID) tới bộ chuyển đổi DAC
để xuất ra điện áp hoặc bộ PWM generator để phát xung rồi cấp xung
hoặc điện áp đó tới bộ khuyếch đại (motor driver) và tới động cơ. Sơ đồ
điều khiển động cơ Servo hoặc động cơ DC cho trong hình sau:

159
Hình 12.30. Điều khiển servo motor
Với động cơ bước thì việc điều khiển cũng tương tự. Khác là thay
vì xung PWM hoặc analog output chuyển thành xung bước. (Stepper
pulse). Sơ đồ điều khiển động cơ bước cho trong hình dưới:

Hình 12.31. Điều khiển Stepper motor


Đọc Encoder
Tại sao cần encoder?
Encoder dùng để đo/xác định vị trí, hoặc từ vị trí đo được tính ra
vận tốc hoặc gia tốc của chuyển động quay như trục quay động cơ. Vận
tốc xe, vận tốc xoay của khớp trong robot, vv.
Cách thức đọc tín hiệu encoder
Để lọc đọc
encoder, ta sử dụng
hàm Read Encoder
Position (Card PCI
Motion control)
hoặc counter (card
DAQ). Ở đây giải
thích hàm Read Hình 12.32. Hàm đọc Encoder
Encoder.
Board ID: là một số duy nhất được gắn vào cho card thông qua
phần mềm MAX.

160
Axis or Encoder: là trục hoặc encoder cần đọc.
Retn Vect: đích trả về của tín hiệu bởi hàm đọc encoder. Ví dụ về
host (0xFF), tới biến (0x01 tới 0x78), tới biến gián tiếp (0x81 tới 0xF8),
không trả về thì điền (0.
Error in (no error): để thông báo các lỗi nếu có.
Encoder Position: giá trị đọc được (đơn vị là quadrature counts).
Bd ID Out: dùng cho việc tái sử dụng ID.
Resource Output: dùng cho việc tái sử dụng Axis, Encoder, vv.
Error out: dùng tái sử dụng từ các error out trước đó.
Lọc nhiễu tín hiệu encoder
Để lọc nhiễu, ta sử dụng hàm Configure Encoder Filter.

Hình 12.33. Xác lập Encoder


Xem bảng giá trị tần số
và tần số đếm cao nhất bên
dưới.
Hình 12.34. Tần số và tần số
đếm cao nhất

Ví dụ mẫu đọc Encoder (block digram, front panel)

161
Hình 12.35. Chương trình đọc Encoder
Lƣu ý
Cần chú ý khi quy đổi và scale các giá trị của encoder, đặc biệt khi
sử dụng động cơ có hộp số (gear).
12.6.4 Xuất tín hiệu điện áp (Analog output)
Tại sao cần tín hiệu điện áp?
Vì một số bộ khuyếch đại động cơ có thể điều khiển bởi tín hiệu
Analog, hoặc khi cần một nguồn Analog trong điều khiển tự động,
robotics, thí nghiệm. Ta sẽ phải xuất ra tín hiệu này.
Cách thức xuất tín hiệu điện áp
Để xuất điện áp, ta sử dụng hàm Load DAC.

Hình 12.36. Hàm xuất tín hiệu DAC


Để phát được tín hiệu điện áp tại DAC OUTPUT cần:
- Trong MAX, tab Axis xuất điện áp phải chọn (set) là stepper hoặc
disable.
- Chọn stepper open loop trong Max.
DAC Value có giá trị từ -32,768 to +32,767 tương đương xuất ra
±10 V (Đối với PCI 7356, các card khác cần xem datasheet của card.

162
Chú ý: Không sử dụng DAC torque limits và offsets khi xuất trực
tiếp điện áp (Load DAC)
Board ID xem phần encoder.
DAC: Là DAC cần sử dụng để xuất điện áp.
Ví dụ mẫu (block digram, front panel) cho trong hình sau:

Hình 12.37. Hoàn thành


Ví dụ trên gồm hai phần, đọc encoder và xuất analog output.
Chú ý
Chỉ dùng hàm này khi gửi tín hiệu điện áp tới các kênh unmapped
DAC. Tức chỉ khi các DAC này không được sử dụng cho Servo motor
control thì nó mới được sử dụng như một kênh Analog output đa mục đích.
Điều chế (xuất) xung PWM
Tại sao cần PWM?
Điều chế xung thường gặp khi cần điều khiển động cơ DC, động cơ
không chổi than hoặc các thí nghiệm liên quan tới nguồn xung ở đầu vào.
Cách thức điều chế xung
Để xuất PWM, ta sử dụng hàm
Load PWM Cycle.
Hình 12.38. Điều chế xung

Duty Cycle có giá trị từ 0 tới 255.


PWM Output là chọn nguồn xuất PWM (1 hoặc 2, vv.).
163
12.7 MỘT SỐ LỔI THƢỜNG GẶP VỚI CARD PCI 7356
Firmware download error xuất hiện khi cập nhật firmware. Bạn
cần reset lại card từ tab Status sau đó update firmware lại.

Hình 12.39. Lỗi firmware


Thông báo lỗi khi Initialize card.

Hình 12.40. Lỗi khi Initialize


Card báo lỗi không cập nhật firmware và fail tại test resourse.
Trong trường hợp này cần tháo card ra một vài tiếng. Sau đó thực hiện lại
từ đầu sơ đồ tóm tắt các bước thực hiện lập trình card PCI 7356 trong tài
liệu đã trình bày.
Trƣờng hợp lỗi
xảy ra khi có hai card
PCI-73xx gắn vào, cần
lưu ý ta có thể tìm được
PCI Slot 1 hoặc 2 bằng
cách chọn properties
vào Device manager.
Hình 12.41. Xem đặc
tính

164
Không xuất được điện áp bằng Load DAC dù việc Initialize đã
hoàn thành và đã đọc được encoder.
Khi đó bạn cần Calibrate
lại card bằng cách chọn chuột phải
lên Board calibration, chọn Self-
Calibrate.
Hình 12.42. Calibrate

Và chắc chắn Current setting phải là Open Loop Stepper như


sau.

Hình 12.43. Chọn Open Loop Stepper


Đồng thời lưu ý, muốn
xuất điện áp khoảng 5Volt
thì phải nhập vào số 15000
(tùy vào số bit của bộ DAC,
xem thêm tại help của Load
DAC) chứ không phải nhập
số 5. Hình 12.44. FP của chương trình
Test resources và Update firmware
Đối với card còn tốt, Khi chưa update firmware (có dấu chấm than
) thì test resource vẫn phải thành công (The device passed
the resource test successfully!). Đối với card có hư hỏng thì việc test resource
sẽ fail.
Đọc Velocity sử dụng hàm Read Velocity của LabVIEW thì cần
phải chọn lại setting là Servo: External Communication và Enable
feedback. Cần chọn Open stepper motor trước để xuất Analog output,
sau chạy tốt chương trình xuất DAC thì mới vào Servo, chọn External
Communication để đọc encoder.

165
Hình 12.45. Chọn Servo mode
Tới đây, bạn đã có thể triển khai lập xây dựng bộ điều khiển
chuyển động với card PCI. Nếu có khó khăn hay lỗi không khắc phục
được, bạn có thể gửi một email tới tác giả qua bahai@hcmute.edu.vn để
được trợ giúp. Chúc bạn thành công.
Bạn có biết?
Card PCI 7356 có thể hỗ trợ điều khiển cùng lúc 6 động cơ. Độ
phân giải của Encoder counter là 32bit. Card này có thể mua được
từ công ty TNHH Linh Phú, Công ty Tân Minh Giang, Công ty
DBM, Công ty INO hoặc Công ty National Instrument Vietnam.

12.7 BÀI TẬP


Câu 1: Thực hành đo Encoder với card PCI 7356
Câu 2: Thực hành điều khiển PID với card PCI 7356

TÀI LIỆU THAM KHẢO


Các tài liệu này nói về ứng dụng của LabVIEW sử dụng Card NI PCI-
7356.
[1] http://hocdelam.org.
[2] Nguyễn Bá Hải, Giáo trình Lập trình LabVIEW, 2008, Hocdelam
Group.
[3] http://ni.com.
[4] Ba Hai Nguyen, Jee-Hwan Ryu, “Semi-Experimental Results on a
Measured Current Based Method for Reproducing Realistic Steering
166
Feel ofSteer-By-Wire Systems,” 15th Asia Pacific Automotive
Engineering Conference in Hanoi-Vietnam, 26-28 October 2009
(APAC15), Hanoi, Vietnam, 2009. Download PDF
[5] Ba Hai Nguyen, Jee-Hwan Ryu, Van-Dung Do, “Velocity Estimation
For Haptic Applications,” The 2009 International Forum on Strategic
Technologies (IFOST2009), Hochiminh, Vietnam, 2009. Download
PDF
[6] Ba Hai Nguyen, Hai-Bac Ngo, Jee-Hwan Ryu, “Novel Robust
Control Algorithm of DC Motors,” The 6th International Conference
on Ubiquitous Robots and Ambient Intelligence (URAI 2009), Seoul,
Korea, 2009. Download PDF
[7] Van-Dung Do, Thanh-Thuong Tran, Ba-Hai Nguyen, “Simulation
and Experimental Results on Study of Automotive Airflow Meter
Swappability,” 15th Asia Pacific Automotive Engineering
Conference in Hanoi-Vietnam, 26-28 October 2009 (APAC15),
Hanoi, Vietnam, 2009. Download PDF
[8] Ba Hai Nguyen, Jee-Hwan Ryu, “Direct Current Measurement Based
Steer-By-Wire Systems for Realistic Driving Feeling,” Proceedings
of the IEEE International Symposium on Industrial Electronics 2009,
Seoul, Korea. Download PDF
[9] NI-Motion Help, cách chọn động cơ, thiết kế các chuyển động cơ bản
như một động cơ hoặc chuyển động kết hợp nhiều động cơ (trục), thu
thập hình ảnh phụ vụ ứng dụng chuyển động, khái niệm về
contouring and breakpoints.
[10] NI-Motion Readme, các yêu cầu về máy tính để sử dụng card NI
PCI 73xx, các tính năng mới, các lỗi mới cập nhật, các lưu ý đáng
chú ý về card.
[11] NI-Motion Function Help, Dùng để tham khảo (reference) cho ngôn
ngữ C and Visual Basic. Gồm tên hàm, mô tả hàm, các thông số dùng
trong hàm, và lỗi của hàm.
[12] NI-Motion VI Help Tham khảo về các hàm LabVIEW VI dùng
trong điều khiển chuyển động.
[13] Measurement & Automation Explorer Help for Motion, cách thức
thiết lập (configure) card NI 73xx, một số khái niệm về phân tích
biểu đồ Bode, thông số vòng lặp của hệ thống.
[14] NI 73xx user manual, tài liệu mô tả về phần cứng và ứng dụng của
card NI 73xx.

167
168
Bài 13
GIAO TIẾP RS232 TRONG LABVIEW

Học xong bài này, bạn sẽ nắm được:


- Chuẩn giao tiếp RS232
- Thực hành giao tiếp RS232

Bạn có biết?
Hiện tại các thiết bị công nghiệp thường sử dụng các chuẩn TCP/IP,
RS232, RS485, … Trong ô tô, các chuẩn được ưa dùng là CAN,
FlexRAY, vv. Hãy xem thêm bài viết sau để tham khảo các chuẩn:
http://www.interfacebus.com/Design_Connector_Automotive.html,
http://zone.ni.com/devzone/cda/tut/p/id/3352

13.1 GIAO TIẾP NỐI TIẾP RS232


Tài liệu LabVIEW này trình bày phương pháp và cung cấp ví dụ về
giao tiếp cổng COM máy tính theo chuẩn RS232 bằng LabVIEW. Giao
tiếp máy tính là việc thực thi quá trình truyền và nhận tín hiệu từ một hay
nhiều thiết bị nào đó với máy tính hoặc giữa nhiều máy tính với nhau.
Giao tiếp máy tính có nhiều ứng dụng trong khoa học kỹ thuật bao gồm
đo lường, giám sát, điều khiển tự động, lưu chuyển dữ liệu trong các nhà
máy, xí nghiệp cho tới việc thực hiện các thí nghiệm ở các phòng nghiên
cứu.
Sự khác nhau cơ bản và tương đối giữa LabVIEW và các ngôn ngữ
khác trong việc thực thi giao tiếp chuẩn RS232:
Tại sao lại phải quy định chuẩn? Để các thiết bị (máy in, máy tính,
vi điều khiển, robot) gọi chung là thiết bị thu/phát có thể làm việc có hiệu
quả và không gặp rắc rối khi làm việc phối hợp, từ lâu người ta đã đặt ra
các tiêu chuẩn (ví dụ như tiêu chuẩn tốc độ truyền, cách kiểm soát lỗi
trong quá trình truyền, mức điện áp khi truyền) cho các cổng vào/ra tín
hiệu của các thiết bị. RS-232 là một trong các chuẩn đó. Chuẩn này ra
đời năm 1962. (Bởi EIA)

169
Hình 13.1. Vị trí, hình dạng cổng COM trên máy tính
Đặc điểm chuẩn RS232 là chuẩn RS232 được nối ra một giắc cắm
(gọi là cổng COM). Khi sử dụng có thể sử dụng 2 hay toàn bộ chân (pin)
của cổng này (có nhiều loại cổng COM phục vụ các chức năng khác nhau
gồm loại 4, 9, 15, 37 chân). Nếu mục đích chỉ truyền hoặc nhận tín hiệu
giữa hai thiết bị thì ta chỉ cần sử dụng 2 dây (một dây truyền hoặc nhận)
và một dây nối đất (GND - ground, hay mass).
RS 232 sử dụng phương thức truyền thông không đối xứng, tức là
sử dụng tín hiệu điện áp chênh lệch giữa một dây dẫn và đất. Các cổng
của RS - 232 có ngưỡng điện áp qui ước là -15V (volt) tới -3V , và 3V
tới 15V (hoặc -5V, +5V, sự khác biệt giữa hai giá trị 3, và 5V này được
gọi là noise magin - biên độ dao động của nhiễu).
Tín hiệu có áp lớn +3V được coi có logic 0 hoặc có giá trị cao (H)
Tín hiệu có áp nhỏ hơn —3V được coi có logic 1 hoặc giá trị thấp (L).
Điện áp từ -3V tới +3V không có ý nghĩa.
Chính vì từ - 3V tới 3V là phạm vi không được định nghĩa, trong
trường hợp thay đổi giá trị logic từ thấp lên cao hoặc từ cao xuống thấp,
một tín hiệu phải vượt qua quãng quá độ trong một thơì gian ngắn hợp lý.
Điều này dẫn đến việc phải hạn chế về điện dung của các thiết bị tham
gia và của cả đường truyền. Tốc độ truyền dẫn tối đa phụ thuộc vào chiều
dài của dây dẫn. Đa số các hệ thống hiện nay chỉ hỗ trợ với tốc độ 19,2
kBd (chiều dài cho phép 30 — 50 m).

170
13.2 THỰC HÀNH GIAO TIẾP RS232 VỚI LABVIEW
Phần mềm: Phiên bản LabVIEW phiên bản 8.5 hoặc các phiên bản
khác của LabVIEW đều được.
Sơ đồ ghép nối
Nếu bạn đã có kinh nghiệm sử dụng các vi điều khiển ví dụ AVR,
PIC, 89c51,…thì bạn có thể kết nối theo sơ đồ sau.

Hình 13.2. Cách kết nối máy tính qua linh kiện điện tử MAX tới vi điều
khiển
Trường hợp bạn không nắm rõ về vi điều khiển, chúng tôi khuyến
cáo bạn tự mua một mạch test vi điều khiển. Điều này giúp bạn vẫn học
tốt được điều khiển tự động và giao tiếp máy tính. Và quan trọng hơn là
bạn có thể tập trung tòan bộ thời gian, sức lực cho việc thiết kế bộ điều
khiển hơn là tốn quá nhiều thời gian để thực thi những mạch điện một
cách không chuyên.

Ví dụ về giao tiếp RS232


Xem chi tiết trên hình 4,5. Ví dụ này tối ưu và đơn giản hơn cả các
ví dụ mà NI cung cấp. Bạn có thể tải ví dụ này tại
http://labview.hocdelam.org.

171
Hình 13.3. Giao diện chính của chương trình

172
Hình 13.4. Block diagram của chương trình
Ở trên là một chương trình đã hoàn thiện, bây giờ chúng ta sẽ cùng
nhau tìm hiểu chi tiết các SubVI SPKT COM WRITE và SPKT COM
READ bằng cách mở một ví dụ có sẵn của LabVIEW.
Trong chương trình này, khối VISA serial dùng set các thông số
của chuẩn giao tiếp, khối SPKT COM Read và SPKT COM Write đã
được Hocdelam tối ưu và tạo ra nhằm đơn giản người sử dụng có thể dễ
dàng thực hiện việc giao tiếp máy tính. Bạn cũng có thể test thử chương
trình này bằng cách nối tắt chân truyền và nhận (số 3 và 4) của cổng
COM với nhau.
Xét một ví dụ khác sẵn có trong LabVIEW trong hình 13.5. Ví
dụ này khá đơn giản, bạn có thể xem tại CD> Bai 13> Vi du giao tiep
RS232.vi

Hình 13.5. Ví dụ giao tiếp RS232

173
Trong hình 13.5 ta thấy, có một hàm xác lập tác thông số truyền
nhận. Thông số này xem tại hình 13.6. Chương trình trên sẽ đọc lên
chính xác những thông tin ghi xuống.

Hình 13.6. Các xác lập các thông số truyền nhận


Hàm ghi là Serial Write sẽ ghi xuống những gì nhập vào ô Ghi (string
to write). Và hàm Serial Read sẽ đọc các thông tin này lên ô Read String.
Qua ví dụ này, chúng ta biết, nếu cần truyền các số (numeric
control) ta cần phải chuyển chúng thành String. Để truyền nhiều số
xuống cùng lúc, ta cần phải sử dụng các công cụ của String convertion
(Chuyển đổi string), hoặc cộng các chuỗi, vv. Chi tiết xem tại thư viện:
BD> String>

Hình 13.7. Thư viện String


Thảo luận (Sự khác nhau giữa LabVIEW và các ngôn ngữ
khác trong việc thực thi giao tiếp chuẩn RS232)
174
Ta thấy, trên hình 13.5, để thực hiện việc giao tiếp theo chuẩn
RS232 thì việc cơ bản và quan trọng nhất là “thiết lập (set) các giá trị cho
chuẩn đã đặt ra” như là một công thức cho trước được quy định theo tiêu
chuẩn RS232. Khi set đúng thì chương trình mới có thể chạy được.
LabVIEW là một ngôn ngữ đặc biệt, khi sử dụng LabVIEW, học
viên không cần phải nhớ cấu trúc C hoặc VB dài dòng, trừu tượng nữa.
LabVIEW mạnh mẽ và linh động hơn so với Matlab bởi tính đa
dạng trong hỗ trợ của LabVIEW với của sản phẩm phần cứng đặc biệt là
các thư viện có sẵn tạo điều kiện thuận lợi trong thí nghiệm và nghiên
cứu ví dụ: bộ lọc, bộ điều khiển PID, các tiêu chuẩn đánh giá độ ổn định
hệ thống trong điều khiển tự động, vv.

Hình 13.8. Sơ đồ kết nối vi điều khiển PIC để giao tiếp RS232
Xem video giao tiếp RS232 tại:
http://www.youtube.com/user/hocdelamgroup

175
13.3 BÀI TẬP
Câu 1: Thực hành giao tiếp máy tính qua chuẩn RS232
Câu 2: Giải thích ý nghĩa các thông số xác lập khi truyền dữ liệu
theo chuẩn RS232

THAM KHẢO
[1] Không rõ tác giả, Interface Between Data Terminal Equipment and
Data Circuit-Termination Equipment Employing Serial Binary Data
Interchange
[2] http://www.arcelect.com/rs232.htm
[3] Nguyễn Bá Hải, Giao tiếp máy tính chuẩn RS232 với LabVIEW,
Hocdelam Group, 2008.
[4] Ngô Hải Bắc, Giao tiếp RS232 sử dụng Matlab, Visual C,
[5] Ví dụ mẫu tải tại http://labview.hocdelam.org

176
Bài 14
GIAO TIẾP TCP/IP

Học xong bài này, bạn sẽ nắm được:


- Khái niê ̣m giao tiế p TCP/IP
- Thực hành giao tiế p TCP/IP

14.1 KHÁI NIỆM GIAO TIẾP TCP/IP


TCP/IP là một giao thức (cách thức) để gửi và nhận dữ liệu đáng
tin cậy qua mạng. Chức năng TCP/IP được xây dựng trong LabVIEW và
cung cấp cho các kỹ sư công cụ đo đạc, kiểm soát và truyền thông tin
trên mạng đáng tin cậy. Bài này hướng dẫn sử dụng các hàm TCP/IP
trong LabVIEW. Trong bài này, tác giả chọn dịch một số tài liệu hướng
dẫn khá ngắn gọn có sẵn trên mạng Internet và cung cấp ví dụ mẫu có
sẵn trong ví dụ mẫu của LabVIEW.
TCP/IP cung cấp cho bạn một giải pháp đo lường và thu thập dữ
liệu tại các địa điểm cách xa nơi bạn đang làm việc.
o Bạn có thể lấy số đo chất lượng nước trong một con sông cách nơi
bạn ngồi nhiều Km rồi truyền tải dữ liệu qua một mạng không dây
hoặc mạng LAN, hoặc mang WAN đến một điểm trung tâm để
phân tích các số liệu đó. Trong nhiều trường hợp khối lượng dữ
liệu có thể vượt quá những gì một đĩa mềm có thể lưu trữ thì việc
truyền dữ liệu về trung tâm dữ liệu cũng giúp giải quyết vấn đề
kích thước bộ lưu dữ liệu của hệ thống.
o TCP/IP sẽ giúp bạn dễ dàng thực hiện các công việc như: Trong
một cơ sở sản xuất, bạn có thể muốn giám sát các thiết bị từ xa
hoặc điều khiển một số thiết bị như hệ thống đèn, đóng cửa văn
phòng, điều khiển hệ thống quạt thông gió từ vị trí trung tâm hoặc
tác động đến một dây chuyền sản xuất từ xa.
TCP/IP là một giao thức Internet (IP). Phần TCP sẽ kiểm soát
truyền dẫn. Khi bạn gửi một cái gì đó trên mạng việc đầu tiên là cần chia
nhỏ dữ liệu đó thành các gói, và mỗi gói có thể mất một con đường khác
nhau để được truyền từ máy này sang máy khác trên mạng.
Những gói có thể đến vào những thời điểm khác nhau và được liên
kết lại sau khi truyền sang tới máy đích. Thi thoảng, một số gói sẽ bị thất
lạc trên đường truyền.
177
Nhưng thật may mắn là TCP luôn có phương thức kiểm tra để các
gói tin đến đủ và được lắp ghép lại chính xác. Đây chính là ưu điểm của
phương pháp truyền TCP/IP so với phương pháp truyền UDP (một
phương pháp truyền tín hiệu tương tự TCP/IP). Nếu bạn muốn sử dụng
giao thức TCP / IP bạn cần phải làm như sau trong LabVIEW.
Thiết lập một bộ nghe TCP/IP bằng việc sử dụng hàm Listen. Bạn
vào BD>Programming>Instrument IO> . Đây là biểu tượng cho nghe

TCP / IP.
o Các TCP/IP Listen lắng nghe trên mạng để biết một máy tính khác
đang cố gắng kết nối qua cổng (port) quy định tại các đầu vào của
hàm TCP/IP Listen (dạng số nguyên) Đó là số cổng (phải là số
không được sử dụng bởi các phần khác của hệ thống), và chúng ta
sẽ sử dụng cổng (port) 2055.
o Khi TCP/IP Listen nghe thấy một máy tính khác đang cố gắng kết
nối qua cổng, nó thiết lập một ID kết nối, và những kết quả đầu ra
ID này sau đó được sử dụng trong các hàm khác như hàm đọc, ghi
dữ liệu theo giao thức TCP/IP.
o Bạn không thể sử dụng một TCP/IP Listen có trùng với số cổng
khi kết nối đã được thiết lập.
Sau khi kết nối được thành lập và các ID kết nối có sẵn, bạn có thể
gửi và nhận dữ liệu qua mạng, và kết nối là một kết nối tin cậy giữa hai
máy tính liên quan. Bạn sử dụng một trong các hàm (vi) sau đây.
o TCP/IP Write – để ghi dữ liệu vào máy tính khác qua mạng có

biểu tượng là .
o Các TCP/IP Write sử dụng các ID kết nối, các ID này cũng đi đến
hàm tiếp theo, và tín hiệu báo lỗi mà nó cũng đi đến các hàm tiếp
theo.
o Đầu vào của hàm Write trên là một chuỗi, vì vậy bạn sẽ phải
chuyển đổi dữ liệu dạng số của của bạn sang một định dạng chuỗi.
o Các yếu tố đầu vào và đầu ra khác có thể được bỏ qua, nhưng bạn
có thể đặt một thời gian chờ, và bạn có thể nhận được thông tin về
số byte bằng dạng text qua mạng khi dùng hàm này.
o TCP/IP Read – để đọc byte từ máy tính từ xa. Đây là biểu tượng

của TCP/IP Read .


178
o TCP/IP Read có các đầu vào thông thường, các ID kết nối và các
tín hiệu lỗi.
o Các đầu vào số nguyên (dòng màu xanh bên trái) là số byte mà bạn
muốn đọc.
o Đầu ra là chuỗi gồm các byte được đọc.

14.2 VÍ DỤ LẬP TRÌNH TCP/IP VỚI LABVIEW


Ví dụ 1: Truyền tín hiệu qua chuẩn TCP/IP
Khi sử dụng giao thức TCP/IP hãy xem sơ đồ của một VI con đã
được tạo ra để gửi một chuỗi tín hiệu từ máy tính trong phòng làm việc
đến một máy tính từ xa.

Hình 15.1. Code mẫu


Lưu ý các bước sau đây cần thiết để gửi một chuỗi duy nhất.
o Giả sử bạn có một chuỗi đầu vào và kết nối mở, bạn phải lần đầu
tiên tính toán độ dài của chuỗi.
o Chiều dài của chuỗi là một số, và số đó phải được chuyển đổi thành
một chuỗi.
o Chuỗi được truyền đi bằng hàm TCP/IP Write.
o Cuối cùng kết nối sẽ được đóng lại.
Ví dụ 2: Đọc tín hiệu qua chuẩn TCP/IP
Đây là sơ đồ của một VI phụ để nhận được một chuỗi gửi từ một
máy tính từ xa vào máy tính đặt trong phòng làm việc của bạn.

Hình 15.2. Code mẫu


179
Lưu ý các bước sau đây cần thiết để nhận được một chuỗi duy nhất.
o Giả sử bạn có một kết nối mở, bạn cho rằng chiều dài của chuỗi
đầu tiên nhận được sẽ được. Chuỗi đầu tiên bạn nhận được có dữ
liệu cho độ dài chuỗi của chuỗi mà bạn muốn. Ví dụ, các chuỗi có
thể là 17 byte dài, và bạn cần phải biết giá trị 17 này. Bạn sử dụng
một giao thức TCP/IP Read để có được độ dài chuỗi này.
o Giá trị nhận được có định dạng là một chuỗi, và con số đó phải
được chuyển đổi sang số, và con số đó là được sử dụng trong đọc
các hàm TCP/IP Read thứ 2 hai.
o Nếu bạn muốn thực hiện các phép tính số học trên dữ liệu bạn nhận
được bạn sẽ cần phải chuyển đổi dữ liệu đó sang một số.
o Cuối cùng, bạn dùng hàm TCP/IP Close để đóng kết nối.

Xem ví dụ CD > Bai 14 > Hocdelam TCP-IP Write.vi và


Hocdelam TCP-IP Read.vi để có chương trình mẫu.
Bạn có biết?
Với chuẩn TCP/IP, bạn có thể xây dựng các chương trình điều
khiển qua mạng thật dễ dàng. Ngoài ra bạn có thể điều khiển thiết bị qua
Iphone. Xem demo sau:

14.3 BÀI TẬP


Câu 1: Thực hành lập trình TCP/IP
Câu 2: Hãy viết chương trình điều khiển động cơ DC theo thuật
toán PID qua mạng Internet.

THAM KHẢO
[1] LabVIEW help 8.5

180
Bài 15
CÁC CHUYÊN ĐỀ MỞ RỘNG

Học xong bài này, bạn sẽ nắm được:


- Khái niệm và sử dụng 3D trong LabVIEW
- Thực hành lập trình vi xử lý ARM đơn giản
- Xử lý ảnh cơ bản với LabVIEW
Do thời gian có hạn, tập sách này được xuất bản với mục đích giúp
bạn bắt đầu làm quen và thực hiện một số ứng dụng với LabVIEW. Ở lần
tái bản sau, chúng tôi sẽ lần lượt hướng dẫn người dùng toàn bộ các thư
viện, hàm và công cụ có trong LabVIEW. Tuy nhiên, để bạn có cái nhìn
khái quát về các ứng dụng này, cuốn sách này sẽ tóm tắt những nội dung
đó thành các chuyên đề mở rộng dưới đây.

15.1 ĐIỀU KHIỂN HÌNH ẢNH (2D VÀ 3D) TRONG LABVIEW


Bên cạnh các ứng dụng đã trình bày trong các bài trước, LabVIEW
còn hỗ trợ người dùng mô phỏng 3D với nhiều lựa chọn như mô phỏng
với 3D Picture Control Module, mô phỏng với Solidworks, vv… Như
trong hình, ta thấy việc mô phỏng 3D trong LabVIEW cho phép người sử
dụng xây dựng một mô hình thực tế dựa trên mô phỏng vật lý (có mô
hình động lực học) với cảnh quan tuyệt đẹp hình 3D tùy chỉnh. Ưu điểm
của sử dụng mô phỏng 3D là:
- Để tạo các mô hình sản phẩm mẫu (prototype) nhanh chóng từ
những ý tưởng trước khi sản xuất hàng loạt.
- Dễ dàng chọn lựa, thay đổi kết cấu thiết kế robot hay hệ thống
trước khi quyết định sản xuất.
- Để nhanh chóng kiểm tra hành vi của robot và các ứng dụng mới
mà không cần tới bất kỳ phần cứng nào ngoài phần mềm
LabVIEW.
- Để dễ dàng tạo ra môi trường mới cho robot để di chuyển.
- Để đơn giản hóa hành vi của robot và các ứng dụng sửa lỗi
- Để phát triển và chứng minh tính khả thi của robot đang thiết kế
cho nhà đầu tư với chi phí gần như bằng không (0).

181
Hình 15.1. Ví dụ mẫu về điều khiển robot ảo 3D với LabVIEW
qua tay game
Để thực hiện phần này bạn cần cài đặt LabVIEW, Robotic module,
hoặc bạn cũng có thể tự thiết kế mô hình robot 3D bằng các phần mềm
và công cụ 3D khác như Solidworks, Maya, OpenGL, vv…Tập sách tái
bản lần tới sẽ đề cập chi tiết phần này.
Một công cụ lập trình 3D khác ngay trong bản dùng thử của
LabVIEW là 3D Picture control cũng giúp bạn dễ dàng thực hiện các ứng
dụng 3D cơ bản được trình bày như sau:
15.1.1 Tổng quan về kỹ thuật mô phỏng
Mô phỏng là gì? – Mô phỏng là tái hiện giống thật động học, động
lực học của một vật, một hệ thống, một hay nhiều robot…
Tại sao cần mô phỏng? Mô phỏng (2D, 3D) là tái hiện giống thật
động học, động lực học của một vật, một robot, một hệ thống. Kỹ thuật
mô phỏng từ lâu đã đóng vai trò hết sức quan trọng trong giáo dục đào
tạo và công nghiệp. Trong giáo dục việc mô phỏng những mô hình sẽ
giúp cho người học tiếp cận vấn đề nhanh hơn. Việc mô phỏng những mô
hình thực tế sẽ giúp giảm chi phí đầu tư trang thiết bị mà vẫn đảm bảo
chất lượng đào tạo.
Trong công nghiệp việc mô phỏng sẽ giúp ta phát hiện sai số,
nhanh chóng điều chỉnh trước khi đi vào sản xuất. Nhờ vào việc đó mà
chúng ta có thể tiết kiệm thời gian và chi phí gia công, sản xuất. Ngoài
ra, việc mô phỏng cũng giúp chúng ta giới thiệu ý tưởng tới các đối tác
một cách nhanh chóng, tiện lợi mà không cần có một sản phẩm thực.
182
Mô phỏng 3D sử dụng phần mềm LabVIEW là một giải pháp hiệu
quả giúp cho các giáo viên, giảng viên, các kĩ sư và các nhà nghiên cứu
khoa học nói chung có thể thực hiện được ý tưởng của mình một cách
nhanh chóng. Các phần mềm mô phỏng 2D, 3D:
- Inventor;
- Solidwork;
- Google SketchUp;
- Studio của ABB;
- EasyRob (Mô phỏng robot)
- LabVIEW (Ở bài này, chúng tôi chọn LabVIEW làm công cụ)
- Vv…
15.1.2 Giới thiệu về 3D Picture Control trong LabVIEW
- Công cụ cần thiết gồm những gì?
o LabVIEW 2009 Evaluation
o Kiến thức cơ bản về vật lý
o Tính toán động học, động lực học các hệ cơ học.
- Tài liệu
o LabVIEW 3D Picture Control Help;
o Internet.
- 3D Picture Control trong LabVIEW làm được gì?
o Vẽ 2D, biểu diễn các khảo sát dưới dạng biểu đồ:

Hình 15.2. Ứng dụng của Picture control


o Vẽ các hình khối 3D:
183
Khối cầu, khối hình lập phương hay các hình khối có hình dạng
phức tạp…

Hình 15.3. Một số kết quả đơn giản với 3D picture control
o Mô phỏng động học & động lực học
Động học là gì? - Là ngành khoa học nghiên cứu sự thay đổi vị trí
của vật này so với vật khác.
Động lực học là gì? - Là ngành khoa học nghiên cứu về sự tương
tác lực giữa các chất điểm với nhau.
Các bước mô phỏng:
Tạo các hình khối theo yêu cầu;
184
Thiết lập quan hệ (ràng buộc) cho các hình khối;
Viết thuật toán điều khiển;
Đưa thuật toán điều khiển vào hệ mô phỏng.
o Các Demo mẫu

Hình 15.4. Mô phỏng động học cánh tay robot


Mô phỏng ĐH quỹ đạo bay của mặt trời, trái đất, mặt trăng

Hình 15.5. Mô phỏng động lực học Helicopter

Hình 15.6. Mô phỏng vật Hình 15.7. Mô phỏng động học cánh
ném xiên tay 2 bậc tự do
15.1.3 Từng bƣớc thao tác mô phỏng 3D trong LabVIEW
- Thao tác vẽ các khối căn bản (cầu, hộp, trụ…)

185
Hình 15.8. Hàm Creat Object
Hàm Creat Object là lệnh tạo một hình khối mới (cầu, trụ, hộp…)
để hiển thị lên môi trường 3D của LabVIEW. Để lấy làm Create Object,
tại cửa Block Diagram ta phải chuột >> Programming >> Graphics &
Sound >> 3D Picture Control >> Object >> Creat Object.

Hình 15.9. Vị trí hàm Creat Object


Muốn tạo hình khối nào thì bên cửa sổ BD (Block Diagram) ta
phải chuột >> Programming >> Graphics & Sound >> 3D Picture
Control >> Geometry, sau đó chọn các hình khối cần tạo.

Hình 15.10. Thư viện Geometry


Các hình khối mà LabVIEW hỗ trợ trong thư viện 3D Picture
Control.
Khối SceneObject được tạo thành từ khối Invoke Node nằm trong
thư viện Application Control, là khối có chức năng tạo không gian hoạt
động cho vật thể.

186
Hình 15.11. Tạo không gian hoạt động cho vật thể
Tương tự ta có thể tạo được các hình khối sau:

Hình 15.12. Tạo các hình khối


- Thao tác ràng buộc cho các khâu:
Ta dùng khối Invoke Node, với Class là SceneObject, Method là
Object. Add Object.
187
Hình 15.13. Ràng buộc
- Thao tác gán kiểu chuyển động (tịnh tiến, quay) cho các khâu.
Để tạo các kiểu chuyển
động cho các khâu, ta tìm tới cửa
sổ Transformation trong thư viện
3D PICTURE CONTROL và
chọn Translate Object (nếu là
muốn gán chuyển động tịnh tiến)
hay Rotate Object (nếu muốn
gán chuyển động quay):
- Viết thuật toán (động học,
động lực học) điều khiển
chuyển động cho các khâu:
Tùy vào yêu cầu mô phỏng
(động học động lực học) của ứng
dụng mà lập trình thuật toán Hình 15.14. Thư viện hàm tạo
điều khiển. chuyển động
- Thao tác gán thuật toán điều khiển chuyển động tới các khâu:
- Chạy mô phỏng.
15.1.4 Mô phỏng vật lý: Vật ném xiên
Bạn cần thực hiện các bước sau:
- Tạo nền (mặt đất), tạo vật ném xiên
- Ràng buộc cho vật ném xiên và mặt đất
- Viết thuật toán ném xiên (Y=V0t-1/2*gt^2)
- Gán thuật toán bay xiên cho vật
- Chọn vận tốc ban đầu V0(m/s) và chạy mô phỏng.

188
Ngoài ra, bạn cũng có thể
thực hiện các bài toán mô
phỏng phức tạp hơn để có thể
tạo ra môi trường 3D như sau
(trích đề tài Cao học Mô phỏng
3D với LabVIEW để chế tạo mô
hình tập lái xe ô tô và xe tăng,
tác giả: KS. Trần Ngọc Trung,
giáo viên hướng dẫn: TS.
Nguyễn Bá Hải). Hình 15.15. Giao diện mô hình tập
lái xe

15.1.5 Mô phỏng kết hợp LabVIEW với các phần mềm thiết kế 3D
khác (Google Sketchup, Solidworks…)
Vì phần mềm LabVIEW chỉ tạo được các hình khối đơn giản, đó là
lý do vì sao chúng ta cần sử dụng các phần mềm thiết kế 3D khác để có
thể mô phỏng các hệ thống phức tạp hơn. Trong khóa học này sẽ sử dụng
2 phần mềm là Google SketchUp và Solidworks.
Để gọi một vật thể từ phần mềm thiết kế 3D thứ 2 thì LabVIEW hỗ
trợ các đuôi mở rộng sau: ASE, STL, VRML97. Trong giới hạn bài giảng
này sẽ hướng Import file mở rộng VRML97 vào môi trường 3D của
LabVIEW.
Để có thể Import 1 vật thể từ phần mềm Google SketchUp hay
Solidworks vào 3D LabVIEW đòi hỏi trước tiên ta cần biết sử dụng 2
phần mềm trên. Sau đây sẽ là các 2 ví dụ đơn giản giúp bạn có thể gọi 1
file mở rộng WRML97 vào môi trường 3D của LabVIEW:
Ví dụ 1: Import 1 khối lục giác từ phần mềm Solidworks vào 3D Picture
của LabVIEW:
Thực hiện:
- Bước 1: Thiết kế khối lục giác bằng phần mềm Solidworks sau đó
save as sang đuôi mở rộng VRML97 (lucgiac.wrl)

Hình 15.16. Vẻ bằng Solidworks


189
- Bước 2: lập trình LabVIEW
Thuật toán:

Hình 15.17. Đưa file vào LabVIEW


Hàm Load VRML File được lấy trong thư viện 3D Picture
Control >>File Loading của LabVIEW

Hình 15.18. Load VRML file


- Bước 3: Load file lucgiac.wrl được export từ Solidworks tại cửa
sổ Front Panel

Hình 15.19. FP của chương trình


- Bước 4: Chạy chương trình và thấy kết quả:

190
Hình 15.20. Kết quả
Ví dụ 2: Import 1 chiếc máy bay vào 3D Picture của LabVIEW sử dụng
phần mềm thiết kế Google SketchUp :
Thực hiện:
- Bước 1: Thiết kế máy bằng phần mềm Google SketchUp hoặc để
tiết kiệm thời gian ta có thể lấy chiếc máy bay tại thư viện mở của
Google. Để lấy chiếc máy bay từ thư viện 3D Warehouse ta thực
hiện như sau: tại giao diện của phần mềm Google SketchUp ta
chọn File >> 3D Warehouse >> Get Models (yêu cầu máy tính
cần có internet), sau đó tại cửa sổ 3D Warehouse tìm với từ khóa
plane, tiếp theo chọn cái plane hợp ý và download:

Hình 15.21. Get model

191
Hình 15.22. Lấy chiếc máy bay
Chiếc máy bay bên phần mềm Google SketchUp sau khi download từ
Warehouse về
- Bước 2: lập trình trên ví dụ 1 ta được kết quả như sau:

Hình 15.23. Chiếc máy bay bên phần mềm LabVIEW


15.1.6 Mô phỏng Robot: Động học cánh tay Robot 2 bậc tự do
- Tạo Khớp thứ nhất
- Tạo Khâu thứ nhất
- Tạo Khớp thứ 2
- Tạo Khâu thứ 2
- Ràng buộc Khớp 1 & Khâu 1 & Khớp 2 & Khâu 2
- Viết thuật toán điều khiển động học: nhập góc quay cho các khớp
theo các trục X, Y, Z
- Gán thuật toán điều khiển cho cánh tay
- Nhập thông số và mô phỏng.
192
Hình 15.24

15.2 LẬP TRÌNH VI ĐIỀU KHIỂN ARM VỚI LABVIEW


Để lập trình LabVIEW với vi điều khiển ARM tác giả chọn KIT
ARM cung cấp bởi National Instruement để làm ví dụ. Các bước thực
hiện chi tiết trong phần này chỉ đúng với giả thuyết bạn có KIT này để
thực hành.
15.2.1 Cài đặt DVD Mô đun nhúng cho vi điều khiển ARM
1. Khởi động và đăng nhập tài khoản admin
2. Cho đĩa DVD vào máy. Nếu cài đặt không tự động bắt đầu, thì
double click vào autorun.exe để cài đặt

Hình 15.25
3. Chọn Install Lab VIEW Embedded Module for ARM
Microcontrollers
193
4. Làm theo hướng dẫn trên màn hình hiển thị cài đặt mô đun nhúng
cho vi điều khiển ARM. Bạn phải chọn cài đặt custom và chọn vào
mục cài đặt Luminary Micro Driver for EK-LM3S8962. click
Continue Anyway để tiếp tục cài đặt

Hình 15.26
5. Trong quá trình cài đặt, cài đặt sẽ tự động tải RealView
Microcontroler Deverlopment Kit. Làm theo hướng dẫn trên màn hình
hiển thị để cài đặt RealView Microcontroler Deverlopment Kit
6. Sau khi cài đặt hoàn thành, khởi động lại máy
7. Tiến hành đăng ký bản quyền phần mềm
15.2.2 Kết nối phần cứng MCB 2300 tới máy tính
1. Các thiết bị cần thiết cho việc cài đặt
 Phần cứng MCB 2300
 Máy vi tính có 2 cổng usb
 Bộ kết nối ULINK2 USB-JTAG
 2 dây cáp usb
2. Các bước thực hiện
 Khởi động chương trình
Keil µ Vision3
 Kết nối ULINK2 USB-
JTAG tới cổng usb của máy
tính bằng dây cáp
 Kết nối ULINK2 USB-
JTAG tới phần cứng
MCB2300 Hình 15.27

194
Hình 15.28
 Kết nối cổng usb từ phần cứng MCB2300 tới cổng usb của máy
tính để cấp nguồn cho phần cứng MCB2300
15.2.3 Lập trình trên LabVIEW
1. Tạo một chƣơng trình trên LabVIEW
 Tạo 2 numberic controls
 Tạo 1 numberic indicator
 Tại một đèn led
2. Đặt tên theo hình sau

Hình 15.29
3. Lập trình nhƣ hình tại Blog digram

Hình 15.30
Hoàn thành demo đầu tiên với vi điều khiển ARM sử dụng KIT có
sẵn cung cấp bởi National Instruments bạn sẽ thấy LED sáng.
195
15.3 GIẢI PHÁP VỀ THỜI GIAN THỰC VỚI LABVIEW
15.3.1 Khái niệm về thời gian thực
Thời gian thực là gì? Ta thường sai lầm khi nghĩ hệ thống thời gian
thực (Real-Time System, RTS) là hệ thống có tốc độ xử lý nhanh (gần
với thời gian thực của tự nhiên). Thực ra một hệ thống thời gian thực có
đặc điểm sau:
Thực hiện được một hoặc một số nhiệm vụ (task) trong một thời
gian qui định. Đảm bảo được dù có bất kỳ điều gì xảy ra đối với hệ thống
thì số nhiệm vụ trên vẫn hoàn thành trong đúng thời gian đó. Cần nhớ hệ
RTS gồm: Phần mềm RT (real-time software hoặc real-time module hay
RT toolkit) và Phần cứng RT (real-time hardware).
Ví dụ: túi khí (airbag) trên xe hơi
là một RTS. Vì khi có cảm biến tai nạn
được kích hoạt. Túi khí sẽ được bung
ra trong một khoảng thời gian rất ngắn
(được định trước bởi kỹ sư lập trình).
Giả sử nếu túi khí không là một RTS
thì tài xế sẽ chết trước khi túi khí bung.
Ví dụ khác về RTS là bộ điều khiển
đánh lửa trong động cơ xăng.
Tia lửa cần được điều khiển
chính xác ở chu kỳ đốt (tức sau khi chu
kỳ hút đã hút hỗn hợp ký và xăng vào
rồi, tới chu kỳ nén, nén hòa khí xăng-
khí lên áp suất cao, thì tia lửa mới
được phát ra bởi bộ điều khiển RTS).
Nếu không đúng thời điểm này thì
động cơ sẽ không hoạt động được hoặc
hoạt động với hiệu suất rất thấp.
Hình 15.31. Động cơ đốt trong
Vậy máy tính cài hệ điều hành Window có phải là RTS? Trước
hết bản thân phần mềm window là không phải RT software vì window là
hệ điều hành đa chức năng (chứ không thiết kế cho ứng dụng RT trong
kỹ thuật). Thường đơn giản như việc ta dùng phần mềm chat (yahoo
messenger) để chat theo thời gian thực (tức bạn gửi tin thì người được
gửi sẽ nhận ngay sau khi bạn nhấn enter). Tuy nhiên khi máy có virus
hoặc có một phần mềm, hay phần cứng nào tác động (interupt) thì đột
nhiên tin messenger bị đứng (treo máy). Do vậy dù bạn có nhấn enter rồi
thì tin vẫn không gửi đi được.
196
Thứ hai, phần cứng của máy tính để bàn là một hệ thống được thiết
kế với mục đích đa năng (của máy tính thông thường như soạn thảo văn
bản, chơi game, nghe nhạc, vv). Do vậy, so với máy tính đặc biệt dùng
xây dựng lên hệ điều hành RT (RT Computer) thì máy để bàn (Destop
PC) có tính năng kém hơn trong việc tạo ứng dụng RT.
Giải pháp xây dựng hệ thống thời gian thực cho các yêu cầu trên
như thế nào? Như đã đề cập ở trên, một hệ thống thời gian thực bao gồm
phần mềm thời gian thực và phần cứng thời gian thực. Hai thành phần
này được phân bổ ở hai máy tính dùng để phát triển (lập trình) các
chương trình (máy host) và máy đích (target RT computer).
Từ đó ta có các lựa chọn sau:
RT target: Có thể dùng RT computer, single-board computer hoặc
dùng ngay chính máy tính của bạn nếu máy của bạn thỏa mãn điều kiện
về RT target. (phương pháp kiểm tra này LabVIEW Hocdelam sẽ đề cập
sau).
Host computer: Laptop hoặc desktop PC thông thường. Thông thường
host PC giao tiếp và làm việc với target PC thông qua chuẩn Ethenet. Vì
vậy bạn cần có card mạng rời hoặc card mạng onboard. (Nếu máy của
bạn vào internet được có nghĩa máy của bạn đã có card mạng).
IO Board: PCI, PXI, hoặc DAQ chuyên Dùng. RT Software: Dùng
USB boot disk sau đó cài LabVIEW RT Module lên máy của bạn), hoặc
dùng RTX (real-time extension for Windows XP) cài xong xong với OS
của bạn. (LabVIEW Real-Time Module for RTX Targets).
15.3.2 Sử dụng các card thời gian thực
Trong các ứng dụng về thời gian thực CompactRIO với vị trí là
Target computer là một lựa chọn phù hợp nếu bạn không quá lo lắng về
vấn đề kinh phí. Để lập trình CompactRIO bạn cần cài đặt các module sau:
- LabVIEW 8.6
- LabVIEW Realtime module tương ứng
- NI-RIO 3.2 hoặc mới hơn
- LabVIEW FPGA
Host computer là máy tính Laptop hoặc máy tính Destop của bạn.
Về phần cứng, bạn cần set up (thiết lập) một ứng dụng cụ thể. Trong bài
này, tác giả lấy ví dụ một Robot tự động do nhóm sinh viên SPKT-MIN
ĐH Sư phạm Kỹ thuật Tp.HCM thực hiện.

197
Hình 15.32. Robot tự động của đội MINSPKT sử dụng CompactRIO để
điều khiển thời gian thực
Lập trình cho CompactRIO khá đơn giản sau khi bạn đã kết nối các
phần cứng của mình. Các bước lập trình cho CompactRIO cụ thể là:
Bạn mở LabVIEW lên

Hình 15.33. Khởi động LabVIEW


Vào New Project > Add> Target > Select CompactRIO
Chọn Module cần lấy tín hiệu

Hình 15.34. Tạo Project Hình 15.35. Module Ânlog


198
Kéo thả kênh AI0 để đọc tín
hiệu Analog.
Build & Deploy & Set as start
up
Tạo ra một ứng dụng thời gian
thực (Real-time application)

Hình 15.36. Tạo Real-Time


Application

Hình 15.37. Chọn Source file


Chờ cho hệ thống Build thành công.

Hình 15.38. Thông báo đã build thành công

199
 Để tải xuống target
computer (deploy)
 Chọn lên My
Realtime-application
> Chọn vào Deploy.
 Sau khi deploy,
muốn nạp lại ta
phải Remove Real-
time application
trong cRIO

Hình 15.39. Remove dự án từ Application


Để bỏ đi VI này trong dự án (Project). Đưa một file vào dự án mới

Hình 15.40. Remove File từ dự án Hình 15.41. Thêm file


Chương trình hỏi có thay
thế không? Bạn chọn YES.
Bạn đã hoàn thành tất các
bước để lập trình hệ thống thời
gian thực với NI CompactRIO.

Hình 15.42. Thay thế file

200
CHƢƠNG TRÌNH MẪU
Chương trình mẫu bên dưới mô tả ví dụ điều khiển robot tự động
dò line và điều khiển cơ cấu chấp hành với LabVIEW sử dụng
CompactRIO.
Bạn có thể tải chương trình mẫu này tại: http://hocdelam.org > Tài
liệu > Tài liệu LabVIEW > Ví dụ mẫu.)

Hình 15.43. Ví dụ Robot dò line của nhóm sinh viên năm nhất MINSPKT
Front panel chƣơng trình điều khiển robot tự động với CompactRIO

Hình 15.44. BD của chương trình dò line


Blockdiagram chƣơng trình điều khiển robot tự động với CompactRIO
Một điều thú vị và thuận lợi là bạn có thể thay thế CompactRIO với
3 card giao tiếp máy tính giá thành thấp Hocdelam USB-9001 để thực
hiện đề tài này với chính Laptop hoặc máy tính của bạn. Nhưng cần lưu ý
là việc thay thế này chỉ nhằm giảm giá thành phần cứng để phục vụ làm
demo, học tập và nghiên cứu thuật toán điều khiển Robot trong môi
201
trường giáo dục. Bởi Hocdelam USB-9001 không phải là một phần cứng
Real-time như CompactRIO. (Xem video clip việc thay thế card
Hocdelam USB 9001 tại:
http://www.youtube.com/watch?v=X_eJ7HLDdz4 )

15.4 XỬ LÝ ẢNH VỚI LABVIEW


Trong kỹ thuật, xử lý ảnh giúp con người xây dựng nhiều hệ thống
thông minh và hữu ích từ việc đếm sản phẩm, phát hiện sai lệch (của việc
dán nhãn sản phẩm), phân loại sản phẩm cũng như tự động đo lường và
ra quyết định điều khiển thiết bị. Một số ứng dụng quen thuộc của xử lý
ảnh có thể thực hiện với LabVIEW là:
- Đếm số điện trở trên một mạch điện
- Nhận dạng mặt người
- Tìm lỗi của một sản phẩm (khi sản phẩm bị rạn, nứt, méo, vv)
Xử lý hình ảnh là việc xử lý tín hiệu đầu vào là một hình ảnh, chẳng
hạn như một khung ảnh hoặc video, đầu ra của xử lý hình ảnh có thể
hoặc là một hình ảnh hoặc một tập hợp các đặc điểm hoặc các thông số
liên quan đến hình ảnh.
Dựa trên các thông số đầu ra đó, người ta có thể tiến hành điều
khiển thiết bị theo ý muốn ví dụ: Đếm số viên thuốc trong một vỉ đựng,
nếu số thuốc (Đầu ra) ít hơn một số thuốc yêu cầu nào đó thì tay robot sẽ
tự động bổ sung thêm cho đủ số lượng hoặc gạt vỉ thuốc không đạt yêu
cầu ra.
Hầu hết các kỹ thuật xử lý hình ảnh liên quan đến việc xử lý hình
ảnh như là một tín hiệu hai chiều và áp dụng tiêu chuẩn kỹ thuật xử lý tín
hiệu với nó. Xử lý hình ảnh thường dùng để chỉ xử lý hình ảnh kỹ thuật
số, nhưng xử lý hình ảnh quang học và tương tự cũng có thể xảy ra. Bài
viết này là về các kỹ thuật sử dụng công cụ Vision assistant để thực hiện
các bài xử lý ảnh cơ bản. Bạn có thể gửi yêu cầu hỗ trợ thêm tài liệu xử
lý ảnh nâng cao bằng việc gửi email về supports@hocdelam.org.
15.4.1 Cài đặt và sử dụng Vision Assistant
Yêu cầu hệ thống cài đặt:
Tối thiểu Yêu cầu

Vi xử lý Pentium 233MHz hay Pentium4/M hay cao hơn


cao hơn

202
RAM 256MB 512MB

Hiển thị Độ phân giải 1024x768 Độ phân giải 1024x768 với


với 16bit màu 24-32bit màu
Chỗ trống 700MB 1GB
ổ cứng
Hệ điều hành Windows 7/vista/xp/2000

Trình duyệt Internet Explorer hoặc Firefox

Hƣớng dẫn cài đặt:


 Chạy file setup trong thư mục NI-IMAQ và NI-IMAQdx
 Chạy file setup trong thư mục Vision Development Module
(Bạn có thể tải các file này tại http://hocdelam.org > Tài liệu> Tài liệu
LabVIEW> Xử lý ảnh với LabVIEW)
 Giới thiệu: Vision Assistant là công cụ để tạo mẫu và kiểm tra quá
trình xử lý ảnh. Sau khi xây dựng các thuật toán xử lý ảnh với các
đoạn mã (Script) của Vision Assistant,ta có thể kiểm tra thuật toán
đó với các ảnh khác.
 Môi trƣờng làm việc của Vision Assistant:

Hình 15.45. Giao diện Vision assistant

203
1.Cửa sổ làm việc; 2.Bảng các chức năng xử lý; 3.Tỉ lệ thu phóng;
4.Kích thước ảnh; 5.Cửa sổ mã; 6. Cửa sổ chính; 7.Các thẻ thao tác ảnh
Cửa sổ làm việc (Reference Window) – hiển thị ảnh đang được
xử lý.
Cửa sổ mã (Script window) – cửa sổ ghi lại các bước xử lý ảnh.
Cửa sổ xử lý ảnh (Processing Window) – xử lý ảnh để được các
kết quả mong muốn.
Duyệt ảnh (Image Browser) – gồm các ảnh được load vào trong
Vision Assistant.
14.4.2 Thu nhận hình ảnh với Vision Assistant:
Vision Assistant cho phép sử dụng 3 loại thu nhận hình ảnh là thu
nhận và hiển thị 1 hình(snap), thu nhận và hiển thị hình ảnh một cách liên
tục (grab) và thu nhận và hiển thị theo các thiết lập (sequence).
Vision Assistant hỗ trợ nhiều loại camera khác nhau như : các loại
camera thông minh của NI,các camera IEEE 1394 và camera Gigabit
Ethernet (GigE).
 Cửa sổ thu nhận hình ảnh:

Hình 15.46. Cửa sổ thu nhận ảnh


1.Đưa ảnh hoạt động; 2.Sắp xếp ảnh thu nhận vào bộ duyệt; 3.Các chức
năng thu nhận ảnh

204
 Thu nhận và hiển thị hình đơn(Snapping an Image):
1. Chọn File»Acquire Image và lựa chọn các chức năng thu nhận
hình ảnh

2. Chọn nút Acquire Single Image để thu nhận hình đơn

3. Chọn nút Store Acquired Image in Browser để đưa ảnh


vào bộ duyệt ảnh
 Thu nhận và hiển thị hình ảnh một cách liên tục(Grabbing an
Image):
1. Chọn File»Acquire Image và chọn các chức năng thu nhận
hình ảnh

2. Chọn nút Acquire Continuous Images để thu nhận và


hiển thị hình ảnh 1 cách liên tục.Chọn nút này 1 lần nữa để dừng
thu nhận hình ảnh.

3. Chọn nút Store Acquired Image in Browser để đưa ảnh


vào bộ duyệt ảnh.
 Thu nhận và hiển thị theo các thiết lập (Acquiring a Sequence
of Images):
1. Chọn File»Acquire Image và chọn các chức năng thu nhận hình
ảnh.
2. Chọn nút Sequence Acquisition
3. Thiết lập các thông số :
o Number of Frames—số khung hình muốn thu nhận
o Skip Count—số khung hình cần bỏ qua giữa các bước thu
nhận.
o Line—đường trigger vật lý.
o Action—hoạt động của trigger.Bao gồm Disabled, Trigger
start of acquisition, và Trigger each image
o Timeout—thời gian trigger xảy ra (khoảng mili giây).
o Polarity—được thiết lập nếu tín hiệu thu nhận của trigger là
cạnh lên hoặc cạnh xuống.

205
15.4.3 Xử lý ảnh với Vision Assistant
Các bước làm việc với Vision Assistant:
1. Khởi động Vision Assistant từ Start»All Programs»National
Instruments Vision Assistant.
2. Chọn hình ảnh cần xử lý bằng cách click Open Image
3. Chọn thẻ Browse Images trong Vision Assistant và chọn ảnh
cần duyệt

Hình 15.47. Thẻ Browse images


1.Duyệt ảnh; 2.Vị trí của ảnh; 3.Nút điều khiển; 4.Chế độ xem chi
tiết/toàn kích thước; 5.Mở ảnh; 6.Tắt ảnh đã lựa chọn; 7.Kích thước
ảnh; 8.Loại ảnh; 9.Dạng ảnh
4. Qua thẻ Image Processing lựa chọn các Script trong cửa sổ
Processing Functions để xử lý ảnh
5. Kiểm tra chức năng xử lý ảnh của Scripts đã lựa chọn.bằng cách
click chọn nút Run Once
 Vision Assistant có thể xuất ra file Labview,code C,…
Tạo file VI của LabView :
1. Chọn Tools»Create LabVIEW VI.Chọn phiên bản LabVIEW
2. Chọn tên,chọn Current Script để tạo VI từ script đã tạo trong
Vision Assistant.
3. Chọn Image File để tạo VI lấy ảnh từ ổ cứng
Tạo chƣơng trình C:
1. Chọn Tools»Create C Code. Chọn tên.
206
2. Chọn Create Main Function khi muốn tạo chương trình chính
để kiểm tra các chức năng xử lý ảnh
 Main File Name: điền tên file C
 Image Source: chọn file ảnh nguồn được sử dụng trong
chương trình chính.
3. Chọn thư mục lưu file được tạo ra
15.4.4 Sử dụng chức năng định vị màu sắc để nhận biết vị trí và số
lƣợng led
Dựa trên hình ảnh led xanh có sẵn thực hiện xử lý qua Vision
Assistant để xác định số lượng led có trên hình và vị trí của led trên hình
đó. Các hình ảnh có sẵn để xử lý:

Hình 15.48. Chọn ảnh để xử lý


Chọn ảnh bất kì để xử lý,ở đây ta chọn ảnh demled(2).jp
KẾT QUẢ:

Hình 15.49. Kết quả sau khi xử lý


207
Ta thấy được 12 led xanh và vị trí cụ thể của các led được khoanh
thành các ô màu đỏ trên hình.
Bạn có biết?
Thông thường code viết bằng LabVIEW chậm hơn nếu so sánh
cùng một chương trình tương đương được soạn bằng mã C. Tuy nhiên
tốc độ xử lý chương trình phần lớn phụ thuộc vào việc tối ưu chương
trình mà bạn viết hơn là tốc độ xử lý của bản thân chương trình đó

15.5 BÀI TẬP


Câu 1: Thực hành tạo một tay robot 2 bậc tự do với LabVIEW
Câu 2: Viết một chương trình điều khiển LED với vi điều khiển
ARM với LabVIEW
Câu 3: Thực hiện chương trình mô phỏng mobile robot với
LabVIEW (tìm hiểu thêm thông tin tại http://hocdelam.org để tải tài liệu
mô phỏng mobile robot và phần mềm cần thiết cho công việc này.
Câu 4: Thực hành xử lý ảnh đếm số ngón tay chụp vào từ camera.

THAM KHẢO BÀI 15


[1] TS. Nguyễn Bá Hải, KS. Lê Sĩ Toàn “Lập trình 3D trong LabVIEW”,
Hocdelam Group, 2011.
[2] LabVIEW programming with ARM, National Instrument
[3] Đề tài Tiến sĩ, Nguyễn Bá Hải, Jee-Hwan Ryu, “Điều khiển mobile
robot từ xa”, 2010, KUT, Hàn Quốc.
[4] TS. Nguyễn Bá Hải, KS. Vũ Sơn, “Tài liệu xử lý ảnh”, Hocdelam
Group, 2011
[5] TS. Nguyễn Bá Hải, KS. Phan Ngọc Trung “Thiết kế mô hình tập lái
xe ô tô”, Chuyên đề 2 - Đề tài Thạc Sĩ, ĐH Sư phạm Kỹ thuật Tp.HCM,
2011.
[5] TS. Nguyễn Bá Hải, KS. Trần Trung “Thiết kế mô hình tập lái xe xe
tăng”, đề tài nghiên cứu sinh, Viện Cơ học Việt Nam.

208
Bài 16
HỖ TRỢ NGƯỜI HỌC
Phần này cung cấp cho bạn các tiện ích giúp bạn học tốt LabVIEW.
Các tiện ích gồm: các bảng này có thể dùng để tra cứu hoặc photo dán
lên những vị trí mà bạn hay quan sát.

16.1 BẢNG PHÍM TẮT BÀN PHÍM (KEYBOARD SHORTCUTS)


Trong LabVIEW, bạn có thể sử dụng các phim tắt để nhanh chóng
thực hiện các thao tác lập trình.
Keyboard
Description
Shortcut
Object/Movement
Selects multiple objects; adds object to current
Shift-click
selection.
Arrow keys Moves selected objects one pixel at a time.
Shift-Arrow
Moves selected objects several pixels at a time.
keys
Shift-click
Moves selected objects in one axis.
(drag)
Ctrl-click (drag) Duplicates selected object.
Ctrl-Shift-click
Duplicates selected object and moves it in one axis.
(drag)
Shift-resize Resizes selected object while maintaining aspect ratio.
Ctrl-resize Resizes selected object while maintaining center point.
Resizes selected object while maintaining center point
Ctrl-Shift-resize
and aspect ratio.
Ctrl-drag a Adds more working space to the front panel or block
rectangle diagram.
Ctrl-A Selects all front panel or block diagram items.

209
Ctrl-Shift-A Performs last alignment operation on objects.
Ctrl-D Performs last distribution operation on objects.
Double-click Adds a free label to the front panel or block diagram if
open space automatic tool selection is enabled.
Ctrl-mouse Scrolls through subdiagrams of a Case, Event, or
wheel Stacked Sequence structure.
Disables preset alignment positions when moving
Spacebar (drag)
object labels or captions.
Navigating the LabVIEW Environment
Ctrl-F Finds objects or text.
Displays Search Results window or the Find Project
Ctrl-Shift-F
Items dialog box with the previous search results.
Ctrl-G Searches for next instance of object or text.
Ctrl-Shift-G Searches for previous instance of VIs, object, or text.
Cycles through LabVIEW windows in the order the
Ctrl-Tab windows appear onscreen. (Linux) The order of the
windows depends on the window manager you use.
Cycles the opposite direction through LabVIEW
Ctrl-Shift-Tab
windows.
Ctrl-L Displays the Error List window.
Ctrl-Shift-W Displays the All Windows dialog box.
Navigating Front Panels and Block Diagrams
Ctrl-E Displays block diagram or front panel window.
Enables or disables grid alignment. On French
Ctrl-# keyboards, press the <Ctrl-"> keys. (Mac OS) Press the
<Command-*> keys.
Ctrl-/ Maximizes and restores window.
Ctrl-T Tiles front panel and block diagram windows.
Ctrl-Shift-N Displays the Navigation window.
210
Ctrl-I Displays the VI Properties dialog box.
Ctrl-Y Displays the History window.
Navigating the VI Hierarchy Window
Ctrl-D Redraws the VI Hierarchy window.
Ctrl-A Shows all VIs in the VI Hierarchy window.
Displays the subVIs and other nodes that make up the
Ctrl-click VI
VI you select in the VI Hierarchy window.
Finds the next node that matches the search string after
Enter initiating a search by typing in the VI Hierarchy
window.
Finds the previous node that matches the search string
Shift-Enter after initiating a search by typing in the VI Hierarchy
window.
Debugging
Ctrl-Down
Steps into node.
arrow
Ctrl-Right arrow Steps over node.
Ctrl-Up arrow Steps out of node.
File Operations
Ctrl-N Opens a new, blank VI.
Ctrl-O Opens an existing VI.
Ctrl-W Closes the VI.
Ctrl-S Saves the VI.
Ctrl-Shift-S Saves all open files.
Ctrl-P Prints the window.
Ctrl-Q Quits LabVIEW.
Basic Editing

211
Ctrl-Z Undoes last action.
Ctrl-Shift-Z Redoes last action.
Ctrl-X Cuts an object.
Ctrl-C Copies an object.
Ctrl-V Pastes an object.
Help
Displays Context Help window. (Mac OS) Press the
Ctrl-H
<Command-Shift-H> keys.
Ctrl-Shift-L Locks Context Help window.
Ctrl-? or <F1> Displays LabVIEW Help.
Tools and Palettes
Ctrl Switches to next most useful tool.
Shift Switches to Positioning tool.
Ctrl-Shift over
Switches to Scrolling tool.
open space
Toggles between two most common tools if automatic
Spacebar
tool selection is disabled.
Shift-Tab Enables automatic tool selection.
Cycles through four most common tools if you disabled
automatic tool selection by clicking the Automatic Tool
Tab
Selection button. Otherwise, enables automatic tool
selection.
Arrow keys Navigates temporary Controls and Functions palettes.
Enter Navigates into a temporary palette.
Esc Navigates out of a temporary palette.
Displays a temporary version of the Tools palette at the
Shift-right-click
location of the cursor.
SubVIs

212
Double-click
Displays subVI front panel.
subVI
Ctrl-double-
Displays subVI block diagram and front panel.
click subVI
Drag VI icon to
Places that VI as a subVI on the block diagram.
block diagram
Shift-drag VI Places that VI as a subVI on the block diagram with
icon to block constants wired for controls that have non-default
diagram values.
Ctrl-right-click
block diagram
Opens front panel of that VI.
and select VI
from palette
Execution
Ctrl-R Runs the VI.
Ctrl - . Stops the VI, when used while VI is running.
Ctrl-M Changes to run or edit mode.
Ctrl-Run button Recompiles the current VI.
Ctrl-Shift-Run
Recompiles all VIs in memory.
button
Ctrl-Down Moves key focus inside an array or cluster, when used
arrow while VI is running.
Moves key focus outside an array or cluster, when used
Ctrl-Up arrow
while VI is running.
Navigates the controls or indicators according to
Tab
tabbing order, when used while VI is running.
Navigates backward through the controls or indicators,
Shift-Tab
when used while VI is running.
Wiring
Ctrl-B Deletes all broken wires in a VI.

213
Esc, right-click,
Cancels a wire you started.
or click terminal
Single-click
Selects one segment.
wire
Double-click
Selects a branch.
wire
Triple-click wire Selects entire wire.
While wiring, disables automatic wire routing
A
temporarily.
Double-click
Tacks down wire without connecting it.
(while wiring)
Spacebar Toggles automatic wiring while moving objects.
Shift-click Undoes last point where you set a wire.
Ctrl-click input
on function with Switches the two input wires.
two inputs
Switches the direction of a wire between horizontal and
Spacebar
vertical.
Text
Double-click Selects a single word in a string.
Triple-click Selects an entire string.
Moves forward in string by one word when using text
that has characters that use single bytes, such as
Ctrl-Right arrow Western character sets. Moves forward in string by one
character when using text that has characters that use
multiple bytes, such as Asian character sets.
Moves backward in string by one word when using text
that has characters that use single bytes, such as
Ctrl-Left arrow Western character sets. Moves backward in string by
one character when using text that has characters that
use multiple bytes, such as Asian character sets.

214
Home Moves to beginning of current line in string.
End Moves to end of current line in string.
Ctrl-Home Moves to beginning of entire string.
Ctrl-End Moves to end of entire string.
Adds new items when entering items in enumerated
type controls and constants, ring controls and constants,
or Case structures. In string constants, press the <Shift-
Shift-Enter Enter> keys on the keyboard to disable autosizing if it
is enabled. If autosizing is disabled, press the <Shift-
Enter> keys on the keyboard to display a scroll bar in
the constant.
Esc Cancels current edit in a string.
Ctrl-Enter Ends text entry.
Ctrl-= Increases the current font size.
Ctrl-- Decreases the current font size.
Ctrl-0 Displays the Font dialog box.
Ctrl-1 Changes to the Application font in Font dialog box.
Ctrl-2 Changes to the System font in the Font dialog box.
Ctrl-3 Changes to the Dialog font in the Font dialog box.
Ctrl-4 Changes to the current font in the Font dialog box.

16.2 QUY TẮC VÀNG


Bạn cũng có thể in 3 quy tắc vàng và dán vào nơi thường đọc để nhớ:
Quy Tắc Vàng Trong LabVIEW
RC> Select, Create, Replace, Change to
Ctrl + H: Tra cứu sơ đồ chân
Search: Tìm kiếm hàm và đối tượng

215
Bạn có biết?
Tác giả thật sự vui khi nhận được các góp ý của bạn đọc để tiếp tục
hoàn thiện các tập sách về LabVIEW. Mỗi góp ý hay sẽ nhận lại được
một cuốn sách trong lần tái bản tới đây. Bạn cũng có thể cùng tham gia
viết các tập sách tiếp theo về LabVIEW.
Liên lạc với tác giả qua: bahai@hcmute.edu.vn. Chúc quý bạn đọc
xây dựng được các ứng dụng hay nhất của mình với LabVIEW.

16.3 GHI CHÚ


-------------------------------------GHI CHÚ--------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------

216
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
217
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
-------------------------------
Tủ Sách Hocdelam Group
CHÚC BẠN THÀNH CÔNG

218
THÔNG TIN VỀ TÁC GIẢ
Tiến sĩ Nguyễn Bá Hải sinh năm 1983, tốt
nghiệp Đại học tại Trường ĐH Sư phạm Kỹ thuật
TP.HCM, Thạc sĩ và Tiến sĩ chuyên ngành
Biorbotics (Robot sinh học) tại Phòng thí nghiệm
Biorobotics, Trường ĐH Công nghệ và Giáo dục
Hàn Quốc. Được vinh danh là Công dân trẻ tiêu
biểu TP.HCM 2012 với những đóng góp về giáo
dục & khoa học cho thành phố.
Giảng dạy tại ĐH Sư phạm Kỹ thuật TP.HCM với vai trò PGĐ
Trung tâm Bồi dưỡng Giáo viên & Đào tạo nhân lực Công nghệ cao.
Chuyên môn của ông gồm: thu thập dữ liệu, điều khiển thiết bị,
điều khiển từ xa, haptics, robot. Ông đã có 4 phát minh sáng chế được
cấp bằng tại Hàn Quốc, nhiều công trình công bố tại Hiệp hội Kỹ sư
điện-điện tử Hoa Kỳ (IEEE), FISITA, Tạp chí Ô tô quốc tế IJAT, trực
tiếp hướng dẫn và tư vấn cho nhiều đề tài Tiến sĩ và Thạc sĩ trong ngành
kỹ thuật, tham gia bình duyệt (review) tại các hội chuyên ngành quốc tế.
Ông sáng lập nhóm nghiên cứu Hocdelam Group và cùng các thành
viên tổ chức thành công hàng trăm khóa học cho kỹ sư, giảng viên và
sinh viên các trường Đại học, Cao đẳng, THCN, và doanh nghiệp nước
ngoài cũng như trong nước như Fujikura, Memsonics, Trường Hải
(THACO), Quatest3, ĐH BK TP.HCM, ĐH GTVT Hà Nội, CĐ Bà Rịa
Vũng Tàu, Trung cấp nghề Bình Thuận, vv. Từ 2010, ông thiết kế
chương trình khóa học 1 đô la, và cùng nhóm Hocdelam giúp hơn 1000
cá nhân tiếp cận được với kiến thức về: thu thập dữ liệu, điều khiển thiết
bị, thực hành sáng tạo kỹ thuật, nâng cao năng lực tìm kiếm tài nguyên
Internet, phương pháp học tập & làm việc hiệu quả, kỹ năng mềm trong
học tập và nghiên cứu, triển khai và quản lý đổi mới trong kỹ thuật, vv.
Chương trình này được giới thiệu qua các báo, đài truyền hình cả nước
và được Tổng lãnh sự quán Hoa Kỳ Lê Thành Ân cùng nhiều doanh nhân
khác hoan nghênh.
Sau nhiều năm tìm hiểu và sử dụng LabVIEW, thực hiện thành
công hàng trăm dự án sử dụng LabVIEW trong giáo dục, công nghiệp, y
sinh, cơ điện tử, vật lý, tự động hóa và ô tô, tư vấn cho nhiều trường
ĐH/CĐ xây dựng và khai thác hiệu quả các phòng thí nghiệm, tập sách
LabVIEW căn bản ra đời trong thời gian rất ngắn nhằm phần nào hỗ trợ
người yêu thích LabVIEW bắt đầu hành trình học tập và làm chủ
LabVIEW.

219
SẢN PHẨM SỬ DỤNG VỚI LabVIEWs

Liên hệ mua các tập sách tiếp theo tại:


Hocdelam Group
Văn phòng Khoa Công nghệ Kỹ thuật Ô tô - ĐH Sư phạm Kỹ thuật
Tp.HCM. Số 01-Võ Văn Ngân-Thủ Đức-Tp.HCM
ĐT: 098 8868 524 |supports@hocdelam.org | http://hocdelam.org

220
LẬP TRÌNH LABVIEW
Nguyễn Bá Hải
©
Nhà xuất bản ĐHQG-HCM và tác giả/đối tác liên kết giữ bản quyền
©
Copyright by VNU-HCM Publishing House anh author/co-partnership
All rights reserved
*****
NHÀ XUẤT BẢN
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
Khu Phố 6, Phường Linh Trung, Quận Thủ Đức, TPHCM
Số 3, Công trường Quốc tế, Quận 3, TP Hồ Chí Minh
ĐT: 38239171 – 38225227 - 38239172
Fax: 38239172 - Email: vnuhp@vnuhcm.edu.vn
*****
PHÒNG PHÁT HÀNH NHÀ XUẤT BẢN
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
Số 3 Công trường Quốc tế - Quận 3 – TPHCM
ĐT: 38239170 – 0982920509 – 0913943466
Fax: 38239172 – Website: www.nxbdhqghcm.edu.vn
*****
Chịu trách nhiệm xuất bản:
NGUYỄN HOÀNG DŨNG
Chịu trách nhiệm nội dung:
HUỲNH BÁ LÂN
Tổ chức bản thảo và chịu trách nhiệm về tác quyền
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HCM
Biên tập:
NGUYỄN HUỲNH
Sửa bản in:
TRẦN TÂM
Trình bày bìa
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP. HCM

Mã số ISBN: 978-604-73-1889-6

Số lượng 300 cuốn; khổ 16 x 24cm.


Số đăng ký kế hoạch xuất bản: 1247-2013/CXB/06-59/ĐHQGTPHCM.
Quyết định xuất bản số: 167 ngày 11/09/2013 của NXB ĐHQGTPHCM.
In tại Công ty TNHH In và Bao bì Hưng Phú.
Nộp lưu chiểu quý IV năm 2013.
ISBN: 978-604-73-1889-6

9 786047 318896

You might also like