You are on page 1of 88

Khi đọc qua tài liệu này, nếu phát hiện sai sót hoặc nội dung kém

chất lượng
xin hãy thông báo để chúng tôi sửa chữa hoặc thay thế bằng một tài liệu
cùng chủ đề của tác giả khác.

Bạn có thể tham khảo nguồn tài liệu được dịch từ tiếng Anh tại đây:

http://mientayvn.com/Tai_lieu_da_dich.html

Thông tin liên hệ:

Yahoo mail: thanhlam1910_2006@yahoo.com

Gmail: frbwrthes@gmail.com
Tài liệu:
TỔNG QUAN VỀ DAQ (DATA
ACQUISITION AND
CONTROL)
Tài liệu DAQ Chương 1

Chương 1
TỔNG QUAN VỀ DAQ (DATA ACQUISITION AND
CONTROL)
1. Định nghĩa và khái niệm
Thu thập dữ liệu (data acquisition) là quá trình chuyển tín hiệu vật lý từ thế giới
thực thành tín hiệu điện để đo lường và chuyển sang tín hiệu số cho quá trình xử lý,
phân tích và lưu trữ bằng máy tính.
Trong hầu hết các ứng dụng, hệ thu thập dữ liệu (Data Acquisition (DAQ)
System) được thiết kế không những chỉ để thu thập dữ liệu mà còn cả chức năng điều
khiển. Vì vậy khi nói hệ DAQ thường hàm ý cả chức năng điều khiển (Data
Acquisition and Control)

Hình 1.1 – Các thành phần cơ bản của hệ DAQ

Trang 1 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 1

1.1. Bộ chuyển đổi (transducer) và cảm biến (sensor)


Bộ chuyển đổi và cảm biến thực hiện thay đổi các tín hiệu vật lý thành tín hiệu
điện để phần cứng có thể xử lý.
Bộ chuyển đổi có thể chuyển hầu hết các đại lượng cần đo sang tín hiệu điện
như: cặp nhiệt điện, nhiệt kế điện trở (RTD – Resistive Temperature Detector), nhiệt
trở, …

1.2. Dây nối và cáp truyền thông


Dây nối: liên kết ngõ ra của chuyển đổi/cảm biến đến phần cứng khối xử lý tín
hiệu hoặc từ khối xử lý tín hiệu đến PC nếu khối xử lý tín hiệu cách xa PC.
Trường hợp phần cứng khối xử lý tín hiệu cách xa PC và chuẩn truyền tín hiệu
là RS-232 hoặc RS-485 : cáp truyền thông
Đây thường là thành phần cồng kềnh nhất của hệ thống và dễ chịu tác động của
nhiễu bên ngoài, đặc biệt trong môi trường công nghiệp khắc nghiệt. Vì vậy cần quan
tâm đặc biệt đến vấn đề chống nhiễu cho dây nối và cáp truyền thông để giảm thiểu
ảnh hưởng của nhiễu.

1.3. Xử lý tín hiệu (Data conditioning)


Tín hiệu điện đầu ra của cảm biến cần được chuyển sang dạng thích hợp, tương
thích với phần cứng khối thu thập dữ liệu, đặc biệt là bộ chuyển đổi A/D.
Các nhiệm vụ của thành phần này có thể là:
- Lọc: thường là bộ lọc thông thấp để loại các thành phần tần số nhiễu.
- Khuếch đại: dùng để tăng độ phân giải cho hệ thống.
- Tuyến tính hóa: dùng để hiệu chỉnh cho các bộ chuyển đổi phi tuyến như
cặp nhiệt điện.
- Cách ly: dùng để cách ly với máy tính nhằm bảo vệ máy tính trước các
thành phần điện áp cao.
- Kích thích: dùng cho các bộ chuyển đổi cần dòng hay áp kích thích ngoài
như cảm biến điện trở, nhiệt trở, …

1.4. Phần cứng thu thập dữ liệu


Thực hiện các chức năng sau:
- Chuyển tín hiệu dạng tương tự sang dạng số để hiển thị, lưu trữ và phân tích
- Đọc vào tín hiệu số chứa đựng thông tin về quá trình của một hệ thống.
- Chuyển tín hiệu số từ PC sang tín hiệu điều khiển để điều khiển một hệ
thống hay quá trình.
- Xuất ra tín hiệu điều khiển dạng số.
Phần cứng thu thập dữ liệu tồn tại dưới nhiều hình thức khác nhau từ nhiều
nhà sản xuất, có thể là: card giao tiếp mở rộng (plug-in expansion bus boards),
intelligent stand-alone loggers and controllers (loại này có thể được định cấu hình,
quan sát và điều khiển từ máy tính qua RS-232 hoặc có thể hoạt động độc lập), hoặc

Trang 2 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 1

các thiết bi độc lập từ xa có thể điều khiển và định cấu hình từ máy tính qua chuẩn
giao tiếp IEEE-488.

1.5. Phần mềm thu thập dữ liệu


Có 3 lựa chọn:
- Đọc và xuất dữ liệu trực tiếp dùng tác động lên các thanh ghi của phần cứng
thu thập dữ liệu
- Dùng driver đi kèm với phần cứng cung cấp bởi nhà sản xuất để phát triển
phần mềm
- Dùng gói phần mềm ứng dụng cung cấp kèm với phần cứng thu thập dữ liệu
để thực hiện tất cả các nhiệm vụ yêu cầu cho một ứng dụng cụ thể

1.6. Máy chủ


Dùng thực thi các chương trình phần mềm và lưu trữ dữ liệu, có ảnh hưởng rất
lớn đến tốc độ của hệ thống.

2. Cấu hình hệ DAQ


Việc lựa chọn cấu hình cho hệ DAQ phụ thuộc vào:
- Môi trường làm việc (phòng thí nghiệm, thu thập dữ liệu trong cùng khu vực
sản xuất hay từ xa),
- Số lượng cảm biến và cơ cấu chấp hành yêu cầu, vị trí của chúng với máy
chủ, hình thức xử lý tín hiệu yêu cầu, độ khắc nghiệt của môi trường làm
việc là các yếu tố quan trọng.
Các cấu hình thông dụng của hệ DAQ:
- Vào/ra tại chỗ (tập trung) với PC
- Vào/ra phân tán
- Các bộ thu thập dữ liệu và điều khiển độc lập hoặc phân tán
- Các thiết bị theo chuẩn IEEE-488

2.1. Vào / ra tập trung (Plug-in I/O)


- Các mạch vào/ra tập trung được cắm trực tiếp vào máy tính qua các bus mở
rộng
- Đặc điểm: nhỏ gọn, tốc độ thu thập dữ liệu và điều khiển nhanh nhất, chi phí
thấp vì vậy thường được dùng.
- Được sử dụng trong các ứng dụng mà máy chủ ở gần cảm biến và cơ cấu
chấp hành.

Trang 3 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 1

Hình 1.2 – Một số ví dụ của Plug-in I/O board

2.2. Vào / ra phân tán (Distributed I/O)


Trong môi trường sản xuất công nghiệp, cảm biến và cơ cấu chấp hành thường
ở xa máy chủ, ở trong môi trường khắc nghiệt và bao phủ trong một diện tích rộng,
cách xa máy chủ hàng trăm mét. Do đó, khó có thể nhận được tín hiệu nhỏ từ các cảm
biến như cặp nhiệt, cảm biến điện trở (strain gauge) qua đường truyền dài đồng thời
dây nối từ cảm biến về máy chủ dài và tốn kém.
Giải pháp:
- Module xử lý tín hiệu được đặt gần mỗi cảm biến tương ứng cũng như mỗi
cảm biến cần có một module xử lý tín hiệu: vào/ra phân tán.
- Giải pháp này có thể tốn kém nếu có nhiều cảm biến nhưng chất lượng tín
hiệu và độ chính xác cao.
- Dạng thường gặp của vào/ra phân tán là bộ phát số. Bộ phát số này thực
hiện tất cả các chức năng xử lý tín hiệu cần thiết, có bộ vi điều khiển và
chuyển đổi tương tự - số (ADC) để chuyển tín hiệu cần đo sang dạng số. Tín
hiệu dạng số này được truyền về máy chủ bằng chuẩn RS-232 hoặc RS-485.
- RS-232: khoảng cách truyền gần.
- RS-485: (multi-drop): giảm số lượng cáp truyền, có thể kết nối đến 32
modules, khoảng cách truyền có thể lên đến 10km nếu dùng multi-drop
network. (RS-232: tối đa 15m).

Trang 4 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 1

- Cần bộ chuyển đổi từ RS-232 sang RS-485 do hầu hết các máy chủ không
hỗ trợ chuẩn RS-485.

Hình 1.3 – Vào / ra phân bố - module phát số

2.3. Bộ thu thập dữ liệu độc lập hay phân tán


Ưu điểm: giống ưu điểm của I/O phân tán với các bộ xử lý tín hiệu thông minh,
đồng thời khả năng tự quyết định từ xa làm tăng độ tin cậy của hệ thống, có thể điều
khiển và định cấu hình từ máy tính dùng giao tiếp nối tiếp hoặc card PCMCIA
(Personal Computer Memory Card International Association) và có thể hoạt động độc
lập mà không cần máy chủ (đây là mục tiêu chính). Vì vậy rất hữu ích khi phải đặt các
bộ thu thập dữ liệu ở xa hoặc trong môi trường khắc nghiệt hoặc các ứng dụng không
cho phép sự kết nối liên tục tới máy tính (ví dụ: điều khiển nhiệt độ trong các xe tải
đông lạnh).

Trang 5 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 1

Hình 1.4 - Sử dụng card PCMCIA để nhập dữ liệu từ bộ điều khiển / đăng nhập
độc lập

Hình 1.5 - Sơ đồ bộ thu thập dữ liệu độc lập qua giao tiếp nối tiếp RS-232

Trang 6 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 1

Hình 1.6 - Kết nối bộ thu thập dữ liệu độc lập qua mạng điện thoại hay radio

Hình 1.7 - Hệ thu thập dữ liệu phân tán

Trang 7 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 1

2.4. Các thiết bị lập trình được IEEE-488


- Chuẩn truyền thông này còn được gọi là GPIB (General Purpose Interface
Bus), được thành lập năm 1965 bởi Hewlett-Packard để kết nối và điều
khiển các thiết bị đo thử lập trình được của hãng. Chuẩn này nhanh chóng
được thế giới chấp nhận và trở thành chuẩn IEEE-488 nhờ tốc độ, tính linh
hoạt và hữu ích trong việc kết nối các thiết bị trong phòng thí nghiệm.
- GPIB là chuẩn giao tiếp truyền thông song song tốc độ cao cho phép kết nối
đồng thời 15 thiết bị trên bus truyền dữ liệu song song. Thường yêu cầu có
bộ điều khiển GPIB để định địa chỉ cho từng thiết bị và khởi tạo các thiết bị
sẽ truyền thông với nhau.
- Tốc độ truyền thông tối đa, chiều dài cáp truyền tối đa, khoảng cách tối đa
giữa các thiết bị phụ thuộc vào tốc độ và khả năng xử lý của bộ điều khiển
GPIB và loại cáp truyền.
- Phù hợp cho các phòng thí nghiệm nghiên cứu hoặc đo thử trong công
nghiệp
- Có hàng ngàn sản phẩm trên thị trường hỗ trợ chuẩn giao tiếp này

Hình 1.8 - Cấu trúc hệ GPIB thông dụng

Trang 8 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 2

Chương 2
XỬ LÝ TÍN HIỆU NGÕ VÀO CHO HỆ DAQ
(SIGNAL CONDITIONING)
1. Giới thiệu
Tín hiệu điện ngõ ra của bộ chuyển đổi / cảm biến cần được biến đổi cho phù
hợp với ngõ vào của phần cứng DAQ. Ngoài ra, một số bộ chuyển đổi / cảm biến cần
nguồn kích thích hoặc cầu Wheaston và tuyến tính hóa để tín hiệu đo được chính xác.
Hầu hết các hệ DAQ đều bao gồm khâu xử lý tín hiệu dưới một hình thức nào
đó.
Các hình thức cơ bản mà khâu xử lý tín hiệu có thể thực hiện là:
- Khuếch đại
- Cách ly
- Lọc
- Kích thích
- Tuyến tính hóa
Khâu xử lý tín hiệu của hệ DAQ phải thực hiện nhiệm vụ nào và cách thức thực
hiện là gì phụ thuộc vào số lượng và loại của bộ chuyển đổi / cảm biến, yêu cầu về
nguồn kích thích và nối đất cho cảm biến, đồng thời không kém phần quan trọng là
khoảng cách từ cảm biến tới máy chủ trung tâm.

2. Các kiểu xử lý tín hiệu


2.1. Khuếch đại
Là nhiệm vụ chính yếu của khâu xử lý tín hiệu nhằm:
- Tăng độ phân giải cho phép đo (nhiệm vụ chính)
- Tăng tỷ số tín hiệu/nhiễu (SNR)
Tăng độ phân giải:
Ví dụ: Xét tín hiệu ngõ ra cảm biến 0-10mV nếu đưa trực tiếp vào ADC 12bit
với full-scale 10V
ADC 12 bit  có tất cả 212 = 4096 mức điện áp khác nhau.
Điện áp ngõ vào ADC từ 0V – 12V  độ phân giải 10V/4096 = 2,44 mV
Ngõ ra cảm biến từ 0 – 10 mV  chỉ phân biệt 5 mức điện áp: 0V; 2,44 mV;
4,88 mV; 7,32 mV và 9,76 mV.
Nếu thực hiện khuếch đại tín hiệu tại ngõ ra cảm biến 10 lần: điện áp đưa vào
ADC sẽ nằm trong khoảng 0 – 100 mV  phân biệt được 41 mức điện áp khác nhau.
Tăng SNR:
Tín hiệu nhỏ ở ngõ ra của cảm biến cách xa phần cứng DAQ nếu được truyền
trong môi trường nhiễu sẽ bị ảnh hưởng lớn của nhiễu. Nếu tín hiệu nhỏ (bị nhiễu) này
được khuếch đại tại phần cứng DAQ sau khi được truyền qua môi trường nhiễu thì

Trang 9 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 2

nhiễu trong tín hiệu này cũng được khuếch đại như tín hiệu cần đo. Nếu nhiễu so sánh
được với tín hiệu cần đo (SNR thấp) sẽ dẫn đến sai số lớn cho phép đo và phép đo là
vô nghĩa.
Tăng SNR bằng cách khuếch đại tín hiệu nhỏ ở đầu ra cảm biến trước khi
truyền.
Ví dụ: Cặp nhiệt loại J có độ nhạy 50uV/0C. Nếu tín hiệu đầu ra cặp nhiệt được
truyền trong môi trường có nhiễu lớn với khoảng cách 10m, nhiễu đặt lên tín hiệu của
cặp nhiệt có thể lên đến 200uV dẫn đến sai số đến 4oC. Nếu khuếch đại tín hiệu tại đầu
ra cặp nhiệt lên 500 lần thì độ nhạy lúc này là 25mV/0C, sai số đo nhiễu lúc này (hàng
uV) là rất nhỏ.

2.2. Cách ly
 Cách ly dùng Opto : thường dùng cho tín hiệu số

 Cách ly bằng phương pháp từ trường/điện trường: dùng cho tín hiệu tương
tự, thực hiện bằng cách điều chế tín hiệu điện áp thành tần số, sau đó truyền tín
hiệu tần số và biến đổi tần số thành điện áp ở đầu ra
 Cách ly bằng biến áp:

