MỤC LỤC
CHƯƠNG I GIỚI THIỆU 5
I. TỔNG QUAN 5
II. GIỚI THIỆU SƠ LƯỢC NỘI DUNG .5
III. SƠ BỘ KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN : .6
CHƯƠNG II CHUẨN TRUYỀN THÔNG RS232,RS422/485&
ADAPTER CHUYỂN ĐỔI RS232–RS485 7
I. GIỚI THIỆU: 7
I.1 RS232 7
I.2 RS-422/485 8
CHƯƠNG III MẠNG TRUYỀN THÔNG 23
I. KÊNH TRUYỀN THÔNG 23
I.1 Khái niệm . 23
I.2 Phân loại kênh: . 23
I.3 Băng thông và tốc độ bit . 23
I.4 Kênh thuê riêng (leased line) và kênh quay số (dial-up) . 23
I.5 Điều chế tín hiệu 24
I.6 Các kỹ thuật điều chế . 24
I.7 Sự đồng bộ trong điều chế số . 24
I.8 Kiểu truyền . 24
I.9 Truyền dữ liệu 24
I.10 Truyền thông kiểu nối tiếp bất đồng bộ .30
I.11 Truyền nối tiếp đồng bộ . 31
II. NETWORK PROGRAMMING .32
II.1 Các giao thức quản lý mạng . 33
II.2 Định địa chỉ (Addressing) .37
II.3 Xác định thời gian truyền (Transmitter Enable Timing) 40
CHƯƠNG IV GIỚI THIỆU 68HC11 41
I. GIỚI THIỆU CHUNG VỀ BỘ VI ĐIỀU KHIỂN .41
I.1 Microcontroller Motorola MC68HC11 . 41
I.2 Đơn vị xử lý trung tâm (CPU) . 44
I.3 Các mode định vị địa chỉ .46
I.4 Tập lệnh của họ MC68HC11 47
II. CẤU HÌNH VÀ CÁC CHẾ ĐỘ HOẠT ĐỘNG 47
II.1 Các chế độ hoạt động .47
II.2 Các thanh ghi điều khiển 48
III. XUẤT NHẬP SONG SONG .53
III.1 PORT A .53
III.2 PORT B .54
III.3 PORT C .54
III.4 PORT D .54
III.5 PORT E .55
IV. HỆ THỐNG TRUYỀN NỐI TIẾP 55
IV.1 Hệ thống SCI trong MC68HC11 : . 55
IV.2 Các thanh ghi SCI và các bit điều khiển 56
V. BỘ ĐẾM THỜI GIAN LẬP TRÌNH .60
V.1 Bắt giữ ngõ vào . 61
V.2 So sánh ngõ ra .61
V.3 Các thanh ghi trong bộ đếm thời gian . 61
VI. RESET VÀ INTERRUPT 64
VI.1 Reset 64
VI.2 Hệ thống ngắt của vi xử lý MC68HC11 (interrupt) 66
VI.3 Sử dụng ngắt Reset và các vectơ ngắt khác của MCU68HC11 . 68
CHƯƠNG V THIẾT KẾ MẠCH VÀ LẬP TRÌNH .71
I. MẠCH RS485 : .71
I.1 Giới thiệu SN75176: . 71
I.2 Điều khiển phát data trên RS485 . 72
Phương pháp định thời theo hướng bít 73
I.3 Điều khiển nhận trên RS485 75
II. CHƯƠNG TRÌNH THU THẬP DỮ LIỆU TỪ CÁC BOARD 78
II.1 Chương trình trên Vi xử lý 78
II.2 Chương trình trên PC 83
II.3 Kết quả thực hiện : . 84
III. DỮ LIỆU THU THẬP .87
III.1 Tính tốc độ động cơ 87
III.2 Chương trình đếm sản phẩm . 91
III.3 Một số chương trình điều khiển đơn giản từ PC .91
KẾTLUẬN 107
PHỤ LỤC
A. CHƯƠNG TRÌNH MÁY TÍNH .109
B. CHƯƠNG TRÌNH VI XỬ LÝ . 117
C. DATASHEETS 133
D. TÀI LIỆU THAM KHẢO. 134
CHƯƠNG I GIỚI THIỆU
I. TỔNG QUAN
ã Tên đề tài : THIẾT KẾ MẠNG GIÁM SÁT VÀ ĐIỀU KHIỂN MC68HC11
DÙNG RS485
ã Yêu cầu đề tài :
! Đề tài được thực hiện nhằm giám sát thu thập dữ liệu và điều khiển dữ
liệu từ trung tâm thông qua mạng RS485.
! Ứng dụng nguyên lý mới nghiên cứu về truyền thông RS485 trong thiết
kế và lắp đặt mạng truyền thông nối tiếp (Bit oriented timing scheme).
! Các hệ thống hiện đại ngày nay có độ tin cậy cao đều dùng MC68HCHọ
vi điều khiển khá mạnh của Motorola.
ã Mục đích và cách giải quyết :
! Xây dựng qui trình lập mạng trên các bộ EVBU MC68HC11 cũng như
các bộ vi điều khiển khác.
! Áp dụng và kiểm tra nguyên lý mới về truyền thông RS485 (Định
thời theo hướng bit) trong thiết kế mạch chuyển đổi RS232C-RS485.
! Thực hiện kiểm tra điều khiển và giám sát các kết quả lập mạng
(phương thức truyền nhận, xử lý và điều chỉnh dữ liệu thu thập từ trên
máy tính, ).
II. GIỚI THIỆU SƠ LƯỢC NỘI DUNG
Luận văn tốt nghiệp bao gồm 4 chương :
Chương 1 giới thiệu tổng quan và tóm tắt sơ lược nội dung từng mục trong
luận văn. Tiếp đó, Chương 2 sẽ trình bày một số lý thuyết về các chuẩn truyền
thông RS232, RS422 và đặc biệt là RS485, các vấn đề liên quan đến tín hiệu vi sai,
trở kháng, yêu cầu kỹ thuật, trong thiết kế và lắp đặt hệ thống mạng RS485.
Chương 3 giới thiệu các khái niệm chung về mạng truyền thông, giao thức truyền
nhận, cách kiểm soát và xử lý sai số, các quy trình quản lý địa chỉ, thời gian khi
truyền dữ liệu. Chương 4 sẽ trình bày cấu trúc họ vi điều khiển MC68HC11 bao
gồm các thanh ghi chính, các đặc điểm xuất nhập I/O, hoạt động củabộ truyền phát
nối tiếp và hệ thống Timer cũng như chi tiết cách sử dụng các ngắt ở các chế độ
làm việc khác nhau của MCU. Chương 5, được thực hiện dựa trên cơ sở các chương
trên, bao gồm quá trình thiết kế và thi công mạch chuyển đổi RS232-RS485, các
phương pháp điều khiển việc truyền nhận data, toàn bộ các lưu đồ giải thuật lập
trình mạng theo giao thức Master/Slave, cách xử lý và thu thập dữ liệu dữ liệu từ
các node Cuối cùng là phần Kết luận đánh giá các kết quả và yêu cầu đã thực
131 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2335 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Mạng giám sát và điều khiển_mc68hc11_rs485, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
h tröôøng hôïp naøy, ta seõ duøng mode standby ñöôïc 68HC11 hoã trôï cho
maïng. Khi nhaän ñöôïc moät byte khoâng phaûi laø ñòa chæ board, ta seõ set bit RWU ñöa
boä nhaän vaøo traïng thaùi sleep, ôû traïng thaùi naøy MCU seõ khoâng thöïc hieän ngaét khi
nhaän caùc byte tieáp theo. Nhö vaäy, moãi MCU seõ chæ nhaûy vaøo chöông trình ngaét moät
laàn khi treân ñöôøng maïng coù moät khoái döõ lieäu ñang truyeàn ñi thay vì 9 laàn nhö treân.
Khi ñöôøng maïng ñaõ ôû traïng thaùi raûnh (iddle) coù nghóa laø khoâng coù node naøo truyeàn
döõ lieäu sau moät khoaûng thôøi gian baèng ñoä daøi moät kyù töï (khoaûng 1,05ms ôû baud
9600), boä nhaän seõ ñöôïc ñaùnh thöùc daäy vaø hoaït ñoäng bình thöôøng – tieáp tuïc laéng
nghe yeâu caàu môùi.
Baét ñaàu
RTI
Coù byte truyeàn xuoáng hay khoâng
BYTEIN = Byte
truyeàn xuoáng
Set bit RWU boû qua
caùc byte tieáp theo
Y
N
Löu ñoà chöông trình ngaét SCI nhaän 1 byte töø PC gôûi xuoáng
Kieåm tra vôùi
ñòa chæ Board
Sai
Ñuùng
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 81
Baét ñaàu
? Ngaét phaùt
Xoaù côø baùo ngaét phaùt
A = Byte troû ñeán bôûi X
Ñöa A vaøo boä ñeäm phaùt
Taêng bieán DEM
DEM = Dem +1
RTI
Y
N Chöông trình ngaét nhaän
Löu ñoà chöông trình ngaét SCI ôû 68HC11E9
II.1.3 Löu ñoà caùc chöông trình hoã trôï cho vieäc truyeàn döõ lieäu :
Ñeå truyeàn theo giao thöùc ñeà ra, tröôùc khi khoái döõ lieäu ñöôïc phaùt, caàn phaûi
chuyeån taát caû döõ lieäu keå caû byte checksum ra daïng maõ ASCII.
Giaûi thuaät ñeå chuyeån moät byte sang maõ ASCII nhö sau
Neáu 0 <A<9, thì maõ ASCII cuûa A seõ laø A=A+$30 (1)
Neáu A khoâng naèm trong taàm treân, thì pheùp tính (1) seõ cho keát quaû A >39, ta
chæ caàn coäng theâm vôùi 7 laø ñöôïc keát quaû mong muoán.
Moãi byte döõ lieäu seõ ñöôïc truyeàn leân PC theo thöù töï töø nibble cao ñeán thaáp
Sau ñaây laø löu ñoà caùc chöông trình chuyeån moät byte sang maõ ASCII vaø phaùt moät
byte chöùa trong thanh ghi A leân maùy tính.
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 82
Löu ñoà chöông trình Ñoåi A thaønh 2 byte maõ ASCII vaø phaùt leân PC
Baét ñaàu
RTS
Caát A
Chuyeån nibble cao A thaønh maõ ASCII
vaø phaùt leân PC
Chuyeån nibble thaáp A thaønh maõ ASCII
vaø phaùt leân PC
Laáy A
Baét ñaàu
RTS
Chuyeån nibble cao cuûa A thaønh nibble
thaáp baèng caùch dòch phaûi A boán laàn
Chuyeån nibble thaáp A thaønh maõ ASCII
vaø phaùt leân PC
Löu ñoà chöông trình Chuyeån nibble cao A thaønh maõ ASCII vaø phaùt
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 83
Baét ñaàu
Côø baùo boä ñeäm phaùt
roãng set leân 1
Boä ñeäm phaùt = A
RTS
Y
N
Löu ñoà chöông trình Truyeàn byte chöùa trongA leân PC
Baét ñaàu
RTS
Che 4 bit cao
Coäng A vôùi $30
A <= $39
A = A + $07
Truyeàn byte chöùa trong A leân PC
Y
N
Löu ñoà chöông trình Chuyeån nibble thaáp A thaønh maõ ASCII vaø phaùt leân PC
II.2 Chöông trình treân PC
Maùy tính seõ ñoùng vai troø laø Master laàn löôït gôûi ñòa chæ cuûa caùc Slave caàn thu
thaäp döõ lieäu theo thöù töï vaø chôø data töø caùc Slave gôûi veà.
PC sau khi gôûi ñòa chæ cuûa node caàn ñoïc seõ chôø cho ñeán khi vuøng ñeäm nhaän
coù soá byte data caàn thieát (neáu soá byte döõ lieäu töø vi xöû lyù laø 3 byte, boä ñeäm seõ chôø
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 84
cho ñeán khi nhaän ñöôïc 9 byte bao goàm 1 byte ñòa chæ, 6 byte döõ lieäu döôùi daïng maõ
ASCII vaø 2 byte laø Checksum cuõng ñöôïc maõ hoaù theo daïng maõ ASCII). Khoái döõ
lieäu truyeàn leân seõ ñöôïc kieåm tra ñòa chæ, neáu khoâng ñuùng ñòa chæ caàn nhaän, boä
ñeäm nhaän seõ bò xoaù vaø PC seõ yeâu caàu data data ñöôïc gôûi leân laïi (baèng caùch gôûi
xuoáng vi xöû lyù ñòa chæ board). Neáu ñòa chæ cuûa khoái döõ lieäu ñuùng vôùi ñòa chæ ñaõ phaùt,
khoái döõ lieäu seõ tieáp tuïc ñöôïc kieåm tra checksum. Toång giaù trò cuûa caùc byte data
ñöôïc gaùn vaøo moät bieán (bieán naøy coù theå laø moät hoaëc hai byte). Byte thaáp cuûa bieán
naøy seõ ñöôïc so saùnh vôùi byte checksum truyeàn leân. Döõ lieäu chæ ñöôïc coi laø ñuùng
khi hai giaù trò naøy baèng nhau. Sau khi thöïc hieän so saùnh checksum, neáu ñuùng data
seõ ñöôïc xöû lyù (coù theå löu vaøo boä nhôù, hieån thò ra maøn hình …). Neáu khoâng, PC seõ
gôûi laïi ñòa chæ board caàn nhaän, tieáp tuïc chôø vaø kieåm tra döõ lieäu gôûi leân.
Caùc thao taùc treân seõ tieáp tuïc laëp laïi cho ñeán khi naøo vieäc kieåm tra ñòa chæ vaø
checksum cho keát quaû ñuùng hoaëc vaãn coù keát quaû sai maø heát thôøi gian Timeout, ñaây
laø khoaûng thôøi gian aán ñònh tröôùc ñöôïc baét ñaàu tính töø khi gôûi ñòa chæ laàn ñaàu tieân
ñeå thu thaäp döõ lieäu töø moät board. Khoaûng thôøi gian naøy laø caàn thieát vì PC khoâng
theå chôø data thích hôïp moät caùch voâ taän maø chæ chôø trong khoaûng thôøi gian cho pheùp.
Neáu quaù thôøi gian naøy maø khoâng coù döõ lieäu hay döõ lieäu khoâng ñuùng, maùy tính seõ
baùo vieäc nhaän thaát baïi. Sau ñoù PC seõ gôûi ñòa chæ board keá tieáp vaø thöïc hieän caùc
thao taùc thu thaäp döõ lieäu töông töï nhö treân.
II.3 Keát quaû thöïc hieän :
Maïng hoaït ñoäng ñuùng nhö yeâu caàu, döõ lieäu thu thaäp ñöôïc cho hieån thò theo
daïng thoâ (hieän toaøn boä keå caû ñòa chæ vaø checksum).
Tuy nhieân ñaây chæ laø böôùc ñaàu, duø coù theå yeâu caàu döõ lieäu töø töøng board theo
ñuùng giao thöùc ñònh saün, nhöng ñaây chæ laø döõ lieäu ngaãu nhieân töø vuøng ñeäm laø 3 byte
choïn tröôùc trong vuøng nhôù RAM cuûa moãi MCU, maïng chöa cho thaáy khaû naêng
töông taùc giöõa Master vôùi caùc Slave, chöa theå thay ñoåi hay taùc ñoäng ñeán döõ lieäu gôûi
leân. Caàn taïo caùc döõ lieäu khaùc nhau ñeå coù theå kieåm tra ñoä oån ñònh cuõng nhö phaùt
hieän caùc sai soùt coù theå coù cuûa maïng trong ñieàu kieän hoaït ñoäng thöïc teá.
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 85
Baét ñaàu
Gôûi ñòa chæ node caàn nhaän
Nhaän data gôûi leân
Keát thuùc
Löu ñoà toång quaùt chöông trình treân maùy tính
Xöû lyù döõ lieäu
Laáy ñòa chæ node keá tieáp
So saùnh ñòa chæ gôûi leân vôùi
ñòa chæ node ñaõ yeâu caàu
Ñuùng
Sai
Kieåm tra Checksum
khoái döõ lieäu nhaän ñöôïc
Sai
Ñuùng
Time out ?Y
N
Sau ñaây laø minh hoïa caùch thöùc hoaït ñoäng cuûa heä thoáng maïng
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 86
Ñòa chæ Board
khoâng ñuùng
Slave - MCU Master - PC
Ñòa chæ board
Ignore caùc
byte tieáp theo
Döõ lieäu
Hoaït ñoäng khoâng loãi
Slave - MCU Master - PC
Ñòa chæ board
Kieåm tra ñòa chæ ñuùng
Nhaän döõ lieäu
Kieåm tra checksum ñuùng
Xöû lyù döõ lieäu (hieån thò, löu tröõ ...)
Ñòa chæ Board
ñuùng
Döõ lieäu
Slave - MCU Master - PC
Ñòa chæ board
Kieåm tra ñòa chæ sai Ñòa chæ board
Döõ lieäu
Kieåm tra Checksum sai
Ñòa chæ board
. . . .
. . . .
Baùo Timeout. Receive fail !
. . . .
K
ho
aûn
g
th
ôøi
g
ia
n
Ti
m
eo
ut
Hoaït ñoäng coù loãi
Ñòa chæ Board
ñuùng
Ñòa chæ Board
ñuùng
. . . .
Caùch thöùc hoaït ñoäng cuûa maïng
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 87
III. DÖÕ LIEÄU THU THAÄP
Ñeå minh hoaï khaû naêng thu thaäp döõ lieäu cuûa maïng, moät board seõ thu thaäp toác
ñoä ñoäng cô töø Encoder vaø moät board seõ ñeám saûn phaåm baèng tia hoàng ngoaïi. Beân
caïnh ñoù, chöông trình coøn coù theå thöïc hieän moät soá thao taùc ñôn giaûn coù theå taùc
ñoäng ñeán hoaït ñoäng cuûa töøng board.
III.1 Tính toác ñoä ñoäng cô
Ñoäng cô ñöôïc söû duïng laø ñoäng cô DC coù gaén saün Encoder, toác ñoä ñoäng cô
vaøo khoaûng 3800-4000 voøng/phuùt, möùc xung Encoder ñöa veà laø 100 xung/voøng
(thoâng soá naøy coù theå khoâng chính xaùc vì ñaây laø loaïi Encoder duøng cô caáu rô le töø,
sai soá xung ñöa veà cao hôn so vôùi loaïi duøng quang). ÔÛ toác ñoä cao nhaát 4000
voøng/phuùt, moät chu kyø xung vaøo khoaûng 150µs.
Ñeå laáy toác ñoä ñoäng cô, xung töø Encoder seõ ñöôïc noái vôùi chaân PA2 laø chaân
baét giöõ ngoõ vaøo IC1 (Input Capture1). Khi phaùt hieän caïnh leân cuûa xung taïi chaân
naøy, MCU seõ nhaûy vaøo chöông trình ngaét IC1SRT, taêng bieán ñeám PP30MS leân moät.
Baét ñaàu
RTI
PP30MS = PP30MS + 1
Xoaù côø baùo ngaét
Löu ñoà chöông trình Ngaét IC1SRT ñeám xung töø Encoder
Chöông trình chính seõ tính thôøi gian vaø chuyeån giaù trò trong bieán PP30MS ra
toác ñoä cuûa ñoäng cô. Sau ñaây laø thuaät toaùn tính toác ñoä ñoäng cô :
! Goïi soá xung trong moät voøng cuûa Encoder laø PPR (Pulses per Round)
! Soá xung trong 30ms laø PP30MS (Pulses per 30 ms)
! Soá voøng trong 30 ms laø RP30MS (Rounds per 30 ms)
Ta coù
Soá voøng ñoäng cô trong 30ms = Soá xung trong 30ms / Soá xung moät voøng
Hay RP30MS = PP30MS/PPR (1)
1phuùt = 60s = 60,000ms = 2000 x 30ms
Nhö vaäy, toác ñoä ñoäng cô trong moät phuùt tính theo RP30MS seõ laø
RPM = 2000 x RP30MS (2)
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 88
Thay (1) vaøo (2), ta coù
RPM = 2000 x PP30MS/PPR
Vôùi PPR = 100 ta suy ra RPM = 20 x PP30MS (3)
Coù theå thaáy caùch tính naøy cho sai soá khaù lôn, neáu vieäc ñeám xung trong 30ms
cho keát quaû sai töø 1 ñeán 2 xung thì toác ñoä seõ sai töø 20 ñeán 40 voøng.
Coù 2 caùch giaûm sai soá naøy :
! Taêng PPR. Vôùi PPR = 500 xung/voøng, sai soá toác ñoä seõ giaûm xuoáng 5 laàn
khoaûng 4-8 voøng/phuùt
! Taêng thôøi gian laáy maãu (töùc thôøi gian ñeám xung PP30MS).
Vì khoâng theå thay ñoåi PPR, ta chæ coù theå thöïc hieän theo caùch thöù hai laø taêng
thôøi gian ñeám xung. Trong coâng thöùc (3), ta thaáy neáu ñeám xung trong 100ms thì sai
soá seõ chæ coøn 6 voøng/phuùt vaø ñaëc bieät neáu taêng leân nöõa giaû söû ñeám trong 600ms thì
coâng thöùc (3) trôû thaønh
RPM = PP600MS
Toác ñoä ñoäng cô chính baèng soá xung ñeám ñöôïc trong 600ms hay sai soá chæ
coøn 1voøng/phuùt. Tuy nhieân 600ms laø thôøi gian laáy maãu lôùn neáu caàn ñieàu khieån
ñoäng cô theo moät thuaät toaùn coù hoài tieáp toác ñoä.
Vì chæ thu thaäp toác ñoä ñoäng cô, neân chöông trình seõ quan taâm nhieàu hôn ñeán
ñoä sai soá cuûa döõ lieäu ñoïc veà. Do ñoù, thôøi gian laáy maãu ñöôïc choïn laø 300ms. Soá
xung trong 300ms seõ ñöôïc nhaân ñoâi ñeå laáy giaù trò laø soá xung trong 600ms (vaø giaù trò
naøy cuõng chính laø toác ñoä ñoäng cô). Ñeå tính thôøi gian, ta döïa vaøo giaù trò thanh ghi
TCNT 16 bit, cöù moãi chu kyø maùy giaù trò thanh ghi naøy taêng leân 1. Nhö vaäy, neáu laáy
moác töø luùc baèng 0 ñeán khi TCNT= 60,000 coù nghóa laø ñaõ qua : 60,000 x 500ns =
30ms.
Ñeå ñeám xung trong 300ms = 30ms x 10 ta caàn theâm moät bieán COUNT. Bieán
naøy ñöôïc naïp giaù trò ban ñaàu laø 10 vaø seõ giaûm ñi 1 moãi khi ñöôïc 30 ms. Cöù 30ms soá
xung ñeám ñöôïc seõ ñöôïc coäng doàn vaøo bieán ROUNDS. Khi ñöôïc 300ms töùc khi bieán
COUNT = 0, toác ñoä ñoäng cô seõ ñöôïc tính theo thuaät toaùn nhö treân töùc
RPM = 2 x ROUNDS = ROUNDS + ROUNDS.
Sau ñaây laø thuaät toaùn chöông trình ñeám xung vaø tính toác ñoä ñoäng cô (phaàn
chöõ in ñaäm chæ moät chöông trình con ñöôïc goïi).
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 89
Baét ñaàu
RTS
Ñaõ ñöôïc 30 ms chöa
Rounds = Rounds + Soá
xung trong 30 ms
Count = 0
Rounds = Rounds x 2
RPM = Rounds
Count = 10
Naïp laïi caùc thoâng soá thôøi gian
cho 30 ms tieáp theo
Y
N
Y
N
Löu ñoà chöông trình Ñeám xung ñoïc veà töø Encoder trong 300 ms
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 90
Baét ñaàu
Gaùn giaù trò hieän thôøi cuûa thanh ghi
TCNT vaøo bieán OLDTCNT
PP30MS = 0
Keát thuùc
Löu ñoà chöông trình Naïp laïi caùc thoâng soá
thôøi gian cho 30 ms tieáp theo
III.2 Chöông trình ñeám saûn phaåm
Vieäc ñeám saûn phaåm ñöôïc thöïc hieän treân board 68HC11E9 vì chöông trình
khoâng quaù daøi, coù theå chaïy toát vôùi 512 byte EEPROM noäi.
Saûn phaåm ñöôïc phaùt hieän baèng tia hoàng ngoaïi thöïc hieän nhôø 2 led thu vaø
phaùt. Maïch laép raùp khaù ñôn giaûn, nguyeân taéc hoaït ñoäng nhö sau:
Led1 laø led phaùt tia hoàng ngoaïi ñöôïc noái vôùi ñieän trôû R1=1K ñeå haïn doøng vaø
phaân cöïc cho led saùng. Led2 laø led thu, khi coù tia hoàng ngoaïi chieáu ñeán, led2 neáu
seõ daãn, taïo ñieän aùp döông treân ñieän trôû R2. Aùp treân ñieän trôû naøy seõ phaân cöïc laøm
transitor Q1(C828) daãn. Transitor naøy ñoùng vai troø nhö moät coâng taéc, khi phaân cöïc
seõ thoâng maïch vaø noái cöïc C xuoáng ñaát, VC = 0.
Khi coù saûn phaåm ñi qua chaén ngang tia hoàng ngoaïi, led 2 khoâng daãn neân Q1
khoâng ñöôïc phaân cöïc, VC = 5V.
Tín hieäu ñöôïc laáy töø cöïc C cuûa transitor, qua ñieän trôû haïn doøng (10K) vaø ñöa
vaøo chaân IC1 cuûa MCU. Chöông trình ñöôïc vieát ñeå phaùt hieän caïnh leân treân chaân
IC1. Khi coù saûn phaåm ñi qua, MCU seõ nhaûy vaøo chöông trình ngaét, giaûm soá saûn
phaåm ñaõ ñaët (bieán COUNT ; giaù trò maëc ñònh khi khôûi ñoäng COUNT = DAT = 9) vaø
taêng soá saûn phaåm ñeám ñöôïc (bieán PRO). Cöù sau heát moät ñôït saûn phaåm (soá saûn
phaåm moät ñôït chính laø giaù trò trong bieán DAT) töùc khi COUNT = 0 thì chöông trình
seõ töï ñoäng naïp laïi giaù trò ñaët cho bieán COUNT. Khi ñöôïc hoûi, MCU seõ truyeàn leân
PC soá saûn phaåm ñaõ ñeám ñöôïc (PRO) vaø soá saûn phaåm hieän thôøi coøn laïi (COUNT).
Soá saûn phaåm hieän thôøi coù theå theo doõi treân led.
Khoaûng caùch giöõa hai led coù theå taêng leân neáu ta giaûm ñieän trôû R1 (laøm led1
saùng hôn) hoaëc giaûm ñieän trôû R3 (taêng doøng phaân cöïc cho Q1)
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 91
Sau ñaây laø giaûi thuaät chöông trình ngaét ñeám saûn phaåm
Baét ñaàu
PRO = PRO + 1
COUNT = COUNT - 1
COUNT = 0
COUNT = DAT
Hieån thò COUNT
Xoaù côø baùo ngaét
RTI
Y
N
Löu ñoà chöông trình ngaét ñeám saûn phaåm
III.3 Moät soá chöông trình ñieàu khieån ñôn giaûn töø PC
Ñeå theå hieän khaû naêng taùc ñoäng cuûa Master tôùi töøng Slave, chöông trình
ñöôïc vieát sao cho töø treân PC, baèng caùch click chuoät, ta coù theå khôûi ñoäng hoaëc döøng
ñoäng cô, taêng hoaëc giaûm toác ñoä theo yù muoán.
Ñoái vôùi board ñeám saûn phaåm, saûn phaåm ñaët coù theå thay ñoåi theo yù muoán,
neáu choïn soá saûn phaåm ñaët laø 7 (giôùi haïn DAT ≤ 9), sau khi ñeám xong ñôït saûn phaåm
hieän taïi, MCU seõ baét ñaàu ñeám saûn phaåm töø giaù trò môùi (töø 7 xuoáng 0) vaø seõ khoâng
thay ñoåi trong laàn ñeám keá tieáp neáu giaù trò ñaët naøy vaãn giöõ nguyeân. Neáu muoán thay
ñoåi soá saûn phaåm ñaët ngay khi choïn, click nuùt Setting, MCU seõ ngay laäp töùc ñeám
xuoáng töø giaù trò ñaët môùi. Soá saûn phaåm ñaõ ñeám ñöôïc cuõng coù theå xoaù treân PC baèng
caùch nhaán nuùt Clear, MCU seõ xoùa giaù trò ñaõ löu trong boä nhôù vaø baét ñaàu naïp laïi soá
saûn phaåm môùi.
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 92
Vieäc ñieàu khieån nhö treân döïa vaøo byte ñöôïc gôûi töø PC xuoáng töøng board. Vì
moãi board chæ caàn 2 bit ñeå nhaän bieát ñòa chæ, do ñoù coøn laïi tôùi 6 bit ñuû ñeå coù theå
thöïc hieän caùc yeâu caàu treân.
Sau ñaây laø chöùc naêng töøng bit cuûa byte gôûi töø maùy tính xuoáng caùc Vi xöû lyù :
III.3.1 Board ño toác ñoä ñoäng cô (68HC11E2)
Taêng/giaûm
toác ñoä
Start/stop
ñoäng cô
Ñòa chæ
Bit 7 6 5 4 3 2 1 0
Döõ lieäu veà
ñieàu khieån toác ñoä
Chöùc naêng töøng bit cuûa byte göûi töø PC xuoáng MCU68HC11E2
Hai bit 6 vaø 7 duøng ñeå choïn ñòa chæ.
Ñoái vôùi board ñieàu khieån vaø thu thaäp toác ñoä (68HC11E2), bit 5 seõ ñieàu khieån
vieäc khôûi ñoäng cuõng nhö döøng ñoäng cô
Bit 5 ñieàu khieån ñoäng cô döøng hay chaïy.
! = 0: Ñoäng cô döøng.
! = 1: Ñoäng cô chaïy.
Bit 4 ñieàu khieån taêng hay giaûm toác ñoä ñoäng cô.
! = 0: Giaûm ñoä roäng möùc cao xung xuaát ra (giaûm toác ñoä ñoäng cô).
! = 1: Taêng ñoä roäng möùc cao xung xuaát ra (taêng toác ñoä ñoäng cô).
Bit 3:0 chöùa döõ lieäu veà ñoä taêng hay giaûm ñoä roäng möùc cao cuûa xung. Neáu
bit4=1 vaø bit 3:0= 0101. Möùc cao cuûa xung xuaát ra seõ taêng 5% chu kyø, ngöôïc laïi
neáu bit4=0, möùc cao cuûa xung xuaát ra seõ giaûm ñi 5%.
Tröôøng hôïp khi vieäc ñieàu khieån taêng hay giaûm möùc cao cuûa xung ñaït tôùi caùc
giaù trò giôùi haïn laø 0% vaø 100%, MCU seõ töï ñoäng naïp caùc giaù trò gaàn keà möùc giôùi
haïn, töùc 1% vaø 99% vaøo bieán HIDUTY (phaàn traêm möùc cao chu kyø xung ñieàu
roäng).
Vieäc ñieàu roäng xung ñöôïc thöïc hieän duøng ngaét baét giöõ ngoõ ra OC2 vôùi taàn soá
coá ñònh laø 1KHz (1ms/xung). Cöù moãi laàn ngaét TOC2 seõ ñöôïc gaùn giaù trò tuyø theo
möùc logic hieän taïi treân chaân PA6(OC2). Giaû söû khi PA6=0, TOC2 ñöôïc coäng theâm
vôùi TIMELO laø thôøi gian möùc thaáp cuûa chu kyø xung. Khi PA6=1, TOC2 seõ ñöôïc
coäng theâm vôùi TIMEHI laø thôøi gian möùc cao chu kyø xung. Tröôùc khi thoaùt khoûi
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 93
chöông trình ngaét, bit OL2 (bit 6 thanh ghi TCTL1) ñöôïc ñaûo ñeå ñaûo möùc logic
xung treân chaân PA6 trong laàn ngaét keá tieáp (khi TCNT = TOC2).
Baèng caùch thay ñoåi bieán HIDUTY (phaàn traêm möùc cao xung ñieàu roäng), ta
coù theå thay ñoåi toác ñoä ñoäng cô theo yù muoán.
Baét ñaàu
RTS
DKHIEN = Nibble thaáp
cuûa BYTEIN
Bit 4 = 0
Taêng ñoä roäng xung
HIDUTY = HIDUTY + DKHIEN
Giaûm ñoä roäng xung
HIDUTY = HIDUTY - DKHIEN
HIDUTY = 1
HIDUTY = 99
Ñaët laïi caùc thoâng soá
ñieàu roäng xung
YN
Löu ñoà chöông trình Ñieàu khieån taêng giaûm toác ñoä
HIDUTY <= 0
Y
N
HIDUTY >= 100
Y
N
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 94
Baét ñaàu
A = HIDUTY
A = 100
B = ONEPER
TIMEHI = A x B
B = ONEPER
FULL CYCLE = A x B
TIMELO = FULL CLYCLE - TIMEHI
RTS
Löu ñoà chöông trình ñaët laïi caùc thoâng soá ñieàu roäng xung
z
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 95
Baét ñaàu
Keát thuùc
Xoaù côø baùo ngaét
Xung ñang ôû möùc thaáp
D = TCNT + TIMEHID = TCNT + TIMELO
TOC2 = D
Ñaûo möùc logic cuûa xung
trong laàn ngaét keá tieáp
Y N
Löu ñoà chöông trình Ngaét OC2SRT ñieàu roäng xung
III.3.2 Board ñeám saûn phaåm (68HC11E9)
Chöùc naêng töøng bit cuûa byte göûi töø PC xuoáng MCU68HC11E9
Set COUNT
Xoaù PRO
Ñòa chæ
Bit 7 6 5 4 3 2 1 0
Döõ lieäu veà soá
saûn phaåm ñaët (neáu coù)
Bit 7:6 Ñònh ñòa chæ
Bit 5 laø bit daønh ñeå taùc ñoäng tôùi soá saûn phaåm ñaõ ñeám ñöôïc
! = 0 Khoâng taùc ñoäng tôùi bieán PRO
! = 1 Xoùa PRO = 0.
Bit 4 seõ yeâu caàu coù ñaët ngay laäp töùc soá saûn phaåm môùi hay khoâng
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 96
! = 0 Khoâng ñaët ngay laäp töùc.
! = 1 Ñaët ngay laäp töùc.
Bit 3:0 chöùa giaù trò soá saûn phaåm ñaët ñöôïc gôûi xuoáng töø PC vaø ñöôïc gaùn vaøo
PRO, vì chæ söû duïng 4 bit neân soá saûn phaåm ñaët toái ña khoâng quaù 15, tuy nhieân ñeå
coù theå hieån thò ra led, giaù trò naøy seõ laáy khoâng quaù 9. Neáu bit 4=1, COUNT seõ ñöôïc
gaùn baèng giaù trò DAT ngay laäp töùc.
Baét ñaàu
RTS
COUNT = DAT
DAT = Nibble thaáp cuûa BYTEIN
Hieån thò
Bit 4 = 0
Y
N
Nibble thaáp cuûa BYTEIN = 0 Y
N
Löu ñoà chöông trình ñieàu khieån ñaët saûn phaåm
Trong caû hai chöông trình xöû lyù byte truyeàn xuoáng ñeàu khoâng noùi ñeán bit 5.
Vì ñaây laø bit coù ñoä öu tieân chæ sau hai bit ñòa chæ (bit 6 vaø 7) neân seõ ñöôïc xöû lyù tröïc
tieáp ngay trong chöông trình chính.
ÔÛ Board ño toác ñoä ñoäng cô, neáu bit 5 cuûa byte nhaän ñöôïc töø PC baèng 1 hay 0,
ñoäng cô seõ baét ñaàu chaïy (neáu ñang döøng) hoaëc ngay laäp töùc döøng laïi (neáu ñang
chaïy, luùc naøy vieäc taùc ñoäng taêng hay giaûm toác ñoä khoâng coøn taùc duïng nöõa). ÔÛ
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 97
board ñeám saûn phaåm, neáu bit 5 cuûa byte truyeàn xuoáng baèng 1, soá saûn phaåm ñaõ ñeám
ñöôïc seõ xoaù xuoáng 0 ngay laäp töùc.
Chöông trình Ñieàu khieån ñoäng cô seõ thöïc hieän taát caû caùc thao taùc ñieàu khieån
ñoäng cô (start/stop, taêng/giaûm) vaø phaùt döõ lieäu leân maùy tính cuõng nhö hieån thò toác
ñoä ra ngoaøi.
Löu ñoà chöông trình chính Board ñieàu khieån toác ñoä
Khôûi ñoäng caùc bieán
ORG $F800
Khôûi ñoäng boä SCI
Khôûi ñoäng boä Timer
Ñieàu khieån ñoäng cô
Ño toác ñoä
END
Chöông trình chính Board ño toác ñoä ñoäng cô
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 98
Kieåm tra byte nhaän ñöôïc
Baét ñaàu
RTS
Byte nhaän ñöôïc baèng 0
Bit 5 = 0
Döøng ñoäng cô
Ñieàu khieån taêng
giaûm toác ñoä
Ñoäng cô chaïy
Hieån thò toác ñoä ra Led
Göûi döõ lieäu leân PC
Y
N
Y N
Löu ñoà chöông trình Ñieàu khieån ñoäng cô
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 99
Ñieàu khieån ñaët saûn phaåm
Khôûi ñoäng caùc bieán
ORG $B600
Khôûi ñoäng boä SCI
Khôûi ñoäng boä Timer
Delay 1 ms
END
Chöông trình chính Board ñeám saûn phaåm
Khôûi ñoäng caùc
Pseudo vectô
BYTEIN 0
Bit 5 = 0
PRO = 0
Chuyeån döõ lieäu ra maõ ASCII
Cho pheùp ngaét phaùt
Caám ngaét phaùt
Y
N
Ñaõ phaùt heát döõ lieäu
Y
N
YN
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 100
Giaûi thích giao dieän chöông trình
Giao dieän chính
Hieån thò soá saûn phaåm
ñaõ ñeám ñöôïc
Nuùt xoaù soá saûn phaåm
ñaõ ñeám ñöôïc
Nuùt ñaët soá saûn phaåm
trong moät laàn ñeám
Hieån thò soá saûn phaåm
coøn laïi ñang ñöôïc
ñeám xuoáng
Döøng ñoäng cô Giaûm toác ñoä
Hieån thò phaàm traêm
möùc cao chu kyø
Hieån thò toác
ñoä ñoäng cô
Taêng toác ñoä
Khôûi ñoäng
Keát thuùc
chöông trình
Kieåm tra
Form Option & Setting
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 101
Chöông trình giao dieän vieát baèng Visual Basic, ñöôïc chia thaønh töøng board
trong moãi khung. Caùc phaàn hieån thò trong giao dieän chính ñöôïc chuù thích nhö treân.
Board 1 seõ gôûi veà soá saûn phaåm ñaõ ñeám ñöôïc vaø soá saûn phaåm ñang ñeám
xuoáng trong ñôït hieän taïi. Board 2 seõ gôûi veà toác ñoä ñoäng cô vaø phaàn traêm möùc cao
xung ñieàu roäng ñieàu khieån ñoäng cô
Trong board 1, soá saûn phaåm trong laàn ñeám keá tieáp seõ laø giaù trò hieån thò trong
oâ Products per Count, click nuùt Setting neáu muoán giaù trò naøy taùc ñoäng ngay laäp töùc
(ñeám ngay cho duø chöa keát thuùc laàn ñeám hieän taïi). Moãi khi coù saûn phaåm ñi qua,
Counting seõ giaûm ñi moät ñôn vò, vaø soá saûn phaåm ñaõ ñeám taêng theâm moät (Done).
Trong tröôøng hôïp muoán boû ñi soá saûn phaåm ñaõ ñeám (saûn phaåm bò hö, ñeám
laïi…), click nuùt Clear, boä ñeäm löu tröõ soá saûn phaåm döôùi vi xöû lyù seõ xoaù veà 0 baét ñaàu
ñeám laïi töø ñaàu.
Töø treân maùy tính, ta coù theå khôûi ñoäng hoaëc döøng ñoäng cô baèng caùch click caùc
node töông öùng, toác ñoä coù theå taêng hoaëc giaûm khi click Increase/Decrease laøm thay
ñoåi möùc cao cuûa xung ñöôïc ñieàu roäng döôùi vi xöû lyù. Giaù trò naøy coù theå taêng/giaûm
trong taàm 1% - 99%.
Nuùt Test duøng ñeå kieåm tra khi môùi laép ñaët maïng, nuùt naøy chæ cho pheùp khi
choïn cheá ñoä nhaän rôøi raïc (Singly). ÔÛ cheá ñoä nhaän lieân tuïc (Continuously), nuùt naøy
seõ bò caám.
Giao dieän coù hai menu laø Setting vaø Option. Menu Setting duøng ñeå thieát laäp
coång giao tieáp, choïn ñòa chæ board. Menu Option duøng ñeå choïn cheá ñoä cho pheùp
hay caám caùc nuùt taùc ñoäng (Clear, Setting), ñònh thôøi gian Timeout (ms) hoaëc
khoaûng thôøi gian queùt (Interval to Receive) tính theo ñôn vò laø ms. Giaù trò naøy chæ
hieån thò vaø coù theå söûa ñoåi khi choïn cheá ñoä Continuously, trong cheá ñoä Singly, vuøng
naøy seõ ñöôïc aån ñi. Trong menu Option coøn cho pheùp ñònh daïng soá byte döõ lieäu
nhaän ñöôïc töø vi xöû lyù (chöa chuyeån sang maõ ASCII) chæ coù taùc duïng trong quaù trình
chaïy thöû nghieäm, thay ñoåi soá byte ñeå kieåm tra khaû naêng nhaän, phaùt cuûa maïng. Khi
maïng chaïy oån ñònh, giaù trò naøy seõ giöõ khoâng ñoåi.
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 102
Sô
ñ
oà
m
aïn
g
th
u
th
aäp
so
á li
eäu
. .
.
.
R
S2
32
-R
S4
85
Tx
R
x
G
nd
A
B
G
nd
PC
M
as
te
r
R
S4
85
-T
TL
A
B
G
nd
M
C
U
2
68
H
C
11
E9
Tx
R
x
H
ie
ån
th
ò s
aûn
ph
aåm
ñ
eám
Sl
av
e
1
R
S4
85
-T
TL
A
B
G
nd
M
C
U
1
68
H
C
11
E2
Tx
R
x
H
ie
ån
th
ò
to
ác
ño
ä
Sl
av
e
2
M
aïc
h
ño
äng
lö
ïc
M
ot
or
ap
pr
4
00
0
rp
m
En
co
de
r
10
0
p/
r
R
S4
85
-T
TL
A
B
G
nd
M
C
U
x
68
H
C
11
Tx
R
x
Sl
av
e
x
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 103
VCC
VCC
VCC
VCC
VCC
VCC
VCC
VCC1
PB2
PB7
STRB
PC7
PB2
PB5
TxD
PB0
RxD
PB1
PC6
PB4
PB7
STRB
IC1
PB1X
T
A
L
LXTAL
PB0
PB6
MODB
PC6
MODA
PB3
PB5
XTAL
MODA
PB6
PB7
L
X
T
A
L
MODB
PB3
PB4
RESET
RxD
RESET
IC1
TxD
U2
Led7Segment
7
6
4
2
1
9
10
5
3
8A
B
C
D
E
F
G
DP
.
.
U1
68HC11E9
8
7
17
19
18
2
34
33
32
43
45
47
49
44
46
48
50
52
51
31
30
29
28
27
42
41
40
39
38
37
36
35
9
10
11
12
13
14
15
16
20
21
22
23
24
25
3
5
4
6
XT
EX
RESET
IRQ
XIRQ
MODB
PA0
PA1
PA2
PE0
PE1
PE2
PE3
PE4
PE5
PE6
PE7
VRH
VRL
PA3
PA4
PA5
PA6
PA7
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
PD0
PD1
PD2
PD3
PD4
PD5
MODA
E
AS
R/W
U4
1
11
19
18
17
16
15
14
13
12
2
3
4
5
6
7
8
9
OE
LE
1Q
2Q
3Q
4Q
5Q
6Q
7Q
8Q
1D
2D
3D
4D
5D
6D
7D
8D
U5MC34064/TO
21
3
INRSET
G
N
D
R7
47K
JP2
To RS485
1
2
SW1
RESET
R13
10K
R14
10K
R4
4K9
R2
10K
R1
1K
R3
220
D2 D1
LED PHAT
Q1
C828
3
2
1
R8
47K
JP6
1 2
3 4
R5
10K
8 MHz
10M
HIEN THI SAN PHAM
SET DIA CHI
RESET
CHON MODE HOAT DONG
DEM SAN PHAM
SO DO MACH DEM SAN PHAM
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 104
VCC
VCC1
VCC
VCC
MODB
TxD
PB1
PC1
MODA
L
X
T
A
L
RESET
PC4
RxD
MODA
MODB
PC3
OC2
PB6
PC0
PB3
X
T
A
L
PB7
RESET
TxD
PB4
PB7
PC7
RxD
IC1
PC6
PC6
PC5
PC5
PC2
IC1
OC2
LXTAL
XTAL
PB2
PB5
PB0
U1
68HC11E2
8
7
17
19
18
2
34
33
32
43
45
47
49
44
46
48
50
52
51
31
30
29
28
27
42
41
40
39
38
37
36
35
9
10
11
12
13
14
15
16
20
21
22
23
24
25
3
5
4
6
XT
EX
RESET
IRQ
XIRQ
MODB
PA0
PA1
PA2
PE0
PE1
PE2
PE3
PE4
PE5
PE6
PE7
VRH
VRL
PA3
PA4
PA5
PA6
PA7
PB0
PB1
PB2
PB3
PB4
PB5
PB6
PB7
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
PD0
PD1
PD2
PD3
PD4
PD5
MODA
E
AS
R/W
R14
10K
SW1
RESET
10M
JP2
To RS485
1
2
JH6
DEM XUNG TU ENCODER
1 1
8 MHz
U5MC34064/TO
21
3
INRSET
G
N
D
JH8
MACH DONG LUC - START/STOP DONG CO
1 1
JP6
1 2
3 4
R7
47K
R13
10K
JH7
MACH DONG LUC - DIEU RONG XUNG
1 1
R8
47K
RESET
SET DIA CHI
CHON MODE HOAT DONG
DEN MACH HIEN THI TOC DO
SO DO MACH DO TOC DO DONG CO
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 105
+24V
+24V +24V
VCC
VCC
VCC
VCC
+24V
E
N
VCC
GND
P
W
M
D
I
0V
0V
0V
0V
EN
1 2
DI
1 2
PWM
1 2
-+
MG1
MOTOR DC
1 2
D13
1
2
D12
1
2
D11
1
2
D14
1
2
U12
4N35
1 6
2
5
4
Q13
2
3
1
Q14
2
3
Q12
1
2
3
Q11
2
3
1
GND
1
2
+5V
1
2
+24V
1
2
D151
2
D161
2
U13
4N35
16
2
5
4
U6A
74LS15
1
122
13
R1
2,2K
R8
120k
R7
1k
R6
2,2k
R5
120k
R4
120k
R3
120k
R2
1k
R11
10k
R14
10k
R13
10k
R12
10k
U8A
74LS04
1
2
U14
4N35
16
2
5
4U6B
74LS15
3
64
5
0V
1
2
Q16
3
2
1
Q15
3
2
1
U11
4N35
1 6
2
5
4
R9
220
R10
220
SO DO MACH DONG LUC
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 106
24V(AC)
0V(AC1)
OV(DC1)
5V(DC)
24V(DC)
0V(AC2)
OV(DC2)
5V(AC)
U21
MC7824C/TO
1 2
3
IN OUT
G
N
D
U22MC7805C/TO
1 2
3
IN OUT
G
N
D
0V(AC2)
1
2
24V(AC)
1
2
0V(AC1)
1
2
5V(AC)
1
2
0V(DC2)
1
2
3
4
5
6
7
8
5V(DC)
1
2
3
4
5
6
7
8
0V(DC1)
1
2
3
4
5
6
7
8
24V(DC)
1
2
3
4
5
6
7
8
D28
1
2
C22
2200u
C23
10u
C26
2200u
D23
1
2
C27
10u
D24
1
2
C28
4,7u
D22
1
2
C21
D21
1
2
C25
2200u
R21
C24
4,7u
Q21
PNP DAR BEC
2 3
1
D26
1
2
D27
1
2
D25
1
2
BO NGUON MACH DONG LUC
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 107
KEÁT LUAÄN
• Ñaùnh giaù keát quaû
! Caùc döõ lieäu thu thaäp veà ñöôïc theo ñuùng yeâu caàu, caùc leänh xöû lyù thöïc
hieän ñuùng nhö yù ñònh ñeà ra.
! Maïng ban ñaàu coù bò aûnh höôûng bôûi nhieãu, nhaát laø nhieãu töø ñoäng cô (led
khoâng hieån thò ñöôïc, döõ lieäu thöôøng xuyeân bò maát treân ñöôøng truyeàn,
chöông trình luoân baùo “ Timeout”). Caùp keát noái giöõa hai board quaù ngaén
(20cm) khoâng theå loaïi nhieãu.Tuy nhieân sau moät soá xöû lyù (laøm xoaén vaø
keùo daøi caùp ≥ 1.5m, thay ñoåi chöông trình, laøm maïch in) maïng ñaõ giaûm
ñöôïc phaàn lôùn nhieãu.
! Toác ñoä ñoäng cô ño ñöôïc coù sai soá 2 voøng/phuùt töùc khoaûng 6o/giaây. Ñaây laø
giaù trò thaáp nhaát, chöa tính ñeán khaû naêng sai soá taêng leân khi cho xung
ñieàu roäng ôû möùc cao ≥ 90% (hiduty caøng cao, ñoä chính xaùc caøng giaûm).
! Toác ñoä xöû lyù chöông trình möùc thaáp nhaát laø 0.6s. ÔÛ giaù trò thaáp hôn,
maïng vaãn hoaït ñoäng ñöôïc nhöng sai soá cuõng taêng leân. Trong caùc öùng
duïng ñoøi hoûi toác ñoä xöû lyù cao hôn, chöông trình seõ chaïy nhanh hôn neáu ta
thay ñoåi caùch tính toác ñoä (giaûm thôøi gian laáy maãu).
! Ñeà taøi coù theå môû roäng thaønh moät heä thoáng thu thaäp vaø giaùm saùt döõ lieäu
toaøn dieän, aùp duïng caùc lyù thuyeát ñieàu khieån ñeå ñöa vaøo öùng duïng roäng
raõi trong ñôøi soáng saûn xuaát.
• Keát luaän :
! Taùc ñoäng nhieãu gaây ra sai soá vaø ñoä baát oån ñònh trong hoaït ñoäng maïng.
Baèng caùch söû duïng ñöôøng daây vi sai RS485, nhieãu ñöôïc töï khöû (buø tröø
laãn nhau) treân ñöôøng truyeàn. Phaàn meàm vieát theo giao thöùc xaùc ñònh
cuõng loïc vaø traùnh ñöôïc aûnh höôûng cuûa nhieãu (söû duïng cheá ñoä standby,
delay tröôùc khi truyeàn, kieåm tra ñòa chæ vaø checksum,…). Beân caïnh ñoù,
maïng ñöôïc thieát keá duøng MC68HC11 laø hoï vi ñieàu khieån coù loaïi nhieãu
cao, caùc maïch ñöôïc thöïc hieän luoân quan taâm ñeán khaû naêng choáng
nhieãu…Vôùi nhieàu phöông phaùp phoøng traùnh nhö treân, aûnh höôûng cuûa yeáu
toá naøy ñaõ giaûm ñaùng keå (nhöng chöa thaät söï hoaøn toaøn).
! Töø chöông trình ban ñaàu ñeán chöông trình thu thaäp soá lieäu thöïc teá ñöa ra
nhieàu vaán ñeà caàn giaûi quyeát :
Caùc ngaét caàn phoái hôïp hôïp lyù (SCI, IC1, OC2), ñaëc bieät laø board ño toác
ñoä ñoäng cô. Vôùi xung ñieàu roäng coù taàn soá 1KHz, töùc T=1ms, neáu coù ngaét
naøo ñoù (coù ñoä öu tieân lôùn hôn ngaét OC2) coù thôøi gian thöïc hieän lôùn hôn T,
chöông trình seõ khoâng thöïc hieän ñöôïc vieäc ñieàu roäng xung. Coù theå traùnh
tröôøng hôïp naøy neáu T taêng, töùc giaûm taàn soá, tuy nhieân neáu taàn soá quaù
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 108
thaáp, ñoäng cô seõ bò rung (theo thöïc nghieäm, möùc taàn soá cho pheùp ≥ 400
Hz).
• Höôùng phaùt trieån ñeà taøi
! Môû roäng maïng leân toái ña 250 node vôùi giao thöùc Master/Slave. Neáu söû
duïng khung truyeàn chi tieát hôn vaø söû duïng caùc giao thöùc khaùc chaët cheõ
hôn maïng seõ thöïc hieän töông taùc qua laïi giöõa Master vaø caùc Slave hieäu
quaû hôn.
! Heä thoáng maïng coù theå ñöôïc naâng leân neáu hình thaønh ñöôïc xaây döïng theo
maïng phaân caáp, Master cuûa caáp naøy seõ laø Slave cuûa caáp cao hôn, nhö
vaäy khoái döõ lieäu xöû lyù taïi trung taâm ñöôïc giaûm bôùt, caùc leänh thöïc hieän
theo nhieàu chöùc naêng vaø ña daïng hôn…
! Coù theå aùp duïng caùc lyù thuyeát ñieàu khieån kinh ñieån cuõng nhö hieän ñaïi vaøo
töøng phaân vuøng ñeå phuø hôïp vôùi yeâu caàu thu thaäp hoaëc xöû lyù ñieàu khieån
heä thoáng.
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 109
PHUÏ LUÏC
A. Chöông trình maùy tính
Form Main
Option Explicit
Dim m%
Dim Timeout As Boolean
Dim CheckSum As Boolean
Dim Tam As Integer
Dim Dkhien0 As Byte
Dim Dkhien1 As Byte
Dim Product As Byte
Private Sub cmdClear_Click()
Dkhien0 = 32
End Sub
Private Sub cmdEnd_Click()
If Dkhien1 0 Then
MsgBox "Motor is running", vbExclamation, " Warning !"
Else
MSComm1.PortOpen = False
End
End If
End Sub
Private Sub cmdGiam_Click()
Tam = Tam - 1
End Sub
Private Sub cmdSeting_Click()
If Dkhien0 32 Then
Dkhien0 = 16
End If
End Sub
Private Sub cmdStart_Click()
Dkhien1 = 32
cmdTang.Enabled = True
cmdGiam.Enabled = True
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 110
cmdStop.Enabled = True
If frmOption.optSingle.Value = True Then
Call Receive
End If
End Sub
Private Sub cmdStop_Click()
Dkhien1 = 0
cmdTang.Enabled = False
cmdGiam.Enabled = False
If frmOption.optSingle.Value = True Then
Call Receive
End If
End Sub
Private Sub cmdTang_Click()
Tam = Tam + 1
End Sub
Private Sub cmdTest_Click()
Call Receive
End Sub
Private Sub mnuBoardAdd_Click()
frmBoardAdd.Show
End Sub
Private Sub mnuCommPort_Click()
frmPortSetting.Show
End Sub
Private Sub mnuOption_Click()
frmOption.Show
End Sub
Private Sub Receive()
Dim Str(0 To BoardNumbers) As String
Dim i%
For i = 0 To BoardNumbers
If frmBoardAdd.chkBoard(i).Value = 1 Then
Str(i) = GetMessage(Board(i).Address, i)
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 111
If Str(i) "Timeout.Receive fail !" Then
Select Case i
Case 0
Text(i).Text = Val("&H" & Mid(Str(i), 2, 4))
txtCount.Text = Val("&H" & Mid(Str(i), 6, 2))
Case 1
Text(i).Font = "Myriad Roman"
Text(i).FontSize = 30
Text(i).Text = Val("&H" & Mid(Str(i), 2, 4))
txtHiduty.Text = Val("&H" & Mid(Str(i), 6, 2))
End Select
Else
Text(i).Font = "MS Sans Serif"
Text(i).FontSize = 9
Text(i).Text = Str(i)
End If
End If
Next i
End Sub
Private Sub Form_Load()
Load frmPortSetting
Load frmBoardAdd
Load frmOption
Tam = 0
cmdTang.Enabled = False
cmdGiam.Enabled = False
cmdStop.Enabled = False
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
MSComm1.CommPort = Port
MSComm1.Settings = "9600,N,8,1"
MSComm1.InputLen = 0
MSComm1.InBufferSize = 256
MSComm1.InputMode = comInputModeBinary
MSComm1.Handshaking = comNone
MSComm1.OutBufferSize = 256
MSComm1.EOFEnable = False
MSComm1.RThreshold = 0
MSComm1.SThreshold = 0
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 112
MSComm1.PortOpen = True
tmrTimeout.Enabled = False
End Sub
Private Sub tmrDelay_Timer()
Call Receive
End Sub
Private Sub tmrTimeout_Timer()
tmrTimeout.Enabled = False
Timeout = True
End Sub
Private Function GetMessage(Address As Byte, Index As Integer) As String
Dim NumberBytes As Integer
Dim BufOut As Variant
Dim BufIn As Variant
Dim TransmitData(1) As Byte
Dim ReceivedData() As Byte
Dim ReceivedStrg As String
Dim Again As Boolean
Dim Action
Dim Escape
Dim s%
Dim i%
Dim Dem%
Select Case Index
Case 0
Product = Val(txtSet.Text)
TransmitData(0) = Address Or Dkhien0 Or Product
Dkhien0 = 0
Case 1
If (Dkhien1 And 32) 0 Then
If Tam > 0 Then
Dkhien1 = 32 Or 16
ElseIf Tam <= 0 Then
Dkhien1 = 32 Or 0
End If
End If
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 113
TransmitData(0) = Address Or Dkhien1 Or Abs(Tam)
Tam = 0
Case Else
TransmitData(0) = Address
End Select
BufOut = TransmitData()
NumberBytes = (Val(frmOption.txtByteNo.Text) + 1) * 2 + 1
tmrTimeout.Interval = Val(frmOption.txtTimeout.Text)
tmrTimeout.Enabled = True
MSComm1.InBufferCount = 0 ' Xoa bo dem nhan
Dem = 0
Do
Again = False
Timeout = False
MSComm1.Output = BufOut
ReceivedStrg = ""
Do
DoEvents
Loop Until (MSComm1.InBufferCount >= NumberBytes) _
Or (Timeout = True)
If Timeout = False Then
s = MSComm1.InBufferCount
BufIn = MSComm1.Input
ReceivedData() = BufIn
If ReceivedData(0) = Address Then
For i = 0 To s - 1
ReceivedStrg = ReceivedStrg & Chr$(ReceivedData(i))
Next i
CheckSum = fncVerifyChecksum(ReceivedStrg) 'Kiem tra Checksum
If CheckSum = False Then
Again = True
End If
Else
Again = True
End If
Else
ReceivedStrg = "Timeout.Receive fail !"
End If
Loop Until Again = False Or Timeout = True
tmrTimeout.Enabled = False
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 114
GetMessage = ReceivedStrg
End Function
Form BoardAdd
Option Explicit
Private Sub cmdCancel_Click()
Hide
End Sub
Private Sub chkBoard_Click(Index As Integer)
If chkBoard(Index).Value = 1 Then
Text(Index).Enabled = True
Else
Text(Index).Enabled = False
End If
End Sub
Private Sub cmdOK_Click()
Dim Count As Byte
For Count = 0 To BoardNumbers
frmMain.Frame(Count).Enabled = False
frmMain.Text(Count) = ""
If chkBoard(Count).Value = 1 Then
Text(Count).Enabled = True
frmMain.Frame(Count).Enabled = True
Board(Count).Address = Val(Text(Count).Text)
Else
Text(Count).Enabled = False
frmMain.Frame(Count).Enabled = False
End If
Next Count
Hide
End Sub
Private Sub Form_Load()
chkBoard(0).Value = 1
Call cmdOK_Click
End Sub
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 115
Form Opttion
Private Sub cmdCancel_Click()
Call Form_Load
Hide
End Sub
Private Sub cmdOK_Click()
If optContinue.Value = True Then
frmMain.tmrDelay.Enabled = True
frmMain.tmrDelay.Interval = Val(txtInterval.Text)
frmMain.cmdTest.Enabled = False
Else
frmMain.tmrDelay.Enabled = False
frmMain.cmdTest.Enabled = True
End If
If chkHiduty.Value = 1 Then
frmMain.lblHiduty.Visible = True
frmMain.txtHiduty.Visible = True
frmMain.lblPercent.Visible = True
Else
frmMain.lblHiduty.Visible = False
frmMain.txtHiduty.Visible = False
frmMain.lblPercent.Visible = False
End If
If chkProSetting.Value = 1 Then
frmMain.cmdSeting.Enabled = True
frmMain.txtSet.Enabled = True
Else
frmMain.cmdSeting.Enabled = False
frmMain.txtSet.Enabled = False
End If
If chkClear.Value = 1 Then
frmMain.cmdClear.Enabled = True
Else
frmMain.cmdClear.Enabled = False
End If
Hide
End Sub
Private Sub Form_Load()
optSingle.Value = True
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 116
txtTimeout.Text = 500
txtByteNo.Text = 3
chkHiduty.Value = 0
chkProSetting.Value = 1
chkClear.Value = 1
Call cmdOK_Click
End Sub
Private Sub optContinue_Click()
txtInterval.Visible = True
lblInterval.Visible = True
End Sub
Private Sub optSingle_Click()
txtInterval.Visible = False
lblInterval.Visible = False
End Sub
Form Setting
Private Sub cmdCancel_Click()
Hide
End Sub
Private Sub cmdOK_Click()
If Option1.Value = True Then
Port = 1
ElseIf Option2.Value = True Then
Port = 2
End If
If frmMain.MSComm1.PortOpen = True Then
frmMain.MSComm1.PortOpen = False
End If
frmMain.MSComm1.CommPort = Port
frmMain.MSComm1.PortOpen = True
Hide
End Sub
Private Sub Form_Load()
Option2.Value = True
Call cmdOK_Click
End Sub
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 117
B. Chöông trình Vi xöû lyù
BOARD ÑO TOÁC ÑOÄ ÑOÄNG CÔ (68HC11E2).
STEE EQU $F800
STRAM EQU $0000
REGBAS EQU $1000
BAUD EQU $2B
SCCR1 EQU $2C
SCCR2 EQU $2D
SCSR EQU $2E
SCDR EQU $2F
TCNT EQU $0E
TIC1 EQU $10
TOC2 EQU $18
TCTL1 EQU $20
TCTL2 EQU $21
TMSK1 EQU $22
TFLG2 EQU $25
TFLG1 EQU $23
PORTB EQU $04
PORTC EQU $03
DDRC EQU $07
PORTD EQU $08
DDRD EQU $09
SPCR EQU $28
BYTNO EQU 3
SCI EQU $FFD6
IC1 EQU $FFEE
OC2 EQU $FFE6
RSET EQU $FFFE
ORG STRAM
MYADD RMB 1
RPM RMB 2
HIDUTY RMB 1
CHSUM RMB 1
ENABLE RMB 1
ONEPER RMB 1
TIMEHI RMB 2
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 118
TIMELO RMB 2
DKHIEN RMB 1
OLDTIC1 RMB 2
PP30MS1 RMB 1
PP30MS RMB 1
ROUNDS RMB 2
COUNT RMB 1
NGAN RMB 1
TRAM RMB 1
CHUC RMB 1
DONVI RMB 1
ORG $00FF
STACK RMB 1
ORG STEE
MAIN LDS #STACK
LDX #REGBAS
JSR INISCI
JSR INITIM
LDD #0
STD ROUNDS
STD RPM
STD PP30MS1
STAA NGAN
STAA TRAM
STAA CHUC
STAA DONVI
LDAA #$3F
STAA DDRC,X
JSR DSPLAY
CLR ENABLE
LDAB PORTC,X
ANDB #$C0
STAB MYADD
LSRB
LSRB
LSRB
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 119
LSRB
BSET PORTC,X,#%00000011
JSR XUAT
BCLR PORTC,X,#%00100000
LDAA #20
STAA ONEPER
LDAA #50
STAA HIDUTY
JSR SETPWM
JSR RELOAD
LDAA #10
STAA COUNT
CLI
MAIN1 JSR MOTOR
JSR PCOUNT
BRA MAIN1
MOTOR LDAA ENABLE
BEQ MOTOR2
ANDA #%00100000
BEQ MOTOR1
JSR CTRL
MOTOR1 STAA PORTC,X
LDY #RPM
JSR SEND
JSR DSPLAY
CLR ENABLE
MOTOR2 RTS
PCOUNT LDD TCNT,X
SUBD OLDTIC1
CPD #60000
BLO PCOUNT1
LDD ROUNDS
ADDD PP30MS1
STD ROUNDS
DEC COUNT
BNE PCOUNT2
LDD ROUNDS
ADDD ROUNDS
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 120
STD RPM
JSR CVERT
LDD #0
STD ROUNDS
LDAA #10
STAA COUNT
PCOUNT2 JSR RELOAD
PCOUNT1 RTS
CTRL PSHA
LDAA ENABLE
ANDA #$0F
STAA DKHIEN
LDAA ENABLE
BITA #%00010000
BEQ GIAM
LDAA HIDUTY
ADDA DKHIEN
BRA CTRL2
GIAM LDAA HIDUTY
SUBA DKHIEN
CTRL2 CMPA #0
BLE SET1
CMPA #100
BHS SET99
STAA HIDUTY
BRA CTRL3
SET1 LDAA #1
STAA HIDUTY
BRA CTRL3
SET99 LDAA #99
STAA HIDUTY
CTRL3 JSR SETPWM
PULA
RTS
INISCI LDAA #$30
STAA BAUD,X
LDAA #$0
STAA SCCR1,X
LDAA #$2C
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 121
STAA SCCR2,X
RTS
INITIM LDAA #%00010000
STAA TCTL2,X
LDAA #%11000000
STAA TCTL1,X
LDD #$0000
STD TOC2,X
LDAA #%01000100
STAA TFLG1,X
STAA TMSK1,X
RTS
SCISRT PSHA
LDAA SCSR,X
ANDA #$20
BEQ SCISRT
LDAA SCDR,X
ANDA #$C0
CMPA MYADD
BNE THOAT
LDAA SCDR,X
STAA ENABLE
THOAT BSET SCCR2,X,#%00000010
PULA
RTI
SEND PSHY
PSHB
PSHA
JSR DL1MS
LDAA MYADD
JSR OUTSCI
CLRB
CLR CHSUM
SEND1 LDAA 0,Y
PSHA
ADDA CHSUM
STAA CHSUM
PULA
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 122
JSR OUT1BYT
INY
INCB
CMPB #BYTNO
BNE SEND1
LDAA CHSUM
JSR OUT1BYT
PULA
PULB
PULY
RTS
OUTSCI PSHB
OUTSCI1 LDAB SCSR,X
BITB #$80
BEQ OUTSCI1
STAA SCDR,X
PULB
RTS
OUTRHLF LSRA
LSRA
LSRA
LSRA
OUTLHLF ANDA #$0F
ADDA #$30
CMPA #$39
BLE OUTA
ADDA #$07
OUTA JSR OUTSCI
RTS
OUT1BYT PSHB
PSHA
BSR OUTRHLF
PULA
BSR OUTLHLF
PULB
RTS
OC2SRT PSHX
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 123
PSHA
PSHB
LDX #REGBAS
BCLR TFLG1,X,#$BF
LDAA TCTL1,X
EORA #%01000000
STAA TCTL1,X
BRCLR TCTL1,X,#%01000000 ADDHI
LDD TIMELO
BRA UPOC2
ADDHI LDD TIMEHI
UPOC2 ADDD TCNT,X
STD TOC2,X
PULB
PULA
PULX
RTI
SETPWM PSHA
PSHB
LDAA HIDUTY
LDAB ONEPER
MUL
STD TIMEHI
LDAA ONEPER
LDAB #100
MUL
SUBD TIMEHI
STD TIMELO
PULB
PULA
RTS
IC1SRT PSHX
LDX #REGBAS
INC PP30MS
IC1SRT1 BCLR TFLG1,X,#$FB
PULX
RTI
RELOAD LDD TCNT,X
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 124
STD OLDTIC1
CLR PP30MS
RTS
CVERT PSHX
PSHB
PSHA
LDD RPM
LDX #1000
IDIV
XGDX
STAB NGAN
XGDX
LDX #100
IDIV
XGDX
STAB TRAM
XGDX
LDX #10
IDIV
STAB DONVI
XGDX
STAB CHUC
PULA
PULB
PULX
RTS
XUAT LDY #TABLE
ABY
LDAB 0,Y
STAB PORTB,X
BCLR PORTC,X,#%00001111
JSR DL1MS
RTS
DSPLAY PSHB
BSET PORTC,X,#%00001000
LDAB NGAN
JSR XUAT
BSET PORTC,X,#%00000100
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 125
LDAB TRAM
JSR XUAT
BSET PORTC,X,#%00000010
LDAB CHUC
JSR XUAT
BSET PORTC,X,#%00000001
LDAB DONVI
JSR XUAT
PULB
RTS
DL1MS PSHX
LDX #$014A
DL1MS1 DEX
BNE DL1MS1
PULX
RTS
TABLE FCB $C0
FCB $F9
FCB $A4
FCB $B0
FCB $99
FCB $92
FCB $82
FCB $F8
FCB $80
FCB $90
FCB $88
FCB $80
FCB $C6
ORG OC2
FDB OC2SRT
ORG IC1
FDB IC1SRT
ORG SCI
FDB SCISRT
ORG RSET
FDB MAIN
END
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 126
BOARD ÑEÁM SAÛN PHAÅM (68HC11E9)
STEE EQU $B600
STRAM EQU $0000
REGBAS EQU $1000
BAUD EQU $2B
SCCR1 EQU $2C
SCCR2 EQU $2D
SCSR EQU $2E
SCDR EQU $2F
TCNT EQU $0E
TIC1 EQU $10
TOC2 EQU $18
TCTL1 EQU $20
TCTL2 EQU $21
TMSK1 EQU $22
TFLG2 EQU $25
TFLG1 EQU $23
PORTB EQU $04
PORTC EQU $03
BYTNO EQU 9
ORG STRAM
MYADD RMB 1
PRO RMB 2
COUNT RMB 1
CHSUM RMB 1
BYTEIN RMB 1
DAT RMB 1
DEM RMB 1
BYTEOUT RMB BYTNO
ORG $00FF
STACK RMB 1
ORG STEE
MAI N LDS #STACK
LDX #REGBAS
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 127
JSR INISCI
JSR INITIM
LDAA #$7E
STAA $00C4
LDD #SCISRT
STD $00C5
LDAA #$7E
STAA $00E8
LDD #IC1SRT
STD $00E9
LDAB #$40
STAB MYADD
LSRB
LSRB
LSRB
LSRB
JSR DISPLAY
LDAB #9
STAB DAT
STAB COUNT
LDD #0
STD PRO
LDAA #0
STAA DEM
STAA BYTEIN
CLI
MAIN1 LDAA BYTEIN
BEQ MAIN1
ANDA #$3F
BEQ PHAT
BITA #%00100000
BNE XOA
JSR CTRL
BRA PHAT
XOA LDD #0
STD PRO
JSR CTRL1
PHAT JSR TINH
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 128
JSR DL1MS
BSET SCCR2,X,#%10000000
MAIN2 LDAA DEM
CMPA #BYTNO
BLO MAIN2
CLR DEM
BCLR SCCR2,X,#%10000000
CLR BYTEIN
BRA MAIN1
CTRL ANDA #$0F
BEQ CTRL2
STAA DAT
LDAA BYTEIN
BITA #%00010000
BEQ CTRL2
CTRL1 LDAB DAT
STAB COUNT
JSR DISPLAY
CTRL2 RTS
TINH PSHA
PSHB
LDAA MYADD
STAA BYTEOUT
CLR CHSUM
LDD PRO
STAA CHSUM
PSHA
JSR RHLF
STAA BYTEOUT+1
PULA
JSR LHLF
STAA BYTEOUT+2
TBA
ADDB CHSUM
STAB CHSUM
PSHA
JSR RHLF
STAA BYTEOUT+3
PULA
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 129
JSR LHLF
STAA BYTEOUT+4
LDAB COUNT
TBA
ADDB CHSUM
STAB CHSUM
PSHA
JSR RHLF
STAA BYTEOUT+5
PULA
JSR LHLF
STAA BYTEOUT+6
LDAA CHSUM
JSR RHLF
STAA BYTEOUT+7
LDAA CHSUM
JSR LHLF
STAA BYTEOUT+8
PULB
PULA
RTS
INISCI LDAA #$30
STAA BAUD,X
LDAA #$0
STAA SCCR1,X
LDAA #$2C
STAA SCCR2,X
RTS
INITIM LDAA #%00010000
STAA TCTL2,X
LDAA #%00000100
STAA TFLG1,X
STAA TMSK1,X
RTS
SCISRT PSHB
PSHX
LDX #REGBAS
BRSET SCSR,X,#%00100000 INSCI
LDAB SCSR,X
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 130
BITB #$80
BEQ SCISRT
LDAB DEM
PSHX
LDX #BYTEOUT
ABX
LDAB 0,X
PULX
STAB SCDR,X
INC DEM
PULX
PULB
RTI
INSCI LDAB SCSR,X
ANDB #$20
BEQ INSCI
LDAB SCDR,X
ANDB #$C0
CMPB MYADD
BNE INSCI1
LDAB SCDR,X
STAB BYTEIN
INSCI1 PULX
PULB
RTI
RHLF LSRA
LSRA
LSRA
LSRA
LHLF ANDA #$0F
ADDA #$30
CMPA #$39
BLE LHLF1
ADDA #$07
LHLF1 RTS
IC1SRT PSHX
PSHB
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 131
LDX PRO
INX
STX PRO
LDX #REGBAS
LDAB COUNT
DECB
BNE IC1SRT1
LDAB DAT
IC1SRT1 STAB COUNT
JSR DISPLAY
BCLR TFLG1,X,#$FB
PULB
PULX
RTI
DISPLAY PSHY
LDY #TABLE
ABY
LDAB 0,Y
STAB PORTB,X
PULY
RTS
DL1MS PSHX
LDX #$014A
DL1MS1 DEX
BNE DL1MS1
PULX
RTS
TABLE FCB $40 * 0
FCB $79 * 1
FCB $24 * 2
FCB $30 * 3
FCB $19 * 4
FCB $12 * 5
FCB $02 * 6
FCB $78 * 7
FCB $00 * 8
FCB $10 * 9
FCB $08 * A
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 132
FCB $00 * B
FCB $46 * C
END
Maïng giaùm saùt vaø ñieàu khieån GVHD : Ths. LEÂ TUAÁN ANH
SVTH : Nguyeãn Quoác Tuaán Trang 133
C. DATASHEETS
SN75176, LM555,MAX232
Các file đính kèm theo tài liệu này:
- Mạng giám sát và điều khiển_MC68HC11_RS485.pdf