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 Unsughed 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. Liệt kê các kiểu dữ liệu trong LabVIEW. Bảng 2.3 Kiểu dữ liệu Trong LabVIEW
Ký hiệu Kiểu dữ liệu Số bit Khoảng giá trị
Byte sighned integer 8 -128 tới 127 Word signed integer 16 -32,768 tới 32,768 Long signed integer 32 -2,147,483,648 tới
2,147,483,648 Quad signed integer 64 -1e19 tới 1e19 Byte unsighned integer 8 0 tới 255 I8
I16 I32 I64 U8
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.
2.5 Vòng lặp while, vòng lặp for 2.5.1 Vòng lặp while
Vòng lặp while là vòng lặp có điều kiện ý 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> Excution> While loop như trình bày trong hình 2.12
Hình 2.12 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 lại này, tới khi nút Stop (conditional terminal) 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 2.13 như sau: có hai phép tính cộng A là cộng Numeric
1 và numberic 2 hiển thi kết quả ra Indicator cộng B là phép cộng Numberic 2 và
numberle 3 hiển thị kết quả ra Indicator 2. Khác biệt duy nhất là phép cộng A đặt
U16 U32
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 ctril + R), sau đó thay đổi giá trị của numeric 1, 2, 3, 4. Ta sẽ quan sát thấy phép cộng sẽ không có giá trị tại Indicator 1. Indicator 2 sẽ thay đổi giá trị khi bạn thay đổi giá trị nhâpf vào numeric 3 và 4. FB và BD của ví dụ này được trình bày trong hình 2.13
Ngoài ra trong while còn có chân iteration(i) có kí hiệu là bộđếm số lần 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 và giữ mãi mãi sau đó nếu cần. Nếu cần giá trị lớn hơn 2,147,483,647, dùng shift register 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 còn sử dụng shift – register trong while loop. Shift register là một thanh ghi hoạt động như một ổn 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 đ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 tính cộng dồn.
Nói cách khác, có thể dùng , shift – register để “chuyển” giá trị của đồi tượng hoặc tín hiệu nào đó ở vòng lặp này sang vòng lặp kế tiếp. Để lập trình bộ điều khiển PID động cơ DC sử dụng card Hocdelam USB -9090 .
2.5.2 Vòng lặp for
Cũng như white 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? Execurion>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). Sauk hi chạy chương trình, Numeric 2 (đóng vai trò là Indicator chỉ ra số vòng đã lặp được) sẽ báo số 99. Lý do là LbVIEW điểm vòng lặp đầu tiên có giá trị (i)=0.
Hình 2.14: Sử dụng shift register rereregister
2.5.3 Ứng dụng vòng lặp để vẽ đồ thị
Áp dụng AY Graph trong bài 3 và Xhite loop trong bài này để vẽđồ thị hàm số y = f(x) theo yêu cầu sau: Viết phương trình vẽ đồ thị: y = 2x. 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 = 2x có dạng đường thẳng nên ta chỉ cần lấy tọa độ x, y của 2 đ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ị x=0 và x=1. Tính y theo công thức y=2x.
Bảng biến thiên của hàm số y=2x
X -∞ 0 1 +∞
Y 0 2
Từ bảng biến thiên nên ta có kết luận là đồ thị y=2x 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ướng kẻ nối hai điểm A, B như sau:
Hãy vẽ đồ thị này bằng LabVIEW sử dụng XY Graph như sau:
- Lấy White loop tại BD>Express>Exee Control>While loop như hình 2.16 - Lấy đồ thị XY Graph để vẽ đồ thị tại FP>Epress>Graph Indicator>XY Graph và tạo các Control, Indicator.
Y X B 2 1 0 Đồ Thị hàm số y = 2x
Trong block diagram , 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à False. Việc tạo hai Boolean Control 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.
2.6 Cấu trúc case
2.6.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 chia ra thành các ô khác nhau (có 2 cửa sổ true hoặc false). Ứng với các ô đó là code LadVIEW cho từng trường hợp.
Tại một thời điểm nào đó, chỉ có duy nhấ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 slect (bộ chọn trường hợp). Cụ thể như hình 2.17 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ới 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.
2.6.2 Ứng dụng của cấu trúc case.
Cấu trúc 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ậc đè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 ngắt điện tới bóng đèn.
Ứng dụng viết chương trình tắt bậc một số bóng đèn theo yêu cầu sau, có 3 bóng đèn tùy vào vị trí công tắc ON hay OFF thì cả 3 bóng tắt hay bậc.
Thực hiện trong LabVIEW như sau:
-Lấy case structure bằng cách vào BD>Epress>Execution>case structure như hình vẽ 2.17
-Lấy nút nhấn (công tắc) bằng cách vào FP>Epress>Botton>chọn kiểm công tắc gặt lên xuống
-Nối nhấn nút vào case selector.
-Quan sát thấy 2 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 2.18 Hình ảnh FP và BD của chương trình bậc/tắt 3 bóng đèn như hình 2.18 Trong ví dụ case – blooean 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.
Tham khảo thêm ví dụ Case – Boolean 2.vi về dạng cấu trúc case trên kiểu Blooean này. Trong ví dụ Case.
Ví dụ 2: Cấu trúc trường hợp dựa trên Numberic Control
Viết chương trình hiển thị các lời chào khác nhau thùy thuộc vào 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 delêt để xóa đi các đối tượng này
- 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à các Case selector dạng numeric. Bây giờ tùy thuộc vào giá trị của x là 0 hoặc 1 thì trong cửa sô 0 hơặc sửa 1 được thực hiện.
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 RClên khung của cấu trúc Case (được tô xanh) - chon Add Case After
- Tựđộng có một case mang số 2 được tạo ra
- Tạo string constant “Chào anh Bac và anh Nam” trong case số 2 vừa tạo - 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.
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ụ như 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.
Ngay sau khi kết nối String Control và caáu trúc Case sẽ thấy xóa các dấu ngoặc kép hai bên cửa 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ứu không phải số.Ta có thể thay chữ “0”thành “lời chào 1”, giá trị 1 thành “lời chào 2”, giá trị 2 thành “ lời chào 3”.
- Chạy chương trình ta sẽ thấy, giờ nếu ta nhập chữ: lời chào 1 vào string control tại FP thì bên string indicator sẽ xuất hiện ra chữ: Chao anh Bac
Chương 3
CÁC ỨNG DỤNG VỚI CARD HDL USB 9090
3.1 Giới thiệu card HDL 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 PWMv.v.v. HDL 9001 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.
Bảng 3.1 Mô tả cụ thể các chân tín hiệu của card HDL 9001
3.2 Cách kết nối thiết bị USB HDL 9090 vào máy tính
Bảng 3.2 Mô tả các chân của hàm USB HDL 9090 để lập trình
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
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à dạng số 0 – 5V Input SW1-SW4 Tín hiệu và dạng số 0 – 5V Output DIR Xếp bộ đếm xung đếm lên (5V) hay đếm
xuống (0V) Input
PULSE Đếm xung tín hiệu 5V Input PWM1-
PWM2 Xuất tín hiệu PWM đểđiều khiển Output ADC1-
ứng (TRUEL 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
(3-60kHz)
Control Nối giá trị từ 3000 – 60000 vào để chọn tần số tín hiệu PWM card xuất ra.
DI1-DI4 Indicator Gía trị tín hiệu số đọc được từ chân DI1 – DI4 trên card. Gía trị mặc định là TRUE (5V)
ADC1-ADC6 Indicator Gía 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
Máy tính cần cài NI VISA phiên bản 3.1 hay cao hơn. Sau đó thực hiện các bước sau:
Bước 1: Không cắm HDL 9090 vào máy
Chọn Start >> All Programs >> National Instruments >> VISA >> D rier Wizard
Bước 2:Chọn Other … trong khung Device List >> Next
Chọn USB >> Next
Lúc này cắm dây USB HDL 9090 váo máy. Chọn Yes
Nhập 9090 vào khung USB Manufacturer ID (Vendor ID) Nhập 0001 vào khung USB Model Code (Product ID) Chọn Next
Bước 3:
Nhập HDL-9090 vào khung vào khung Instrument Prefix (thay cho chữ
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.
Bước 4:Mở MAX ra
Chọn mục Device & Interface:
Lưu ý: Card USB HDL 9090 khác vào máy, Found new hardWare Wizard yêu cầu Install driver cho card khác này.
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.
3.3 Các ứng dụng card HDL USB 9090
Hướng dẫn thu thập tín hiệu analog, đọc tín hiệu encoder và phát xung PWM với card USB HDL 9090.
Nối cảm biến vào card, thu thập tín hiệu analog card HDL 9090
Thực hiện 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)
Kiểm tra phần mềm 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 hướng dẫn, kết nối HDL 9090’. Khi card nhận biết trong MAX như hình sau là đúng.
3.3.1 Đọ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). - Encoder có 4 dây nối: VCC, GND, Channel A và Channel B. Nối dây VCC và GND tương ứng vào HDL 9090. Dây Channel 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 ta làm theo các bước như bài 1 đểđược block diagram sau
- Bây giờ Right click lên chân Envoder của hàm và chọn create>>indicator
-Chương trình đã hoàn thành . Chọn thiết bị USB HDL 9090 trông ô USB card và chạy chương trình. Dùng tay xoay động cơ thì sẽ thấy giá trị của Encoder thay đổi tương ứng.
3.3.2Phát Xung PWM để điều khiển động cơ
Hình 3.4 Cách nối dây giữa Card HDL 9090 và moto 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 moto driver.
• Nối giữa chân SW1(chân 11) của Card HDL 9090 và chân DIR của moto