Mục đích của thu thập dữ liệu là thu thập thông tin của các hiện tượng hay các đại lượng vật lý như là điện áp, dòng điện, nhiệt độ, áp suất hoặc âm thanh. Sự thu thập dữ liệu trên PC sử dụng một sự kết hơp giữa mô đun phần cứng, phần mềm ứng dụng và một máy tính để thực hiện việc thu thập. Trong khi mỗi hệ thống thu thập dữ liệu được định nghĩa bởi yêu cầu ứng dụng của nó. Mỗi hệ thống chia sẽ một mục đích chung thu được, phân tích và nhận thông tin hiện có. Những hệ thống thu thập dữ liệu hợp nhất những tín hiệu, các cảm biến, những cơ cấu chấp hành, những trạng thái tín hiệu, những thiết bị thu thập dữ liệu và phần mềm ứng dụng
105 trang |
Chia sẻ: lethao | Lượt xem: 3089 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Luận văn Hệ thống thu thập dữ liệu nhiều kênh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ền theo chuẩn RS-232 của EIA (Electronics Industry Associations).
Chuẩn RS-232 quy định mức logic 1 ứng với điện áp từ -3V đến -25V (mark), mức logic 0 ứng với điện áp từ 3V đến 25V (space) và có khả năng cung cấp dòng từ 10 mA đến 20 mA. Ngoài ra, tất cả các ngõ ra đều có đặc tính chống chập mạch.
Chuẩn RS-232 cho phép truyền tín hiệu với tốc độ đến 20.000 bps nhưng nếu cáp truyền đủ ngắn có thể lên đến 115.200 bps.
Các phương thức nối giữa DTE và DCE:
Đơn công (simplex connection): dữ liệu chỉ được truyền theo 1 hướng.
Bán song công ( half-duplex): dữ liệu truyền theo 2 hướng, nhưng mỗi thời
điểm chỉ được truyền theo 1 hướng.
Song công (full-duplex): số liệu được truyền đồng thời theo 2 hướng.
Định dạng của khung truyền dữ liệu theo chuẩn RS – 232 như sau:
Hình 1.56 – Khung truyền dữ liệu theo chuẩn RS – 232
Khi không truyền dữ liệu, đường truyền sẽ ở trạng thái mark (điện áp -10V). Khi bắt đầu truyền, DTE sẽ đưa ra xung Start (space: 10V) và sau đó lần lượt truyền từ D0 đến D7 và Parity, cuối cùng là xung Stop (mark: –10V) để khôi phục trạng thái đường truyền. Dạng tín hiệu truyền mô tả như sau (truyền ký tự A):
Hình 1.41 – Tín hiệu truyền của ký tự ‘A’
Các đặc tính kỹ thuật của chuẩn RS-232 như sau:
Chiều dài cable cực đại
15m
Tốc độ dữ liệu cực đại
20 Kbps
Điện áp ngõ ra cực đại
± 25V
Điện áp ngõ ra có tải
± 5V đến ± 15V
Trở kháng tải
3K đến 7K
Điện áp ngõ vào
± 15V
Độ nhạy ngõ vào
± 3V
Trở kháng ngõ vào
3K đến 7K
Các tốc độ truyền dữ liệu thông dụng trong cổng nối tiếp là: 1200 bps, 4800 bps, 9600 bps và 19200 bps.
Hình 1.42 – Cấu trúc chân của RS – 232
Cổng COM có hai dạng: đầu nối DB25 (25 chân) và đầu nối DB9 (9 chân) mô tả như hình 2.38. Ý nghĩa của các chân mô tả như sau:
D25
D9
Tín hiệu
Hướng truyền
Mô tả
1
–
–
–
Protected ground: nối đất bảo vệ
2
3
TxD
DTE – DCE
Transmitted data: dữ liệu truyền
3
2
RxD
DCE – DTE
Received data: dữ liệu nhận
4
7
RTS
DTE – DCE
Request to send: DTE yêu cầu truyền dữ liệu
5
8
CTS
DCE – DTE
Clear to send: DCE sẵn sàng nhận dữ liệu
6
6
DSR
DCE – DTE
Data set ready: DCE sẵn sàng làm việc
7
5
GND
–
Ground: nối đất (0V)
8
1
DCD
DCE – DTE
Data carier detect: DCE phát hiện sóng mang
20
4
DTR
DTE – DCE
Data terminal ready: DTE sẵn sàng làm việc
22
9
RI
DCE – DTE
Ring indicator: báo chuông
23
–
DSRD
DCE – DTE
Data signal rate detector: dò tốc độ truyền
24
–
TSET
DTE – DCE
Transmit Signal Element Timing: tín hiệu định thời truyền đi từ DTE
15
–
TSET
DCE – DTE
Transmitter Signal Element Timing: tín hiệu định thời truyền từ DCE để truyền dữ liệu
17
–
RSET
DCE – DTE
Receiver Signal Element Timing: tín hiệu định thời truyền từ DCE để truyền dữ liệu
18
–
LL
Local Loopback: kiểm tra cổng
21
–
RL
DCE – DTE
Remote Loopback: Tạo ra bởi DCE khi tín hiệu nhận từ DCE lỗi
14
–
STxD
DTE– DCE
Secondary Transmitted Data
16
–
SRxD
DCE – DTE
Secondary Received Data
19
–
SRTS
DTE – DCE
Secondary Request To Send
13
–
SCTS
DCE – DTE
Secondary Clear To Send
12
–
SDSRD
DCE – DTE
Secondary Received Line Signal Detector
9, 10, 25
–
Dành riêng cho chế độ test
11
–
Không dùng
7.1.2 Truyền thông giữa hai nút
Các sơ đồ khi kết nối dùng cổng nối tiếp:
Hình 1.43 – Kết nối đơn giản trong truyền thông nối tiếp
Khi thực hiện kết nối như trên, quá trình truyền phải bảo đảm tốc độ ở đầu phát và thu giống nhau. Khi có dữ liệu đến DTE, dữ liệu này sẽ được đưa vào bộ đệm và tạo ngắt.
Ngoài ra, khi thực hiện kết nối giữa hai DTE, ta còn dùng sơ đồ sau:
Hình 1.44 – Kết nối trong truyền thông nối tiếp dùng tín hiệu bắt tay
Khi DTE1 cần truyền dữ liệu thì cho DTR tích cực tác động lên DSR của DTE2 cho biết sẵn sàng nhận dữ liệu và cho biết đã nhận được sóng mang của MODEM (ảo). Sau đó, DTE1 tích cực chân RTS để tác động đến chân CTS của DTE2 cho biết DTE1 có thể nhận dữ liệu. Khi thực hiện kết nối giữa DTE và DCE, do tốc độ truyền khác nhau nên phải thực hiện điều khiển lưu lượng. Quá trình điều khiển này có thể thực hiện bằng phần mềm hay phần cứng. Quá trình điều khiển bằng phần mềm thực hiện bằng hai ký tự Xon và Xoff. Ký tự Xon được DCE gởi đi khi rảnh (có thể nhận dữ liệu). Nếu DCE bận thì sẽ gởi ký tự Xoff. Quá trình điều khiển bằng phần cứng dùng hai chân RTS và CTS. Nếu DTE muốn truyền dữ liệu thì sẽ gởi RTS để yêu cầu truyền, DCE nếu có khả năng nhận dữ liệu (đang rảnh) thì gởi lại CTS.
7.1.3 Truy xuất cổng nối tiếp
Các cổng nối tiếp trong máy tính được đánh số là COM1, COM2, COM3, COM4 với các địa chỉ như sau:
Tên
Địa chỉ
Ngắt
Vị trí chứa địa chỉ
COM1
3F8H
4
0000H:0400H
COM2
2F8H
3
0000H:0402H
COM3
3E8H
4
0000H:0404H
COM4
2E8H
3
0000H:0406H
7.2 IC MAX 232
IC max232 thường được dùng trong việc kết nối thiết bị ngoại vi qua cổng RS – 232. Nó cho phép chuyển đổi điện áp ngõ vào ± 30V (từ cổng Comm) thành điện áp ngõ ra đảo 5V và 0V để giao tiếp với thiết bị ngoại vi.
Hình 1.45 – Sơ đồ chân IC MAX 232
Hình 1.62 – Cấu trúc Logic của MAX 232
Một vài thông số của MAX 232:
Nguồn cung cấp: 4,5V đến 5,5V
Hai bộ chuyển đổi và truyền nhận
Tốc độ truyền lên đến 120 kbps
Mức độ điện áp ngõ vào ± 30V
Dòng do nguồn cung cấp: 8 đến 10 mA
Tầm nhiệt độ hoạt động: từ 0 đến 70oC
8. NGÔN NGỮ LẬP TRÌNH VISUAL BASIC 6.0
8.1 Cơ bản về Visual Basic 6.0
Visual Basic 6.0 là một phiên bản của bộ công cụ lập trình Visual Basic, cho phép người dùng tiếp cận nhanh cách thức lập trình trên môi trường Windows. Những ai đã từng quen thuộc với Visual Basic thì tìm thấy ở Visual Basic 6.0 những tính năng trợ giúp mới và các công cụ lập trình hiệu quả. Người dùng mới làm quen với Visual Basic cũng có thể làm chủ Visual Basic 6.0 một cách dễ dàng.
8.1.1 Các thuộc tính cơ bản của các đối tượng trong Visual Basic 6.0
Name: tên của đối tượng, mỗi đối tượng phải có tên khác nhau.
Caption: hiển thị nội dung trên cửa sổ thiết kế.
TabIndex: thứ tự chuyển đến khi nhấn phím.
Tab Font: chọn font hiển thị trên đối tượng.
BackColor, ForeColor: chọn màu hiển thị.
Value: giá trị của đối tượng (dùng cho Check box và Option để xác định trạng thái được chọn hay không chọn).
Text: nội dung chứa trong một Textbox.
MultiLine: cho phép hiện nhiều dòng trên Textbox hay không.
Enable: cho phép đối tượng hoạt động hay không.
Duration: xác định thời gian Timer tràn (đơn vị là ms).
8.1.2 Các sự kiện cơ bản của các đối tượng trên Visual Basic 6
Form_Load: xảy ra mỗi khi mở một form.
Click: xảy ra khi thực hiện nhấn chuột trái trên đối tượng.
Timer: xảy ra mỗi khi Timer tràn.
8.1.3 Các lệnh cơ bản trong Visual Basic 6
8.1.3.1 Lệnh IF - THEN - ELSE
Cấu trúc lệnh:
IF Điều_kiện_1 THEN
Công_việc_1
ELSEIF Điều_kiện_2 THEN Công_việc_2
ELSEIF Điều_kiện_3 THEN Công_việc_3
…
ELSE
Công_việc
END IF
Câu lệnh IF - THEN có thể bao gồm nhiều phát biểu ELSEIF hoặc không có phát biểu nào.
Ví dụ:
IF a > 10 THEN
MsgBox “Lon hon 10”
ELSEIF a > 0 THEN
MsgBox “Lon hon 0 va nho hon 10”
ELSE
MsgBox “Nho hon 0”
END IF
8.1.3.2 Lệnh SELECT CASE
Trong trường hợp có nhiều lựa chọn cho một biểu thức điều kiện, ta có thể thay bằng lệnh Select Case
Cấu trúc lệnh:
SELECT CASE Biểu_thức_điều _kiện
CASE Điều_kiện_1 Lệnh
CASE Điều_kiện_2 Lệnh
CASE Điều_kiện_3 Lệnh
…
ELSE Điều_kiện Lệnh
END SELECT
8.1.3.3 Lệnh FOR
FOR dùng để tạo vòng lặp xác định trước số lần lặp.
Cấu trúc lệnh:
FOR Biến_đếm = Giá_trị_đầu TO Giá_trị_cuối STEP Bước_nhảy
Lệnh
NEXT Biến_đếm
Ví dụ:
FOR i = 1 TO 100 STEP 2
Result = Result + 1
NEXT i
Nếu bỏ qua phát biểu STEP thì xem như bước nhảy là 1 và có thể yêu cầu kết thúc vòng lặp FOR bằng lệnh EXIT FOR.
8.1.3.4 Lệnh DO
Lệnh DO dùng để tạo vòng lặp vô tận và chỉ kết thúc khi điều kiện kiểm tra thoả mãn. Lệnh DO có 2 dạng : kiểm tra điều kiện trước khi thực hiện vòng lăp và sau khi thực hiện vòng lặp.
Cấu trúc lệnh:
DO
Lệnh
LOOP WHILE Điều_kiện
Hay:
DO WHILE Điều_kiện
Lệnh
LOOP
8.2 Lập trình giao tiếp cổng nối tiếp dùng Visual Basic 6.0 sử dụng Mscomm32.ocx
8.2.1 Mô tả
Việc truyền thông nối tiếp trên Windows được thực hiện thông qua một ActiveX có sẵn là Microsoft Comm Control. ActiveX này được lưu trữ trong file MSCOMM32.OCX.
ActiveX MsComm được bổ sung vào một Visual Basic Project thông qua menu Project > Components
Hình 1.46 – Cách bổ xung ActiveX Microsoft Comm Control vào VB6
Hình 1.47 – Biểu tượng và bảng thuộc tính của ActiveX Microsoft Comm Control
8.2.2 Các tham số và thuộc tính
8.2.2.1 Settings
Xác định các tham số cho cổng nối tiếp.
Cú pháp: MSComm1.Settings = ParamString
MSComm1: tên đối tượng
ParamString: là một chuỗi có dạng như sau: "BBBB,P,D,S"
BBBB: tốc độ truyền dữ liệu (bps) trong đó các giá trị hợp lệ là
110
2400
38400
300
9600 (măc định)
56000
600
14400
188000
1200
19200
256000
P: kiểm tra chẵn lẻ, với các giá trị
Giá trị
Mô tả
O
Odd (kiểm tra lẻ)
E
Even (kiểm tra chẵn)
M
Mark (luôn bằng 1)
S
Space (luôn bằng 0)
N
Không kiểm tra
D: số bit dữ liệu (4, 5, 6, 7 hay 8), mặc định là 8 bit
S: số bit stop (1, 1.5, 2)
Ví dụ: MSComm1.Settings = "9600,N,8,1” sẽ xác định tốc độ truyền 9600bps, không kiểm tra parity với 1 bit stop và 8 bit dữ liệu.
8.2.2.2 CommPort
Xác định số thứ tự của cổng truyền thông. Cần phải thiết lập thông số này trước khi mở cổng. Sẽ có lỗi error 68 (Device unavailable) nếu như không mở được cổng này.
Cú pháp: MSComm1.CommPort = PortNumber
PortNumber là giá trị nằm trong khoảng từ 1 đến 16, mặc định là 1.
Ví dụ: MSComm1.CommPort = 1 xác định sử dụng COM1
8.2.2.3 PortOpen
Đặt trạng thái hay kiểm tra trạng thái đóng / mở của cổng nối tiếp. Nếu dùng thuộc tính này để mở cổng nối tiếp thì phải sử dụng trước 2 thuộc tính Settings và CommPort.
Cú pháp: MSComm1.PortOpen = True | False
Giá trị xác định là True sẽ thực hiện mở cổng và False để đóng cổng đồng thời xoá nội dung của các bộ đệm truyền, nhận.
Ví dụ: Mở cổng COM1 với tốc độ truyền 9600 bps
MSComm1.Settings = "9600,N,8,1"
MSComm1.CommPort = 1
MSComm1.PortOpen = True
8.2.2.4 Input
Nhận một chuỗi ký tự và xóa khỏi bộ đệm .Nếu InputMode là comInputModeText thì giá trị trả về sẽ là một xâu tức có kiểu String , dữ liệu dạng text trong một biến kiểu Variant. Nếu InputMode = comInputModeBinary thì thuộc tính này sẽ trả lại dữ liệu dạng nhị phân dưới dạng một mảng kiểu byte trong một biến Variant.
Cú pháp: InputString = MSComm1.Input
Thuộc tính này kết hợp với InputLen để xác định số ký tự đọc vào. Nếu InputLen = 0 thì sẽ đọc toàn bộ dữ liệu có trong bộ đệm.
8.2.2.5 InBuferSize
Cú pháp: MSComm1. InBuferSize [ = value ]
Thiết lập hoặc trả lại kích thước của bộ đệm nhận, tính = byte. Mặc định là 1024 byte. Không được nhầm lẫn với đặc tính InBufferCount là số byte đang chờ trong bộ đệm nhận.
8.2.2.6 InBufferCout
Cú pháp: MSComm1. InBufferCout [ = value ]
Trả lại số kí tự đang có trong bộ đệm nhận Bạn có thể xoá bộ đệm nhận bằng cách đặt thuộc tính này = 0 . Không nhầm với thuộc tính InBufferSize là tổng kích thước của bộ đệm nhận.
8.2.2.7 InputLen
Cú pháp: MSComm1.InputLen [ = value ]
Thiết lập hoặc trả lại số byte mỗi lần thuộc tính Input đọc trong bộ đệm nhận. Mặc định giá trị Value = 0 tức là thuộc tính Input sẽ đọc hết nội dung của bộ đệm nhận khi thuộc tính này được gọi. Nếu số kí tự trong bộ đệm nhận không = InputLen thì thuộc tính Input sẽ trả lại kí tự rỗng “”. Ví thế cần phải chọn cách kiểm tra InBufferCount để chắc chắn số kí tự yêu cầu đã có đủ trước khi dùng lệnh .Input. Tính chất này rất là có ích khi đọc dữ liệu một máy mà dữ liệu ra được định dạng bằng các khối có kích thước cố định.
8.2.2.8 InputMode
Cú pháp: MSComm1.InputMode [ = value ]
Value = 0 hay = comInputModeText dữ liệu nhận được dạng văn bản kiểu kí tự theo chuẩn ANSI. Dữ liệu nhận được sẽ là một sâu. Value=1 hay = comInputModeBinary dùng nhận mọi kiểu dữ liệu như kí tự điều khiển nhúng, kí tự NULL,.. Giá trị nhận được từ Input sẽ là một mảng kiểu Byte.
8.2.2.9 NullDiscard
Cú pháp: MSComm1.NullDiscard [ = value ]
Tính chất này quyết định kí tự trống có được truyền từ cổng đến bộ đệm nhận hay không. Nếu value = True kí tự này không được truyền. value = false kí tự trống sẽ được truyền. Kí tự trống được định nghĩa theo chuẩn ASCII là kí tự 0 – chr$(0).
8.2.2.10 Output
Ghi dữ liệu vào bộ đệm truyền. có thể truyền kiểu text hoặc kiểu nhị phân. Nếu truyền bằng kiểu text thì cho một biến Variant = kiểu String, nếu truyền kiểu nhị phân thì cho cho Output= variant = một mảng kiểu Byte.
8.2.2.11 OutBufferCount: trả lại số kí tự trong bộ đệm truyền.
8.2.2.12 OutBuferSize: giống như InBuferSize, mặc định là 512.
8.2.2.13 RthresHold
Cú pháp: MSComm1.Rthreshold [ = value ]
[Value] kiểu số nguyên. Thiết lập số kí tự nhận được trước khi gây lên sự kiện comEvReceive. Mặc định = 0 tức là không có sự kiện OnComm khi nhận được dữ liệu. Thiết lập = 1 tức là sự kiện OnComm xảy ra khi bất kì kí tự nào được chuyển đến bộ đệm nhận.
8.2.2.14 SThreshold
Thiết lập và trả lại số kí tự nhỏ nhất được cho phép trong bộ đệm gửi để xảy ra sự kiện OnComm = comEvSend . Theo mặc định giá trị này = 0 tức là khi truyền sẽ không gây ra sự kiện OnComm. Nếu thiết lập thông số này =1 thì sự kiện OnComm xảy ra khi bộ đệm truyền rỗng. Sự kiện OnComm = comEvSend chỉ xảy ra khi mà số kí tự trong bộ đệm truyền nhỏ hơn hoặc = Sthreshold. Nếu số kí tự trong bộ đệm này luôn lớn hơn Sthreshold thì sự kiện này không thể xảy ra.
8.2.2.15 Sư kiện OnComm
Sự kiện OnComm được phát sinh vào bất cứ khi nào giá trị của đặc tính CommEvent thay đổi.
Sự kiện : Private Sub MsComm_OnComm()
Đặc tính CommEvent chứa mã số của lỗi hay sự kiện phát sinh bởi sự kiện OnComm. Nên đặt các đặc tính Rthreshold hoặc Streshold bằng 0 để vô hiệu bẫy sự kiện Receive and Send.
CommEvent trả lại phần lớn sự kiện giao tiếp hoặc có lỗi. CommEvent xảy ra khi có lỗi hoặc khi xảy ra sự kiện nào đó. Sau đây là một số hằng số lỗi:
Sự kiện
Giá trị
Miêu tả sự kiện
comEventBreak
1001
Xảy ra khi nhận được một tín hiệu Break.
comEventFrame
1004
Lỗi hệ thống. Phần cứng phát hiện ra một lỗi hệ thống
comEventOverrun
1006
Xảy ra khi cổng tự tràn( Overrun). Một kí tự không được
đọc từ phần cứng trước khi kí tự tiếp theo tới và do đó kí tự
này bị mất.
comEventRxOver
1008
Xảy ra khi bộ đệm nhận bị tràn. Không có đủ chỗ cho dữ liệu trong bộ đệm nhận.
comEventRxParity
1009
Lỗi Parity. Phần cứng phát hiện ra một lỗi Parity.
comEventTxFull
1010
xảy ra khi bộ đệm truyền bị đầy. Bộ đệm truyền bị đầy trong khi ghi dữ liệu lớn vào bộ đệm
comEventDCB
1011
Một lỗi không mong muốn khi đang khôi phục lại khối điều khiển thiết bị( DCB – Device Control Block) cho cổng
Một số sự kiện :
Sự kiện
Giá trị
Miêu tả sự kiện
comEvSend
1
Xảy ra khi số kí tự trong bộ đệm truyền nhỏ hơn giá trị
SthresHold.
comEvReceive
2
Xảy ra khi bộ đệm nhận được số kí tự bằng giá trị RthresHold. Sự kiện này được tạo ra liên tục cho tới khi bạn dùng thuộc tính Input để lấy hết dữ liệu từ trong bộ đệm nhận.
RcomEvCTS
3
Xảy ra khi có thay đổi trong đường CTS( Clear To Send)
comEvDSR
4
Xảy ra khi thay đổi trong đường DSR( Data Set Ready). Sự kiện này chỉ xảy ra khi đường DSR thay đổi từ 1 -> 0.
comEvCD
5
Xảy ra khi có thay đổi trong đường CD( Carrier Detect)
comEvRing
6
Phát hiện chuông (Ring).Một số UART không hỗ trợ sự kiện này.
comEvEOF
7
Xảy ra khi nhận được kí tự kết thúc file ( kí tự 26 trong bảng mã ASCII)
8.3 Giới thiệu về ActiveX Teechart
8.3.1 Giới thiệu
Để sử dụng Teechart ta copy teechart7.ocx vào C:/Windows/system32, dùng Visual Basic 6.0 mở Teechart thông qua menu Project > Components
Hình 1.48 – ActiveX Teechart, biểu tượng và giao diện
Để thay đổi giao diện, thiết lập thông số ta kích chuột phải vào giao diện trên Form và chọn Edit. Cửa sổ Editing hiện ra.
Hình 1.49 – Cửa sổ Editing và các kiểu đò thị
Tại TAB Chart/Series, ta chọn Add để thêm đồ thị cần hiển thị và chọn kiểu đồ thị. Ở đây hổ trợ nhiều kiểu đồ thị khác nhau. Bỏ Check 3D để được đồ thị 2D. Kết quả sau khi chọn kiểu đồ thị Point 2D
Hình 1.50 – Đồ thị Point 2D
Ngoài ra, trong cửa sổ Editing ta có thể cài đặt các thông số của đồ thi như Asix (trục đồ thị), Little (Nhãn, tiêu đề)…
8.3.2 Các lệnh cơ bản
8.3.2.1 Lệnh xóa đồ thị
With TChart1.Series(0)
.Clear
End With
Tchart1 là tên của giao diện đồ thị
Series(0) là thứ tự của đồ thị. Ví dụ nếu muốn vẽ 2 đồ thị trên 1 giao diện thì thứ tự của đồ thị lần lược là Series(0), Series(1).
Clear là lệnh xóa.
8.3.2.2 Lệnh vẽ một điểm lên đồ thị
With TChart1.Series(0)
.AddXY timer * 10, vtecd, "", vbRed
End With
AddXY là lệnh vẽ 1 điểm lên đồ thị có trục X là (timer*10) và trục Y là vtecd, đồ thị có màu vbRed (màu chuẩn của Visual Basic 6).
Hoặc lệnh vẽ đồ thị đơn giãn hơn là:
With TChart1.Series(0)
.Add vtecd, "", vbRed
End With
Add là lệnh vẽ 1 điểm lên đồ thị có trục Y là vtecd, trục X là điểm kế tiếp hướng tăng (giả sử trước đó đã vẽ một điểm nào đó, nếu chưa vẽ điểm nào thì X bắt đầu là 0).
9. ĐIỀU KHIỂN SỐ-ĐIỀU KHIỂN HỒI TIẾP
9.1 Hệ thống điều khiển số
9.1.1 Cấu trúc hệ thống điều khiển số
Máy tính số
Đối tượng
Công suất chấp hành
DAC
r(kt)
ADC
Cảm biến
Số (digital) analog
Hình 1.51: Cấu trúc hệ thống điều khiển số
9.1.2 Hệ thống lấy mẫu tín hiệu
Lấy mẫu trong kênh hồi tiếp
Chấp hành và đối tượng
DA
Máy tính số
r(kt) + e(kt) u(kt) u(t)
- y(kt) zoh
ADC
Hồi tiếp
Hình 1.52: Hệ thống lấy mẫu tín hiệu
9.2 Phương pháp điều khiển ON/OFF
Sơ đồ điều khiển lò nhiệt được thể hiện qua hình bên dưới:
Hình 1.53 Sơ đồ điều khiển lò nhiệt
Phương pháp điều khiển ON-OFF còn được gọi là phương pháp đóng ngắt hay dùng khâu relay có trễ: cơ cấu chấp hành sẽ đóng nguồn để cung cấp năng lượng ở mức tối đa cho thiết bị tiêu thụ nhiệt nếu nhiệt độ đặt w(k) lớn hơn nhiệt độ đo y(k), ngược lại mạch điều khiển sẽ ngắt mạch cung cấp năng lượng khi nhiệt độ đặt nhỏ hơn nhiệt độ đo.
Một vùng trễ được đưa vào để hạn chế tần số đóng ngắt như sơ đồ khối ở trên: nguồn chỉ đóng khi sai số e(k) > ∆ và ngắt khi e(k) < - ∆. Như vậy, nhiệt độ đo y(k) sẽ dao động quanh giá trị đặt w(k) và 2∆ còn được gọi là vùng trễ của rơ le.
Khâu rơ le có trễ còn gọi là mạch so sánh Smith trong mạch điện tử và như vậy ∆ là giá trị thềm hay ngưỡng.
Điều khiển ON-OFF có ưu điểm là:
Thiết bị tin cậy, đơn giản, chắc chắn, hệ thống luôn hoạt động được với mọi tải.
Phương pháp này có giá thành rẻ, được ứng dụng cho những đối tượng không yêu cầu cao về chất lượng điều khiển.
Tính toán thiết kế ít phức tạp và cân chỉnh dễ dàng.
Nhưng có nhược điểm là sai số xác lập sẽ lớn do hệ chỉ cân bằng động quanh nhiệt độ đặt và thay đổi theo tải. Khuyết điểm này có thể được hạn chế khi giảm vùng trễ bằng cách dùng phần tử đóng ngắt điện tử ở mạch công suất.
9.3 Phương pháp điều khiển hồi tiếp
Bộ điều khiển PID được sử dụng rất rộng rãi trong thực tế để điều khiển nhiều loại đối tượng khác nhau như nhiệt độ lò nhiệt, tốc độ động cơ, mực chất lỏng trong bồn chứa,… Lý do bộ điều khiển này được sử dụng rộng rãi là vì nó có khả năng triệt tiêu sai số xác lập, tăng đáp ứng quá độ, giảm độ vọt lố nếu các tham số bộ điều khiển được chọn lựa thích hợp. Do sự thông dụng của nó nên nhiều hãng sản xuất thiết bị điều khiển đã cho ra đời các bộ điều khiển thương mại rất thông dụng. Thực tế các phương pháp thiết kế bộ điều khiển PID dùng quỹ đạo nghiệm số, giản đồ Bode hay phương pháp giải tích rất ít được sử dụng do việc khó khăn trong xây dựng hàm truyền đối tượng. Phương pháp phổ biến nhất để chọn tham số PID thương mại hiện nay là phương pháp Ziegler-Nichols.
KHẢO SÁT VÒNG HỞ
Hình 1.54: Đáp ứng nấc của lò nhiệt
Đáp ứng này có thể được xấp xỉ bởi hàm truyền sau:
Trong đó: K : độ lợi tĩnh
T : hằng số thời gian
L : thời gian trễ
Chú ý:
Các tham số của bộ điều khiển PID được tính theo phương pháp đáp ứng nấc của Ziegler-Nichols như bảng 1.
Bảng 1
Bộ điều khiển
KP
TI
TD
P
1/a
PI
0.9/a
3L
PID
1.2/a
2L
L/2
ĐIỀU KHIỂN VÒNG KÍN
Sơ đồ điều khiển như hình 1.55.
Hình 1.55 Sơ đồ điều khiển lò nhiệt
Bộ điều khiển PID có hàm truyền dạng liên tục như sau:
Có 3 phương pháp căn bản để biến đổi z hàm truyền trên.
Phương pháp Euler thuận (Forward Euler):
Phương pháp Euler nghịch (Backward Euler):
Phương pháp hình thang (Tustin):
Biến đổi Z của nó như sau:
Viết lại G(z) như sau:
Đặt:
Suy ra:
Từ đó, ta tính được tín hiệu điều khiển u(k) khi tín hiệu vào e(k) như sau:
Suy ra:
Việc hiệu chỉnh 3 thông số Kp , Ki, Kd sẽ làm tăng chất lượng điều khiển. Ảnh hưởng của 3 thông số này lên hệ thống như sau:
Điều khiển tỉ lệ (Kp) có ảnh hưởng làm giảm thời gian lên và sẽ làm giảm nhưng không loại bỏ sai số xác lập. Điều khiển tích phân (Ki) sẽ loại bỏ sai số xác lập nhưng có thể làm đáp ứng quá độ xấu đi. Điều khiển vi phân (Kd) có tác dụng làm tăng sự ổn định của hệ thống, giảm vọt lố và cải thiện đáp ứng quá độ. Ảnh hưởng của mỗi bộ điều khiển Kp, Ki, Kd lên hệ thống vòng kín được tóm tắt ở bảng bên dưới (bảng 2).
Bảng 2
Đáp ứng
vòng kín
Thời gian
lên
Vọt lố
Thời gian
xác lập
Sai số
xác lập
Kp
Giảm
Tăng
Thay đổi nhỏ
Giảm
Ki
Giảm
Tăng
Tăng
Loại bỏ
Kd
Thay đổi nhỏ
Giảm
Giảm
Thay đổi nhỏ
Chương 2: THIẾT KẾ VÀ THI CÔNG
1. NHIỆM VỤ VÀ HƯỚNG GIẢI QUYẾT
1.1 Nhiệm Vụ
Nhiệm vụ của đồ án này là thiết kế một hệ thống thu thập dữ liệu nhiều kênh, đối tượng thu thập và giám sát là nhiệt độ lò ba lò nhiệt. Yêu cầu là chúng ta phải giám sát và điều khiển nhiệt độ ba lò nhiệt luôn duy trì ở một nhiệt độ như ta mong muốn. Sử dụng vi xử lý 89V51 làm bộ điều khiển trung gian để giao tiếp máy tính.
1.2 Hướng Giải Quyết
Sử dụng các cảm biến nhiệt độ như PT100, LM35.
Sử dụng bộ chuyển đổi A/D và D/A.
Sử dụng phương pháp điều khiển ON/OFF và PID.
Thiết kế và lập trình giao tiếp giữa vi điều khiển 89V51RB2 với máy vi tính
và lò nhiệt.
Sử dụng ngôn ngữ visual basic để tạo giao diện và giao tiếp với vi xử lý
89V51 qua RS232.
Viết chương trình điều khiển.
2. THIẾT KỀ PHẦN CỨNG
2.1 Sơ Đồ Khối Điều Khiển
Hình 2.1: Sơ đồ khối điều khiển
Máy tính ( PC )
Sơ đồ khối chi tiết hệ thống điều khiển
To
Max232
Khuyếch đại tín hiệu
Bộ chuyển
đổi ADC và MUX
PT100
Lò nhiệt 1
Vi xử lý 89V51
Khuyếch đại tín hiệu
LM35
Lò nhiệt 2
Khuyếch đại tín hiệu
LM35
Lò nhiệt 3
PWM
Bộ chuyển đổi
DAC
K.đại và chấp hành 3
K.đại và chấp hành 2
K.đại và chấp hành 1
Bus 3
Khuếch đại
Quạt3
Khuếch đại
Quạt2
Bus 3
Khuếch đại
Quạt1
Hình 2.2: Sơ đồ khối chi tiết hệ thống điều khiển
Lò 1: Điều khiển ON/OFF
Lò 2: Điều khiển ON/OFF
Lò 3: Điều khiển ON/OFF hoặc PID
2.2 Giải thích nguyên lý từng khối
Máy tính(PC):
Dùng ngôn ngữ lập trình Visual Basic 6.0 làm phương tiện giao tiếp. Nhiệm vụ của Visual Basic 6 là:
Tạo giao diện người dùng để giao tiếp với người sử dụng. Trên đó cho phép thay đổi giá trị nhiệt độ yêu cầu, thay đổi bộ thông số PID, vẽ đồ thị biểu diễn đáp ứng của hệ thống.
Thiết lập giao tiếp với khối Vi điều khiển qua cổng nối tiếp RS – 232.
Lấy giá trị đo nhiệt đo thực tế do khối vi điều khiển truyền về để xử lý.
Từ giá trị đo nhiệt độ thực tế, gửi lệnh xuống vi xử lý để thực hiện việc điều khiển đóng/mở (on/off) lò, hay thực hiện thuật toán PID xuất giá trị độ rộng xung về khối Vi xử lý để điều khiển.
Vi điều khiển :
Dùng ngôn ngữ lập trình hợp ngữ 8051 để lập trình cho Vi điều khiển 89V51RB2. Nhiệm vụ của khối vi điều khiển là:
Thiết lập giao tiếp với máy tính qua cổng giao tiếp nối tiếp.
Thực hiện việc lấy nhiệt độ thực tế của lò nhiệt từ bộ chuyển đổi ADC và truyền giá trị này về cho khối máy tính để xử lý.
Xuất giá trị ra bộ chuyển đổi DAC để điều khiển việc đóng/mở lò nhiệt.
Thực hiện thuật toán điều chế độ rộng xung (PWM), xuất xung PWM và xung điều khiển nhiệt độ của lò nhiệt cho khối công suất. Giá trị độ rộng xung nhận được từ khối máy tính.
Mạch công suất: nhiệm vụ của khối này là:
Khuếch đại công suất từ tín hiệu điều khiển do khối vi điều khiển truyền tới để điều khiển lò nhiệt.
Bộ chuyển đổi ADC : Do các tín hiệu đầu ra của cảm biến là các tín hiệu tương tự không thích hợp để đưa vào các mạch số để xử lý. Vì thế cần phải có mạch ADC để chuyển đổi từ tương tự sang số để các vi mạch số có thể hiểu và xử lý được.
Bộ chuyển đổi DAC: Dùng chuyển đổi từ tín hiệu số sang tương tự để điều khiển.
Max 232: Max-232 dùng để giao tiếp giữa máy tính và vi điều khiển
Cảm biến: để thu thập các giá trị của các đại lượng vật lý của môi trường bên ngoài.
Mạch khuyếch đại và điều chỉnh: do giá trị của đầu ra các cảm biến thường nhỏ so với bộ chuyển đổi ADC của hệ thống vì thế cần có mạch khuyếch đại và chuyển đổi cho thích hợp với các mạch chuyển đổi.
2.2.1 Sơ Đồ Nguyên Lý
KHỐI VI XỬ LÝ
2.2.2 Đối tượng lò nhiệt thực tế
Hàm truyền của lò nhiệt được xác định bằng phương pháp thực nghiệm. Cấp nhiệt tối đa cho lò( công suất vào P=100%), nhiệt độ lò tăng dần.Sau thời gian nhiệt độ lò đạt giá trị bão hòa. Do đặc tính chính xác của lò nhiệt khá phức tạp nên ta xấp xỉ bằng đáp ứng gần đúng.
a.Đặc tính