Cách ly giúp bảo vệ thiết bị phần cứng DAQ, PC cũng như người vận hành khỏi
điện áp cao trong quá trình quá độ, sét hay tĩnh điện cũng như hỏng hóc của các thiết
bị cao áp. Các bộ bảo vệ quá áp được đặt ở đầu vào của khâu xử lý tín hiệu để bảo vệ
khâu này. Cách ly còn nhằm đảm bảo vòng nối đất không ảnh hưởng đến tín hiệu đo.

Trang 10 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 2

2.3. Mạch lọc


Mạch lọc thực hiện nhiệm vụ loại bỏ nhiễu ra khỏi tín hiệu cần đo trước khi tín
hiệu này được khuếch đại và đưa vào ADC. Quá trình lọc có thể thực hiện bằng phần
cứng hoặc phần mềm.
Lọc bằng phần mềm: đọc tín hiệu đo nhiều lần hơn cần thiết và lấy trung bình.
Phương pháp này loại bỏ được nhiễu tuần hoàn hoàn toàn nếu các mẫu được trung
bình hóa trong một chu kỳ của nhiễu.
Lọc bằng phần cứng: các mạch lọc tương tự là rẻ nhất, bao gồm các mạch lọc
thụ động (dùng các phần tử thụ động như RLC) và tích cực (dùng khuếch đại thuật
toán – OpAmp)
Các thông số thông dụng của mạch lọc:
- Tần số cắt
- Roll-off: độ dốc của đường cong biên độ theo tần số (biểu đồ Bode) tại tần
số cắt.
- Hệ số phẩm chất: quyết định độ lợi của mạch lọc tại tần số cộng hưởng và
roll-off

2.4. Tuyến tính hóa


Thông thường, quan hệ giữa ngõ ra của cảm biến và tín hiệu đầu vào cần đo là
phi tuyến. Phần mềm của hệ DAQ thường thực hiện chức năng tuyến tính hóa. Tuy
nhiên, nếu mối quan hệ phi tuyến là dự đoán được và có tính lặp lại thì có thể tuyến
tính hóa bằng phần cứng.

3. Phân loại khâu xử lý tín hiệu


3.1. Các mạch xử lý tín hiệu cắm vào PC
- Mạch xử lý tín hiệu nằm trên phần cứng DAQ cắm vào máy chủ như hình.
- Mỗi mạch xử lý tín hiệu cho một loại cảm biến
- Sử dụng cho ứng dụng nhỏ với số lượng cảm biến ít và nằm gần máy chủ

3.2. Các bộ phát 2 dây nối trực tiếp


Bộ phát 2 dây là module xử lý tín hiệu 2 cửa: nhận tín hiệu cần xử lý ở đầu vào
và xuất tín hiệu đã xử lý ở đầu ra. Mỗi module cần một loại cảm biến. Các bộ phát này
không phải là thiết bị thông minh và không có ADC trên mạch.

Trang 11 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 2

Tín hiệu đã được xử lý được truyền về phần cứng hệ DAQ tại máy chủ bằng 2
dây, tín hiệu truyền có thể là điện áp hoặc mạch vòng dòng điện (4-20 mA).
 Tín hiệu truyền điện áp (± 10V hoặc 0-10V) tương thích với hầu hết với đầu
vào các mạch DAQ cho phép giao tiếp dễ dàng với các board DAQ hiện đại.
Tuy nhiên hạn chế của tín hiệu này là sụt áp trên dây truyền ở khoảng cách xa
nên chỉ dùng phương pháp truyền điện áp khi đường truyền ngắn.
 Tín hiệu dòng điện có khả năng miễn nhiễm với nhiễu cao và có thể truyền với
khoảng cách hàng trăm m (lên đến 1000m). Bộ thu chuyển dòng sang áp để đưa
vào ADC. Bộ thu thường là một điện trở khoảng 500  / 10V (dòng 20 mA).
 Mỗi cặp cáp truyền cho một cảm biến riêng lẻ nhiều cáp kết nối đến máy chủ.
 Nguồn cung cấp (15-40V) cần đủ công suất cung cấp dòng cho các modules
theo yêu cầu.
 Sơ đồ khối của một bộ phát 2 dây trực tiếp như hình

Trang 12 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 2

3.3. Vào/ra phân tán - bộ phát số

Mạch xử lý tín hiệu vào/ra phân tán sử dụng bộ phát số

Mạch xử lý tín hiệu vào/ra phân tán sử dụng bộ phát số riêng biệt

Trang 13 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 2

4. Nhiễu và ảnh hưởng của nhiễu


4.1. Khái niệm
Nhiễu: tín hiệu điện không mong muốn trong mạch.
Không thể triệt nhiễu hoàn toàn mà chỉ có thể giảm biên độ nhiễu cho đến khi
biên độ của nó không gây ảnh hưởng lên tín hiệu đo

4.2. Nguồn nhiễu và phân loại nhiễu


Có 3 thành phần tham gia quá trình sinh nhiễu:

Trang 14 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 2

Các hình thức gây nhiễu thường gặp trong hệ DAQ


- Ghép nối hỗ cảm (inductive coupling)
- Ghép nối điện dung (capacitive coupling)
- Ghép nối điện trở (conductive coupling)
Ghép nối điện trở:

Ghép nối điện dung:

Trang 15 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 2

Ghép nối hỗ cảm:

Trang 16 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 2

4.3. Chống nhiễu


Dùng cáp có vỏ bọc và nối đất vỏ bọc : giảm nhiễu do tương hỗ điện dung gây
ra.
Vn = jω RS C2S VNS

Nối đất vỏ cáp:

Trang 17 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 2

Dùng cáp có vỏ bọc và xoắn đôi


Dùng cáp xoắn đôi
Dùng cáp đồng trục

Trang 18 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

Chương 3
GIAO TIẾP GIỮA HỆ DAQ VỚI MÁY TÍNH
1. Chuyển đổi AD (Analog to Digital)
1.1. Nguyên lý
Chuyển đổi AD là qua trình chuyển từ tín hiệu tương tự từ các nguồn bên ngoài
thành dạng tín hiệu số để máy tính có thể xử lý được.
Quá trình chuyển đổi AD bao gồm:
- Lấy mẫu tín hiệu (Sampling).
- Lượng tử hóa (Quantizing).
- Mã hóa (Coding).

1.1.1. Lấy mẫu


Là quá trình thay tín hiệu tương tự bằng biên độ của nó ở những thời điểm cách
đều nhau, gọi là chu kỳ lấy mẫu. Các giá trị này sẽ được chuyển thành số nhị phân để
có thể xử lý được. Vấn đề ở đây là phải lấy mẫu như thế nào để có thể khôi phục lại tín
hiệu gốc. Tín hiệu lấy mẫu của tín hiệu gốc s(t) biểu diễn là s(nT) với T là chu kỳ lấy
mẫu.
s(nT) = s(t)u(t) (3.1)
trong đó u(t) là chuỗi xung Dirac

u(t) =  (t  nT)
n  
(3.2)

Phổ của tín hiệu lấy mẫu là tích chập của S(f) và U(f), do đó:
1  n
Ss(f) = S(f)*U(f) = 
T n 
S(f  )
T
(3.3)
s

f
t 0

f
t
0 1/T
Hình 3.1 – Tín hiệu lấy mẫu và phổ

Trang 19 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

Quá trình lấy mẫu mô tả ở trên là quá trình lấy mẫu lý tưởng. Trong thực tế, do
tín hiệu u(t) là các xung lấy mẫu với chu kỳ T, độ rộng  và biên độ a nên phổ tín hiệu
thực tế sẽ không chỉ là hàm S(f) mà là:
sin(f)
S(f)a (3.4)
f
nT  / 2
(do giá trị lấy mẫu là a  s(t )dt )
nT  / 2

Tuy nhiên do  << T nên sai lệch không đáng kể.


Tần số lấy mẫu:
Xét tín hiệu sin có tần số f và quá trình lấy mẫu với các chu kỳ lấy mẫu khác
nhau.

fs = 16f fs = 8f

fs = 4f fs = 2f

Hình 3.2 – Lấy mẫu tín hiệu với các tần số khác nhau

Như vậy, ta thấy rằng nếu tần số lấy mẫu càng cao thì dạng của tín hiệu càng có
khả năng khôi phục giống như tín hiệu gốc. Tuy nhiên, nếu tần số càng cao thì cần
phải dùng dung lượng lớn hơn để lưu trữ và đồng thời tốc độ xử lý sẽ chậm lại do cần
xử lý số lượng dữ liệu lớn. Từ đó, ta cần xác định tần số lấy mẫu sao cho có thể khôi
phục lại gần đúng dạng tín hiệu với yêu cầu tốc độ xử lý giới hạn trong mức cho phép.
Định lý lấy mẫu
Định lý lấy mẫu xác định điều kiện để một tập mẫu có thể cho phép khôi phục
lại chính xác tín hiệu trước khi lấy mẫu. Như khảo sát ở trên (hình 3.1), phổ của tín
hiệu lấy mẫu là tín hiệu có chu kỳ trên miền tần số. Để khôi phục lại dạng của tín hiệu,
ta chỉ cần giới hạn phổ tần của tín hiệu. Quá trình này có thể thực hiện bằng một mạch
lọc thông thấp với hàm truyền:

Trang 20 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

1 fs
 0f 
H(f) =  f s 2 (3.5)
0 f
 f s
