Mạng giám sát và điều khiển_mc68hc11_rs485

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

pdf131 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2233 | Lượt tải: 0download
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:

  • pdfMạng giám sát và điều khiển_MC68HC11_RS485.pdf