Professional Documents
Culture Documents
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)
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.
- 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.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
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
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.
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.
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
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
&KѭѫQJ
*,$27,ӂ3*,Ӳ$+ӊ'$49Ӟ,0È<7Ë1+
&KX\ӇQÿәL$'$QDORJWR'LJLWDO
1JX\rQOê
&KX\ӇQÿәL$'OjTXDWUuQKFKX\ӇQWӯWtQKLӋXWѭѫQJWӵWӯFiFQJXӗQErQQJRjL
WKjQKGҥQJWtQKLӋXVӕÿӇPi\WtQKFyWKӇ[ӱOêÿѭӧF
4XiWUuQKFKX\ӇQÿәL$'EDRJӗP
/ҩ\PүXWtQKLӋX6DPSOLQJ
/ѭӧQJWӱKyD4XDQWL]LQJ
0mKyD&RGLQJ
/ҩ\PүX
/jTXiWUuQKWKD\WtQKLӋXWѭѫQJWӵEҵQJELrQÿӝFӫDQyӣQKӳQJWKӡLÿLӇPFiFK
ÿӅXQKDXJӑLOjFKXNǤO̭\P̳X&iFJLiWUӏQj\VӁÿѭӧFFKX\ӇQWKjQKVӕQKӏSKkQÿӇ
FyWKӇ[ӱOêÿѭӧF9ҩQÿӅӣÿk\OjSKҧLOҩ\PүXQKѭWKӃQjRÿӇFyWKӇNK{LSKөFOҥLWtQ
KLӋXJӕF7tQKLӋXOҩ\PүXFӫDWtQKLӋXJӕFVWELӇXGLӉQOjVQ7YӟL7OjFKXNǤOҩ\
PүX
VQ7 VWXW
WURQJÿyXWOjFKXӛL[XQJ'LUDF
f
XW ¦ GW Q7
Q f
I
W
7
+uQK±7tQKLӋXOҩ\PүXYjSKә
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
4XiWUuQKOҩ\PүXP{WҧӣWUrQOjTXiWUuQKOҩ\PүXOêWѭӣQJ7URQJWKӵFWӃGR
WtQKLӋXXWOjFiF[XQJOҩ\PүXYӟLFKXNǤ7ÿӝUӝQJWYjELrQÿӝDQrQSKәWtQKLӋX
WKӵFWӃVӁNK{QJFKӍOjKjP6IPjOj
VLQSIW
6IDW
SIW
Q7 W
GRJLiWUӏOҩ\PүXOjD ³ VW GW
Q7 W
7X\QKLrQGRW7QrQVDLOӋFKNK{QJÿiQJNӇ
7ҫQVӕOҩ\PүX
;pWWtQKLӋXVLQFyWҫQVӕIYjTXiWUuQKOҩ\ PүX YӟLFiFFKXNǤOҩ\ PүX NKiF
QKDX
IV I IV I
IV I IV I
+uQK±/ҩ\PүXWtQKLӋXYӟLFiFWҫQVӕNKiFQKDX
1KѭYұ\WDWKҩ\UҵQJQӃXWҫQVӕOҩ\PүXFjQJFDRWKuGҥQJFӫDWtQKLӋXFjQJFy
NKҧ QăQJ NK{L SKөF JLӕQJ QKѭ WtQ KLӋX JӕF 7X\ QKLrQ QӃX WҫQ Vӕ FjQJ FDR WKu FҫQ
SKҧLGQJGXQJOѭӧQJOӟQKѫQÿӇOѭXWUӳYjÿӗQJWKӡLWӕFÿӝ[ӱOêVӁFKұPOҥLGRFҫQ
[ӱOêVӕOѭӧQJGӳOLӋXOӟQ7ӯÿyWDFҫQ[iFÿӏQKWҫQVӕOҩ\PүXVDRFKRFyWKӇNK{L
SKөFOҥLJҫQÿ~QJGҥQJWtQKLӋXYӟL\rXFҫXWӕFÿӝ[ӱOêJLӟLKҥQWURQJPӭFFKRSKpS
ĈӏQKOêOҩ\PүX
ĈӏQKOêOҩ\PүX[iFÿӏQKÿLӅXNLӋQÿӇPӝWWұSPүXFyWKӇFKRSKpSNK{LSKөF
OҥLFKtQK[iFWtQ KLӋXWUѭӟF NKLOҩ\ PүX1KѭNKҧRViWӣWUrQKuQKSKәFӫDWtQ
KLӋXOҩ\PүXOjWtQKLӋXFyFKXNǤWUrQPLӅQWҫQVӕĈӇNK{LSKөFOҥLGҥQJFӫDWtQKLӋX
WDFKӍFҫQJLӟLKҥQSKәWҫQFӫDWtQKLӋX4XiWUuQKQj\FyWKӇWKӵFKLӋQEҵQJPӝWPҥFK
OӑFWK{QJWKҩSYӟLKjPWUX\ӅQ
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
IV
°° I
+I ® I V
° I
°¯ It V
+D\
VLQSW 7
KW
SW 7
3KәFӫDWtQKLӋXVDXNKLNK{LSKөFOj
6I 6VI+I
+D\
º VLQS W W
7
f
ª f
VW ³ « ¦ V W
G W
Q7» GW
f¬ Q f ¼ S W W
7
f
VLQ S W 7 Q
VW ¦ VQ7
Q f S W 7 Q
V
6V
I
IV 7 W
K
+
IV
I
W
6
I
W
+uQK.K{LSKөFWtQKLӋXVDXNKLOҩ\PүX
1KѭYұ\WDFyWKӇNK{LSKөFOҥLWtQKLӋXWUѭӟFNKLOҩ\PүXNKLSKәWtQKLӋXVDX
NKL TXD PҥFK OӑF SKҧL JLӕQJ KӋW YӟL SKә WtQ KLӋX JӕF 7KHR KuQK ÿLӅX NLӋQ Qj\
WKRҧPmQNKLSKәWtQKLӋXJӕFNK{QJFKӭDWKjQKSKҫQWҫQVӕOӟQKѫQI V
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
7URQJWUѭӡQJKӧSQJѭӧFOҥLSKәFӫDWtQKLӋXOҩ\PүXVӁEӏPpRGҥQJQrQNKL
VӱGөQJPҥFKOӑFÿӇNK{LSKөFWtQKLӋXWKuWtQKLӋXQj\VӁNKiFYӟLWtQKLӋXJӕFKLӋQ
WѭӧQJQj\JӑLOjLFK͛QJSK͝DOLDVLQJ
6V
I
+uQK±+LӋQWѭӧQJFKӗQJSKә
7ӯÿyÿӏQKOêOҩ\PүXSKiWELӇXQKѭVDX
0͡W WtQKL͏XNK{QJFKͱD ḘW NǤ WKjQK SK̯Q W̯Q V͙ QjR OͣQ K˯Q KD\ E̹QJ
P͡WJLiWU͓IPFyWK͋EL͋XGL͍QFKtQK[iFE̹QJW̵SFiFJLiWU͓FͯDQyYͣLFKXNǤO̭\
P̳X7 IP
1KѭYұ\WҫQVӕOҩ\PүXSKҧLWKRҧPmQÿLӅXNLӋQIVIPWURQJÿyIPOjWKjQK
SKҫQWҫQVӕOӟQQKҩWFyWURQJWtQKLӋX7ҫQVӕJLӟLKҥQQj\ÿѭӧFJӑLOjWҫQVӕ1\TXLVW
YjNKRҧQJIVIVJӑLOjNKRҧQJ1\TXLVW7URQJWKӵFWӃWtQKLӋXWUѭӟFNKLOҩ\PүX
VӁEӏJLӟLKҥQEҵQJPӝWPҥFKOӑFÿӇWҫQVӕWtQKLӋXQҵPWURQJNKRҧQJ1\TXLVW
9t Gө QKѭ WtQ KLӋX kP WKDQK WKѭӡQJ QҵP WURQJ NKRҧQJ +] QrQ
QJѭӡLWDVӁÿѭDWtKLӋXTXDPҥFKOӑFWK{QJWKҩSÿӇORҥLFiFWKjQKSKҫQWҫQVӕEұFFDR
YjWKӵFKLӋQOҩ\PүXӣWҫQVӕWӕLWKLӇXOj.+]
/ѭӧQJWӱKyD
/ѭӧQJWӱKRiOjTXiWUuQK[ҩS[ӍFiFJLiWUӏFӫDWtQKLӋXOҩ\PүXVQ7EҵQJEӝL
VӕFӫDPӝWJLiWUӏTTJӑLOjE˱ͣFO˱ͫQJW͵1ӃXTNK{QJWKD\ÿәLWKuTXiWUuQKOѭӧQJ
WӱJӑLOjÿӗQJQKҩW4XiWUuQKQj\WKӵFKLӋQEҵQJKjPEұFWKDQJP{WҧQKѭVDX
5
4
3
2
1
sq(n)
-1
-2
-3
-4
-5
-6 -4 -2 0
s(n)
2 4 6
+uQK±+jPOѭӧQJWӱYӟLEѭӟFOѭӧQJWӱT
4XiWUuQKOѭӧQJWӱFyWKӇWKӵFKLӋQEҵQJFiFKÿӏQKQJKƭDJLiWUӏWUXQJWkPFӫD
KjPOѭӧQJWӱ9tGөQKѭWURQJKuQKFiFJLiWUӏWURQJNKRҧQJWӯQ±òTÿӃQQ
òTVӁÿѭӧFOjPWUzQOjQ3KѭѫQJSKiSQj\VӁFӵFWLӇXKyDF{QJVXҩWFӫDWtQKLӋXOӛL
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
0ӝW SKѭѫQJ SKiS NKiF Fy WKӇ Vӱ GөQJ Oj GQJ KjP FҳW QJKƭD Oj FiF JLi WUӏ WURQJ
NKRҧQJ>QTQTVӁOjPWUzQWKjQKQ
10
8
6
4
2
0
-2
-4
5
-6
4
-8
3
-10
20 1 2 3 4 5 6
1
0
-1
-2
+uQK±/ӛLOѭӧQJWӱ
1KѭYұ\TXiWUuQKOѭӧQJWӱKyDVӁOjPPpRGҥQJWtQKLӋXYj[HPQKѭWӗQWҥL
-3
PӝWWtQKLӋXQKLӉX6ӵPpRGҥQJQj\JӑLOjPpROѭӧQJWӱKD\FzQJӑLOjQKLӉXOѭӧQJ
Wӱ -4
VQ VTQHQ
-5
0 1 2 3 4 5 6
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
YӟL 1 PӭF OѭӧQJ Wӱ NKiF QKDX 1Kѭ Yұ\ SKҥP YL OѭӧQJ Wӱ VӁ Eӏ JLӟL KҥQ WURQJ
NKRҧQJWӯTÿӃQ1TEҩWNǤELrQÿӝWtQKLӋXQjRYѭӧWTXiJLiWUӏQj\WKuVӁEӏFҳWEӓ
*LҧVӱWtQKLӋXPmKyDFyELrQÿӝWURQJNKRҧQJ>$P$P@
$P 1T
7ӯÿyJLҧVӱF{QJVXҩWWtQKLӋXOj V V WKuWӹVӕWtQKLӋXWUrQQKLӉXOѭӧQJWӱKyD
6415±6LJQDOWR4XDQWL]LQJ1RLVH5DWLROj
V V $
6415>G%@ ORJ 1 ORJ P
VH VV
0mKyD
7tQKLӋXӣQJ}UDEӝOѭӧQJWӱKyDÿѭӧFÿѭDÿӃQEӝPmKyDEӝPmKyDVӁJiQ
PӝWVӕQKӏSKkQFKRPӛLPӭFOѭӧQJWӱ4XiWUuQKQj\JӑLOjPmKyD
&yQKLӅXSKѭѫQJSKiSPmKyDNKiFQKDXQKѭQJWURQJÿDVӕKӋWKӕQJ[ӱOêWtQ
KLӋXVӕVӱGөQJSKѭѫQJSKiSE0ӝWYtGөÿӕLYӟL1 QKѭVDX
6ӕQKӏSKkQ *LiWUӏ 6ӕQKӏSKkQ *LiWUӏ
1JRjLSKѭѫQJSKiSPmKyDWX\ӃQWtQKQKѭWUrQFiFPӭFOѭӧQJWӱFyFQJVӕ
ELWQKӏSKkQEҵQJQKDXWDFzQVӱGөQJSKѭѫQJSKiSPmKyDSKLWX\ӃQ3KѭѫQJSKiS
Qj\VӱGөQJFiFEѭӟFOѭӧQJWӱWKD\ÿәLWKHRELrQÿӝWtQKLӋX
&iFWK{QJVӕ
.KLWKӵFKLӋQTXiWUuQK$'&FiFWK{QJVӕFҫQTXDQWkPFӫDKӋWKӕQJ
6ӕELWPmKyD
6ӕ ELW Pm KyD FӫD TXi WUuQK $' [iF ÿӏQK PӝWPӭF OѭӧQJ Wӱ VӁ ÿѭӧF Pm KyD
WKjQKEDRQKLrXELWQKӏSKkQ1ӃXVӕELWPmKyDOӟQÿӝSKkQJLҧLFӫDKӋWKӕQJVӁWăQJ
OrQQKѭQJÿzLKӓLGXQJOѭӧQJOѭXWUӳGӳOLӋXYjWKӡLJLDQ[ӱOêOӟQKѫQYjQJѭӧFOҥL
ĈӝUӝQJPmKyD
/jJLiWUӏFӫDQJ}YjRWѭѫQJWӵOjPFKRJLiWUӏPmKyDӣQJ}UDWKD\ÿәL9tGө
QKѭEӝ$'&FyVӕELWPmKyDYӟLQJ}YjRWѭѫQJWӵWӯ±9FyÿӝUӝQJPmKyD
Oj P9ĈӝUӝQJPmKyDFzQJӑLOjEѭӟFOѭӧQJWӱ
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
3KҥPYLQJ}YjR
3KҥPYLQJ}YjROjNKRҧQJJLiWUӏQKӓQKҩWYjOӟQQKҩWPm$'&FyWKӇFKX\ӇQ
ÿәLFKtQK[iFVDQJGҥQJVӕ3KҥPYLQj\FyWKӇӣGҥQJÿѫQFӵFFKӍFyÿLӋQiSGѭѫQJ
KD\ OѭӥQJ FӵF EDR JӗP Fҧ ÿLӋQ iS GѭѫQJ Yj kP 7URQJ FiF ERDUG $'& WK{QJ
WKѭӡQJSKҥPYLQJ}YjRFyWKӇWKD\ÿәL
3KѭѫQJSKiSPmKyDGӳOLӋX
'QJÿӇ[iFÿӏQKGӳOLӋXVӕӣQJ}UDWKHRWtQKLӋXWѭѫQJWӵQJ} YjR3KѭѫQJ
SKiSPmKyDÿѫQJLҧQQKҩWOjRIIVHWGӳOLӋXVӕWKD\ÿәLWX\ӃQWtQKWKHRFiFPӭFOѭӧQJ
Wӱ
7KӡLJLDQFKX\ӇQÿәL
/jWKӡLJLDQWӯO~FEҳWÿҫXTXiWUuQKFKX\ӇQÿәLFKRWӟLNKLFyGӳOLӋXVӕKӧSOӋ
WҥLQJ}UD9tGөQKѭ$'&YjFyWKӡLJLDQFKX\ӇQÿәLV
0ӝWVӕYLPҥFK$'&
U4
26 17
27
28
IN0
IN1
D0
D1
14
15 U4
1 IN2 D2 8
2
3
IN3
IN4
D3
D4
18
19
6
7 +IN DB0
18
17
IN5 D5 -IN DB1 16
4 20
5 IN6
IN7
D6
D7
21 9
VREF/2
DB2
DB3
15
14
4 DB4 13
12
16 REF+
REF-
EOC
7
19 CLKIN
CLKR
DB5
DB6
12
11
2 DB7
10
CLK 3 RD
WR INTR
5
25 1
CS
24
23
A0
A1 20
A2 VCC/VREF
22
9
6
ALE
OE ADC0804
START
11
VCC
ADC0809
+uQK±9LPҥFK$'&
0ҥFKӭQJGөQJ
7UDQJ *93K̩P+QJ.LP.KiQK
+5V
7UDQJ
7jLOL͏X'$4
2
2
2
2
2
2
2
2
+5V
1
1
1
1
1
1
1
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
1 nF 2 CS DB7 8
4
RD A
3 5 R6 10K
WR INTR +5V
2 - +5V J1
P2 1 R5 10K
+5V
3 +
B
C R4 10K
+5V
JR4558
4
J2
8
P3 6 - S1
7
5 + START
R2 -5V
8
1K
-5V
+uQK±6ѫÿӗPҥFKӭQJGөQJ$'&
*93K̩P+QJ.LP.KiQK
&K˱˯QJ
7jLOL͏X'$4 &K˱˯QJ
5
+uQK±'$&FKX\ӇQPҥFKGzQJÿLӋQ
3KѭѫQJSKiSQj\WҥRGzQJÿLӋQӣQJ}UDEҵQJFiFKFӝQJWҩWFҧFiFGzQJÿLӋQ
WKjQKSKҫQ&iFGzQJÿLӋQWKjQKSKҫQÿѭӧFÿLӅXNKLӇQEҵQJFiFWUDQVLVWRUQӃXJLiWUӏ
QJ}YjRWѭѫQJӭQJOjORJLFWKuGzQJÿLӋQTXD5ÆGLRGHÆWUDQVLVWRUWҳWQJѭӧFOҥL
WKuGzQJÿLӋQTXD5ÆWUDQVLVWRUÆ2S$PS
*LҧVӱGzQJÿLӋQWҥLQJ}YjR2S$PSOj,7Æ9RXW ,75
'$&55
3KѭѫQJSKiSQj\FKӍGQJFiFÿLӋQWUӣFyJLiWUӏ5Yj5*LӕQJQKѭSKҫQWUrQ
SKѭѫQJSKiSQj\FNJQJGQJQJ}YjRVӕYjÿLӋQiSFKXҭQ9 5()ÿӇWҥRGzQJ,7WҥLQJ}
UD
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
+uQK±'$&55
&iFWK{QJVӕ
ĈӝSKkQJLҧL
/j JLiWUӏFKrQKOӋFKӣQJ}UD NKLQJ} YjRWKD\ÿәL JLiWUӏ*LiWUӏQj\FjQJ
QKӓӭQJYӟLVӕELWPmKyDFjQJOӟQWKuGҥQJVyQJQJ}UD'$&FjQJPӏQ
3KҥPYLQJ}UD
1J}UDFӫD'$&FyGҥQJÿLӋQiSKD\GzQJÿLӋQ1ӃXVӱGөQJQJ}UDӣGҥQJ
ÿLӋQiSFҫQSKҧLWKrPFiFPҥFKNKXӃFKÿҥLWKXұWWRiQÿӇFKX\ӇQWӯGzQJWKjQKiS
ĈӇWKD\ÿәLRIIVHWÿӝOӧLQJKƭDOjSKҥPYLQJ}UDErQWURQJEӝ'$&FyÿLӋQ
WUӣKӗLWLӃS1ӃXFyQKLӅXÿLӋQWUӣKӗLWLӃSSKҥPYLQJ}UDFӫD'$&FyWKӇWKD\ÿәL
ÿѭӧFFiFJLiWUӏQj\ÿѭӧF[iFÿӏQKEҵQJFiFMXPSHUWUrQERDUG'$&
0mQJ}YjR
7\WKHRGҥQJPmQJ}YjRQKӏSKkQE%&'WtQKLӋXQJ}UDVӁÿѭӧF[iF
ÿӏQK
7KӡLJLDQ[iFOұS
/j WKӡL JLDQ ÿӇ QJ} UD әQ ÿӏQK WKӡL JLDQ Qj\ EDR JӗP WKD\ ÿәL Eӝ FKX\ӇQ
PҥFKWӯRQVDQJRIIKD\QJѭӧFOҥLWKD\ÿәLGzQJÿLӋQWURQJWUDQVLVWRUYjWKӡLJLDQ[ӱ
OêWUrQ2S$PS
7ӕFÿӝWKD\ÿәL
/jWӕFÿӝOӟQQKҩWPj'$&FyWKӇWҥRÿѭӧFGҥQJWtQKLӋXӣQJ}UD7ӕFÿӝQj\
WKѭӡQJEӏJLӟLKҥQEӣLWӕFÿӝFӫDEӝNKXӃFKÿҥLWҥLQJ}UD
7ӕFÿӝFұSQKұW
3KөWKXӝFYjRWKӡLJLDQ[iFOұSYjWӕFÿӝWKD\ÿәLGQJÿӇ[iFÿӏQKWҫQVӕOӟQ
QKҩWPj'$&FyWKӇWҥRÿѭӧF
7UDQJ *93K̩P+QJ.LP.KiQK
7UDQJ
7jLOL͏X'$4
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
0ӝWVӕYLPҥFK'$&
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
+uQK±9LPҥFK'$&YjӭQJGөQJ
2.7K R11
2.7K -12V
820
P1
+ C4 D1
100uF C2
Z5V1 0.01uF
C5
0.01uF
&K˱˯QJ
*93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
*LDRWLӃSTXDFәQJPi\LQ
*LӟLWKLӋX
&әQJVRQJVRQJJӗPFyÿѭӡQJÿLӅXNKLӇQÿѭӡQJWUҥQJWKiLYjÿѭӡQJGӳ
OLӋXEDRJӗPFKӃÿӝKRҥWÿӝQJ
&KӃÿӝWѭѫQJWKtFKFRPSDWLELOLW\
&KӃÿӝQLEEOH
&KӃÿӝE\WH
&KӃÿӝ(33(QKDQFHG3DUDOOHO3RUW
&KӃÿӝ(&3([WHQGHG&DSDELOLWLHV3RUW
FKӃÿӝÿҫXWLrQVӱGөQJSRUWVRQJVRQJFKXҭQ633±6WDQGDUG3DUDOOHO3RUW
WURQJNKLÿyFKӃÿӝFҫQWKrPSKҫQFӭQJÿӇFKRSKpSKRҥWÿӝQJӣWӕFÿӝFDRKѫQ
6ѫÿӗFKkQFӫDPi\LQQKѭVDX
7KDQKJKL
GӳOLӋX
7KDQKJKL
WUҥQJWKiL
7KDQKJKL
CONNECTOR DB25
ÿLӅXNKLӇQ
P1
1
13
25
12
24
11
23
10
22
21
20
19
18
17
16
15
14
+uQK±+uQKGҥQJYjVѫÿӗFәQJPi\LQ
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
&KkQ 7tQKLӋX 0{Wҧ
675 2XW 0ӭFWtQKLӋXWKҩSWUX\ӅQGӳOLӋXWӟLPi\LQ
' %LWGӳOLӋX
' %LWGӳOLӋX
' %LWGӳOLӋX
' %LWGӳOLӋX
' %LWGӳOLӋX
' %LWGӳOLӋX
' %LWGӳOLӋX
' %LWGӳOLӋX
$&. ,Q 0ӭFWKҩSPi\LQÿmQKұQNêWӵYjFyNKҧQăQJ
QKұQQӳD
%86<,Q 0ӭFFDRNêWӵÿmÿѭӧFQKұQEӝÿӋPPi\LQÿҫ\
NKӣLÿӝQJPi\LQPi\LQӣWUҥQJWKiLRIIOLQH
3$3(5(037<,Q 0ӭFFDRKӃWJLҩ\
6(/(&7,Q 0ӭFFDRPi\LQӣWUҥQJWKiLRQOLQH
$872)((' 2XW 7ӵ ÿӝQJ [XӕQJ GzQJ PӭF WKҩS Pi\ LQ [XӕQJ
GzQJWӵÿӝQJ
(5525 ,Q 0ӭFWKҩSKӃWJLҩ\Pi\LQӣRIIOLQHOӛLPi\LQ
,1,7 2XW 0ӭFWKҩSNKӣLÿӝQJPi\LQ
6(/(&7,1 2XW 0ӭFWKҩSFKӑQPi\LQ
*5281' 9
&iFWKDQKJKL
&әQJ VRQJ VRQJ Fy ED WKDQK JKL Fy WKӇ WUX\ӅQ Gӳ OLӋX Yj ÿLӅX NKLӇQ Pi\ LQ
ĈӏDFKӍFѫVӣFӫDFiFWKDQKJKLFKRWҩWFҧFәQJ/37OLQHSULQWHUWӯ/37ÿӃQ/37
ÿѭӧF OѭX WUӳ WURQJ YQJ Gӳ OLӋX FӫD %,26 7KDQK JKL Gӳ OLӋX ÿѭӧF ÿӏQK Yӏ ӣ RIIVHW
KWKDQKJKLWUDQJWKiLӣKYjWKDQKJKLÿLӅXNKLӇQӣK7K{QJWKѭӡQJÿӏDFKӍ
FѫVӣFӫD/37OjK/37OjKGRÿyÿӏDFKӍFӫDWKDQKJKLWUҥQJWKiLOjK
KRһFKYjÿӏDFKӍWKDQKJKLÿLӅXNKLӇQOj$KKRһF$K7X\QKLrQWURQJPӝWVӕ
WUѭӡQJKӧSÿӏDFKӍFӫDFәQJVRQJVRQJFyWKӇNKiFGRTXiWUuQKNKӣLÿӝQJFӫD%,26
%,26VӁOѭXWUӳFiFÿӏDFKӍQj\QKѭVDX
ĈӏDFKӍ &KӭFQăQJ
KK ĈӏDFKӍFѫVӣFӫD/37
K$K ĈӏDFKӍFѫVӣFӫD/37
K&K ĈӏDFKӍFѫVӣFӫD/37
ĈӏQKGҥQJFiFWKDQKJKLQKѭVDX
7KDQKJKLGӳOLӋXKDLFKLӅX
7tQKLӋXPi\LQ ' ' ' ' ' ' ' '
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
&KkQVӕ
7KDQKJKLWUҥQJWKiLPi\LQFKӍÿӑF
7tQKLӋXPi\ %86< $&. 3$3(5 6(/(&7 (5525 ,54 [ [
LQ (037<
6ӕFKkQFҳP
7KDQKJKLÿLӅXNKLӇQPi\LQ
7tQ [ [ ',5 ,54 6(/(&7,1 ,1,7 $872)((' 6752%(
KLӋX (QDEOH
Pi\
LQ
6ӕ
FKkQ
FҳP
[NK{QJVӱGөQJ
,54(QDEOH\rXFҫXQJҳWFӭQJ FKRSKpS NK{QJFKRSKpS
&K~ ê UҵQJ FKkQ %86< ÿѭӧF QӕL YӟL FәQJ ÿҧR WUѭӟF NKL ÿѭD YjR WKDQK JKL
WUҥQJ WKiL FiF ELW 6(/(&7,1 $872)((' Yj 6752%( ÿѭӧF ÿѭD TXD FәQJ ÿҧR
WUѭӟFNKLÿѭDUDFiFFKkQFӫDFәQJPi\LQ
7K{QJWKѭӡQJWӕFÿӝ[ӱOêGӳOLӋXFӫDFiFWKLӃWEӏQJRҥLYLQKѭPi\LQFKұPKѫQ3&QKLӅX
QrQFiFÿѭӡQJ $&. %86<Yj 675 ÿѭӧFVӱGөQJFKRNӻWKXұWEҳWWD\.KӣLÿҫX3&ÿһW
Gӳ OLӋX OrQ EXVVDXÿyNtFKKRҥWÿѭӡQJ 675 [XӕQJ PӭFWKҩSÿӇWK{QJWLQFKR Pi\ LQ ELӃW
UҵQJGӳOLӋXÿmәQÿӏQKWUrQEXV.KLPi\LQ[ӱOê[RQJGӳOLӋXQyVӁWUҧOҥLWtQKLӋX ACK
[XӕQJPӭFWKҩSÿӇJKLQKұQ3&ÿӧLFKRÿӃQNKLÿѭӡQJ%86<WӯPi\LQ[XӕQJWKҩSPi\LQ
NK{QJEұQWKuVӁÿѭDWLӃSGӳOLӋXOrQEXV
ӬQJGөQJ
4XiWUuQKJLDRWLӃSYӟLFiFWKLӃWEӏQJRҥLYLFyWKӇWKӵFKLӋQWK{QJTXDFKӃÿӝ
FKXҭQ ĈӇ ÿӑF Gӳ OLӋX Fy WKӇ GQJ PӝW ,& JKpS NrQK Æ /6 Yj GQJ ELW
WUҥQJWKiLFӫDFәQJVRQJVRQJFzQ[XҩWGӳOLӋXWKuVӱGөQJÿѭӡQJGӳOLӋX'±'
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
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
+uQK±0ҥFKJLDRWLӃSÿѫQJLҧQWK{QJTXDFәQJPi\LQ
*LDRGLӋQ
+uQK±*LDRGLӋQFӫDFKѭѫQJWUuQKJLDRWLӃSYӟLFәQJPi\LQ
&KѭѫQJWUuQK JLDRWLӃSWUrQ9%VӱGөQJWKѭ YLӋQOLrQ NӃWÿӝQJÿӇWUDRÿәL Gӳ
OLӋXYӟLFәQJPi\LQ7KѭYLӋQ,2'//EDRJӗPFiFKjPVDX
+jP3RUW2XW[XҩWE\WHUDFәQJ
Private Declare Sub PortOut Lib "IO.DLL" (ByVal
Port As Integer, ByVal Data As Byte)
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
3RUWÿӏDFKӍFәQJ'DWDGӳOLӋX[XҩW
+jP3RUW:RUG2XW[XҩWZRUGUDFәQJ
Private Declare Sub PortWordOut Lib "IO.DLL"
(ByVal Port As Integer, ByVal Data As Integer)
+jP3RUW':RUG2XW[XҩWGRXEOHZRUGUDFәQJ
Private Declare Sub PortDWordOut Lib "IO.DLL"
(ByVal Port As Integer, ByVal Data As Long)
+jP3RUW,QQKұSE\WHWӯFәQJWUҧYӅJLiWUӏQKұS
Private Declare Function PortIn Lib "IO.DLL"
(ByVal Port As Integer) As Byte
+jP3RUW:RUG,QQKұSZRUGWӯFәQJ
Private Declare Function PortWordIn Lib "IO.DLL"
(ByVal Port As Integer) As Integer
+jP3RUW':RUG,QQKұSGRXEOHZRUGWӯFәQJ
Private Declare Function PortDWordIn Lib
"IO.DLL" (ByVal Port As Integer) As Long
&KѭѫQJWUuQKQJXӗQ
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
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
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
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
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
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
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
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
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
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
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&
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
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
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
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
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
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
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
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
*LDRWLӃSTXDNKHFҳPPӣUӝQJ
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
+uQK±*LDRWLӃSYӟLNKHFҳPPӣUӝQJ
7UDQJ *93K̩P+QJ.LP.KiQK
U3
D0 2 18 D0
3 A1 B1 17 D0
D1 D1 D1
4 A2 B2 16
D2 D2
5 A3 B3 15 D2
D3 D3 D3
6 A4 B4 14
D4 D4
7UDQJ
7 A5 B5 13 D4
D5 D5 D5
8 A6 B6 12
D6 D6 D6
9 A7 B7 11
D7 D7 D7
A8 B8
7jLOL͏X'$4
19
CS 1 G
IOR DIR
74 LS 245
U3C U3B
IOW 5 6 3 4
74 04 74 04 IOW
U3D U3E
IOR 9 8 11 10
74 04 74 04 IOR
P1
1 D0
14 D1
2 A0
D2 A1
15 D3
3 U4 A2
D4
16 CLOCK 18 2 CLK A3
D5
4 AEN 17 B1 A1 3 AEN CLK
D6 RS
17 A3 16 B2 A2 4 A3
D7 A EN
5 CS 15 B3 A3 5 CS
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
R1 56 0 G A3
21 AEN AEN 1
9 IOW IOW R2 56 0 DIR
22 IOR IOR R3 22 0
10 R4 22 0 74 LS 245 CS
CLOCK CLOCK U2C
23 R5 22 0 9
A4 A4 A3
11 A3 R6 56 0 8 30 0H ->3 07H
A3
24 A2 R7 56 0 10 CS1
A2 U3A
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
74 LS 32
74 04
+uQK±*LDRWLӃSTXDNKHFҳPPӣUӝQJ
*93K̩P+QJ.LP.KiQK
&K˱˯QJ
7jLOL͏X'$4 &K˱˯QJ
*LDRWLӃSTXD56Yj56
&әQJQӕLWLӃSÿѭӧFVӱGөQJÿӇWUX\ӅQGӳOLӋXKDLFKLӅXJLӳDPi\WtQKYjQJRҥLYLFy
FiFѭXÿLӇPVDX
.KRҧQJFiFKWUX\ӅQ[DKѫQWUX\ӅQVRQJVRQJ
6ӕGk\NӃWQӕLtW
&yWKӇWUX\ӅQNK{QJGk\GQJKӗQJQJRҥL
&yWKӇJKpSQӕLYӟLYLÿLӅXNKLӇQKD\3/&3URJUDPPDEOH/RJLF'HYLFH
&KRSKpSQӕLPҥQJ
&yWKӇWKiROҳSWKLӃWEӏWURQJO~FPi\WtQKÿDQJOjPYLӋF
&yWKӇFXQJFҩSQJXӗQFKRFiFPҥFKÿLӋQÿѫQJLҧQ
&iF WKLӃW Eӏ JKpS QӕL FKLD WKjQK ORҥL '7( 'DWD 7HUPLQDO (TXLSPHQW Yj '&(
'DWD&RPPXQLFDWLRQ(TXLSPHQW'&(OjFiFWKLӃWEӏWUXQJJLDQQKѭ02'(0FzQ'7(Oj
FiFWKLӃWEӏWLӃSQKұQKD\WUX\ӅQGӳOLӋXQKѭPi\WtQK3/&YLÿLӅXNKLӇQ«9LӋFWUDRÿәL
WtQKLӋXWK{QJWKѭӡQJTXDFKkQ5['QKұQYj7['WUX\ӅQ&iFWtQKLӋXFzQOҥLFyFKӭF
QăQJ Kӛ WUӧ ÿӇ WKLӃW OұS Yj ÿLӅX NKLӇQ TXi WUuQK WUX\ӅQ ÿѭӧF JӑL Oj FiF WtQ KLӋX EҳW WD\
KDQGVKDNHѬXÿLӇPFӫDTXiWUuQKWUX\ӅQGQJWtQKLӋXEҳWWD\OjFyWKӇNLӇPVRiWÿѭӡQJ
WUX\ӅQ
7tQ KLӋX WUX\ӅQ WKHR FKXҭQ 56 FӫD (,$ (OHFWURQLFV ,QGXVWU\ $VVRFLDWLRQV
&KXҭQ56TX\ÿӏQKPӭFORJLFӭQJYӟLÿLӋQiSWӯ9ÿӃQ9PDUNPӭFORJLF
ӭQJYӟLÿLӋQiSWӯ9ÿӃQ9VSDFHYjFyNKҧQăQJFXQJFҩSGzQJWӯP$ÿӃQP$
1JRjLUDWҩWFҧFiFQJ}UDÿӅXFyÿһFWtQKFKӕQJFKұSPҥFK
&KXҭQ 56 FKR SKpS WUX\ӅQ WtQ KLӋX YӟL WӕF ÿӝ ÿӃQ ESV QKѭQJ QӃX FiS
WUX\ӅQÿӫQJҳQFyWKӇOrQÿӃQESV
&iFSKѭѫQJWKӭFQӕLJLӳD'7(Yj'&(
ĈѫQF{QJVLPSOH[FRQQHFWLRQGӳOLӋXFKӍÿѭӧFWUX\ӅQWKHRKѭӟQJ
%iQ VRQJ F{QJ KDOIGXSOH[ Gӳ OLӋX WUX\ӅQ WKHR KѭӟQJ QKѭQJ PӛL WKӡL ÿLӇP
FKӍÿѭӧFWUX\ӅQWKHRKѭӟQJ
6RQJF{QJIXOOGXSOH[VӕOLӋXÿѭӧFWUX\ӅQÿӗQJWKӡLWKHRKѭӟQJ
ĈӏQKGҥQJFӫDNKXQJWUX\ӅQGӳOLӋXWKHRFKXҭQ56QKѭVDX
6WDUW ' ' ' ' ' ' ' ' 3 6WRS
.KLNK{QJWUX\ӅQGӳOLӋXÿѭӡQJWUX\ӅQVӁӣWUҥQJWKiLPDUNÿLӋQiS9.KLEҳW
ÿҫXWUX\ӅQ'7(VӁÿѭDUD[XQJ6WDUWVSDFH9YjVDXÿyOҫQOѭӧWWUX\ӅQWӯ'ÿӃQ'
Yj3DULW\FXӕLFQJOj[XQJ6WRSPDUN9ÿӇNK{LSKөFWUҥQJWKiLÿѭӡQJWUX\ӅQ'ҥQJ
WtQKLӋXWUX\ӅQP{WҧQKѭVDXWUX\ӅQNêWӵ$
3K̩P+QJ.LP.KiQK 7UDQJ
Tài OL͏XDAQ &K˱˯QJ
&iFÿһFWtQKNӻWKXұWFӫDFKXҭQ56-QKѭVDX
&KLӅXGjLFDEOHFӵFÿҥL 15m
7ӕFÿӝGӳOLӋXFӵFÿҥL 20 Kbps
ĈLӋQiSQJ}UDFӵFÿҥL r 25V
ĈLӋQiSQJ}UDFyWҧL r 9ÿӃQr 15V
7UӣNKiQJWҧL .ÿӃQ.
ĈLӋQiSQJ}YjR r 15V
ĈӝQKҥ\QJ}YjR r 3V
7UӣNKiQJQJ}YjR .ÿӃQ.
&iF WӕF ÿӝ WUX\ӅQ Gӳ OLӋX WK{QJ GөQJ WURQJ FәQJ QӕL WLӃS Oj ESV ESV
9600 bps và 19200 bps.
6ѫÿӗFKkQ
3K̩P+QJ.LP.KiQK Trang 47
7jLOL͏X'$4 &K˱˯QJ
+uQK±6ѫÿӗFKkQFәQJQӕLWLӃS
&әQJ&20FyKDLGҥQJÿҫXQӕL'%FKkQYjÿҫXQӕL'%FKkQP{WҧQKѭ
KuQKéQJKƭDFӫDFiFFKkQP{WҧQKѭVDX
' ' 7tQ +ѭӟQJ 0{Wҧ
KLӋX WUX\ӅQ
3URWHFWHGJURXQGQӕLÿҩWEҧRYӋ
7[' '7(Æ'&( 7UDQVPLWWHGGDWDGӳOLӋXWUX\ӅQ
5[' '&(Æ'7( 5HFHLYHGGDWDGӳOLӋXQKұQ
576 '7(Æ'&( 5HTXHVWWRVHQG'7(\rXFҫXWUX\ӅQGӳOLӋX
&76 '&(Æ'7( &OHDUWRVHQG'&(VҹQVjQJQKұQGӳOLӋX
'65 '&(Æ'7( 'DWDVHWUHDG\'&(VҹQVjQJOjPYLӋF
*1' *URXQGQӕLÿҩW9
'&' '&(Æ'7( 'DWDFDULHUGHWHFW'&(SKiWKLӋQVyQJPDQJ
'75 '7(Æ'&( 'DWDWHUPLQDOUHDG\'7(VҹQVjQJOjPYLӋF
5, '&(Æ'7( 5LQJLQGLFDWRUEiRFKX{QJ
'65' '&(Æ'7( 'DWDVLJQDOUDWHGHWHFWRUGzWӕFÿӝWUX\ӅQ
76(7 '7(Æ'&( 7UDQVPLW6LJQDO(OHPHQW7LPLQJWtQKLӋXÿӏQKWKӡL
WUX\ӅQÿLWӯ'7(
76(7 '&(Æ'7( 7UDQVPLWWHU6LJQDO(OHPHQW7LPLQJWtQKLӋXÿӏQKWKӡL
WUX\ӅQWӯ'&(ÿӇWUX\ӅQGӳOLӋX
56(7 '&(Æ'7( 5HFHLYHU6LJQDO(OHPHQW7LPLQJWtQKLӋXÿӏQKWKӡL
WUX\ӅQWӯ'&(ÿӇWUX\ӅQGӳOLӋX
// /RFDO/RRSEDFNNLӇPWUDFәQJ
5/ '&(Æ'7( 5HPRWH/RRSEDFN7ҥRUDEӣL'&(NKLWtQKLӋXQKұQ
Wӯ'&(OӛL
67[' '7(Æ'&( 6HFRQGDU\7UDQVPLWWHG'DWD
65[' '&(Æ'7( 6HFRQGDU\5HFHLYHG'DWD
6576 '7(Æ'&( 6HFRQGDU\5HTXHVW7R6HQG
6&76 '&(Æ'7( 6HFRQGDU\&OHDU7R6HQG
6'65' '&(Æ'7( 6HFRQGDU\5HFHLYHG/LQH6LJQDO'HWHFWRU
70 7HVW0RGH
'jQKULrQJFKRFKӃÿӝWHVW
'jQKULrQJFKRFKӃÿӝWHVW
.K{QJGQJ
3K̩P+QJ.LP.KiQK 7UDQJ
7jLOL͏X'$4 &K˱˯QJ
7UX\ӅQWK{QJJLӳDKDLQ~W
&iFVѫÿӗNKLNӃWQӕLGQJFәQJQӕLWLӃS
7[' 7[' 7[' 7['
5[' 5[' 5[' 5['
*1' *1' *1' *1'
'7( '7( '7( '&(
+uQK±.ӃWQӕLÿѫQJLҧQWURQJWUX\ӅQWK{QJQӕLWLӃS
.KLWKӵFKLӋQNӃWQӕLQKѭWUrQTXiWUuQKWUX\ӅQSKҧLEҧRÿҧPWӕFÿӝӣÿҫXSKiWYj
WKXJLӕQJQKDX.KLFyGӳOLӋXÿӃQ'7(GӳOLӋXQj\VӁÿѭӧFÿѭDYjREӝÿӋPYjWҥRQJҳW
1JRjLUDNKLWKӵFKLӋQNӃWQӕLJLӳDKDL'7(WDFzQGQJVѫÿӗVDX
7[' 7['
5[' 5['
*1' *1'
576 576
&76 &76
'65 '65
'&' '&'
'75 '75
'7( '7(
+uQK±.ӃWQӕLWURQJWUX\ӅQWK{QJQӕLWLӃSGQJWtQKLӋXEҳWWD\
.KL'7(FҫQWUX\ӅQGӳOLӋXWKuFKR'75WtFKFӵFÆWiFÿӝQJOrQ'65FӫD'7(
FKRELӃWVҹQVjQJQKұQGӳOLӋXYjFKRELӃWÿmQKұQÿѭӧFVyQJPDQJFӫD02'(0ҧR6DX
ÿy'7(WtFKFӵFFKkQ576ÿӇWiFÿӝQJÿӃQFKkQ&76FӫD'7(FKRELӃW'7(FyWKӇ
QKұQGӳOLӋX.KLWKӵFKLӋQNӃWQӕLJLӳD'7(Yj'&(GRWӕFÿӝWUX\ӅQNKiFQKDXQrQSKҧL
WKӵFKLӋQÿLӅXNKLӇQOѭXOѭӧQJ4XiWULQKÿLӅXNKLӇQQj\FyWKӇWKӵFKLӋQEҵQJSKҫQPӅP
KD\SKҫQFӭQJ4XiWUuQKÿLӅXNKLӇQEҵQJSKҫQPӅPWKӵFKLӋQEҵQJKDLNêWӵ;RQYj;RII
.êWӵ;RQÿѭӧF'&(JӣLÿLNKLUҧQKFyWKӇQKұQGӳOLӋX1ӃX'&(EұQWKuVӁJӣLNêWӵ
;RII 4Xi WUuQK ÿLӅX NKLӇQ EҵQJ SKҫQ FӭQJ GQJ KDL FKkQ 576 Yj &76 1ӃX '7( PXӕQ
WUX\ӅQGӳOLӋXWKuVӁJӣL576ÿӇ\rXFҫXWUX\ӅQ'&(QӃXFyNKҧQăQJQKұQGӳOLӋXÿDQJ
UҧQKWKuJӣLOҥL&76
7UX\[XҩWWUӵFWLӃSWK{QJTXDFәQJ
&iFFәQJQӕLWLӃSWURQJPi\WtQKÿѭӧFÿiQKVӕOj&20&20&20&20YӟL
FiFÿӏDFKӍQKѭVDX
3K̩P+QJ.LP.KiQK 7UDQJ
7jLOL͏X'$4 &K˱˯QJ
3K̩P+QJ.LP.KiQK 7UDQJ
7jLOL͏X'$4 &K˱˯QJ
,(5,QWHUUXSW(QDEOH5HJLVWHU
,(5FKRSKpSKD\FҩPFiFQJX\rQQKkQQJҳWNKiFQKDXFKRSKpSFҫPQJҳW
' ' ' ' ' ' ' '
32: +%5 02'(0 /,1( 7[(037< 5[5'<
&KRSKpSNLӇX &KRSKpSNKLOӛL &KRSKpSNKL
F{QJVXҩWWKҩS PRGHP 7+5UӛQJ
&KRSKpSNKL
&KRSKpSNLӇX &KRSKpSNKLOӛL 5%5ÿҫ\
QJKӍKLEHUQDWH WKXSKiW
0&50RGHP&RQWURO5HJLVWHU
' ' ' ' ' ' ' '
/223 287 287 576 '75
0RGHORRSEDFN
ĈLӅXNKLӇQQJ}UD ĈLӅXNKLӇQWtQKLӋX
NLӇPWUDKRҥW
287 287 FӫD 576Yj'75
ÿӑQJFӫD8$57
8$57
0650RGHP6WDWXV5HJLVWHU
' ' ' ' ' ' ' '
5/6' 5, '65 &76 '5/6' '5, ''65 '&76
7UҥQJWKiLFӫD&'5, QӃXFyWKD\ÿәLFiFWtQKLӋXVRYӟLOҫQÿӑFWUѭӟF
'65Yj&76 '5, QӃXFy[XQJGѭѫQJWҥL5,
/65/LQH6WDWXV5HJLVWHU
' ' ' ' ' ' ' '
),( 765( 7+5( %, )( 3( 2( 5['5
),(),)2(UURU±VDLWURQJ),)2
765(7UDQVPLWWHU6KLIW5HJLVWHU(PSW\±WKDQKJKLGӏFKUӛQJ NKLÿmSKiWNê
WӵYjEӏ[RiNKLFyNêWӵFKX\ӇQÿӃQWӯ7+5
7+5(7UDQVPLWWHU+ROGLQJ5HJLVWHU(PSW\ NKLFyNêWӵÿmFKX\ӇQWӯ7+5±
765YjEӏ[RiNKL&38ÿѭDNêWӵWӟL7+5
3K̩P+QJ.LP.KiQK 7UDQJ
7jLOL͏X'$4 &K˱˯QJ
3K̩P+QJ.LP.KiQK 7UDQJ
7jLOL͏X'$4 &K˱˯QJ
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
3K̩P+QJ.LP.KiQK 7UDQJ
7jLOL͏X'$4 &K˱˯QJ
MOV DX,Com1+1
MOV AL,00h ; Gởi byte cao Æ 000Ch: xác định
OUT DX,AL ; tốc độ truyền 9600bps
Lap:
MOV AH,0Bh
INT 21h
CMP AL,0FFh
JE Exit
MOV AL,bufferin
CMP AL,bufferout
JE Lap
MOV AL,buffer[bufferout]
3K̩P+QJ.LP.KiQK 7UDQJ
7jLOL͏X'$4 &K˱˯QJ
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 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
3K̩P+QJ.LP.KiQK 7UDQJ
7jLOL͏X'$4 &K˱˯QJ
7UX\ӅQWK{QJQӕLWLӃSGQJ$FWLYH;
0{Wҧ
9LӋFWUX\ӅQWK{QJQӕLWLӃSWUrQ:LQGRZVÿѭӧFWKӵFKLӋQWK{QJTXDPӝW$FWLYH;Fy
VҹQOj0LFURVRIW&RPP&RQWURO$FWLYH;Qj\GѭӧFOѭXWUӳWURQJILOH06&2002&;
4XiWUuQKQj\FyKDLNKҧQăQJWKӵFKLӋQÿLӅXNKLӇQWUDRÿәLWK{QJWLQ
ĈLӅXNKLӇQVӵNLӋQ
7UX\ӅQWK{QJÿLӅXNKLӇQVӵNLӋQOjSKѭѫQJSKiSWӕWQKҩWWURQJTXiWUuQKÿLӅXNKLӇQ
YLӋFWUDRÿәLWK{QJWLQ4XiWUuQKÿLӅXNKLӇQWKӵFKLӋQWK{QJTXDVӵNLӋQ2Q&RPP
+ӓLYzQJ
4XiWULQKÿLӅX NKLӇQEҵQJSKѭѫQJSKiSKӓL YzQJWKӵFKLӋQWK{QJTXD NLӇPWUDFiF
JLiWUӏFӫDWKXӝFWtQK&RPP(YHQWVDXPӝWFKXNǤQjRÿyÿӇ[iFÿӏQK[HPFyVӵNLӋQQjR
[ҧ\UDKD\NK{QJ7K{QJWKѭӡQJSKѭѫQJSKiSQj\VӱGөQJFKRFiFFKѭѫQJWUuQKQKӓ
$FWLYH; 0V&RPP ÿѭӧF Eә VXQJ YjR PӝW 9LVXDO %DVLF 3URMHFW WK{QJ TXD PHQX
3URMHFW!&RPSRQHQWV
+uQK±%әVXQJÿӕLWѭӧQJ0V&RPPYjR9%3
3K̩P+QJ.LP.KiQK 7UDQJ
7jLOL͏X'$4 &K˱˯QJ
%LӇXWѭӧQJFӫD0V&RPP YjFiFWKXӝFWtQKFѫEҧQP{WҧQKѭVDX
7KXӝFWtQK 0{Wҧ
&RPP3RUW 6ӕWKӭWӵFәQJWUX\ӅQWK{QJ
,QSXW 1KұQNêWӵWӯEӝÿӋP
2XWSXW ;XҩWNêWӵUDFәQJQӕLWLӃS
3RUW2SHQ 0ӣÿyQJFәQJ
6HWWLQJV ;iFÿӏQKFiFWKDPVӕWUX\ӅQ
+uQK±&iFWKXӝFWtQKFӫDÿӕLWѭӧQJ06&RPP
&iFWKXӝFWtQK
6HWWLQJV
;iFÿӏQKFiFWKDPVӕFKRFәQJQӕLWLӃS&~SKiS
MSComm1.Settings = ParamString
06&RPPWrQÿӕLWѭӧQJ
3DUDP6WULQJOjPӝWFKXӛLFyGҥQJQKѭVDX%%%%3'6
%%%%WӕFÿӝWUX\ӅQGӳOLӋXESVWURQJÿyFiFJLiWUӏKӧSOӋOj
3K̩P+QJ.LP.KiQK 7UDQJ
7jLOL͏X'$4 &K˱˯QJ
3K̩P+QJ.LP.KiQK 7UDQJ
7jLOL͏X'$4 &K˱˯QJ
7KXӝFWtQKQj\NӃWKӧSYӟL,QSXW/HQÿӇ[iFÿӏQKVӕNêWӵÿӑFYjR1ӃX,QSXW/HQ
WKuVӁÿӑFWRjQEӝGӳOLӋXFyWURQJEӝÿӋP
,Q%XIIHU&RXQWVӕNêWӵFyWURQJEӝÿӋPQKұQ&~SKiS
Count = MSComm1.InBufferCount
7KXӝFWtQKQj\FQJGѭӧFGQJÿӇ[RiEӝÿӋPQKұQEҳQJFiFKJiQJLiWUӏ
MSComm1.InBufferCount = 0
,Q%XIIHU6L]HÿһWYj[iFÿӏQKNtFKWKѭӟFEӝÿӋPQKұQWtQKEҵQJE\WH&~SKiS
MSComm1.InBufferCount = NumByte
*LiWUӏPăFÿӏQKOjE\WH.tFKWKѭӟFEӝÿӋPQj\SKҧLÿӫOӟQÿӇWUiQKWuQKWUҥQJ
PҩWGӳOLӋX
9'ĈӑFWRjQEӝQӝLGXQJWURQJEӝÿӋPQKұQQӃXFyGӳOLӋX
MSComm1.InputLen = 0
If MSComm1.InBufferCount <> 0 Then
InputString = MSComm1.Input
End If
&iFWKXӝFWtQK[XҩWGӳOLӋX
%DR JӗP FiF WKXӝF WtQK 2XWSXW 2XW%XIIHU&RXQW Yj 2XW%XIIHU6L]H FKӭF QăQJ
FӫDFiFWKXӝFWtQKQj\JLӕQJQKѭFiFWKXӝFWtQKQKұS
&'7LPHRXW
ĈһWYj[iFÿӏQKNKRҧQJWKӡLJLDQOӟQQKҩWWtQKEҵQJPVWӯO~FSKiWKLӋQVyQJPDQJ
FKR ÿӃQ O~F Fy Gӳ OLӋX 1ӃX TXi NKRҧQJ WKӡL JLDQ Qj\ Pj YүQ FKѭD Fy Gӳ OLӋX WKu VӁ JiQ
WKXӝFWtQK&RPP(YHQWOj&'72&DUULHU'HWHFW7LPHRXW(UURUYjWҥRVӵNLӋQ2Q&RPP
&~SKiS
MSComm1.CDTimeout = NumTime
'657LPHRXW
;iFÿӏQKWKӡLJLDQFKӡWtQKLӋX'65WUѭӟFNKL[ҧ\UDVӵNLӋQ2Q&RPP
&767LPHRXW
ĈһWYj[iFÿӏQKNKRҧQJWKӡLJLDQOӟQQKҩWWtQKEҵQJPVÿӧLWtQKLӋX&76WUѭӟFNKL
ÿһWWKXӝFWtQK&RPP(YHQWOj&7672YjWҥRVӵNLӋQ2Q&RPP&~SKiS
MSComm1.CTSTimeout = NumTime
&76+ROGLQJ
;iFÿӏQKÿmFyWtQKLӋX&76KD\FKѭDWtQKLӋXQj\GQJFKRTXiWUuQKEҳWWD\EҵQJ
SKҫQFӭQJFKRELӃW'&(VҹQVjQJQKұQGӳOLӋXWUҧYӅJLiWUӏ7UXHKD\)DOVH
'65+ROGLQJ
;iFÿӏQKWUҥQJWKiL'65EiRKLӋXVӵWӗQWҥLFӫD'&(WUҧYӅJLiWUӏ7UXHKD\)DOVH
&'+ROGLQJ
3K̩P+QJ.LP.KiQK 7UDQJ
7jLOL͏X'$4 &K˱˯QJ
;iFÿӏQKWUҥQJWKiL&'WUҧYӅJLiWUӏ7UXHKD\)DOVH
'75(QDEOH
ĈһWKD\[RiWtQKLӋX'75ÿӇEiRVӵWӗQWҥLFӫD'7(&~SKiS
MSComm1.DTREnable = True | False
576(QDEOH
ĈһWKD\[RiWtQKLӋX576ÿӇ\rXFҫXWUX\ӅQGӳOLӋXÿӃQ'7(&~SKiS
MSComm1.RTSEnable = True | False
1XOO'LVFDUG
&KRSKpSQKұQFiFNêWӵ18//UӛQJKD\NK{QJ 7UXHFҩP&~SKiS
MSComm1.NullDiscard = True | False
67KUHVKROG
6ӕE\WHWURQJEӝÿӋPWUX\ӅQOjPSKiWVLQKVӵNLӋQ2Q&RPP1ӃXJLiWUӏQj\EҵQJ
WKuVӁNK{QJWҥRVӵNLӋQ2Q&RPP&~SKiS
MSComm1.SThreshold = NumChar
+DQG6KDNLQJ
&KӑQJLDRWKӭFEҳWWD\NKLWKӵFKLӋQWUX\ӅQGӳOLӋX&~SKiS
MSComm1.HandShaking = Protocol
&iFJLDRWKӭFWUX\ӅQEDRJӗP
3URWRFRO *LiWUӏ 0{Wҧ
&RP1RQH .K{QJEăWWD\PһFÿӏQK
&RP;RQ;RII %ҳWWD\SKҫQPӅP;RQ;RII
&RP576 %ҳWWD\SKҫQFӭQJ576&76
&RP576;RQ;RII %ҳWWD\SKҫQFӭQJYjSKjQPӅP
&RPP(YHQW
7UҧOҥLFiFOӛLWUX\ӅQWK{QJKD\VӵNLӋQ[ҧ\UDWҥLFәQJQӕLWLӃS
&iFVӵNLӋQ
6ӵNLӋQ *LiWUӏ 0{Wҧ
&RP(Y6HQG ĈmWUX\ӅQNêWӵ
&RP(Y5HFHLYH .KLFyNêWӵWURQJEӝÿӋPQKұQ
&RP(Y&76 &yWKD\ÿәLWUrQ&76&OHDU7R6HQG
&RP(Y'65 &yWKD\ÿәLWUrQ'65'DWD6HW5HDG\
&RP(Y&' &yWKD\ÿәLWUrQ&'&DUULHU'HWHFW
3K̩P+QJ.LP.KiQK 7UDQJ
7jLOL͏X'$4 &K˱˯QJ
&RP(Y5LQJ 3KiWKLӋQFKX{QJ
&RP(Y(2) 1KұQNêWӵNӃWWK~FILOH
&iFOӛLWUX\ӅQWK{QJ
/ӛL *LiWUӏ 0{Wҧ
&RP%UHDN 1KұQWtQKLӋX%UHDN
&RP&7672 &DUULHU'HWHFW7LPHRXW
&RP)UDPH /ӛLNKXQJ
&RP2YHU 3KҫQFӭQJNK{QJÿӑFNêWӵWUѭӟFNKLJӣLNêWӵNӃ
&RP&'72 &DUULHU'HWHFW7LPHRXW
&RP5[2YHU 7UjQEӝÿӋPQKұQ
&RP5[3DULW\ /ӛLSDULW\
&RP7[)XOO 7UjQEӝÿӋPWUX\ӅQ
6ӵNLӋQ2Q&RPP
6ӵNLӋQ2Q&RPP[ҧ\UDEҩWFӭNKLQjRJLiWUӏFӫDWKXӝFWtQK&RPP(YHQWWKD\ÿәL
&iFWKXӝFWtQK57KUHVKROGYj67KUHVKROG VӁFҩPVӵNLӋQ2Q&RPPNKLWKӵFKLӋQQKұQ
KD\JӣLGӳOLӋX7K{QJWKѭӡQJ67KUHVKROG Yj57KUHVKROG
0ӝWFKѭѫQJWUuQKWUX\ӅQQKұQÿѫQJLҧQWKӵFKLӋQEҵQJFiFKQӕLFKkQ7['YӟL5['
FӫDFәQJ&20ORRSEDFN3KѭѫQJSKiSQj\GQJÿӇNLӇPWUDFәQJQӕLWLӃS
7KXӝFWtQKFѫEҧQFӫDFәQJQӕLWLӃS
+uQK±&iFWKXӝFWtQKFѫEҧQFӫD06&RPP
3K̩P+QJ.LP.KiQK 7UDQJ
7jLOL͏X'$4 &K˱˯QJ
&ӱDVәFKѭѫQJWUuQKWKӵFWKL
7H[WER[FKӭD
ĈӕLWѭӧQJ
FiFNêWӵJӣL
06&RPP
7H[WER[FKӭD
FiFNêWӵQKұQ
<rXFҫXWUX\ӅQ
GӳOLӋX
+uQK±&ӱDVәFKѭѫQJWUuQKORRSEDFN
&KѭѫQJWUuQKQJXӗQ
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
3K̩P+QJ.LP.KiQK 7UDQJ
7jLOL͏X'$4 &K˱˯QJ
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
3K̩P+QJ.LP.KiQK 7UDQJ
7jLOL͏X'$4 &K˱˯QJ
*LDRWLӃSYӟLKӋ'$4
.KLWKӵFKLӋQJLDRWLӃSYӟLYLÿLӅXNKLӇQWDSKҧLGQJWKrPPҥFKFKX\ӇQPӭFORJLF
Wӯ 77/ Æ Yj QJѭӧF OҥL &iF YL PҥFK WKѭӡQJ Vӱ GөQJ Oj 0$; FӫD 0D[LP KD\
'6FӫD'DOODV0ҥFKFKX\ӇQPӭFORJLFP{WҧQKѭVDX
TxDB3&
1
6
2 13 12
7 R1IN R1OUT
3
8
14
T1OUT T1IN
11 RxDB3&
4 1
9
5
C25
6 MAX232
C+
3 C28
V- C1- 10u
DB9 10u 4
R2OUT
T2OUT
2 C2+
R2IN
T2IN
V+
C26 C2-
5 C29
10u
10u
8
9
10
VCC
C27
10u
+uQK±0ҥFKFKX\ӇQPӭFORJLF77/l56
3K̩P+QJ.LP.KiQK 7UDQJ
7jLOL͏X'$4 &K˱˯QJ
7X\ QKLrQ NKL Vӱ GөQJ PҥFK FKX\ӇQ PӭF ORJLF GQJ FiF YL PҥFK WKu ÿzL KӓL SKҧL
GQJFKXQJ*1'JLӳDPi\WtQKYjYLPҥFKÆFyNKҧQăQJOjPKӓQJFәQJQӕLWLӃSNKL[ҧ\
UDKLӋQWѭӧQJFKұSPҥFKӣPҥFKQJRjL'RÿyWDFyWKӇGQJWKrPRSWR1ÿӇFiFKO\YӅ
ÿLӋQ6ѫÿӗPҥFKFiFKO\P{WҧQKѭVDX VCC
1K
TxD
6
5
1
VCC
68K
4 2
DTR 4N35
1 4.7K
6
2 RxD_PC
7
3
8
TxD_PC 1 6
5 RxD
4 4.7K
9
5
2 4
4N35
RTS
2.2K
+uQK±0ҥFKFKX\ӇQPӭFORJLF77/l56FiFKO\
.KLJLDRWLӃSYLÿLӅXNKLӇQFKtQKOjPӝW'7(QrQVӁQӕL5['FӫDPi\WtQKYӟL7['
FӫDYLÿLӃXNKLӇQYjQJѭӧFOҥL0ҥFKNӃWQӕLÿѫQJLҧQJLӳDYLÿLӅXNKLӇQYjPi\WtQKQKѭ
VDX
3K̩P+QJ.LP.KiQK 7UDQJ
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
3K̩P+QJ.LP.KiQK
7jLOL͏X/̵SWUuQKK͏WK͙QJ
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
1 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
T1OUT T1IN P3.3/INT1 P1.3
8 14 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
2 C2+ 29 ALE/PROG XTAL1 18
V+ 5 C29 PSEN XTAL2
R2IN
T2IN
T2OUT
R2OUT
C26 C2- 10u 31
10u EA/VPP 9
8
7
9
VCC RST
10
C27
10u AT89C51
33p
11.059MHz
C31
+uQK±.ӃWQӕLYӟL'$4
7UDQJ
&K˱˯QJ
7jLOL͏X'$4 &K˱˯QJ
&KѭѫQJWUuQKQJXӗQFKRYLÿLӅXNKLӇQ$7&
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
*LDRGLӋQFӫDFKѭѫQJWUuQKWUrQPi\WtQK
+uQK±&KѭѫQJWUuQKJLDRWLӃSYӟLYLÿLӅXNKLӇQ
&KѭѫQJWUuQKQJXӗQ
VERSION 5.00
Object = "{648A5603-2C6E-101B-82B6-
000000000014}#1.1#0"; "MSCOMM32.OCX"
Begin VB.Form Form1
Caption = "Microcontroller
Interface Example"
ClientHeight = 4665
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
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
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
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
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
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
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
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
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
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&
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
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
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
shpLED(Index).FillStyle = 1 - shpLED(Index).FillStyle
End Sub
&KXҭQ56
&KXҭQ56GQJÿѭӡQJWUX\ӅQ NK{QJFkQ EҵQJ YuFiFWtQKLӋXOҩ\FKXҭQOj
*1'FKXQJQrQGӉEӏҧQKKѭӣQJFӫDQKLӉXOjPWӕFÿӝYjNKRҧQJFiFKWUX\ӅQEӏJLӟL
KҥQ.KLPXӕQWăQJNKRҧQJFiFKWUX\ӅQP{WSKѭѫQJSKiSFyWKӇVӱGөQJOjGQJ
Gk\WUX\ӅQYLVDLYuO~FQj\Gk\FyFQJÿһFWtQKQrQVӁORҥLWUӯÿѭӧFQKLӉXFKXQJ
+DL FKXҭQ ÿѭӧF Vӱ GөQJ Oj 56 Yj 56 QKѭQJ WK{QJ WKѭӡQJ Vӱ GөQJ 56
ĈLӋQ iS YL VDL \rX FҫX SKҧL OӟQ KѫQ P9 1ӃX 9 $% ! P9 WKu WѭѫQJ ӭQJ YӟL
ORJLFYj9$%P9WѭѫQJӭQJYӟLORJLF&KXҭQ56VӱGөQJKDLÿLӋQWUӣ
NӃWWK~FOj:WҥLKDLÿҫX[DQKҩWFӫDÿѭӡQJWUX\ӅQYjVӱGөQJGk\[RҳQÿ{L
+uQK±&KXҭQJLDRWLӃS56
7UDQJ *93K̩P+QJ.LP.KiQK
7jLOL͏XDAQ &K˱˯QJ
5.5.1. &iFÿһFWtQKNӻWKXұW
ĈһFWtQK RS422 RS485
6ӕWKLӃWEӏWUX\ӅQ 1 32
6ӕWKLӃWEӏQKұQ 10 32
&KLӅXGjLFDEOHFӵFÿҥL 1200m 1200m
7ӕFÿӝWUX\ӅQFӵFÿҥLWӯ± 1200m) 10Mps ± 100Kbps 10Mps ± 100Kbps
ĈLӋQiSFӵFÿҥLWҥLQJ}UDWKLӃWEӏWUX\ӅQ -0.25V y 6V -7V y 12V
ĈLӋQiSQJ}YjRWKLӃWEӏQKұQ -10V y 10V -7V y 12V
5.5.2. &iFFKӃÿӝWUX\ӅQ
Bán song công
Trang 75 *93K̩P+QJ.LP.KiQK
7jLOL͏XDAQ &K˱˯QJ
Song công:
5.5.3. 6RViQKJLӳD56Yj56
RS232 RS485
&KӃÿӝKRҥWÿӝQJ ĈѫQ Vi sai
7әQJ Vӕ Eӝ ÿLӅX NKLӇQ Yj EӝÿLӅXNKLӇQGULYHU Eӝ ÿLӅX NKLӇQ GULYHU
thu trên 1 dây EӝWKXUHFHLYHU EӝWKXUHFHLYHU
&KLӅXGjLFiSWӕLÿD 15m 1200m
7ӕFÿӝWӕLÿD 20 Kbps/15m 10Mbps/12m
1Mbps/120m
100Kbps/1.2km
0ӭFWtQKLӋXQJ}UDFyWҧL r 5 y r 15V r 1.5V
0ӭFWtQKLӋXQJ}UD NK{QJ r 25V r 6V
WҧL
7Uӣ NKiQJ FӫD Eӝ ÿLӅX 3 K: - 7 K: 54 :
NKLӇQ
3KҥPYLÿLӋQiSEӝWKX r 15V -7V ± 12V
ĈӝQKҥ\EӝWKX r 3V r 200 mV
7UӣNKiQJEӝWKX 3 K: - 7 K: t 12 K:
ĈӕLYӟLFKXҭQ56NKRҧQJFiFKWUX\ӅQNK{QJFKRSKpSÿL[DQrQNKLPXӕQ
WKӵF KLӋQ WUX\ӅQ ӣ NKRҧQJ FiFK [D WKu SKҧL FKX\ӇQ Wӯ 56 VDQJ FKXҭQ 56 ÿӇ
WUX\ӅQÿLYjVDXÿyFKX\ӇQWӯ56VDQJ56ÿӇPi\WtQKFyWKӇQKұQGҥQJÿѭӧF
6ѫÿӗPҥFKFKX\ӇQÿәLWӯ56VDQJ56YjQJѭӧFOҥLP{WҧQKѭVDX
Trang 76 *93K̩P+QJ.LP.KiQK
7jLOL͏X'$4 &K˱˯QJ
1
2
3
1
6
4
DI A
6
7
120 4
5
2 13 12 3 B 6
7
3 14
R1IN R1OUT
11
VCC 2 DE
RE RO
1 7
8
8 T1OUT T1IN
4
9 C+
1 MAX485
CON8
5 6 MAX232 3
V- C1- 10u
DB9 10u 4 6 4
R2OUT
T2OUT
2 C2+ 7 A DI
R2IN
T2IN
V+ B
C2-
5
10u 1
RO
DE
RE
3
2 120
10u
8
9
10
VCC
MAX485
10u
+uQK±&KX\ӇQÿәLWӯ56VDQJ56YjQJѭӧFOҥL
7UDQJ *93K̩P+QJ.LP.KiQK
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
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)
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.
- 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.
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ố
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
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).