2
Hay:
sin(t / T)
h(t) = (3.6)
t / T
Phổ của tín hiệu sau khi khôi phục là:
S(f) = Ss(f)H(f) (3.7)
Hay:
 sin(( t  t ' ) / T)

 
s(t) = n
 
s( t ' )( t 'nT)
 ( t  t ' ) / T
dt'


sin ( t / T  n )
s(t) =  s(nT)
n   ( t / T  n )
(3.8)

s
Ss

f
0 fs = 1/T t
h
H

fs/2
f
0 t

t
0

Hình 3.3 - Khôi phục tín hiệu sau khi lấy mẫu

Như vậy, ta có thể khôi phục lại tín hiệu trước khi lấy mẫu khi phổ tín hiệu sau
khi qua mạch lọc phải giống hệt với phổ tín hiệu gốc. Theo hình 3.3, điều kiện này
thoả mãn khi phổ tín hiệu gốc không chứa thành phần tần số lớn hơn f s/2.

Trang 21 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

Trong trường hợp ngược lại, phổ của tín hiệu lấy mẫu sẽ bị méo dạng nên khi
sử dụng mạch lọc để khôi phục tín hiệu thì tín hiệu này sẽ khác với tín hiệu gốc, hiện
tượng này gọi lài chồng phổ (aliasing).
Ss

Hình 3.4 – Hiện tượng chồng phổ

Từ đó định lý lấy mẫu phát biểu như sau:


"Một tín hiệu không chứa bất kỳ thành phần tần số nào lớn hơn hay bằng
một giá trị fm có thể biểu diễn chính xác bằng tập các giá trị của nó với chu kỳ lấy
mẫu T = 1/2fm"
Như vậy, tần số lấy mẫu phải thoả mãn điều kiện fs ≥ 2fm trong đó fm là thành
phần tần số lớn nhất có trong tín hiệu. Tần số giới hạn này được gọi là tần số Nyquist
và khoảng (-fs/2,fs/2) gọi là khoảng Nyquist. Trong thực tế , tín hiệu trước khi lấy mẫu
sẽ bị giới hạn bằng một mạch lọc để tần số tín hiệu nằm trong khoảng Nyquist.
Ví dụ như tín hiệu âm thanh thường nằm trong khoảng (300,3400) Hz nên
người ta sẽ đưa tí hiệu qua mạch lọc thông thấp để loại các thành phần tần số bậc cao
và thực hiện lấy mẫu ở tần số tối thiểu là 6,8 KHz.

1.1.2. Lượng tử hóa


Lượng tử hoá là quá trình xấp xỉ các giá trị của tín hiệu lấy mẫu s(nT) bằng bội
số của một giá trị q (q gọi là bước lượng tử). Nếu q không thay đổi thì quá trình lượng
tử gọi là đồng nhất. Quá trình này thực hiện bằng hàm bậc thang mô tả như sau:
5

1
sq(n)

-1

-2

-3

-4

-5
-6 -4 -2 0 2 4 6
s(n)

Hình 3.5 – Hàm lượng tử với bước lượng tử q = 1


Quá trình lượng tử có thể thực hiện bằng cách định nghĩa giá trị trung tâm của
hàm lượng tử. Ví dụ như trong hình 3.5, các giá trị trong khoảng từ (n – ½)q đến (n +
½)q sẽ được làm tròn là n. Phương pháp này sẽ cực tiểu hóa công suất của tín hiệu lỗi.

Trang 22 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

Một phương pháp khác có thể sử dụng là dùng hàm cắt, nghĩa là các giá trị trong
khoảng [nq,(n+1)q) sẽ làm tròn thành n.
10

-2

-4
5

-6
4

-8
3

-10
20 1 2 3 4 5 6

-1

-2
Hình 3.6 – Lỗi lượng tử
Như vậy, quá trình lượng tử hóa sẽ làm méo dạng tín hiệu và xem như tồn tại
-3
một tín hiệu nhiễu. Sự méo dạng này gọi là méo lượng tử hay còn gọi là nhiễu lượng
tử. -4

s(n) = sq(n) + e(n)


-5
(3.9)
0 1 2 3 4 5 6

Biên độ của tín hiệu nhiễu lượng tử sẽ nằm trong khoảng (-q/2,q/2). Do sai số
lượng tử không biết trước nên việc mô tả sai số lượng tử mang tính thống kê. Tổng
quát, ta có thể xem e(n) là chuỗi các biến ngẫu nhiên trong đó:
- Thống kê của e(n) không thay đổi theo thời gian (nhiễu lượng tử hóa là
quá trình ngẫu nhiên dừng).
- Nhiễu lượng tử e(n) là chuỗi các biến ngẫu nhiên không tương quan.
- Nhiễu lượng tử e(n) không tương quan với tín hiệu ngõ vào s(n).
- Hàm mật độ xác suất của e(n) phân bố đều trên tầm các giá trị của sai
số lượng tử.
Như vậy, nhiễu lượng tử được phân bố đều trên khoảng (-q/2,q/2) và có phương
sai (công suất nhiễu lượng tử) là:
q2
  2
e (3.10)
12
Tín hiệu được lấy mẫu và lượng tử hóa bao gồm một tập hợp các số và được
lưu trữ ở dạng nhị phân. Đối với số nhị phân N bit sẽ có tối đa 2 N giá trị khác nhau ứng

Trang 23 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

với 2N mức lượng tử khác nhau. Như vậy, phạm vi lượng tử sẽ bị giới hạn trong
khoảng từ q đến 2Nq, bất kỳ biên độ tín hiệu nào vượt quá giá trị này thì sẽ bị cắt bỏ.
Giả sử tín hiệu mã hóa có biên độ trong khoảng [-Am,Am]:
Am = 2Nq/2 (3.11)
Từ đó, giả sử công suất tín hiệu là  s2 thì tỷ số tín hiệu trên nhiễu lượng tử hóa
(SQNR – Signal to Quantizing Noise Ratio) là:
 s2 A
SQNR [dB] = 10 log 2 = 6.02(N-1) + 10.79 - 20 log m (3.12)
e s

1.1.3. Mã hóa
Tín hiệu ở ngõ ra bộ lượng tử hóa được đưa đến bộ mã hóa, bộ mã hóa sẽ gán
một số nhị phân cho mỗi mức lượng tử. Quá trình này gọi là mã hóa.
Có nhiều phương pháp mã hóa khác nhau nhưng trong đa số hệ thống xử lý tín
hiệu số sử dụng phương pháp bù 2. Một ví dụ đối với N = 3 như sau:

Số nhị phân Giá trị Số nhị phân Giá trị


000 0 000 0
001 1/4 001 1/4
010 1/2 010 1/2
011 3/4 011 3/4
111 - 1/4 100 1
110 - 1/2 101 5/4
101 - 3/4 110 3/2
100 -1 111 7/4

Ngoài phương pháp mã hóa tuyến tính như trên (các mức lượng tử có cùng số
bit nhị phân bằng nhau), ta còn sử dụng phương pháp mã hóa phi tuyến. Phương pháp
này sử dụng các bước lượng tử thay đổi theo biên độ tín hiệu.

1.2. Các thông số


Khi thực hiện quá trình ADC, các thông số cần quan tâm của hệ thống:
 Số bit mã hóa
Số bit mã hóa của quá trình AD xác định một mức lượng tử sẽ được mã hóa
thành bao nhiêu bit nhị phân. Nếu số bit mã hóa lớn, độ phân giải của hệ thống sẽ tăng
lên nhưng đòi hỏi dung lượng lưu trữ dữ liệu và thời gian xử lý lớn hơn và ngược lại.
 Độ rộng mã hóa
Là giá trị của ngõ vào tương tự làm cho giá trị mã hóa ở ngõ ra thay đổi. Ví dụ
như bộ ADC có số bit mã hóa 12 với ngõ vào tương tự từ 0 – 10V có độ rộng mã hóa
là 10/212 = 2,44 mV. Độ rộng mã hóa còn gọi là bước lượng tử.
Trang 24 GV: Phạm Hùng Kim Khánh
Tài liệu DAQ Chương 3

 Phạm vi ngõ vào


Phạm vi ngõ vào là khoảng giá trị nhỏ nhất và lớn nhất mã ADC có thể chuyển
đổi chính xác sang dạng số. Phạm vi này có thể ở dạng đơn cực (chỉ có điện áp dương)
hay lưỡng cực (bao gồm cả điện áp dương và âm). Trong các board ADC, thông
thường phạm vi ngõ vào có thể thay đổi.
 Phương pháp mã hóa dữ liệu
Dùng để xác định dữ liệu số ở ngõ ra theo tín hiệu tương tự ngõ vào. Phương
pháp mã hóa đơn giản nhất là offset: dữ liệu số thay đổi tuyến tính theo các mức lượng
tử.
 Thời gian chuyển đổi
Là thời gian từ lúc bắt đầu quá trình chuyển đổi cho tới khi có dữ liệu số hợp lệ
tại ngõ ra. Ví dụ như ADC0804 và 0809 có thời gian chuyển đổi 100 µs.

1.3. Một số vi mạch ADC


U4

26 17
27 IN0 D0 14
28 IN1 D1 15 U4
1 IN2 D2 8
2 IN3 D3 18 6 18
IN4 D4 7 +IN DB0 17
3 19 -IN DB1
4 IN5 D5 20 16
IN6 D6 9 DB2 15
5 21 VREF/2 DB3
IN7 D7 14
4 DB4 13
12 7 CLKIN DB5
16 REF+ EOC 19 12
REF- CLKR DB6 11
2 DB7
10 RD
CLK 3 5
1 WR INTR
25 CS
24 A0
23 A1 20
A2 VCC/VREF
22
9 ALE
6 OE ADC0804
START
11
VCC

ADC0809

Hình 3.7 – Vi mạch ADC


 Mạch ứng dụng

Trang 25 GV: Phạm Hùng Kim Khánh


+5V

R7 R8 R9 R10 R11 R12 R13 R14


Trang 20

Tài liệu DAQ


2

2
+5V

1
10K
1 16
2 15
3 14
4 13
5 12
6 11
+5V 7 10
8 9

R-PACK
P1 ADC0804 PORT A
+5V 6 18
7 +IN DB0 17 1
R3 -IN DB1 16 2
1.13K 9 DB2 15 3
+5V 19 VREF/2 DB3 14 4
R1 4 CLKR DB4 13 5
1K CLKIN DB5 12 6
C3 1 DB6 11 7
CS DB7 8
1 nF 2 A
4

3 RD 5 R6 10K
WR INTR +5V
2 - +5V J1
P2 1 R5 10K
+5V
3 +
B
C R4 10K
+5V
GV: Phạm Hùng Kim Khánh

JR4558 J2
4
8

P3 6 - S1
7
5 + START

R2 -5V
8

1K

Chương 3
-5V
Hình 3.9 – Sơ đồ mạch ứng dụng ADC0804
Tài liệu DAQ Chương 3

2. Chuyển đổi DA (Digital to Analog)


2.1. Nguyên lý
Bộ biến đổi số - tương tự (DAC) thực hiện công việc biến đổi các giá trị số
thành các đại lượng tương tự (dòng điện hoặc điện áp) tương ứng.
DAC nhận n bit song song ở ngõ vào và thực hiện chuyển đổi thành tín hiệu
tương tự ở ngõ ra. Giá trị ngõ ra thông thường là dòng điện và cỏ thể thực hiện chuyển
đổi thành điện áp bằng các bộ khuếch đại thuật toán (OpAmp). DAC bao gồm một
mạng các chuyển mạch tương tự điều khiển bằng dữ liệu số ngõ vào và một mạng các
điện trở.
 Chuyển mạch bằng dòng điện

R/2

Hình 3.10 – DAC chuyển mạch dòng điện


Phương pháp này tạo dòng điện ở ngõ ra bằng cách cộng tất cả các dòng điện
thành phần. Các dòng điện thành phần được điều khiển bằng các transistor, nếu giá trị
ngõ vào tương ứng là logic 0 thì dòng điện qua R  diode  transistor tắt, ngược lại
thì dòng điện qua R  transistor  OpAmp.
Giả sử dòng điện tại ngõ vào OpAmp là IT  Vout = -ITR/2

 Vout = VREF  Bi 2(i 1)  VREF  B0 21  B1 22  ...  Bn1 2  n 


VREF
IT =
R
B 2
i
 ( i 1)

 DAC R-2R
Phương pháp này chỉ dùng các điện trở có giá trị R và 2R. Giống như phần trên,
phương pháp này cũng dùng ngõ vào số và điện áp chuẩn V REF để tạo dòng IT tại ngõ
ra.

Trang 27 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

Hình 3.11 – DAC R-2R

2.2. Các thông số


 Độ phân giải
Là giá trị chênh lệch ở ngõ ra khi ngõ vào thay đổi 1 giá trị. Giá trị này càng
nhỏ (ứng với số bit mã hóa càng lớn) thì dạng sóng ngõ ra DAC càng mịn.
 Phạm vi ngõ ra
Ngõ ra của DAC có 2 dạng: điện áp hay dòng điện. Nếu sử dụng ngõ ra ở dạng
điện áp, cần phải thêm các mạch khuếch đại thuật toán để chuyển từ dòng thành áp.
Để thay đổi offset, độ lợi (nghĩa là phạm vi ngõ ra), bên trong bộ DAC có điện
trở hồi tiếp. Nếu có nhiều điện trở hồi tiếp, phạm vi ngõ ra của DAC có thể thay đổi
được, các giá trị này được xác định bằng các jumper trên board DAC.
 Mã ngõ vào
Tùy theo dạng mã ngõ vào (nhị phân, bù 2, BCD), tín hiệu ngõ ra sẽ được xác
định.
 Thời gian xác lập
Là thời gian để ngõ ra ổn định, thời gian này bao gồm: thay đổi bộ chuyển
mạch từ on sang off hay ngược lại, thay đổi dòng điện trong transistor và thời gian xử
lý trên OpAmp.
 Tốc độ thay đổi
Là tốc độ lớn nhất mà DAC có thể tạo được dạng tín hiệu ở ngõ ra. Tốc độ này
thường bị giới hạn bởi tốc độ của bộ khuếch đại tại ngõ ra.
 Tốc độ cập nhật
Phụ thuộc vào thời gian xác lập và tốc độ thay đổi, dùng để xác định tần số lớn
nhất mà DAC có thể tạo được.

Trang 28 GV: Phạm Hùng Kim Khánh


Trang 29
Tài liệu DAQ

15
14
5
6
7
8
9
10
11
12

A1
A2
A3
A4
A5
A6
A7
A8
U4

VR-
VR+

DAC0808
COMP
IOUT
IOUT

2
4

16
2.3. Một số vi mạch DAC

R13
OUT +
R16
DAC0808 2.7K 4
4

12 4 2 - R14 5.35K
8 PB0 A8 IOUT
PB1 11 1 6 -
7 10 A7 3 + 7
6 PB2 A6 OUT -
PB3 9 2 5.35K 5 +
5 8 A5 IOUT
4 PB4 A4
8

PB5 7 R12
3 A3
8

PB6 6 2.7K R15


2 5 A2 16 2.7K
1 PB7 A1 COMP
PORT B 14
VR+
+12V 15
VR- C3
R9 R10 0.01uF

Hình 3.12 – Vi mạch DAC0808 và ứng dụng


2.7K R11
2.7K -12V
820
P1
+ C4 D1
100uF C2
Z5V1 0.01uF
C5
0.01uF
Chương 3

GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

3. Giao tiếp qua cổng máy in


3.1. Giới thiệu
Cổng song song gồm có 4 đường điều khiển, 5 đường trạng thái và 8 đường dữ
liệu bao gồm 5 chế độ hoạt động:
- Chế độ tương thích (compatibility).
- Chế độ nibble.
- Chế độ byte.
- Chế độ EPP (Enhanced Parallel Port).
- Chế độ ECP (Extended Capabilities Port).
3 chế độ đầu tiên sử dụng port song song chuẩn (SPP – Standard Parallel Port)
trong khi đó chế độ 4, 5 cần thêm phần cứng để cho phép hoạt động ở tốc độ cao hơn.
Sơ đồ chân của máy in như sau:

Thanh ghi
dữ liệu

Thanh ghi
trạng thái

Thanh ghi
CONNECTOR DB25

điều khiển
P1

1
13
25
12
24
11
23
10
22

21

20

19

18

17

16

15

14

Hình 3.13 – Hình dạng và sơ đồ cổng máy in

Trang 30 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

Chân Tín hiệu Mô tả


1 STR (Out) Mức tín hiệu thấp, truyền dữ liệu tới máy in
2 D0 Bit dữ liệu 0
3 D1 Bit dữ liệu 1
4 D2 Bit dữ liệu 2
5 D3 Bit dữ liệu 3
6 D4 Bit dữ liệu 4
7 D5 Bit dữ liệu 5
8 D6 Bit dữ liệu 6
9 D7 Bit dữ liệu 7
10 ACK (In) Mức thấp: máy in đã nhận 1 ký tự và có khả năng
nhận nữa
11 BUSY (In) Mức cao: ký tự đã được nhận; bộ đệm máy in đầy;
khởi động máy in; máy in ở trạng thái off-line.
12 PAPER EMPTY (In) Mức cao: hết giấy
13 SELECT (In) Mức cao: máy in ở trạng thái online
14 AUTOFEED (Out) Tự động xuống dòng; mức thấp: máy in xuống
dòng tự động
15 ERROR (In) Mức thấp: hết giấy; máy in ở offline; lỗi máy in
16 INIT (Out) Mức thấp: khởi động máy in
17 SELECTIN (Out) Mức thấp: chọn máy in
18-25 GROUND 0V

3.2. Các thanh ghi


Cổng song song có ba thanh ghi có thể truyền dữ liệu và điều khiển máy in.
Địa chỉ cơ sở của các thanh ghi cho tất cả cổng LPT (line printer) từ LPT1 đến LPT4
được lưu trữ trong vùng dữ liệu của BIOS. Thanh ghi dữ liệu được định vị ở offset
00h, thanh ghi trang thái ở 01h, và thanh ghi điều khiển ở 02h. Thông thường, địa chỉ
cơ sở của LPT1 là 378h, LPT2 là 278h, do đó địa chỉ của thanh ghi trạng thái là 379h
hoặc 279h và địa chỉ thanh ghi điều khiển là 37Ah hoặc 27Ah. Tuy nhiên trong một số
trường hợp, địa chỉ của cổng song song có thể khác do quá trình khởi động của BIOS.
BIOS sẽ lưu trữ các địa chỉ này như sau:

Địa chỉ Chức năng


0000h:0408h Địa chỉ cơ sở của LPT1
0000h:040Ah Địa chỉ cơ sở của LPT2
0000h:040Ch Địa chỉ cơ sở của LPT3

Định dạng các thanh ghi như sau:


Thanh ghi dữ liệu (hai chiều):
7 6 5 4 3 2 1 0
Tín hiệu máy in D7 D6 D5 D4 D3 D2 D1 D0

Trang 31 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

Chân số 9 8 7 6 5 4 3 2

Thanh ghi trạng thái máy in (chỉ đọc):


7 6 5 4 3 2 1 0
Tín hiệu máy BUSY ACK PAPER SELECT ERROR IRQ x x
in EMPTY
Số chân cắm 11 10 12 13 15 - - -

Thanh ghi điều khiển máy in:


7 6 5 4 3 2 1 0
Tín x x DIR IRQ SELECTIN INIT AUTOFEED STROBE
hiệu Enable
máy
in
Số - - - - 17 16 14 1
chân
cắm
x: không sử dụng
IRQ Enable: yêu cầu ngắt cứng; 1 = cho phép; 0 = không cho phép

Chú ý rằng chân BUSY được nối với cổng đảo trước khi đưa vào thanh ghi
trạng thái, các bit SELECTIN , AUTOFEED và STROBE được đưa qua cổng đảo
trước khi đưa ra các chân của cổng máy in.
Thông thường tốc độ xử lý dữ liệu của các thiết bị ngoại vi như máy in chậm hơn PC nhiều
nên các đường ACK , BUSY và STR được sử dụng cho kỹ thuật bắt tay. Khởi đầu, PC đặt
dữ liệu lên bus sau đó kích hoạt đường STR xuống mức thấp để thông tin cho máy in biết
rằng dữ liệu đã ổn định trên bus. Khi máy in xử lý xong dữ liệu, nó sẽ trả lại tín hiệu ACK
xuống mức thấp để ghi nhận. PC đợi cho đến khi đường BUSY từ máy in xuống thấp (máy in
không bận) thì sẽ đưa tiếp dữ liệu lên bus.

3.3. Ứng dụng


Quá trình giao tiếp với các thiết bị ngoại vi có thể thực hiện thông qua chế độ
chuẩn. Để đọc dữ liệu, có thể dùng một IC ghép kênh 21 74LS257 và dùng 4 bit
trạng thái của cổng song song còn xuất dữ liệu thì sử dụng 8 đường dữ liệu D0 – D7.

Trang 32 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3
74LS06

9 8

1 STROBE
10K1
14
2 3 2 9
15 4 D0 Q0 5 8
3 7 D1 Q1 6 7
16 8 D2 Q2 9 6
4 13 D3 Q3 12 5 VCC
17 14 D4 Q4 15 4
5 17 D5 Q5 16 3
18 18 D6 Q6 19 2 1
6 D7 Q7
19 11
7 CLK
20 1
8 OE
21
9 74LS374
22
10 ACK
23
11 PAPER EMPTY 74LS257 SW0-7
10K
24
12 SELECT 4 2 2 3 9
25 74LS06 7 1Y 1A 5 5 Q0 D0 4 8
13 9 2Y 2A 11 6 Q1 D1 7 7
BUSY 2 1 12 3Y 3A 14 9 Q2 D2 8 6
4Y 4A 12 Q3 D3 13 5 VCC
3 15 Q4 D4 14 4
74LS06 1B 6 16 Q5 D5 17 3
2B 10 19 Q6 D6 18 2 1
AUTO FEED 3 4 3B 13 Q7 D7
4B 11
1 CLK
74LS06 A/B 15 1
G OE
SELECT IN 5 6
74LS374

Hình 3.14 – Mạch giao tiếp đơn giản thông qua cổng máy in

Giao diện:

Hình 3.15 – Giao diện của chương trình giao tiếp với cổng máy in
Chương trình giao tiếp trên VB sử dụng thư viện liên kết động để trao đổi dữ
liệu với cổng máy in. Thư viện IO.DLL bao gồm các hàm sau:
- Hàm PortOut: xuất 1 byte ra cổng
Private Declare Sub PortOut Lib "IO.DLL" (ByVal
Port As Integer, ByVal Data As Byte)

Trang 33 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

Port: địa chỉ cổng, Data: dữ liệu xuất


- Hàm PortWordOut: xuất 1 word ra cổng
Private Declare Sub PortWordOut Lib "IO.DLL"
(ByVal Port As Integer, ByVal Data As Integer)
- Hàm PortDWordOut: xuất 1 double word ra cổng
Private Declare Sub PortDWordOut Lib "IO.DLL"
(ByVal Port As Integer, ByVal Data As Long)
- Hàm PortIn: nhập 1 byte từ cổng, trả về giá trị nhập
Private Declare Function PortIn Lib "IO.DLL"
(ByVal Port As Integer) As Byte
- Hàm PortWordIn: nhập 1 word từ cổng
Private Declare Function PortWordIn Lib "IO.DLL"
(ByVal Port As Integer) As Integer
- Hàm PortDWordIn: nhập 1 double word từ cổng
Private Declare Function PortDWordIn Lib
"IO.DLL" (ByVal Port As Integer) As Long

Chương trình nguồn:


VERSION 5.00
Begin VB.Form Form1
Caption = "Printer Interface
Example"
ClientHeight = 4665
ClientLeft = 60
ClientTop = 345
ClientWidth = 3585
LinkTopic = "Form1"
ScaleHeight = 4665
ScaleWidth = 3585
StartUpPosition = 3 'Windows Default
Begin VB.CommandButton cmdReceive
Caption = "Receive"
Height = 495
Left = 1200
TabIndex = 18
Top = 3960
Width = 1095
Trang 34 GV: Phạm Hùng Kim Khánh
Tài liệu DAQ Chương 3

End
Begin VB.CheckBox chkSW
Height = 375
Index = 7
Left = 1800
TabIndex = 17
Top = 3480
Width = 1575
End
Begin VB.CheckBox chkSW
Height = 375
Index = 6
Left = 1800
TabIndex = 16
Top = 3000
Width = 1575
End
Begin VB.CheckBox chkSW
Height = 375
Index = 5
Left = 1800
TabIndex = 15
Top = 2520
Width = 1575
End
Begin VB.CheckBox chkSW
Height = 375
Index = 4
Left = 1800
TabIndex = 14
Top = 2040
Width = 1575
End
Begin VB.CheckBox chkSW
Height = 375

Trang 35 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

Index = 3
Left = 1800
TabIndex = 13
Top = 1560
Width = 1575
End
Begin VB.CheckBox chkSW
Height = 375
Index = 2
Left = 1800
TabIndex = 12
Top = 1080
Width = 1575
End
Begin VB.CheckBox chkSW
Height = 375
Index = 1
Left = 1800
TabIndex = 11
Top = 600
Width = 1575
End
Begin VB.CheckBox chkSW
Height = 375
Index = 0
Left = 1800
TabIndex = 10
Top = 120
Width = 1575
End
Begin VB.CommandButton cmdExit
Caption = "Exit"
Height = 495
Left = 2400
TabIndex = 9

Trang 36 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

Top = 3960
Width = 975
End
Begin VB.CommandButton cmdSend
Caption = "Send"
Height = 495
Left = 0
TabIndex = 8
Top = 3960
Width = 1095
End
Begin VB.Label lblLED
BackStyle = 0 'Transparent
Caption = "LED7"
Height = 375
Index = 7
Left = 240
TabIndex = 7
Top = 3480
Width = 1095
End
Begin VB.Label lblLED
BackStyle = 0 'Transparent
Caption = "LED6"
Height = 375
Index = 6
Left = 240
TabIndex = 6
Top = 3000
Width = 975
End
Begin VB.Label lblLED
BackStyle = 0 'Transparent
Caption = "LED5"
Height = 375

Trang 37 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

Index = 5
Left = 240
TabIndex = 5
Top = 2520
Width = 975
End
Begin VB.Label lblLED
BackStyle = 0 'Transparent
Caption = "LED4"
Height = 375
Index = 4
Left = 240
TabIndex = 4
Top = 2040
Width = 975
End
Begin VB.Label lblLED
BackStyle = 0 'Transparent
Caption = "LED3"
Height = 375
Index = 3
Left = 240
TabIndex = 3
Top = 1560
Width = 975
End
Begin VB.Label lblLED
BackStyle = 0 'Transparent
Caption = "LED2"
Height = 375
Index = 2
Left = 240
TabIndex = 2
Top = 1080
Width = 975

Trang 38 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

End
Begin VB.Label lblLED
BackStyle = 0 'Transparent
Caption = "LED1"
Height = 375
Index = 1
Left = 240
TabIndex = 1
Top = 600
Width = 975
End
Begin VB.Label lblLED
BackStyle = 0 'Transparent
Caption = "LED0"
Height = 375
Index = 0
Left = 240
TabIndex = 0
Top = 120
Width = 975
End
Begin VB.Shape shpLED
BorderColor = &H000000FF&
FillColor = &H000000FF&
FillStyle = 0 'Solid
Height = 375
Index = 7
Left = 840
Shape = 3 'Circle
Top = 3480
Width = 375
End
Begin VB.Shape shpLED
BorderColor = &H000000FF&
FillColor = &H000000FF&

Trang 39 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

FillStyle = 0 'Solid
Height = 375
Index = 6
Left = 840
Shape = 3 'Circle
Top = 3000
Width = 375
End
Begin VB.Shape shpLED
BorderColor = &H000000FF&
FillColor = &H000000FF&
FillStyle = 0 'Solid
Height = 375
Index = 5
Left = 840
Shape = 3 'Circle
Top = 2520
Width = 375
End
Begin VB.Shape shpLED
BorderColor = &H000000FF&
FillColor = &H000000FF&
FillStyle = 0 'Solid
Height = 375
Index = 4
Left = 840
Shape = 3 'Circle
Top = 2040
Width = 375
End
Begin VB.Shape shpLED
BorderColor = &H000000FF&
FillColor = &H000000FF&
FillStyle = 0 'Solid
Height = 375

Trang 40 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

Index = 3
Left = 840
Shape = 3 'Circle
Top = 1560
Width = 375
End
Begin VB.Shape shpLED
BorderColor = &H000000FF&
FillColor = &H000000FF&
FillStyle = 0 'Solid
Height = 375
Index = 2
Left = 840
Shape = 3 'Circle
Top = 1080
Width = 375
End
Begin VB.Shape shpLED
BorderColor = &H000000FF&
FillColor = &H000000FF&
FillStyle = 0 'Solid
Height = 375
Index = 1
Left = 840
Shape = 3 'Circle
Top = 600
Width = 375
End
Begin VB.Shape shpLED
BorderColor = &H000000FF&
FillColor = &H000000FF&
FillStyle = 0 'Solid
Height = 375
Index = 0
Left = 840

Trang 41 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

Shape = 3 'Circle
Top = 120
Width = 375
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'IO.DLL
Private Declare Sub PortOut Lib "IO.DLL" (ByVal
Port As Integer, ByVal Data As Byte)
Private Declare Function PortIn Lib "IO.DLL"
(ByVal Port As Integer) As Byte
'Variable
Private BA_LPT As Integer

Private Sub cmdExit_Click()


End
End Sub

Private Sub cmdReceive_Click()


Dim n As Integer
Dim n1 As Integer
Dim i As Integer

PortOut BA_LPT + 2, &H8 'SELECTIN = 1


PortOut BA_LPT + 2, 0 'SELECTIN = 0
n1 = PortIn(BA_LPT + 1) 'Doc 4 bit thap
n1 = n1 / &H10 'Dich phai 4 bit
PortOut BA_LPT + 2, 2 'AUTOFEED=1
n = PortIn(BA_LPT + 1) 'Doc 4 bit cao
n = n And &HF0
n = n + n1
For i = 0 To 7
Trang 42 GV: Phạm Hùng Kim Khánh
Tài liệu DAQ Chương 3

chkSW(i).Value = n Mod 2
If chkSW(i).Value = 0 Then
chkSW(i).Caption = "Switch " &
Str(i) & " off"
Else
chkSW(i).Caption = "Switch " &
Str(i) & " on"
End If
n = Fix(n / 2)
Next i
End Sub

Private Sub cmdSend_Click()


Dim t As Integer
Dim i As Integer
Dim s As String
t = 0
For i = 0 To 7
t = t + (2 ^ i) * (1 - shpLED(i).FillStyle)
Next i
PortOut BA_LPT, t
PortOut BA_LPT + 2, 1 'STROBE = 1
PortOut BA_LPT + 2, 0 'STROBE = 0
End Sub

Private Sub Form_Load()


BA_LPT = &H378
PortOut BA_LPT + 2, 0
End Sub

Private Sub lblLED_Click(Index As Integer)


shpLED(Index).FillStyle = 1 -
shpLED(Index).FillStyle
End Sub

Trang 43 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

4. Giao tiếp qua khe cắm mở rộng


P1
PC INTERFACE

1
14
2
15
3
16
4
17
5
18
6
19
7
20
8
21
9
22
10
23
11
24
12
25
13
RESET-DRV
AEN
IOW
IOR
D0
D1
D2
D3
D4
D5
D6
D7

A4
A3
A2
A1
A0
CS
+5 V+1 2V-12V
-5V

RESET-DRV
IOR

IOW

AEN
D0
D1
D2
D3
D4
D5
D6
D7

CS

A0

A1

A2

A3

A4
18
17
16
15
14
13
12
11

U1
B1
B2
B3
B4
B5
B6
B7
B8

74 LS 245

10

12
2

8
DIR

U3A U3B U3C U3D U3E U3F U4A U4B U4C U4D
A1
A2
A3
A4
A5
A6
A7
A8

74 07 74 07 74 07 74 07 74 07 74 07 74 07 74 07 74 07 74 07
CAÙC CHAÂN TREÂN SLOT
2
3
4
5
6
7
8
9

19
1

11

13

9
A27
A31

A30

A29

A28

B14

B13

A11
CAÙC CHAÂN TREÂN SLOT

B2
B14
A9
A8
A7
A6
A5
A4
A3
A2

A 11
A0 A1 A2 A3 A4 IOR IOW A EN RES E T-DRV

D0D1D2D3D4D5D6D7 IOR
CS19

U2
P =Q

16
15
14
13
12
11
10

74 LS 688
9

S1
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
P0
P1
P2
P3
P4
P5
P6
P7

S W DIP -8
G
2
4
6
8
11
13
15
17

3
5
7
9
12
14
16
18

1
2
3
4
5
6
7
8
SL0
SL1
SL2
SL3
SL4
SL5
SL6
SL7

SL0
SL1
SL2
SL3
SL4
SL5
SL6
SL7
CAÙC CHAÂN TREÂN SLOT
A26
A25
A24

A22
A21
A20
A19
A23

SL0
SL1
SL2
SL3
SL4
SL5
SL6
SL7

R1
10 K x 8

A 5A 6A 7A 8A 9A 10
A 11
A 12 A EN

+5 V

Hình 3.16 – Giao tiếp với khe cắm mở rộng

Trang 44 GV: Phạm Hùng Kim Khánh


Trang 20

U3

Tài liệu DAQ


D0 2 18 D0
A1 B1 D0
D1 3 17 D1 D1
A2 B2
D2 4 16 D2
A3 B3 D2
D3 5 15 D3 D3
A4 B4
D4 6 14 D4 D4
A5 B5
D5 7 13 D5 D5
A6 B6
D6 8 12 D6 D6
A7 B7
D7 9 11 D7 D7
A8 B8
19
CS 1 G
IOR DIR
74 LS 245

U3C U3B

IOW 5
74 04
6 3
74 04
4
IOW

U3D U3E

IOR 9
74 04
8 11 10
IOR
74 04
P1
1 D0
14 D1 A0
2 D2 A1
15 D3
U4 A2
3 D4
16 D5 CLOCK 18 2 CLK A3
AEN B1 A1 AEN CLK
4 D6 17 3
RS
17 D7 A3 16 B2 A2 4 A3
B3 A3 CS A EN
5 CS 15 5
18 +5 V A2 14 B4 A4 6 A2
6 +5 V A1 13 B5 A5 7 A1
19 +1 2V A0 12 B6 A6 8 A0
7 RS 11 B7 A7 9 RS
20 -12V B8 A8
8 RS -5V RS A4 19 A3
R1 56 0 G
21 AEN AEN 1
9 IOW IOW R2 56 0 DIR
22 IOR IOR R3 22 0
10 CLOCK CLOCK
R4 22 0 74 LS 245 CS U2C
R5 22 0
23 A4 A4 A3 9
11 A3 A3 R6 56 0 8 30 0H ->3 07H
A2 R7 56 0 CS1
24 A2 U3A 10
12 A1 A1 R8 56 0
25 A0 A0 R9 56 0 1 2
R10 56 0 74 LS 32
13 CS CS
R11 56 0

COMP UT E R INT E RFACE 74 04 U2D


U2A /A3 12
CS 1 11 30 8H ->3 0FH
GV: Phạm Hùng Kim Khánh

3 13 CS2
A4 2
74 LS 32
74 LS 32
U2B
U3F CS 4
6 31 0H ->3 1FH
13 12 /A4 5 CS3

74 LS 32
74 04

Hình 3.17 – Giao tiếp qua khe cắm mở rộng

Chương 3
Tài liệu DAQ Chương 4

5. Giao tiếp qua RS-232 và RS-485


Cổng nối tiếp được sử dụng để truyền dữ liệu hai chiều giữa máy tính và ngoại vi, có
các ưu điểm sau:
- Khoảng cách truyền xa hơn truyền song song.
- Số dây kết nối ít.
- Có thể truyền không dây dùng hồng ngoại.
- Có thể ghép nối với vi điều khiển hay PLC (Programmable Logic Device).
- Cho phép nối mạng.
- Có thể tháo lắp thiết bị trong lúc máy tính đang làm việc.
- Có thể cung cấp nguồn cho các mạch điện đơn giản
Các thiết bị ghép nối chia thành 2 loại: DTE (Data Terminal Equipment) và DCE
(Data Communication Equipment). DCE là các thiết bị trung gian như MODEM còn DTE là
các thiết bị tiếp nhận hay truyền dữ liệu như máy tính, PLC, vi điều khiển, … Việc trao đổi
tín hiệu thông thường qua 2 chân RxD (nhận) và TxD (truyền). Các tín hiệu còn lại có chức
năng hỗ trợ để thiết lập và điều khiển quá trình truyền, được gọi là các tín hiệu bắt tay
(handshake). Ưu điểm của quá trình truyền dùng tín hiệu bắt tay là có thể kiểm soát đường
truyền.
Tín hiệu truyề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:

Start D0 D1 D2 D3 D4 D5 D6 D7 P Stop
0 1

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):

Phạm Hùng Kim Khánh Trang 46


Tài liệu DAQ Chương 4

Hình 3.18 – 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.
 Sơ đồ chân:

Phạm Hùng Kim Khánh Trang 47


Tài liệu DAQ Chương 4

Hình 3.19 – Sơ đồ chân cổng nối tiếp

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 4.2. Ý nghĩa của các chân mô tả như sau:

D25 D9 Tín Hướng Mô tả


hiệu truyền
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
25 - TM Test Mode
9 - Dành riêng cho chế độ test
10 - Dành riêng cho chế độ test
11 Không dùng

Phạm Hùng Kim Khánh Trang 48


Tài liệu DAQ Chương 4

5.1. 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:

TxD TxD TxD TxD

RxD RxD RxD RxD

GND GND GND GND

DTE1 DTE2 DTE DCE

Hình 3.20 – 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:

TxD TxD
RxD RxD
GND GND
RTS RTS
CTS CTS
DSR DSR
DCD DCD
DTR DTR

DTE1 DTE2
Hình 3.21 – 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á trinh đ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.

5.2. Truy xuất trực tiếp thông qua cổng


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:

Phạm Hùng Kim Khánh Trang 49


Tài liệu DAQ Chương 4

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

Giao tiếp nối tiếp trong máy tính sử dụng vi mạch UART với các thanh ghi cho trong
bảng sau:
Offset DLAB R/W Tên Chức năng
0 W THR Transmitter Holding Register (đệm truyền)
0 0 R RBR Receiver Buffer Register (đệm thu)
1 R/W BRDL Baud Rate Divisor Latch (số chia byte thấp)
0 R/W IER Interrupt Enable Register (cho phép ngắt)
1
1 R/W BRDH Số chia byte cao
R IIR Interrupt Identification Register (nhận dạng ngắt)
2
W FCR FIFO Control Register
3 R/W LCR Line Control Register (điều khiển đường dây)
4 R/W MCR Modem Control Register (điều khiển MODEM)
5 R LSR Line Status Register (trạng thái đường dây)
6 R MSR Modem Status Register (trạng thái MODEM)
7 R/W Scratch Register (thanh ghi tạm)

Các thanh ghi này có thể truy xuất trực tiếp kết hợp với địa chỉ cổng (ví dụ như thanh
ghi cho phép ngắt của COM1 có địa chỉ là BACOM1 + 1 = 3F9h.

 IIR (Interrupt Identification):


IIR xác định mức ưu tiên và nguồn gốc của yêu cầu ngắt mà UART đang chờ phục
vụ. Khi cần xử lý ngắt, CPU thực hiện đọc các bit tương ứng để xác định nguồn gốc của
ngắt. Định dạng của IIR như sau:
D7 D6 D5 D4 D3 D2 D1 D0
00: không có Cho phép FIFO 64 - 1: ngắt time-out Xác định nguồn 0: có
FIFO byte (trong 16750) (trong 16550) gốc ngắt ngắt
11: cho phép 1: không
FIFO ngắt

D2 D1 Ưu Tên Nguồn D2 – D0 bị xoá


tiên khi
0 0 4 Đường Lỗi khung, thu đè, lỗi parity, gián đoạn Đọc LSR
truyền khi thu
0 1 3 Đệm thu Đệm thu đầy Đọc RBR
1 0 2 Đệm phát Đệm phát rỗng Đọc IIR, ghi
THR
1 1 1 Modem CTS, DSR, RI, RLSD Đọc MSR
(mức 1 ưu tiên cao nhất)

Phạm Hùng Kim Khánh Trang 50


Tài liệu DAQ Chương 4

 IER (Interrupt Enable Register):


IER cho phép hay cấm các nguyên nhân ngắt khác nhau (1: cho phép, 0: cầm ngắt)

D7 D6 D5 D4 D3 D2 D1 D0
- - POW HBR MODEM LINE TxEMPTY RxRDY

Cho phép kiểu Cho phép khi lỗi Cho phép khi
công suất thấp modem THR rỗng

Cho phép khi


Cho phép kiểu Cho phép khi lỗi RBR đầy
nghỉ (hibernate) thu, phát

 MCR (Modem Control Register):

D7 D6 D5 D4 D3 D2 D1 D0
- - - LOOP OUT2 OUT1 RTS DTR

Mode loopback:
kiểm tra hoạt Điều khiển 2 ngõ ra Điều khiển tín hiệu
đọng của UART OUT1, OUT 2 của RTS và DTR
UART

 MSR (Modem Status Register):

D7 D6 D5 D4 D3 D2 D1 D0
RLSD RI DSR CTS RLSD RI DSR CTS

Trạng thái của CD, RI, 1: nếu có thay đổi các tín hiệu so với lần đọc trước
DSR và CTS RI: = 1 nếu có xung dương tại RI

 LSR (Line Status Register):

D7 D6 D5 D4 D3 D2 D1 D0
FIE TSRE THRE BI FE PE OE RxDR

FIE: FIFO Error – sai trong FIFO


TSRE: Transmitter Shift Register Empty – thanh ghi dịch rỗng (=1 khi đã phát 1 ký
tự và bị xoá khi có 1 ký tự chuyển đến từ THR.
THRE: Transmitter Holding Register Empty (=1 khi có 1 ký tự đã chuyển từ THR –
TSR và bị xoá khi CPU đưa ký tự tới THR).

Phạm Hùng Kim Khánh Trang 51


Tài liệu DAQ Chương 4

BI: Break Interrupt (=1 khicó sự gián đoạn khi truyền, nghĩa là tồn tại mức logic 0
trong khoảng thời gian dài hơn khoảng thời gian truyền 1 byte và bị xoá khi CPU đọc LSR)
FE: Frame Error (=1 khi có lỗi khung truyền và bị xoá khi CPU đọc LSR)
PE: Parity Error (=1 khi có lỗi parity và bị xoá khi CPU đọc LSR)
OE: Overrun Error (=1 khi có lỗi thu đè, nghĩa là CPU không đọc kịp dữ liệu làm cho
quá trình ghi chồng lên RBR xảy ra và bị xoá khi CPU đọc LSR)
RxDR: Receiver Data Ready (=1 khi đã nhận 1 ký tự và đưa vào RBR và bị xoá khi
CPU đọc RBR).
 LCR (Line Control Register):

D7 D6 D5 D4 D3 D2 D1 D0
DLAB SBCB PS2 PS1 PS0 STB WLS1 WLS0

DLAB (Divisor Latch Access Bit) = 0: truy xuất RBR, THR, IER, = 1 cho phép đặt
bộ chia tần trong UART để cho phép đạt tốc độ truyền mong muốn.
UART dùng dao động thạch anh với tần số 1.8432 MHz đưa qua bộ chia 16 thành tần
số 115,200 Hz. Khi đó, tuỳ theo giá trị trong BRDL và BRDH, ta sẽ có tốc độ mong muốn.
Ví dụ như đường truyền có tốc độ truyền 2,400 bps có giá trị chia 115,200 / 2,400 = 48d =
0030h  BRDL = 30h, BRDH = 00h.
Một số giá trị thông dụng xác định tốc độ truyền cho như sau:

Tốc độ (bps) BRDH BRDL


1,200 00h 60h
2,400 00h 30h
4,800 00h 18h
9,600 00h 0Ch
19,200 00h 06h
38,400 00h 03h
57,600 00h 02h
115,200 00h 01h

SBCB (Set Break Control Bit) =1: cho phép truyền tín hiệu Break (=0) trong khoảng
thời gian lớn hơn một khung
PS (Parity Select):
PS2 PS1 PS0 Mô tả
X X 0 Không kiểm tra
0 0 1 Kiểm tra lẻ
0 1 1 Kiểm tra chẵn
1 0 1 Parity là mark
1 1 1 Parity là space

Phạm Hùng Kim Khánh Trang 52


Tài liệu DAQ Chương 4

STB (Stop Bit) = 0: 1 bit stop, =1: 1.5 bit stop (khi dùng 5 bit dữ liệu) hay 2 bit stop
(khi dùng 6, 7, 8 bit dữ liệu).
WLS (Word Length Select):

WLS1 WLS0 Độ dài dữ liệu


0 0 5 bit
0 1 6 bit
1 0 7 bit
1 1 8 bit

Một ví dụ khi lập trình trực tiếp trên cổng như sau:
.MODEL SMALL
.STACK 100h
.DATA
Com1 EQU 3F8h
Com_int EQU 08h
Buffer DB 251 DUP(?)
Bufferin DB 0
Bufferout DB 0
Char DB ?
Seg_com DW ? ; Vector ngắt cũ
Off_com DW ?
Mask_int DB ?
Msg DB 'Press any key to exit$‟
.CODE
Main PROC
MOV AX,@DATA
MOV DS,AX

MOV AH,35h
MOV AL,Com_int
INT 21h
MOV Seg_com,ES ; Lưu vector ngắt cũ
MOV Off_com,BX

PUSH DS
MOV BX,CS
MOV DS,BX
LEA DX,Com_ISR
MOV AH,35h ;Gán vector ngắt mới
MOV AL,Com_int
INT 21h
POP DS

Phạm Hùng Kim Khánh Trang 53


Tài liệu DAQ Chương 4

MOV DX,Com1+3 ; Địa chỉ LCR


MOV AL,80h ; Set DLAB = 1 cho phép định tốc
OUT DX,AL ; độ truyền dữ liệu

MOV DX,Com1 ; Gởi byte thấp


MOV AL,0Ch
OUT DX,AL

MOV DX,Com1+1
MOV AL,00h ; Gởi byte cao  000Ch: xác định
OUT DX,AL ; tốc độ truyền 9600bps

MOV DX,Com1+3 ; LCR = 0000 0011B


MOV AL,03h ; DLAB = 0, SBCB = 0  cấm Break
OUT DX,AL ; PS = 000  no parity
; STB = 0  1 stop bit
; WLS = 11  8 bit dữ liệu

MOV DX,Com1+4 ; Tác động đến DTR và RTS


MOV AL,03h ; MCR = 0000 0011b  DTR=RTS = 1
OUT DX,AL ;  ngõ DTR và RTS của cổng nối
; tiếp = 0
MOV DX,21h ; Kiểm tra trạng thái ngắt
IN AL,DX ; D7 – D0 xác định các IRQi
MOV Mask_int,AL ; =0: cho phép, =1: cấm
AND AL,0EFh ; = 1110 1111b  cho phép IRQ4
OUT DX,AL ;  cho phép COM1

MOV AL,01h ; IER = 0000 0001b  cho phép


MOV DX,Com1+1 ; ngắt khi RBR đầy
OUT DX,AL
MOV AH,09h
LEA Dx,Msg
INT 21h

Lap:
MOV AH,0Bh
INT 21h
CMP AL,0FFh
JE Exit

MOV AL,bufferin
CMP AL,bufferout
JE Lap
MOV AL,buffer[bufferout]

Phạm Hùng Kim Khánh Trang 54


Tài liệu DAQ Chương 4

MOV char,AL
INC bufferout
MOV AL,bufferout
CMP AL,251
JNE Next
MOV bufferout,0
Next:
MOV DL,char ; Xuất giá trị ra màn hình
MOV AH,02h
INT 21h

MOV AL,char ; Xuất ra cổng nối tiếp


MOV DX,Com1
OUT DX,AL
JMP Lap
Exit:
MOV AL,Mask_int
OUT 21h,AL ; Khôi phục trạng thái ngăt

MOV DX,Off_com
MOV BX,Seg_com
MOV DS,BX
MOV AH,35h ;Khôi phục vector ngắt
MOV AL,Com_int
INT 21h
MOV AH,4Ch
INT 21h
Main ENDP
Com_ISR PROC
MOV DX,Com1+5 ; Đọc nội dung LSR
IN AL,DX
AND AL,1 ; Nếu D0 = 1 thì có dữ liệu
JZ exit_ISR
MOV DX,Com1
IN AL,DX
MOV buffer[bufferin],AL
INC bufferin
MOV AL,bufferin
CMP AL,251
JNE Exit_ISR
MOV bufferin,0
Exit_ISR:
MOV AL,20h ; Báo cho PIC kết thúc ngăt
OUT 20h,AL
IRET
Com_ISR ENDP
END Main

Phạm Hùng Kim Khánh Trang 55


Tài liệu DAQ Chương 4

5.3. Truyền thông nối tiếp dùng ActiveX


5.3.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 dược lưu trữ trong file MSCOMM32.OCX.
Quá trình này có hai khả năng thực hiện điều khiển trao đổi thông tin:
- Điều khiển sự kiện:
Truyền thông điều khiển sự kiện là phương pháp tốt nhất trong quá trình điều khiển
việc trao đổi thông tin. Quá trình điều khiển thực hiện thông qua sự kiện OnComm.
- Hỏi vòng:
Quá trinh điều khiển bằng phương pháp hỏi vòng thực hiện thông qua kiểm tra các
giá trị của thuộc tính CommEvent sau một chu kỳ nào đó để xác định xem có sự kiện nào
xảy ra hay không. Thông thường phương pháp này sử dụng cho các chương trình nhỏ.
ActiveX MsComm được bổ sung vào một Visual Basic Project thông qua menu
Project > Components:

Hình 3.21 – Bổ sung đối tượng MsComm vào VBP

Phạm Hùng Kim Khánh Trang 56


Tài liệu DAQ Chương 4

Biểu tượng của MsComm: và các thuộc tính cơ bản mô tả như sau:

Thuộc tính Mô tả
CommPort Số thứ tự cổng truyền thông
Input Nhận ký tự từ bộ đệm
Output Xuất ký tự ra cổng nối tiếp
PortOpen Mở / đóng cổng
Settings Xác định các tham số truyền

Hình 3.22 – Các thuộc tính của đối tượng MSComm

5.3.2. Các thuộc tính


 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à:

Phạm Hùng Kim Khánh Trang 57


Tài liệu DAQ Chương 4

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)
VD:
MSComm1.Settings = "9600,O,8,1" sẽ xác định tốc độ truyền 9600bps,
kiểm tra parity chẵn với 1 bit stop và 8 bit dữ liệu.
 CommPort:
Xác định số thứ tự của cổng truyền thông, cú pháp:
MSComm1.CommPort = PortNumber
PortNumber là giá trị nằm trong khoảng từ 1  99, mặc định là 1.
VD:
MSComm1.CommPort = 1 xác định sử dụng COM1
 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.
VD: Mở cổng COM1 với tốc độ truyền 9600 bps
MSComm1.Settings = "9600,N,8,1"
MSComm1.CommPort = 1
MSComm1.PortOpen = True
 Các thuộc tính nhận dữ liệu:
Input: nhận một chuỗi ký tự và xoá khỏi bộ đệm. Cú pháp:
InputString = MSComm1.Input

Phạm Hùng Kim Khánh Trang 58


Tài liệu DAQ Chương 4

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.
InBufferCount: số ký tự có trong bộ đệm nhận. Cú pháp:
Count = MSComm1.InBufferCount
Thuộc tính này cùng dược dùng để xoá bộ đệm nhận bắng cách gán giá trị 0.
MSComm1.InBufferCount = 0
InBufferSize: đặt và xác định kích thước bộ đệm nhận (tính bằng byte). Cú pháp:
MSComm1.InBufferCount = NumByte
Giá trị măc định là 1024 byte. Kích thước bộ đệm này phải đủ lớn để tránh tình trạng
mất dữ liệu.
VD: Đọc toàn bộ nội dung trong bộ đệm nhận nếu có dữ liệu
MSComm1.InputLen = 0
If MSComm1.InBufferCount <> 0 Then
InputString = MSComm1.Input
End If
 Các thuộc tính xuất dữ liệu:
Bao gồm các thuộc tính Output, OutBufferCount và OutBufferSize, chức năng
của các thuộc tính này giống như các thuộc tính nhập.
 CDTimeout:
Đặt và xác định khoảng thời gian lớn nhất (tính bằng ms) từ lúc phát hiện sóng mang
cho đến lúc có dữ liệu. Nếu quá khoảng thời gian này mà vẫn chưa có dữ liệu thì sẽ gán
thuộc tính CommEvent là CDTO (Carrier Detect Timeout Error) và tạo sự kiện OnComm.
Cú pháp:
MSComm1.CDTimeout = NumTime
 DSRTimeout:
Xác định thời gian chờ tín hiệu DSR trước khi xảy ra sự kiện OnComm.
 CTSTimeout:
Đặt và xác định khoảng thời gian lớn nhất (tính bằng ms) đợi tín hiệu CTS trước khi
đặt thuộc tính CommEvent là CTSTO và tạo sự kiện OnComm. Cú pháp:
MSComm1.CTSTimeout = NumTime
 CTSHolding:
Xác định đã có tín hiệu CTS hay chưa, tín hiệu này dùng cho quá trình bắt tay bằng
phần cứng (cho biết DCE sẵn sàng nhận dữ liệu), trả về giá trị True hay False.
 DSRHolding:
Xác định trạng thái DSR (báo hiệu sự tồn tại của DCE), trả về giá trị True hay False.
 CDHolding:

Phạm Hùng Kim Khánh Trang 59


Tài liệu DAQ Chương 4

Xác định trạng thái CD, trả về giá trị True hay False.
 DTREnable:
Đặt hay xoá tín hiệu DTR để báo sự tồn tại của DTE. Cú pháp:
MSComm1.DTREnable = True | False
 RTSEnable:
Đặt hay xoá tín hiệu RTS để yêu cầu truyền dữ liệu đến DTE. Cú pháp:
MSComm1.RTSEnable = True | False
 NullDiscard:
Cho phép nhận các ký tự NULL (rỗng) hay không (= True: cấm). Cú pháp:
MSComm1.NullDiscard = True | False
 SThreshold:
Số byte trong bộ đệm truyền làm phát sinh sự kiện OnComm. Nếu giá trị này bằng 0
thì sẽ không tạo sự kiện OnComm. Cú pháp:
MSComm1.SThreshold = NumChar
 HandShaking:
Chọn giao thức bắt tay khi thực hiện truyền dữ liệu. Cú pháp:
MSComm1.HandShaking = Protocol
Các giao thức truyền bao gồm:
Protocol Giá trị Mô tả
ComNone 0 Không băt tay (mặc định)
ComXon/Xoff 1 Bắt tay phần mềm (Xon/Xoff)
ComRTS 2 Bắt tay phần cứng (RTS/CTS)
ComRTSXon/Xoff 3 Bắt tay phần cứng và phàn mềm

 CommEvent:
Trả lại các lỗi truyền thông hay sự kiện xảy ra tại cổng nối tiếp
Các sự kiện:
Sự kiện Giá trị Mô tả
ComEvSend 1 Đã truyền ký tự
ComEvReceive 2 Khi có ký tự trong bộ đệm nhận
ComEvCTS 3 Có thay đổi trên CTS (Clear To Send)
ComEvDSR 4 Có thay đổi trên DSR (Data Set Ready)
ComEvCD 5 Có thay đổi trên CD (Carrier Detect)

Phạm Hùng Kim Khánh Trang 60


Tài liệu DAQ Chương 4

ComEvRing 6 Phát hiện chuông


ComEvEOF 7 Nhận ký tự kết thúc file
Các lỗi truyền thông:
Lỗi Giá trị Mô tả
ComBreak 1001 Nhận tín hiệu Break
ComCTSTO 1002 Carrier Detect Timeout
ComFrame 1004 Lỗi khung
ComOver 1006 Phần cứng không đọc ký tự trước khi gởi ký tự kế
ComCDTO 1007 Carrier Detect Timeout
ComRxOver 1008 Tràn bộ đệm nhận
ComRxParity 1009 Lỗi parity
ComTxFull 1010 Tràn bộ đệm truyền

5.3.3. Sự kiện OnComm


Sự kiện OnComm xảy ra bất cứ khi nào giá trị của thuộc tính CommEvent thay đổi.
Các thuộc tính RThreshold và SThreshold = 0 sẽ cấm sự kiện OnComm khi thực hiện nhận
hay gởi dữ liệu. Thông thường, SThreshold = 0 và RThreshold = 1.
Một chương trình truyền nhận đơn giản thực hiện bằng cách nối chân TxD với RxD
của cổng COM1 (loopback). Phương pháp này dùng để kiểm tra cổng nối tiếp.
Thuộc tính cơ bản của cổng nối tiếp:

Hình 3.23 – Các thuộc tính cơ bản của MSComm

Phạm Hùng Kim Khánh Trang 61


Tài liệu DAQ Chương 4

Cửa sổ chương trình thực thi:

Textbox chứa
các ký tự gởi Đối tượng
MSComm

Textbox chứa
các ký tự nhận

Yêu cầu truyền


dữ liệu

Hình 3.24 – Cửa sổ chương trình loopback


Chương trình nguồn:
VERSION 5.00
Object = “{648A5603-2C6E-101B-82B6-
000000000014}#1.1#0”; “MSCOMM32.OCX”
Begin VB.Form Form1
Caption = “Loopback Serial Port
Example”
ClientHeight = 3195
ClientLeft = 60
ClientTop = 345
ClientWidth = 4680
LinkTopic = “Form1”
ScaleHeight = 3195
ScaleWidth = 4680
StartUpPosition = 3 „Windows Default
Begin VB.CommandButton cmdExit
Caption = “Exit”
Height = 615
Left = 2640
TabIndex = 5
Top = 2160
Width = 1095
End
Begin VB.CommandButton cmdSend
Caption = “Send”
Height = 615
Left = 1200
TabIndex = 4
Top = 2160
Width = 975

Phạm Hùng Kim Khánh Trang 62


Tài liệu DAQ Chương 4

End
Begin VB.TextBox txtReceive
Height = 735
Left = 1320
Locked = -1 „True
TabIndex = 3
Top = 1080
Width = 2535
End
Begin VB.TextBox txtTransmit
Height = 735
Left = 1320
TabIndex = 0
Top = 240
Width = 2535
End
Begin MSCommLib.MSComm MSComm1
Left = 3960
Top = 240
_ExtentX = 1005
_ExtentY = 1005
_Version = 393216
DTREnable = -1 „True
RThreshold = 1
End
Begin VB.Label Label2
Caption = “Receive:”
Height = 375
Left = 240
TabIndex = 2
Top = 1200
Width = 855
End
Begin VB.Label Label1
Caption = “Transmit:”
Height = 375
Left = 240
TabIndex = 1
Top = 240
Width = 975
End
End
Attribute VB_Name = “Form1”
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False

Phạm Hùng Kim Khánh Trang 63


Tài liệu DAQ Chương 4

Private Sub cmdExit_Click()


MSComm1.PortOpen = False „Đóng cổng
End
End Sub
Private Sub cmdSend_Click()
MSComm1.Output = Trim(txtTransmit.Text)‟Gởi dữ liệu
End Sub
Private Sub Form_Load()
MSComm1.CommPort = 1 „COM1
MSComm1.Settings = “9600,n,8,1” „Tốc độ 9600bps
MSComm1.PortOpen = True „ Mở cổng
End Sub
Private Sub MSComm1_OnComm()
If (MSComm1.CommEvent = comEvReceive) Then
txtReceive.Text = txtReceive.Text + MSComm1.Input
End If
End Sub

5.4. Giao tiếp với hệ DAQ


Khi thực hiện giao tiếp với vi điều khiển, ta phải dùng thêm mạch chuyển mức logic
từ TTL  232 và ngược lại. Các vi mạch thường sử dụng là MAX232 của Maxim hay
DS275 của Dallas. Mạch chuyển mức logic mô tả như sau:
TxD_PC
1
6
2 13 12
7 R1IN R1OUT
3 14 11 RxD_PC
8 T1OUT T1IN
4 1
9 C25 C+
5 6 MAX232 3 C28
V- C1- 10u
DB9 10u 4
R2OUT
T2OUT

2 C2+
R2IN

T2IN

V+ 5 C29
C26 C2- 10u
10u
8

9
10

VCC
C27
10u

Hình 3.25 – Mạch chuyển mức logic TTL  RS232

Phạm Hùng Kim Khánh Trang 64


Tài liệu DAQ Chương 4

Tuy nhiên, khi sử dụng mạch chuyển mức logic dùng các vi mạch thì đòi hỏi phải
dùng chung GND giữa máy tính và vi mạch  có khả năng làm hỏng cổng nối tiếp khi xảy
ra hiện tượng chập mạch ở mạch ngoài. Do đó, ta có thể dùng thêm opto 4N35 để cách ly về
điện. Sơ đồ mạch cách ly mô tả như sau: VCC

1K

TxD

6 1
5 VCC

4 2
.
68K
DTR 4N35

1 4.7K
6
2 RxD_PC
7
3 TxD_PC 1 6
8 5 RxD
4 4.7K
9 2 4
5
4N35
RTS

2.2K

Hình 3.26 – Mạch chuyển mức logic TTL  RS232 cách ly


Khi giao tiếp, vi điều khiển chính là một DTE nên sẽ nối RxD của máy tính với TxD
của vi điếu khiển và ngược lại. Mạch kết nối đơn giản giữa vi điều khiển và máy tính như
sau:

Phạm Hùng Kim Khánh Trang 65


Phạm Hùng Kim Khánh

Tài liệu Lập trình hệ thống


LED
1 2
74LS04
1
VCC 2 LED VCC
3 3 4
4 74LS04 1
5 2
6 LED 3
7 5 6 4
8 74LS04 5
9 6
LED 7
21 39 9 8 8
SW DIP-8 330 22 P2.0/A8 P0.0/AD0 38 74LS04 9
23 P2.1/A9 P0.1/AD1 37
24 P2.2/A10 P0.2/AD2 36 LED
25 P2.3/A11 P0.3/AD3 35 11 10 330
26 P2.4/A12 P0.4/AD4 34 74LS04
27 P2.5/A13 P0.5/AD5 33
28 P2.6/A14 P0.6/AD6 32 LED
1 P2.7/A15 P0.7/AD7 13 12
6 10 1 74LS04
2 13 12 11 P3.0/RXD P1.0 2
7 R1IN R1OUT 12 P3.1/TXD P1.1 3 LED
3 14 11 13 P3.2/INT0 P1.2 4 1 2
8 T1OUT T1IN 14 P3.3/INT1 P1.3 5 74LS04
4 1 15 P3.4/T0 P1.4 6
9 C+ 16 P3.5/T1 P1.5 7 LED
5 6 MAX232 3 C28 17 P3.6/WR P1.6 8 3 4
V- C1- 10u P3.7/RD P1.7 74LS04
10u 4 30 19
R2OUT
T2OUT

2 C2+ 29 ALE/PROG XTAL1 18


R2IN

T2IN

V+ 5 C29 PSEN XTAL2


C26 C2- 10u 31
10u EA/VPP 9
8

10

VCC RST
C27
10u AT89C51
33p
11.059MHz
C31

Hình 3.27 – Kết nối với DAQ


Trang 20

Chương 4
Tài liệu DAQ Chương 3

Chương trình nguồn cho vi điều khiển AT89C51:


MOV TMOD,#20h
MOV SCON,#52h ; Truyền 8 bit dữ liệu, no parity
MOV TH1,#(-3) ; Tốc độ truyền 9600 bps
MOV TL1,#(-3)
SETB TR1

Receive:
JNB RI,Transmit ; Có dữ liệu hay không
CLR RI
MOV A,SBUF ; Nếu có thì xuất ra LED
MOV P1,A
Transmit:
JNB TI,Receive ; Đã truyền xong chưa
CLR TI
MOV A,P2 ; Nếu xong thì truyền trạng
thái
MOV SBUF,A ; của công tăc SW DIP-8
JMP Receive

Giao diện của chương trình trên máy tính:

Hình 3.28 – Chương trình giao tiếp với vi điều khiển


Chương trình nguồn:
VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-
000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form Form1
Caption = "Microcontroller
Interface Example"
ClientHeight = 4665

Trang 67 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

ClientLeft = 60
ClientTop = 345
ClientWidth = 4020
LinkTopic = "Form1"
ScaleHeight = 4665
ScaleWidth = 4020
StartUpPosition = 3 'Windows Default
Begin VB.CheckBox chkSW
Height = 375
Index = 7
Left = 1800
TabIndex = 17
Top = 3480
Width = 1575
End
Begin VB.CheckBox chkSW
Height = 375
Index = 6
Left = 1800
TabIndex = 16
Top = 3000
Width = 1575
End
Begin VB.CheckBox chkSW
Height = 375
Index = 5
Left = 1800
TabIndex = 15
Top = 2520
Width = 1575
End
Begin VB.CheckBox chkSW
Height = 375
Index = 4
Left = 1800
TabIndex = 14
Top = 2040
Width = 1575
End
Begin VB.CheckBox chkSW
Height = 375
Index = 3
Left = 1800
TabIndex = 13
Top = 1560
Width = 1575
End
Begin VB.CheckBox chkSW
Height = 375

Trang 68 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

Index = 2
Left = 1800
TabIndex = 12
Top = 1080
Width = 1575
End
Begin VB.CheckBox chkSW
Height = 375
Index = 1
Left = 1800
TabIndex = 11
Top = 600
Width = 1575
End
Begin VB.CheckBox chkSW
Height = 375
Index = 0
Left = 1800
TabIndex = 10
Top = 120
Width = 1575
End
Begin VB.CommandButton cmdExit
Caption = "Exit"
Height = 495
Left = 1680
TabIndex = 9
Top = 3960
Width = 975
End
Begin MSCommLib.MSComm MSComm1
Left = 3360
Top = 3960
_ExtentX = 1005
_ExtentY = 1005
_Version = 393216
DTREnable = -1 'True
RThreshold = 1
End
Begin VB.CommandButton cmdSend
Caption = "Send"
Height = 495
Left = 240
TabIndex = 8
Top = 3960
Width = 1095
End
Begin VB.Label lblLED
BackStyle = 0 'Transparent

Trang 69 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

Caption = "LED7"
Height = 375
Index = 7
Left = 240
TabIndex = 7
Top = 3480
Width = 1095
End
Begin VB.Label lblLED
BackStyle = 0 'Transparent
Caption = "LED6"
Height = 375
Index = 6
Left = 240
TabIndex = 6
Top = 3000
Width = 975
End
Begin VB.Label lblLED
BackStyle = 0 'Transparent
Caption = "LED5"
Height = 375
Index = 5
Left = 240
TabIndex = 5
Top = 2520
Width = 975
End
Begin VB.Label lblLED
BackStyle = 0 'Transparent
Caption = "LED4"
Height = 375
Index = 4
Left = 240
TabIndex = 4
Top = 2040
Width = 975
End
Begin VB.Label lblLED
BackStyle = 0 'Transparent
Caption = "LED3"
Height = 375
Index = 3
Left = 240
TabIndex = 3
Top = 1560
Width = 975
End
Begin VB.Label lblLED

Trang 70 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

BackStyle = 0 'Transparent
Caption = "LED2"
Height = 375
Index = 2
Left = 240
TabIndex = 2
Top = 1080
Width = 975
End
Begin VB.Label lblLED
BackStyle = 0 'Transparent
Caption = "LED1"
Height = 375
Index = 1
Left = 240
TabIndex = 1
Top = 600
Width = 975
End
Begin VB.Label lblLED
BackStyle = 0 'Transparent
Caption = "LED0"
Height = 375
Index = 0
Left = 240
TabIndex = 0
Top = 120
Width = 975
End
Begin VB.Shape shpLED
BorderColor = &H000000FF&
FillColor = &H000000FF&
FillStyle = 0 'Solid
Height = 375
Index = 7
Left = 840
Shape = 3 'Circle
Top = 3480
Width = 375
End
Begin VB.Shape shpLED
BorderColor = &H000000FF&
FillColor = &H000000FF&
FillStyle = 0 'Solid
Height = 375
Index = 6
Left = 840
Shape = 3 'Circle
Top = 3000

Trang 71 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

Width = 375
End
Begin VB.Shape shpLED
BorderColor = &H000000FF&
FillColor = &H000000FF&
FillStyle = 0 'Solid
Height = 375
Index = 5
Left = 840
Shape = 3 'Circle
Top = 2520
Width = 375
End
Begin VB.Shape shpLED
BorderColor = &H000000FF&
FillColor = &H000000FF&
FillStyle = 0 'Solid
Height = 375
Index = 4
Left = 840
Shape = 3 'Circle
Top = 2040
Width = 375
End
Begin VB.Shape shpLED
BorderColor = &H000000FF&
FillColor = &H000000FF&
FillStyle = 0 'Solid
Height = 375
Index = 3
Left = 840
Shape = 3 'Circle
Top = 1560
Width = 375
End
Begin VB.Shape shpLED
BorderColor = &H000000FF&
FillColor = &H000000FF&
FillStyle = 0 'Solid
Height = 375
Index = 2
Left = 840
Shape = 3 'Circle
Top = 1080
Width = 375
End
Begin VB.Shape shpLED
BorderColor = &H000000FF&
FillColor = &H000000FF&

Trang 72 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

FillStyle = 0 'Solid
Height = 375
Index = 1
Left = 840
Shape = 3 'Circle
Top = 600
Width = 375
End
Begin VB.Shape shpLED
BorderColor = &H000000FF&
FillColor = &H000000FF&
FillStyle = 0 'Solid
Height = 375
Index = 0
Left = 840
Shape = 3 'Circle
Top = 120
Width = 375
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Private Sub cmdExit_Click()
If MSComm1.PortOpen Then
MSComm1.PortOpen = False
End If
End
End Sub

Private Sub cmdSend_Click()


Dim t As Integer
Dim i As Integer
t = 0
For i = 0 To 7
t = t + (2 ^ i) * (1 - shpLED(i).FillStyle)
Next i
MSComm1.Output = Chr(t)
End Sub

Private Sub Form_Load()


MSComm1.Settings = "9600,N,8,1"
MSComm1.CommPort = 1
MSComm1.PortOpen = True
End Sub

Private Sub lblLED_Click(Index As Integer)

Trang 73 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

shpLED(Index).FillStyle = 1 - shpLED(Index).FillStyle
End Sub

Private Sub MSComm1_OnComm()


Dim t As String
Dim n As Integer
Dim i As Integer
If MSComm1.CommEvent = comEvReceive Then
n = Asc(MSComm1.Input)
For i = 0 To 7
chkSW(i).Value = n Mod 2
If chkSW(i).Value = 0 Then
chkSW(i).Caption = "Switch " &
Str(i) & " off"
Else
chkSW(i).Caption = "Switch " &
Str(i) & " on"
End If
n = Fix(n / 2)
Next i
End If
End Sub

5.5. Chuẩn RS-485


Chuẩn RS232 dùng đường truyền không cân bằng vì các tín hiệu lấy chuẩn là
GND chung nên dễ bị ảnh hưởng của nhiễu làm tốc độ và khoảng cách truyền bị giới
hạn. Khi muốn tăng khoảng cách truyền, môt phương pháp có thể sử dụng là dùng 2
dây truyền vi sai vì lúc này 2 dây có cùng đặc tính nên sẽ loại trừ được nhiễu chung.
Hai chuẩn được sử dụng là RS422 và RS485 nhưng thông thường sử dụng RS485.
Điện áp vi sai yêu cầu phải lớn hơn 200mV. Nếu V AB > 200 mV thì tương ứng với
logic 1 và VAB < -200 mV tương ứng với logic 0. Chuẩn RS485 sử dụng hai điện trở
kết thúc là 120  tại hai đầu xa nhất của đường truyền và sử dụng dây xoắn đôi.

Hình 3.29 – Chuẩn giao tiếp RS422

Trang 74 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

Hình 3.30 – Chuẩn giao tiếp RS485

5.5.1. Các đặc tính kỹ thuật:


Đặc tính RS422 RS485
Số thiết bị truyền 1 32
Số thiết bị nhận 10 32
Chiều dài cable cực đại 1200m 1200m
Tốc độ truyền cực đại (từ 12 – 1200m) 10Mps – 100Kbps 10Mps – 100Kbps
Điện áp cực đại tại ngõ ra thiết bị truyền -0.25V  6V -7V  12V
Điện áp ngõ vào thiết bị nhận -10V  10V -7V  12V

5.5.2. Các chế độ truyền:


Bán song công

Trang 75 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

Song công:

5.5.3. So sánh giữa RS232 và RS485:


RS232 RS485
Chế độ hoạt động Đơn Vi sai
Tổng số bộ điều khiển và 1 bộ điều khiển (driver) + 1 32bộ điều khiển (driver) +
thu trên 1 dây bộ thu (receiver) 32 bộ thu (receiver)
Chiều dài cáp tối đa 15m 1200m
Tốc độ tối đa 20 Kbps/15m 10Mbps/12m
1Mbps/120m
100Kbps/1.2km
Mức tín hiệu ngõ ra có tải  5   15V  1.5V
Mức tín hiệu ngõ ra không  25V  6V
tải
Trở kháng của bộ điều 3 K - 7 K 54 
khiển
Phạm vi điện áp bộ thu  15V -7V – 12V
Độ nhạy bộ thu  3V  200 mV
Trở kháng bộ thu 3 K - 7 K  12 K

Đối với chuẩn RS232, khoảng cách truyền không cho phép đi xa nên khi muốn
thực hiện truyền ở khoảng cách xa thì phải chuyển từ RS232 sang chuẩn RS485 để
truyền đi và sau đó chuyển từ RS485 sang RS232 để máy tính có thể nhận dạng được.
Sơ đồ mạch chuyển đổi từ RS232 sang RS485 và ngược lại mô tả như sau:

Trang 76 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 3

1
2
3
1 4 6 120 4
6 DI A 7 5
2 13 12 3 B 6
7 R1IN R1OUT VCC 2 DE 1 7
3 14 11 RE RO 8
8 T1OUT T1IN
4 1 MAX485
9 C+ CON8
5 6 MAX232 3
V- C1- 10u
DB9 10u 4 6 4

R2OUT
T2OUT
2 C2+ 7 A DI

R2IN

T2IN
V+ 5 B 3
C2- 10u 1 DE 2 120
10u RO RE
8

9
10
VCC
MAX485
10u

Hình 3.31 – Chuyển đổi từ RS232 sang RS485 và ngược lại

Trang 77 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 4

Chương 4
TỔNG QUAN VỀ SCADA (SUPERVISORY
CONTROL AND DATA ACQUISITION)
1. Giới thiệu
SCADA là hệ thống cho phép người điều hành giám sát và điều khiển các quá
trình được phân bố trong các nơi ở xa.
Có nhiều quá trình sử dụng hệ thống SCADA như: thủy điện, các khâu xử lý và
phân phối nước, khí tự nhiên, v.v…Các hệ thống SCADA cho phép các nơi xa liên lạc
với phương tiện điều khiển và cung cấp dữ liệu điều khiển cần thiết cho các quá trình
điều khiển. Khi khoảng cách đến các nơi xa tăng thì càng khó truy cập hơn, khi đó
SCADA trở thành sự chọn tốt nhất cho người điều hành để điều chỉnh và quan sát.
Khoảng cách và sự ở xa là hai yếu tố chính để cài đặt các hệ thống SCADA .
Các hệ thống SCADA hiện đại có nhiều đặc tính tiên tiến như: kiến trúc phân bố,
cơ sở dữ liệu phân bố, giao tiếp đồ họa với người sử dụng (GUI = Graphic User
Interface), các đơn vị đo lường từ xa thông minh v.v…
Hệ SCADA thường được dùng để chỉ tất cả các hệ thống máy tính được thiết kế
để thực hiện các chức năng sau:
- Thu thập dữ liệu từ các thiết bị công nghiệp hoặc các bộ cảm biến / chuyển đổi
năng lượng.
- Xử lý và thực hiện các phép tính trên dữ liệu thu thập được.
- Hiển thị dữ liệu thu thập và dữ liệu đã xử lý.
- Nhận lệnh từ người điều hành và thực hiện gởi các lệnh điều khiển đến các
thiết bị.
- Xử lý các lệnh điều khiển tự động hoặc bằng tay đúng lúc và tin cậy.
Các hệ thống như vậy có thể được gọi bằng các tên khác trong các tình huống và
các công nghệ khác như: DAC (Data Acquition and Control = Điều khiển và thu thập dữ
liệu), DCS (Distributed Control Systems = Các hệ thống điều khiển phân bố), … Tất cả
các hệ thống này về cơ bản thực hiện cùng các chức năng. Tùy theo ứng dụng cụ thể, các
đặc điểm sau dùng để phân biệt các hệ thống:
- Vị trí và sự phân bố các nguồn dữ liệu công nghiệp.
- Lượng dữ liệu được thu thập.
- Tốc độ thu thập dữ liệu.
- Mức độ tự động của các lệnh điều khiển.
- Kiểu tính toán và vị trí mà tác động điều khiển được thực hiện.
Hệ thống SCADA có 4 phần tử chính: người điều hành (operator), phần tử thiết bị
đầu cuối chính MTU (Master Terminal Unit), truyền thông liên lạc và phần tử thiết bị đầu

Trang 107 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 4

cuối ở xa RTU (Remote Terminal Unit). Người điều hành thực hiện điều khiển qua thông
tin được mô tả trong khối hiển thị hình ảnh VDU (Video Display Unit). Phần nhập của hệ
thông thường xuất phát từ người điều hành qua bàn phím của MTU. Thông tin từ các nơi
ở xa được MTU giám sát và hiển thị các thông tin này cho người điều hành.
MTU (Master Terminal Unit)

Outputs to Other Devices

Inputs from RTU MTU Outputs to RTU

Inputs from Operator


Hình 4.1: Các phần nhập và xuất của MTU.
Trung tâm của hệ thống là MTU. Nhiệm vụ của MTU là khởi động tất cả các công
việc: truyền thông liên lạc, thu thập dữ liệu, lưu trữ thông tin, gửi thông tin đến các hệ
thống khác, và giao tiếp với người điều hành. Sự khác biệt chính giữa MTU và RTU là
MTU khởi động ảo tất cả các truyền thông bằng lập trình giữa nó và con người. Hầu hết
tất cả các truyền thông được thực hiện bởi MTU. MTU cũng liên lạc với các thiết bị
ngoại vi khác như: monitor, máy in hoặc các hệ thống thông tin khác. Thành phần giao
tiếp cơ bản với người điều hành là monitor mà trong đó hiển thị các valve, bơm, … Khi
dữ liệu đến thay đổi thì màn hình được cập nhật.
RTU (Remote Terminal Unit):
RTU thu thập thông tin ở xa từ nhiều thiết bị nhập như các valve, bơm, báo động
(alarm), đồng hồ đo (meter)… Chủ yếu dữ liệu dạng analog, digital (on/off), hoặc dữ liệu
xung (như đếm số vòng xung của các meter). Nhiều RTU giữ thông tin thu thập được
trong bộ nhớ và đợi yêu cầu từ MTU để truyền dữ liệu. Các RTU hiện đại hơn có các
máy vi tính và các PLCs có thể điều khiển trực tiếp qua địa điểm từ xa không cần định
hướng của MTU.

Trang 108 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 4

Outputs to Field Devices

Inputs from MTU RTU Outputs to MTU

Inputs from Field Devices

Hình 4.2: Các phần nhập và xuất của RTU.


CPU của RTU nhận luồng dữ liệu nhị phân theo giao thức truyền thông. Các giao
thức có thể mở rộng như TCP/IP (Transmission Control Protocol and Internet Protocol)
hoặc các giao thức riêng. Những luồng dữ liệu tổng quát chứa các thông tin được tổ chức
theo mô hình 7 lớp ISO/OSI. Mô hình OSI được sử dụng để đặt tiêu chuẩn cho cách trao
đổi thông tin với các giao thức, truyền thông và dữ liệu. RTU nhận thông tin của nó nhờ
vào mã nhận dạng của nó trong dữ liệu truyền. Dữ liệu này được diễn dịch và CPU điều
khiển tác động thích hợp tại chỗ.

2. Các đặc tính chính của hệ thống SCADA


2.1. Kiến trúc hệ thống
Hiện nay các hệ SCADA thế hệ mới được xây dựng theo kiến trúc phân tán, trong
đó máy chủ được phân bố trên một số bộ xử lý được nối cùng với nhau bằng mạng nội bộ
(LAN). Trong đó mỗi bộ xử lý có một trách nhiệm nhất định như : thu thập và xử lý, tạo
hiển thị, thiết lập báo cáo, … và một số bộ xử lý dùng để dự phòng.
Nhờ vào các công nghệ diện rộng (WAN), hệ thống SCADA có thể được phân tán
trên một miền địa lý rộng. Hệ thống được thiết kế theo hệ thống mở và cơ cấu server -
client.

Trang 109 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 4

Kiến trúc tiêu biểu của một hệ SCADA phân tán:

IOS HMI

HDC GW APPS

Hình 4.3: Kiến trúc tiêu biểu của một hệ SCADA phân bố.
IOS: Data Input/Output Modules
HMI: Human Machine Interface Module
HDC: Historical Data Collection and Storage Module
GW: Gateway for inter LAN communications
APPS: Application Calculations and Processing Module.

2.2. Các đặc tính chính của hệ thống


Các hệ thống SCADA hiện nay có các đặc tính sau:
- Đồ họa hoàn toàn trong quá trình giám sát và điều khiển.
- Có hệ thống lưu trữ dữ liệu (History) và hiển thị đồ thị quá trình, có khả năng
hiển thị đa tín hiệu.
- Hệ thống cảnh báo và ghi nhận sự kiện (Alarm/ Event System).
- Hỗ trợ các chuẩn truyền thông nối tiếp, song song và giao thức TCP/IP.
- Hệ thống báo cáo, báo biểu theo chuẩn công nghiệp.
- Hỗ trợ các chuẩn giao diện OPC, OLE/DB và các giao diện công nghiệp khác.
- Khả năng tích hợp tín hiệu Video động.
- Khả năng đồng bộ về thời gian với hệ thống cũng như giữa các Server và
Client.

2.3. Đặc điểm về giao tiếp giữa người và máy


SCADA trang bị các VDU (Visual Display Unit = Đơn vị hiển thị) đầy đủ đồ họa
có kèm mouse, trackball, joystick và bàn phím. Các nút điều khiển nối cứng được thay
thế bằng các biểu tượng trên màn hình được tác động bằng chuột hay bàn phím. Các
phương tiện này giúp cho người điều hành:
- Nhanh chóng hoán đổi giữa các màn hình hiển thị.
- Nhanh chóng xem được chi tiết các thông tin.

Trang 110 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 4

- Tạo và sửa đổi các màn hình hiển thị trực tiếp ở hệ thống.
Có những hiệu ứng đặc biệt để tăng khả năng phân biệt rõ dữ liệu (ví dụ các màu
khác nhau cho các lô khác nhau trong một đường ống dẫn dầu).
Với các VDU hoạt động trong môi trường Windows hay X-Windows, người điều
hành cũng có thể:
- Xem trên cùng một VDU nhiều mảng thông tin trải ra trên nhiều màn hình hiển
thị.
- Trên cùng màn hình, truy cập được các dữ liệu nằm rải rác theo vùng hoặc các
dữ liệu thuộc các cơ sở dữ liệu khác nhau.
Do đó, những phương tiện HMI hiện đại cho phép người điều hành truy cập số
lượng thông tin lớn dễ hơn và nhanh hơn.
Về các RTU, không còn là những thiết bị thụ động nữa mà chúng làm nhiệm vụ
thu thập và lưu giữ dữ liệu vùng. Nhiều mức xử lý dữ liệu và điều khiển được thực hiện
tại các RTU.
Nhiều loại thiết bị có thể được nối vào các RTU như: PLC, máy đo lưu lượng,
thiết bị lấy chuẩn trong các bin hay các bồn chứa… Các RTU có thể được kết nối theo
kiểu phân bố hoặc kiểu phân cấp. Dữ liệu của các RTU được xử lý tại trạm chủ.
Về cơ sở dữ liệu, các dữ liệu được lưu trữ không chỉ là dữ liệu đo đạc từ xa được tính
toán mà còn là các thông số bảo vệ, các sự kiện, các mẫu tin cũng như các cảnh báo. Do
tính chất phân bố của SCADA nên cơ sở dữ liệu cũng được phân bố. Cơ sở dữ liệu cũng
có thể liên hệ với hệ thống quản trị thông tin (Managerment Information System) và hệ
thống thông tin địa lý GIS (Geographic Information System). Ngoài ra, các dữ liệu có thể
được bảo mật bằng các password.

3. Nguyên tắc hoạt động của hệ thống SCADA


Hệ thống SCADA hoạt động dựa trên nguyên tắc lấy tín hiện từ các cơ cấu cảm
biến được gắn trên các thiết bị công tác hoặc trên dây chuyền sản xuất gửi về cho máy
tính. Máy tính xử lý, kiểm tra trạng thái hoạt động của hệ thống, các yêu cầu kỹ thuật của
sản phẩm đã được cài sẵn trong bộ nhớ. Đồng thời, máy tính sẽ hiển thị lại những thông
tin kỹ thuật của hệ thống trên màn hình, cho phép tự động giám sát và điều khiển hệ
thống và phát ra tín hiệu điều khiển đến máy công tác tạo nên vòng tín hiệu kín (thực
hiện chức năng giám sát và điều khiển)
Việc điều khiển giám sát ở đây bao hàm hai ý nghĩa :
- Con người theo dõi và điều khiển.
- Máy tính giám sát và điều khiển.
Đối với các hệ thống sản xuất tự động trước đây, việc kiểm tra giám sát hoàn toàn
do con người đảm trách. So với máy tính, tốc độ xử lý tính toán của con người rất chậm
và dễ nhầm lẫn. Việc tính toán điều khiển của máy tính sẽ tránh được những hậu quả trên.
Những sai sót nhỏ, đơn giản thường xuyên gặp phải sẽ được máy tính giám sát và xử lý

Trang 111 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 4

theo chương trình được đặt sẵn. Đối với những sự cố lớn máy tính sẽ báo cho người theo
dõi biết và tạm dừng hoạt động của hệ thống để chờ quyết định của người điều hành.
Vì vậy, bên cạnh khả năng hoạt động toàn hệ thống theo một chương trình định
trước, hệ SCADA còn cho phép người vận hành quan sát được trạng thái làm việc của
từng thiết bị tại các trạm cơ sở, đưa ra các cảnh báo, báo động khi hệ thống có sự cố và
thực hiện các lệnh điều khiển can thiệp vào hoạt động của hệ thống khi có tình huống bất
thường hay có sự cố

4. Chức năng và nhiệm vụ cơ bản của hệ thống SCADA


4.1. Giám sát và phân tích hoạt động sản xuất
Ngay khi nhận biết được những thông tin về hoạt động của hệ thống từ các bộ
phận cảm biến gửi về, máy tính sẽ phân tích những tín hiệu đó và so sánh với những tín
hiệu chuẩn, với những tín hiệu yêu cầu từ các tập tin về cấu hình hoạt động của hệ thống
sản xuất, hay các bảng cơ sở dữ liệu về sản phẩm, quy trình sản xuất, các thông số công
nghệ của các máy công tác(dữ liệu tham khảo). Nhờ các bộ phận cảm biến, các thiết bị đo
lường mà trong quá trình sản xuất luôn thông báo cho người giám sát biết được các thông
tin về tiến trình hoạt động sản xuất, các thông số kỹ thuật ,số lượng sản phẩm...
Việc giám sát ở đây bao hàm hai ý nghĩa:
- Máy tính giám sát
- Con người giám sát
Việc theo dõi giám sát chủ yếu là do máy tính, con người chỉ đóng vai trò phụ,
chuyên theo dõi những biến cố lớn nguy hiểm đến hệ thống sản xuất. Những trục trặc nhỏ
hay những sai lệch thường xuyên gặp phải sẽ được máy tính sửa chữa theo chương trình
được cài sẵn

4.2. Hoạt động theo chương trình điều khiển


Ngoài các chức năng truyền thống là so sánh để điều khiển cơ cấu tác động, ta còn
có thể cho hệ thống hoạt động theo một chương trình đã lập từ trước. Nhờ có bộ vi xử lý
ta có thể lập trình cho hệ thống hoạt động theo những chu trình phức tạp, máy tính sẽ đọc
chương trình và xuất tín hiệu điều khiển cho các cơ cấu hoạt động theo chương trình
Việc thay đổi chu trình hoạt động của máy tính hay thay đổi kích thước mẫu mã
sản phẩm chỉ là việc thay đổi chương trình. Mẫu mã, kích thước được vẽ trên máy tính
bằng các phần mềm chuyên dụng (Cimatron, Pro Engineer..) rồi máy tính sẽ dịch lại theo
mã máy để cho các máy điều khiển số (NC,CNC) hiểu được.

4.3. Kiểm tra và đảm bảo chất lượng


Nhờ các thiết bị cảm ứng, các thiết bị đo lường được gắn trên máy mà ta có thể đo,
kiểm tra sản phẩm, loại bỏ các phế phẩm ngay từ nguyên nhân hỏng, nhờ đó mà chất
lượng sản xuất được nâng cao và giảm bớt chi phí sản xuất; kịp thời phát hiện, báo động
những biến cố xảy ra.

Trang 112 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 4

4.4. Quản lý quá trình sản xuất


Các thông tin về hệ thống sản xuất đều được truyền về cho máy tính giám sát và
thống kê, tổng kết quá trình sản xuất: số lượng sản phẩm, số lượng nguyên vật liệu còn
tồn trữ, giúp người quản lý ra quyết định. Đặt biệt là khả năng liên kết động (DDE -
Dynamic Data Exchange) cho phép các thông tin trên được kết nối, trao đổi cơ sở dữ liệu
với các hệ thống SCADA tương tự khác theo chuẩn TCP/IP. Điều này cho phép các hệ
thống có thể truy xuất dữ liệu cũng như xuất ra tín hiệu điều khiển lẫn nhau.
Hệ thống SCADA còn có khả năng liên kết với các hệ thống thương mại có cấp độ
cao hơn, cho phép đọc / ghi theo cơ sở dữ liệu chuẩn ODBC như Oracle, Access,
Microsoft SQL…

5. Phân loại hệ thống SCADA


Có nhiều loại hệ thống SCADA khác nhau nhưng trên cơ bản chúng được chia làm
4 nhóm với những tính năng cơ bản sau :
- SCADA độc lập / SCADA nối mạng.
- SCADA không có chức năng đồ hoạ (Blind) / SCADA có khả năng xử lý đồ hoạ
thông tin thời gian thực.
Hệ thống SCADA mù (Blind)
Là hệ thống thu nhận, xử lý dữ liệu thu được bằng hình ảnh hoặc đồ thị . Do
không có bộ phận giám sát nên hệ thống rất đơn giản và giá thành thấp
Hệ thống SCADA xử lý đồ hoạ thông tin thời gian thực
Là hệ thống giám sát và thu nhận dữ liệu có khả năng mô phỏng tiến trình hoạt
động của hệ thống sản xuất nhờ các tập tin cấu hình của máy đã được khai báo trước đó.
Tập tin cấu hình sẽ ghi lại khả năng hoạt động của hệ thống, các giới hạn không gian hoạt
động, giới hạn về khả năng, công suất làm việc của máy. Nhờ biết trước khả năng hoạt
động của hệ thống sản xuất mà khi có tín hiệu vượt quá tải hay có vấn đề đột ngột phát
sinh, hệ thống sẽ báo cho người giám sát biết trước để họ can thiệp vào hoặc tín hiệu vượt
quá mức cho phép hệ thống sẽ lập tức cho máy công tác ngưng hoạt động
Hệ thống SCADA độc lập
Là hệ thống giám sát và thu nhận dữ liệu với một bộ xử lý, thông thường loại hệ
thống SCADA này chỉ điều khiển một hoặc hai máy công cụ (workcell). Do khả năng
điều khiển ít máy công tác nên hệ thống sản xuất chỉ đáp ứng được cho việc sản xuất chi
tiết, không tạo nên được dây chuyền sản xuất lớn.
Hệ thống SCADA mạng
Là hệ thống giám sát và thu nhận dữ liệu với nhiều bộ xử lý có nhiều bộ phận
giám sát được kết nối với nhau thông qua mạng. Hệ thống này cho phép điều khiển phối
hợp được nhiều máy công tác hoặc nhiều nhóm workcell tạo nên một dây chuyền sản
xuất tự động. Đồng thời hệ thống có thể kết nối tới nơi quản lý – nơi ra quyết định sản

Trang 113 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 4

xuất hay có thể trực tiếp sản xuất theo yêu cầu của khách hàng từ nơi bán hàng hay phòng
thiết kế. Do được kết nối mạng nên chúng ta có thể điều khiển từ xa các thiết bị công tác
mà điều kiện nguy hiểm (như làm việc ở nơi có môi trường phóng xạ, nơi có từ trường
mạnh …) không cho phép con người đến gần

6. Tiêu chuẩn đánh giá


Mục đích trong việc đánh giá và lựa chọn của một người thiết kế hệ thống không
phải là tìm ra giải pháp tốt nhất, mà là một giải pháp đủ thoả mãn các nhu cầu về mặt kỹ
thuật với giá thành hợp lý, trong phạm vi ngân sách cho phép. Để đánh giá một giải pháp
SCADA, ta cần đặc biệt chú ý đến những yếu tố sau:
- Khả năng hỗ trợ của công cụ phần mềm đối với việc thực hiện các màn hình
giao diện, chất lượng của các thành phần đồ hoạ có sẵn.
- Khả năng truy cập và cách thức kết nối dữ liệu từ các quá trình kỹ thuật (trực
tiếp từ các cơ cấu chấp hành, cảm biến, các module vào / ra, qua các thiết bị
điều khiển khả trình PLC hay các hệ thống bus trường).
- Tính năng mở rộng của hệ thống.
- Khả năng hỗ trợ xây dựng các chức năng trao đổi tin tức (Messaging), xử lý sự
kiện và sự cố (Event and Alarm), lưu trữ thông tin (Archive and History) và lập
báo cáo (Reporting).
- Tính năng thời gian, hiệu suất trao đổi thông tin.
- Giá thành hệ thống phần mềm bao gồm công cụ phát triển (Development
Tool), chương trình chạy (Runtime Engine), tài liệu sử dụng, công đào tạo và
dịch vụ hỗ trợ, bảo trì.
Tạo dựng một ứng dụng SCADA tối thiểu đòi hỏi hai phần việc chính: xây dựng
màn hình hiển thị và thiết lập mối quan hệ giữa các hình ảnh trên màn hình với các biến
quá trình. Như vậy, công việc tạo dựng một ứng dụng SCADA trên nguyên tắc sẽ phức
tạp hơn nhiều so với việc lập trình giao diện đồ hoạ trong các ứng dụng thông thường. Có
hai phương pháp để tạo dựng:
Phương pháp thứ nhất là sử dụng công cụ lập trình phổ thông như Visual C++,
Visual Basic, Jbuilder, Delphi và người lập trình phải tự làm từ đầu, giống như việc phát
triển các ứng dụng thông thường. Không kể đến việc phải lập trình để kết nối dữ liệu qua
các cổng truyền thông, thì công việc lập trình đồ họa mặc dù có các công cụ hỗ trợ rất
mạnh cũng gặp nhiều khó khăn. Thứ nhất là phương pháp này đòi hỏi mức kiến thức lập
trình khá cao ở người lập trình. Thứ hai, việc lập trình các biểu tượng, ký hiệu đồ hoạ
thường dùng trong kỹ thuật đòi hỏi nhiều công sức. Để giải quyết vấn đề này, ta có thể sử
dụng các thư viện phần mềm dưới dạng thư viện lớp (class library) hay thư viện thành
phần (component library) có sẵn. Đặc biệt, việc sử dụng các thư viện thành phần như
ActiveX hay JavaBeans nâng cao hiệu suất lập trình một cách đáng kể. Tuy nhiên trong
bất cứ trường hợp nào cũng phải biên dịch lại toàn bộ ứng dụng. Do đó, phương pháp lập
trình này chỉ nên sử dụng trong các ứng dụng quy mô nhỏ và ít có yêu cầu phải thay đổi.

Trang 114 GV: Phạm Hùng Kim Khánh


Tài liệu DAQ Chương 4

Phương pháp thứ hai là sử dụng một công cụ phần mềm chuyên dụng (ví dụ FIX,
InTouch,WinCC,Lookout,…), gọi tắt là phần mềm SCADA. Các công cụ này có chứa
các thư viện thành phần cho việc xây dựng giao diện người –máy cũng như phần mềm
kết nối với các thiết bị cung cấp dữ liệu thông dụng. Nhiều công cụ định nghĩa một ngôn
ngữ riêng (thường gọi là script) phục vụ các mục đích này , tuy nhiên độ phức tạp của
chúng cũng rất khác nhau. Gần nay, xu hướng đơn giản hoá việc tạo dựng một ứng dụng
SCADA thể hiện ở sự kết hợp phương pháp lập trình hiển thị với sử dụng một ngôn ngữ
script thông dụng như Visual Basic for Application(VBA) và VBScript, tương tự như
việc soạn thảo một văn bản. Một số công cụ còn đi xa hơn nữa, cho phép ta sử dụng các
biểu tượng, ký hiệu đồ hoạ vừa để xây dựng giao diện người – máy vừa để biểu diễn sự
liên quan logic giữa các thành phần của một chương trình dưới dạng biểu đồ khối chức
năng (FBD) quen thuộc, không cần tới một dòng lệnh kể cả script. Người ta cũng nói đến
khái niệm tạo lập cấu hình (configuring) thay cho lập trình (programming).

Trang 115 GV: Phạm Hùng Kim Khánh

You might also like