Bàn phím thu thập số liệu bình gas dùng chuẩn RS-485

I.1 Sơ lược về PC và ứng dụng PC trong Điều Khiển Tự Động: Vào những năm 40 của thế kỷ XX, một sự kiện quan trọng trong lĩnh vực điện toán đã xảy ra đó là sự ra đời của chiếc máy tính chữ số chạy bằng điện đầu tiên ra đời và được biết đến dưới cái tên gọi “Aniac”. “Aniac” tổng cộng phải dùng đến 18000 chi tiết điện điện tử, ngoài ra còn có 1500 chi tiết điện và các loại linh kiện khác, tổng thể tích khoảng 90 m3 , năng 30 tấn, chiếm diện tích 170 m2 . Nếu đem so sánh với máy tính ngày nay thì nó là một cỗ máy khổng lồ. Cũng chính vì thế mà vào thời điểm đó người ta chưa thể thấy hết được tầm quan trọng của sự việc này. Nhưng đến tháng 12 năm 1981, khi IBM công bố về chiếc máy tính cá nhân đầu tiên của họ. Máy được thiết kế như là một máy tính để bàn vừa phải, dùng bộ vi xử lý Intel 8088. Model chuẩn dược bán với giá $3000. Máy gồm 64K RAM (bộ nhớ truy cập ngẫu nhiên) trên bản mạch chính, có thể mở rộng lên tới 256 K trên bản mạch hệ thống, và 40K ROM (bộ nhớ chỉ đọc). Phần lớn ROM này được thiết kế để lưu một chương trình hỗ trợ hệ thống được gọi làhệ thống nhập/xuất cơ bản, hay BIOS. Máy PC đầu tiên có một ổ đĩa mật độ kép một mặt. Các ổ đĩa được địng dạng có khả năng lưu trữ 180K dữ liệu. Phần mềm hệ điều hành ban đầu được cung cấp bởi hãng Microsoft Corporation. Và từ đó đến nay, trong một khoảng thời gian ngắn, máy tính – PC – đã trở thành một thiết bị quan trọng hàng đầu trong tất cả các lĩnh vực kinh tế, sản xuất, sinh hoạt và đặc biệt là trong các ngàng công nghiệp hiện đại. Trong lĩnh vực điều khiển tự động của chúng ta thì máy tính lại đặc biệt quan trọng hơn nữa. Nó hoặc trực tiếp hoặc gián tiếp là những “ông chủ”, hay những “giám sát viên” trong một dây truyền tự động hoặc một quy trình sản xuất. Nhưng để làm được những điều đó PC cần phải được lập trình trước hay nói cách khác là những người biết sử dụng nó. Một trong những yếu tố quan trọng hàng đẩu trong việc đưa PC vào các dây truyền tự động là ta phải “giao tiếp” được với nó. Có nghĩa là ta phải lập trình để cho PC có thể trao đổi dữ liệu với các thiết bị ngoại vi khác. Để từ đó ta mới có thề dùng PC để điều khiển các thiết bị ngoại vi đó. Các thiết bị ngoại vi ở đây có thể là một hay một mạng NuDam, vi xử lý(uP), PLC hay cũng có thể là một mạng các PC khác Có nhiều phương thức để giao tiếp máy tính vói các thiếi bị ghép nối bên ngoài, mỗi cách đều có những ưu, nhược điểm khác nhau. Tùy theo mục đích, điều kiện sử dụng mà người ta có thể sử dụng những phương cách khác nhau sao cho có hiệu qủa nhất. Sau đây là ba phương thức được sử dụng phổ biến .  Kết nối máy tính bằng cách sử dụng các card giao tiếp đuợc cắm trực tiếp lên các slot ở trên mainboard cùa máy tính. Có nhiều loại Bus khác nhau và mỗi loại Bus có những ưu điểm khác nhau, những loại bus đang được sử dụng phổ biến : ISA, PCIø, AGP, PC, MCA, EISA . Phương pháp này có ưu điểm nổi bật là có thể trao đổi dữ liệu với dung lượng lớn, tốc độ cao. Nhưng có nhược điểm là can thiệp nhiều vào phẩn cứng của PC dễ “nguy hiểm” linh kiện tương đố đắt tiền. Một nhược điểm nữa là khi hệ thống đang vận hành ta khó có thể can thiệp được vào phần cứng.  Kết nối máy tính thông qua cổng song song hay cổng máy in. Loại này cũng có ưu điểm là qúa trình giao tiếp trao đổi dữ liệu với tốc độ cao nếu so sánh với phương pháp truyền nối tiếp. Nhưng phương pháp này có một nhược điểm lớn là khả năng trống nhiễu rất thấp, không thể truyền đi xa đườc.  Kết nối máy tính thông qua cổng nối tiếp hay cổng COM. Loại này có nhược diểm là trao đổi dữ liệu với tốc độ không cao lắm. Nhưng lại có ưu điểm nổi bật là phương thức giao tiếp đơn giản dễ sử dụng. Linh kiện lắp đặt rất phải chăng và rất dễ mua. Không can thiệp nhiều vào phần cứng của máy tính có thể tháo lắp dễ dàng khi hệ thống đang hoạt động. Khả năng chốn gnhiễu so với phuơng thức truyền song song là cao hơn nhiều. Phương thức này cũng có thể truyền đi tương đối xa. Trong ba phương thức trên, phương thức giao tiếp máy tính qua cổng nối tiếp hiện đang đáp ứng được yêu cầu của lĩnh vực điều khiển tự động. Đó là sự đòi hỏi phải chính xác, được đặt hàng đầu, đơn giản trong lĩnh vực vận hành. I.2 Chuẩn RS-485 và đề tài được giao:  Trong việc giao tiếp nối tiếp hay còn gọi là truyền thông nối tiếp cũng có nhiều phương cách khác nhau. Được sử dụng rộng rãi nhất hiện nay là các chuẩn giao tiếp của EIA(Electronics Industries Association) được gọi tắt dưới các tên RS-232,RS-422,RS-423,RS-485 Trong đó chuẩn RS-485 có nhiều ưu điểm : - Chuẩn RS-485 được phát triển dành cho hệ thống multi-droped, nó có thể giao tiếp ở một tốc độ cao ở một khoảng cách dài. Chuẩn RS-485 có thể hoạt động ở một tốc độ lên đến 10Mbps trên một chiều dài cable là 1.200m (4000feet). - RS-485 có thể hỗ trợ đến 32 bộ điều khiển và bộ nhận trên cùng một đường truyền. Điều này cho phép dùng các ứng dụng mạng trên cùng hệ thống ngang nhau (multi-drop) .  Chính nhờ những ưu điểm đó, RS-485 đã được sử dụng rộng rãi trong nhiều dây truyền tự động khác nhau. RS-485 cũng là đề tài chính được nghiên cứu trong luận văn của em. Như đã đề cập trên, RS-485 không còn xa lạ với tất cả những người thuộc lĩnh vực “Điều Khiển Tự Động”. Nhưng với những ưu điểm vượt trội của nó thì đây cũng là đề tài không bao giờ cũ. Có thể nói đây cũng là một trong những hành trang cần thiết cho mỗi kỹ sư nghành Tự Động khi ra trường . Chính vì thế em đã trọn RS-485 làm chủ đề chính cho luận văn của mình. Việc ứng dụng giao tiêp giữa máy tính với kit vi xử lý dùng chuẩn RS-485 để làm một công việc minh họa cũng muôn hình muôn vẻ. Có rất nhiều đề tài của các anh chị đi trước đã làm, nếu làm lại không tránh khỏi sự trùng lặp, nghiên cứu đề tài mới với thờ gian cho phép không dài của là việc mạo hiểm . Việc ứng dụng làm một bàn phím đa năng của em về mặt lý thuyết không có gì mới. Nhưng với 40 phím minh họa, trong đó có nhiều phím trức năng đặc biệt để giao tiếp độc lập với máy tính thì vấn đề về thực hành là rất quan trọng. Để hoàn thành tốt được công việc thì cần phải sử dụng thành thạo lập trình dưới vi xử lý và một ngôn ngữ lập trình trên máy tính để từ đó kết hợp thật tốt giũa máy tính với kit vi xử lý thông qua RS-485. II Công Việc Được Giao: Do điều kiện sản xuất của xương thử bình gas ẩm ướt, ồn độ rung động lớn không thể để máy tính quản lý dữ liệu tại xưởng được lên công ty Sài Gòn Petro cần một hệ thống quản lý số liệu sơn, thử bình ga. Hệ thống bao gồm : _Bàn phím:Bao gồm ba bàn phím dùng để truy xuất số liệu bình ga(số sêri, tải trọng, hãng sản xuất ) đặt tại phân xưởng làm việc được kết nối với máy tính. _Máy tính đặt tại văn phòng quản lý số liệu cách phân xưởng quản lý khoảng 100 m. Máy tính có nhiệm vụ thống kê và tạo 01 biểu mẫu dạng như “lý lịch bình ga”. Thống kê và đưa ra bảng biểu bất kỳ một thông số quản lý nào khi được yêu cầu. Kiểm tra và cảnh báo khi có những thông số bất thường khi được lập trình sẵn III Chi tiết kỹ thuật của thiết bị : Bàn phím có số lượng tối đa khoảng 45 phím, bộ chỉ thị hiển thị led có 2 led matrận dùng để hiển thị thông số nhập, 8 led dơn dùng để hiển thị số liệu của thông số nhập Các số liệu trên bảng kiểm tra và thử bình ga gồm có các thông số: ã Nhóm thông số của bình ga: Ngày tháng thử, sở hữu chủ, dung tiùch thử lần thứ, số sêri, năm sản xuất, noi sản xuất, khối lượng bì, chiều dày. ã Nhóm kiểm tra tình trạng của bình đạt,không đạt: cổ, khối lượng, cắt đục đào lõm, phình ra , ăn mòn, chiều dày , rò rỉ, cháy. ã Nhóm tình trạng kiểm định và loại bình : Đến hạn kiểm định, chưa đến hạn kiểm định chỉ yêu cầu sơn , loại 12kg loại 50 kg. IV Mô tả hoạt động của hệ thống ã Nhập nhóm Thông Số của Bình Gas : - Nhấn phím ngày tháng thử: Nhấn phím Date, trên 2 số đầu sẽ hiện chữA Nhập ngày tháng vào sẽ hiện liên tục 6 số theo thứ tự ngày tháng năm: 14 08 01. - Khi đang phập sai số, dùng CE để xóa số nhập. - Phím CHECK dùng để xem toàn bộ lý lịch bình hiện hữu từng dòng một, nhấn CHECK sau đó nhấn thêm phím thông số nào thì giá trị tương ứng của thông số đó sẽ được hiện lên. Nhấn CHECK lần nữa sẽ thoát khỏi tình trạng kiểm định. - Nhấn phím ENTER các giá trị sẽ được truyền về máy tính. - Nhấn phím RESET sẽ trở lại trạng thái sẵn sàng nhập giá trị mới. ã Nhập nhóm Tình Trạng Kiểm Định : - Nhấn phím rò rỉ LE [leak] trên chỉ thị hiện LE - Nhấn OK là đạt (hiện số 1) - Nhấn NOTOK là không đạt (hiện số 0) - Các thông số khác nhập tương tự. ã Tính chất của chỉ thị: - Khi nhập số liệu sẽ đẩy dần từ phải sang trái, khi phập sai nhấn phím CE để nhập lại. - Đèn báo hiệu sẵn sàng nhập. - Đèn báo lỗi đường truyền - V Giải quyết công việc: Tuy thực tế công việc đòi hỏi phải có ba bàn phím nhưng ba bàn phím này về mặt kỹ thuật hoàn toàn giống nhau lên em chỉ làm một bàn phím mang tính chất mô phỏng , một lý do nữa là làm 3 bàn phím rất tốn kém.

doc29 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2910 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bàn phím thu thập số liệu bình gas dùng chuẩn RS-485, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
CHÖÔNG II: Truyeàn Thoâng Qua Coång Noái Tieáp Vaøi neùt veà nguoàn goác : Sau moät thôøi gian löu haønh khoâng chính thöùc, ñeán naêm 1962, Hieäp hoäi caùc Nhaø Coâng nghieäp Ñieän Töû (EIA: The Electronics Industries Association) ñaõ ban haønh tieâu chuaån RS-232 aùp duïng cho coång noái tieáp. Caùc chöõ RS vieát taét töø Recommended Standard(Tieâu chuaån ñaõ giôùi thieäu) Coù 2 phieân baûn RS-232 ñöôïc löu haønh trong thôøi gian töông ñoái daøi laø RS-232B va RS-232C. Cho ñeán nay chæ coøn RS-232C coøn toàn taïi maø chuùng ta quen goïi laø RS-232. Ngaøy nay, haàu heát caùc maùy tính ñeàu trang bò moät hoaëc hai coång noái tieáp RS-232, vaø taát caû ñeàu coù khaû naêng söû duïng RS-232, ít nhaát laø nhö moät khaû naêng tuøy choïn töø nhaø saûn xuaát maùy tính hoaëc töø phía ngöôøi söû duïng maùy tính. Töø chuaån RS-232 ban ñaàu ñoù cho ñeán nay EIA ñaê phaùt haønh theâm nhieàu chuaån truyeàn thoâng khaùc mang hoï RS nhö RS-422, RS-423, RS-485, caùc giao dieän naøy ñeàu coù nhöõng öu nhöôïc khaùc nhau maø tuøy theo ñieàu kieän saûn xuaát maø coù nhöõng aùp duïng khaùc nhau. Do ñoù taát caû caùc chuaån naøy vaãn toàn taïi song song. II Ñaëc tính giöõa caùc chuaån RS-232C, RS-422, RS-423, RS-485 : 1. Baûng thoâng soá: Thoâng soá RS-232 RS-422 RS-423 RS-485 Cable Length(max) 15m (50ft) 1.2km (4000ft) 1.2km (4000ft) 1.2km (4000ft) Baud Rate (toác ñoä baud) 20Kbps/15m 10Mbps/12m 1Mbps/120m 100Kbps/1.2m 100Kbps/9m 10Kbps/90m 1Kbps/1.2m 10Mbps/12m 1Mbps/120m 100Kbps/1.2km Mode Unbalanced Balance Differential Unbalanced Differential Balance Differential Driver No. 1 1 1 32 Receiver No. 1 10 10 32 Logic 0 +5"+15 +2"+5 +3.6"+6 +1.5"+5 Logic 1 -5"-15 -2"-5 -3.6"-6 -1.5"-5 Communiy 2V 1.8V 3.4V 1.3V Cable/Signal (Caùp /tín hieäu) 1 2 2 2 Methode (Phöông thöùc) Simplex Half-Duplex Full- Duplex Simplex Half-Duplex Full- Duplex Simplex Half-Duplex Full- Duplex Simplex Half-Duplex Full- Duplex Short circuit Current 500mA 150mA 150mA 150mA Chuaån RS-232C : Laø chuaån cuûa EIA ( Electronics Industries Association ) nhaèm ñònh nghóa giao ñieän vaät lyù giöõa DTE ( Data terminal Equipment : thieát bò ñaàu cuoái döõ lieäu ) vaø DCE ( Data Communications Equipment : thieát bò cuoái keânh döõ lieäu ) (ví duï giöõa 1 maùy tính vaø moät modem). Chuaån naøy söû duïng ñaàu noái 25 chaân, tuy nhieân chæ coù 1 soá ít chaân laø caàn thieát cho vieäc lieân keát. Veà phöông dieän ñieän, chuaån naøy quy ñònh möùc logic 1 vaø möùc logic 0 töông öùng vôùi caùc möùc ñieän aùp nhoû hôn –3V vaø lôùn hôn +3V. Toác ñoä ñöôøng truyeàn khoâng vöôït quaù 20Kb/saûn phaåm vôùi khoaûng caùch döôùi 15m. Chuaån RS-232 coù theå chaáp nhaän phöông thöùc truyeàn song coâng (full-duplex). Moät trong nhöõng yeâu caàu quan troïng cuûa RS-232 laø thôøi gian chuyeån töø möùc logic naøy sang möùc logic khaùc khoâng vöôït quaù 4% thôøi gian toàn taïi cuûa 1 bit. Giaû söû vôùi toác ñoä truyeàn 19200 baud thì thôøi gian chuyeån möùc logíc phaûi nhoû hôn 0.04/19200=2.1µs,ñieàu naøy laøm giôùi haïn chieàu daøi ñöôøng truyeàn .Vôùi toác ñoä 19200 baud ta coù truyeàn toái ña 50ft (Gaàn baèng 15.24m). 1 1 0 1 0 0 1 1 Start bit Stop bit D0 D1 D2 D3 D4 D5 D6 D7 +12V -12V Moät trong nhöõng vaán ñeà caàn löu yù khi söû duïng RS-232 laø maïch thu phaùt khoâng caân baèng ( ñôn cöïc, töùc laø ñieän aùp vaøo so vôùi ñaát ). Chuaån RS-489 vaø RS-423A : Vaøo naêm 1978-1979, EIA ñöa ra 2 chuaån giao tieáp môùi ñeå khaéc phuïc caùc nhöôït ñieåm treân cuûa RS-232 laø RS-444 ( caân baèng ) vaø RS-423 (khoâng caân baèng). Söï choïn löïa giöõa truyeàn caân baèng vaø khoâng caân baèng ñöôïc quyeát ñònh bôûi toác ñoä truyeàn tín hieäu. Khi toác ñoä truyeàn vöôït quaù 20Kbps thì haàu heát caùc maïch söû duïng truyeàn caân baèng, ngöôïc laïi ta söû duïng truyeàn khoâng caân baèng. Vôùi chuaån RS-449, toác ñoä truyeàn coù theå treân 20Kbps. Vôùi chuaån RS-423, toác ñoä truyeàn coù theå leân tôùi 100Kbps vaø khoaûng caùch truyeàn leân ñeán 1km. Tieâu chuaån naøy söû duïng caùc IC kích phaùt, thu MC3488 vaø MC3486. Chuaån RS-422A : Moät caûi tieán nöõa cuûa chuaån RS-232 laø chuaån RA-422A. Vôùi chuaån naøy ñoä lôïi ñöôïc gia taêng vaø söû duïng vieäc truyeàn tín hieäu sai bieät ( Differential data ) treân nhöõng ñöôøng truyeàn caân baèng. Moät döõ lieäu sai bieät yeâu caàu hai daây, moät cho döõ lieäu khoâng ñaûo (noninverted ), moät cho döõ lieäu ñaûo( inverted ). Döõ lieäu ñöôïc truyeàn treân ñöôøng daây caân baèng, thöôøng laø caëp daây xoaén vôùi moät ñieän trôû ôû ñaàu cuoái. Moät IC laùi ( Driver ) bieán ñoåi caùc möùc logic thoâng thöôøng thaønh moät caëp tín hieäu sai bieät ñeå truyeàn. Moät boä phaän bieán ñoåi tín hieäu sai bieät ngöôïc laïi thaønh caùc möùc logíc. Döõ lieäu nhaän laø phaàn khaùc nhau giöõa tín hieäu khoâng ñaûo ( A ) vaø tín hieäu ñaûo ( ). Chuù yù raèng khoâng caàn noái ñaát giöõa thieát bò thu vaø thieát bò phaùt. Caùc IC laùi RS-422A haàu heát hoaït ñoäng vôùi ñieän aùp nguoàn +5V nhö caùc chip logic. Vôùi chuaån naøy toác ñoä truyeàn, khoaûng caùch truyeàn ñöôïc caûi thieän raát nhieàu. Chuaån RS-485 : Giao tieáp EIA RS_485 döïa treân chuaån RS-422A , noù laø moät caûi tieán cuûa chuaån naøy. Ñaëc tính ñieän cuûa noù gioáng nhö RS_422A . RS-485 laø chuaån truyeàn vi sai, söû duïng hai daây caân baèng, coù theå ñaït toác ñoä 10Mbps vaø chieàu daøi truyeàn thoâng coù theå leân tôùi 4000 feet (khoaûng 1.2km). Ñieän aùp vi sai ngoõ ra khoaûng +1.5 ñeán +5V neáu laø logic “0” va töø –3V ñeán –1.5V cho möùc logic “1”. Moät söï khaùc bieät quan troïng cuûa RS-485 laø noù cung caáp ñeán 32 drivers. Vaø 32 reicever treân cuøng 1 ñöôøng truyeàn. Ñieàu naøy cho pheùp taïo ra moät maïng cuïc boä. Ñeå coù khaû naêng nhö vaäy thì ngoõ ra cuûa driver RS-485 laø ngoõ ra traïng thaùi. Noù coù theå ôû möùc toång trôû cao ñeå bus khoâng bò chaäp khi coù moät driver truyeàn. Card giao tieáp RS_485 vôùi PC ñöôïc cheá taïo saún vaø söû duïng keát noái DB9 nhö chuaån RS-422A. Treân car coù 1 tín hieäu ñieàu khieån ñeå treo ngoõ ra cuûa driver leân möùc toång trôû cao khi noù nhöôøng ñöôøng truyeàn cho 1 driver khaùc. Thoâng thöôøng ngöôøi ta duøng tín hieäu DTR ñeå laøm vieäc naøy khi ñöôøng tín DTR khoâng ñöôïc duøng ñeå giao tieáp beân ngoaøi. Ñoàng thôøi moät giao thöùc meàm ñöïôc söû duïng ñeå xaùc ñònh ñòa chæ moät driver ñöôïc pheùp truyeàn taïi moät thôøi ñieåm, caùc driver ôû traïng thaùi toång trôû cao. Chuaån RS-485 thöôøng ñöôïc duøng trong maïng coù quan heä Master-Slave. Chæ coù duy nhaát moät traïm laø Master ( boä ñieàu khieån maïng ), coøn nhöõng traïm khaùc laø caùc Slave. Master ñöôïc tryuyeàn baát cöù luùc naøo, noù seõ chæ ñònh moät Slave baát kyø giao tieáp vôùi noù taïi moät thôøi ñieåm. Slave chæ coù theå truyeàn khi nhaän moät leänh thích hôïp töø Master. Moãi Slaver coù moät ñòa chæ treân ñöôøng truyeàn vaø seõ khoâng ñöôïc pheùp truyeàn neáu khoâng ñöôïc Master yeâu caàu. III. Caùc phöông phaùp truyeàn thoâng : 1. Ñôn coâng :( Simplex Communication ) truyeàn thoâng moät chieàu, döõ lieäu chæ coù theå truyeàn theo moät chieàu töø maùy tính tôùi thieát bò ngoaïi vi maø khoâng coù chieàu ngöôïc laïi. â Khoái döõ lieäu Maùy tính Ngoaïi vi 2. Baùn song coâng: ( Full-duplex Communication ) thoâng tin ñöôïc truyeàn theo hai böôùc. Böôùc 1 thoâng tin ñöôïc truyeàn töø maùy tính ñeán ngoaïi vi. Böôùc hai nhaän döõ lieäu töø ngoaïi vi ñeán maùy tính. Cho pheùp truyeàn hai chieàu. Böôùc 1-phaùt â CRC Khoái döõ lieäu ACK/NAK á Maùy tính Böôùc 2-thu Ngoaïi vi 3. Song coâng : (Full-duplex Communication ) phaùt thu ñoàng thôøi. Ñeå thöïc hieän vieäc thoâng tin caàn coù caùc nghi thöùc ñieàu khieån : ACK ( Acknowledge ) tín hieäu baùo xaùc nhaän, maùy thu xaùc nhaän döõ lieäu ñöôïc truyeàn. NAK ( Not Acknowledge ) maùy thu gôûi tín hieäu khoâng xaùc nhaän neáu döõ lieäu sai. CRC ( Cyclic Redundence Check ) kieåm tra dö thöøa chu kyø. Söû duïng caùc thoâng tin thöøa ñeå phaùt hieän vaø söûa loãi. Ví duï duøng ba phaàn töû cuøng thöïc hieän moät chöùc naêng, neáu ñaàu ra cuûa moät phaàn töû khaùc ñaàu ra cuûa hai phaàn töø coøn laïi thì phaùt hieän sai vaø phaûi loaïi boû. RCR Khoái Ack CRC Khoái döõ lieäu Khoái döõ lieäu RCR Khoái Ack CRC Phaùt vaø thu â á Maùy tính Ngoaïi vi Truyeàn thoâng tuaàn töï : Haàu heát caùc maùy tính löu tröõ vaø thao taùc vaø löu tröõ döõ lieäu theo kieåu song song. Nghóa laø khi gôûi 1 byte töø boä phaän naøy tôùi boä phaän khaùc cuûa maùy tính, khoâng phaûi truyeàn tuaàn töï töøng bít maø truyeàn ñoàng thôøi nhieàu bít treân cuøng caùc maïch daây song song. Soá caùc bit gôûi ñi cuøng moät luùc thay ñoåi tuyø theo moãi loaïi maùy tính khaùc nhau nhöng thöôøng laø 8 hoaëc boäi cuûa 8. Vì theá maùy tính laøm vieäc thöôøng nhieàu byte cuøng luùc, ít nhaát laø moät byte. Nhöng truyeàn thoâng töø maùy tính ñeán moät maùy tính khaùc hay thieát bò ngoaïi vi thì ñöôïc laøm tuaàn töï, döõ lieäu ñöôïc gôûi töøng bit. Boä giao tieáp tuaàn töï nhaän nhöõng byte treân nhöõng maïch daây song song vaø gôûi caùc bít ñi moät caùch rieâng bieät. Döõ lieäu treân ñöôøng truyeàn chæ ôû traïng thaùi ñieän theá döông( MARK ) hoaëc ñieän theá aâm ( SPACE ). Baát kyø döõ lieäu ñöôïc truyeàn naøo, tröôùc tieân phaûi chuyeån thaønh 1 daõy thöù töï caùc MARK vaø SPACE, MARK töông öùng vôùi logic 1, SPACE töông öùng vôùi logic 0. Coù hai hình thöùc truyeàn thoâng tuaàn töï Truyeàn thoâng baát ñoàng boä : ( Asynchronous Communication ) Kyù töï ñöôïc truyeàn theo caùc Frame, moãi frame goàm caùc start bit, caùc bít döõ lieäu cuûa kyù töï ñöôïc truyeàn, parity bit ( ñeå kieåm tra loãi ñöôøng truyeàn), stop bit. Xöû lyù truyeàn vaø nhaän döõ lieäu theo phöông thöùc naøy söû duïng caùc vi maïch thu phaùt khoâng ñoàng boä vaïn naêng UART ( Universal Asynchronous Receiver Transmitter ). Nhöôït ñieåm cuûa phöông phaùp naøy laø toác ñoä truyeàn khaù chaäm vì phaûi truyeàn theâm caùc bit start , bit stop, parity. Muoán loaïi boû caùc bit naøy ñeå naâng cao soá bit döõ lieäu ñöôïc truyeàn, ngöôøi ta söû duïng phöông thöùc truyeàn döõ lieäu ñoàng boä (Synchronous ). Chieàu cuûa doøng döõ lieäu Luoân ôû möùc thaáp Luoân ôû möùc cao Start D0 D1 D2 D3 D4 D5 D6 D7 Parity Stop Stop Traïng thaùi noåi Hình veõ treân minh hoïa giao thöùc truyeàn döõ lieäu khoâng ñoàng boä ( Asynchronouns Transmission Protocol). Neáu keânh truyeàn khoâng coù kyù töï naøo ñöôïc truyeàn , noù seõ ôû möùc cao. Khi coù kyù töï ñöôïc truyeàn, keânh truyeàn seõ ñöôïc haï xuoáng möùc thaáp ( Start bit ) ñeå baùo cho phía thu laø coù 1 kyù töï ñöôïc truyeàn tôùi, tieáp ñoù laø caùc bít cuûa kyù töï ( coù theå laø 5,6 ,7 hay 8 bit – trong ví duï treân laø 8 bit ) Ñeå kieåm tra loãi ñöôøng truyeàn ngöôøi ta söû duïng bít chaún leû ( parity bit ), töùc laø kieåm tra chaún leû soá bit 1. Neáu kieåm tra chaún, nghóa laø toång soá bit 1 trong kyù töï ( töø D0 " D7 ) vaø bít chaún leû phaûi chaún. Ngöôïc laïi neáu kieåm tra soá bit 1 trong kyù töï laø leû thì bit chaún leû phaûi leû. Bit stop ñöôïc söû duïng ñeå baùo cho phía thu bieát raèng vieäc truyeàn kyù töï ñaõ keát thuùc. Soá bit stop thöôøng ñöôïc duøng laø 1, 1.5, 2 bit. Nhö vaäy trong phöông phaùp truyeàn baát ñoàng boä, caùc bit döõ lieäu seõ ñöôïc ñoùng khung cuøng vôùi caùc bit start, stop, vaø bit parity taïo thaønh 1 Frame. Truyeàn thoâng ñoàng boä : ( Synchronous communications ) Phöông thöùc truyeàn naøy khoâng duøng caùc bít start, stop ñeå ñoùng khung moãi kyù töï maø cheøn caùc kyù töï ñaëc bieät nhö SYN ( Synchronization ), EOT ( End of Transmission ) hoaëc 1 côø giöõa caùc döõ lieäu cuûa ngöôøi söû duïng ñeå baùo hieäu cho ngöôøi nhaän döõ lieäu bieát raèng döõ lieäu ñaõ hoaëc ñang ñeán. Truyeàn thoâng ñoàng boä thöôøng ñöôïc tieán haønh vôùi toác ñoä 4800bps, 9600bps hoaëc thaäm chí coøn cao hôn. Trong phöông phaùp naøy, moät khi ñaõ ñoàng boä, caùc Modem vaãn tieáp tuïc gôûi kyù töï ñeå duy trì ñoàng boä, ngay caû luùc khoâng phaùt döõ lieäu. Moät kyù töï ‘IDLE’ ñöôïc gôûi ñi khi khoâng coù döõ lieäu phaùt. Phöông phaùp truyeàn ñoàng boä khaùc phöông phaùp truyeàn baát ñoàng boä ôû khoaûng thôøi gian truyeàn giöõa hai kyù töï luoân gioáng nhau. Truyeàn ñoàng boä ñoøi hoûi caùc xung clock trong maùy thu vaø phaùt phaûi duy trì ñoàng boä nhöõng khoaûng thôøi gian daøi. Trong phöông phaùp truyeàn ñoàng boä caùc kyù töï truyeàn seõ ñöôïc keøm theo moät kyù töï ñoàng boä SYN (maõ ASCII laø 22 ). Xöû lyù truyeàn vaø nhaän laø caùc vi maïch USART ( Universal Synchronous Asynchronous Receiver Transmitter ), vi maïch naøy cho pheùp hoaït ñoäng trong caû hai cheá ñoä truyeàn. SOH Header SXT Text EXT BCC Thoâng tin ñieàu khieån döõ lieäu SOH (Start of header ) : Phaàn baét ñaàu cuûa 1 ñôn vò thoâng tin chuaån. SXT ( Start of text ) : Chæ söï keát thuùc cuûa header vaø baét ñaàu phaàn döõ lieäu. EXT (End of text ): kyù töï keát thuùc phaàn döõ lieäu hay vaên baûn. BCC ( Block check character ) : kyù töï kieåm tra khoái. TEXT : thaân döõ lieäu hay vaên baûn. HEADER : phaàn ñaàu. CHÖÔNG III: Vi maïch UART ( Universal Asynchronous Receiver ) 8250A, 16450. I. Ñòa chæ Port vaø IRQ’s: 1. Baûng ñòa chæ PORT tieâu chuaån : trình baøy ôû döôùi : Teân Ñòa chæ IRQ COM 1 3F8H 4 COM 2 2F8H 3 COM 3 3E8H 4 COM4 2E8H 3 ÔÛ treân laø baûng ñòa chæ chuaån. Neáu coù vaán ñeà veà thu phaùt khi söû ñòa chæ caùc coång Com treân chuùng ta coù theå xem töø vuøng heä thoáng BIOS . 2. Baûng ñòa chæ coång Com trong vuøng döõ lieäu BIOS : trình baøy ôû döôùi. Ñòa chæ Chöùc naêng 0000:0400 Ñòa chæ neàn cuûa Com 1 0000:0402 Ñòa chæ neàn cua Com 2 0000:0404 Ñòa chæ neàn cua Com 3 0000:0406 Ñòa chæ neàn cua Com 4 Baûng treân trình baøy cuûa coång Com maø chuùng ta coù theå tìm thaáy trong vuøng döõ lieäu BIOS cuûa PC. Moãi ñòa chæ goàm hai Byte. II. Toång quan : Vi maïch 8250A ( hoaëc 16450 ) cuûa Intel laø moät UART ñöôïc duøng raát roäng raõi trong caùc PC. UART 8250A coù caùc chöùc naêng chính nhö sau: Bieán ñoåi döõ lieäu song song töø CPU thaønh daïng noái tieáp ñeå truyeàn ñi, ñoàng thôøi thu doøng döõ lieäu noái tieáp vaø ñoåi chuùng thaønh caùc kyù töï song song. Sau ñoù gôûi ñeán vi xöû lyù (µp). Theâm caùc bit Start, stop, parity vaøo töøng kyù töï tröôùc khi phaùt ñi vaø taùch caùc bit naøy ra khoûi kyù töï nhaän ñöôïc. Baûo ñaõm caùc bit kyø töï truyeàn ñi vôùi toác ñoä ñöôïc laäp trình tröôùc, kieåm tra ñeå phaùt hieän loãi töông öùng : loãi kyù töï, loãi parity. Set tín hieäu baét tay phaàn cöùng thích hôïp vaø cho bieát traïng thaùi cuûa tín hieäu. 1. Caùc thanh ghi cuûa UART : Caùc thanh ghi ñieàu khieån chính (Control Register : CR ) nhaän ñöôïc leänh töø CPU. Thanh ghi ñieàu khieån ñöôøng truyeàn ( Line Control Register : LCR ): duøng ñeå ñaët caùc thoâng soá truyeàn . Thanh ghi ñieàu khieån Modem ( Mode Control Register : MCR ) : ñieàu khieån tín hieäu baét tay gôûi töø UART. Thanh ghi cho pheùp ngaét ( Interrupt Enable Register : IER ) : Thanh ghi traïng thaùi ( Status Register : SR ) : thoâng baùo cho CPU bieát hoaït ñoäng cuûa UART. Thanh ghi traïng thaùi ñöôøng truyeàn ( Line Status Register : LSR ) : chöùa thoâng tin veà truy xuaát döõ lieäu. Thanh ghi traïng thaùi Modem ( Modem Status Register : MSR ) : chöùa thoâng tin veà traïng thaùi cuûa nhöõng ñöôøng baét tay. Thanh ghi ñònh danh ngaét ( Interrupt Identification Register : IIR ) : chöùa thoâng tin veà traïng thaùi hieän taïi cuûa ngaét gôûi ñeán. Thanh ghi ñeäm ( Buffer Register : BR ) : phuïc vuï cho vieäc trao ñoåi döõ lieäu. Thanh ghi giöõ phaùt ( Transmitter Holding Register : THR ) : giöõ döõ lieäu keá tieáp tröôùc khi phaùt ñi. Thanh ghi ñeäm thu ( Receiver Buffer Register : RBR ) : giöõ kí töï thu ñöôïc sau cuøng. ÔÛ baûng döôùi ñòa chæ neàn coù theå laø ( 2F8H, 3F8H, 2E8H, 3E8H ) tuyø theo caùch choïn cuûa ngöôøi laäp trình. Ñòa chæ neàn DLAB A2 A1 A0 Choïn ra +0 0 0 0 0 Thanh ghi ñeäm thu (RBR ), thanh ghi giöõ phaùt (THR) +1 0 0 0 1 Thanh ghi cho pheùp taïo yeâu caàu ngaét (IER). +0 1 0 0 0 Thanh ghi cho soá chia phaàn thaáp (LSB). +1 1 0 0 1 Thanh ghi cho soá chia phaàn cao (MSB). +2 X 0 1 0 Thanh ghi nhaän daïng nguoàn goác yeâu caàu ngaét(IIR). +3 X 0 1 1 Thanh ghi ñieàu khieån ñöôøng daây (LCR ). +4 X 1 0 0 Thanh ghi ñieàu khieån Modem (MCR ). +5 X 1 0 1 Thanh ghi traïng thaùi ñöôøng daây(LSR ). +6 X 1 1 0 Thanh ghi traïng thaùi Modem ( MSR ). +7 0 1 1 1 Thanh ghi nhaùp (daønh cho CPU, ít khi söû duïng ). Trong baûng treân baïn phaûi chuù yù coät DLAB . Khi DLAB ñaët leân ‘0’ hoaëc’1’ thì moät vaøi thanh ghi seõ thay ñoåi. Coù theå thaáy nhö theá naøy, UART cho pheùp 12 thanh ghi, trong khi ñoù chæ coù 8 port ñòa chæ. DLAB duøng truy caäp bit choát chia, khi DLAB ñaët leân’1’ trong thanh ghi ñieàu khieån ñöôøng truyeàn (bit thöù 7 cuøa thanh ghi naøy), thì hai thanh ghi trôû neân coù giaù trò ( Divisor Latch Low Byte : ‘Reg+0’, Divisor Latch High Byte : ‘Reg +1’ ), sau ñoù chuùng ta duøng hai thanh ghi naøy duøng cho vieäc ñaët toác ñoä truyeàn thoâng. Ví duï nhö sau : Toác ñoä ( Baud ) Divisor Byte choát chia cao(DLHB) Byte choát chia thaáp(DLLB) 50 2304 09H 00H 300 384 01H 80H 600 192 00H C0H 2400 48 00H 30H 4800 24 00H 18H 9600 12 00H 0CH 19200 6 00H 06H 38400 3 00H 03H 57600 2 00H 02H 115200 1 00H 01H 3. Vi maïch 8250A ñöôïc theå hieän treân hình veõ ôû döôùi: Vi maïch 8250A coù 3 tín hieäu choïn chip ñeå taïo ñieàu kieän thuaän lôïi cho ngöôøi söû duïng trong vieäc giaûi maõ ñòa chæ cô baûn. Caùc chaân ñòa chæ cô baûn A1, A2, A0, giuùp ta choïn caùc thanh ghi beân trong cuûa UART ( xem baûng ôû döôùi) Master Ñeäm bus döõ lieäu Logic ñieàu khieån ghi ñoïc A2 CS2 A0 A1 A0 CS1 Ñeäm phaùt Ñieàu khieån Thu Phaùt Vaø modem Ñeäm thu Xtal RxClk RLSD RI INTRPT D0…D7 Baûng choïn thanh ghi trong vi maïch 8250A. X-tal laø caùc chaân ñeå caém thaïch anh duøng cho maïch dao ñoäng beân trong cuûa 8250A. Trong tröôøng hôïp söû duïng tín hieäu ñoàng hoà chuaån töø beân ngoaøi thì ta ñöa xung ñoàng hoà vaøo chaân X-tal vaø boû löûng chaân X-tal. Chaân RLSD ( receiver line signal detect ) chính laø chaân tìm thaáy soùng mang ( hoaëc cho tieâu chuaån RS-232C hoaëc Syndet cuûa 8251A ), töùc laø thieát laäp ñöôïc ñöôøng truyeàn. Tín hieäu ( Ring indicator ), cuõng laø tín hieäu chuaån cuûa RS-232C, ñeå modem thoâng baùo laø coù xung reùo chuoâng. Tín hieäu INTRPT laø tín hieäu yeâu caàu ngaét CPU. Caùc ñaàu ra phuï vaø daønh cho ngöôøi söû duïng trong trong tröôøng hôïp khoâng töông thích vôùi chuaån RS-232C. Chaân MS (Master reset) laø choã noái vaøo cuûa tín hieäu reset cuûa heä thoáng coù taùc duïng xoùa taát caû caùc thanh ghi trong vi maïch 8250A, tröø thanh ghi ñeäm thu, thanh ghi ñeäm phaùt vaø caùc thanh ghi MSB vaø LSB cuûa soá chia. Toác ñoä truyeàn ñöôïc tính nhôø vaøo vieäc choïn xung ñoàng hoà vaøo X-tal vaø vieäc choïn soá chia cuûa taàn soá naøy( ñeå taïi thanh ghi MSB vaø LSB ). Ví duï, neáu ta duøng taàn soá 1.8432 Mhz taïi X-tal, ta muoán toác ñoä phaùt laø 9600 baud ta tìm soá chia ñeå ghi vaøo LSB vaø MSB nhö sau : Soá chia = taàn soá vaøo /( toác ñoä phaùt x 16) = 1.8432x10 /(9600x16) =12. Thanh ghi ñieàu khieån ñöôøng truyeàn : (Line control register : LCR ) Thanh ghi naøy coù teân laø thanh ghi ñònh daïng döõ lieäu vì noù quyeát ñònh khuoân daïng döõ lieäu cuûa truyeàn thoâng treân ñöôøng daây. Daïng thöùc cuûa thanh ghi LCR ñöôïc bieåu dieãn nhö hình ôû döôùi : D7 D6 D5 D4 D3 D2 D1 D0 Bit ñieàu khieån giaùn ñoaïn. 1: buoäc Soun=0. 0:khoâng hoaït ñoäng. Bit truy caäp soá 1: truy nhaäp soá chia. 0: Truy nhaäp IER,THR ,RBR 1 : ñaûo parity. 0: khoâng hoaït ñoäng Kieåm tra chaún leû. 1: parity chaún. 0: parity leû. Soá bit stop. 0: 1bit. 1:1.5 bit 2 bit Choïn ñoä daøi töø. 00: 5bit 01: 6bit. 10: 7 bit. 11: 8bit Cho pheùp taïo, kieåm tra parity. 1: cho pheùp. 0: caám. DLAB SBCB SP EPS PEN STB WSL1 WSL0 Trong thanh ghi ñieàu khieån ñöôøng truyeàn LCR caàn chuù yù ñeán vaán ñeà sau : vieäc quy ñònh soá bit stop khoâng chæ phuï thuoäc vaøo bit D2 maø coøn phuï thuoäc vaøo maõ choïn ñoä daøi kyù töï. Cuï theå laø : neáu D2=1 maø maõ naøy laø 00( D1D0 )thì seõ taïo /kieåm tra 1.5 bit stop, neáu maõ naøy laø 6, 7, 8 bit thì seõ taïo / kieåm tra 2 bit stop. Thanh ghi ñeäm phaùt : (Transmitter holding register : THR) Kyù töï caàn phaùt ñi phaûi ñöôïc ghi töø CPU vaøo thanh ghi naøy tröôùc khi phaùt ñi trong khi bit DLAB=0. Sau ñoù , khi truyeàn ñi 8255A laáy döõ lieäu töø thanh ghi naøy, ñoùng khung noù nhö ñaõ ñònh, sau ñoù laàn löôït ñöa töøng bít ra coång. Thanh ghi ñeäm thu (Receiver buffer register : RBR ) : Khi 8250A nhaän ñöôïc 1 kyù töï qua chaân , noù thaùo boû khung kyù töï vaø giöõ kyù töï taïi thanh ghi ñeäm thu ñeå CPU ñoïc, CPU chæ ñoïc kyù töï naøy khi bit DLAB=0. Thanh ghi cho pheùp taïo yeâu caàu ngaét( Interrupt enable register : IER ): thanh ghi naøy duøng ñeå cho pheùp hay caám ngaét. Trong khi maïch 8250A hoaït ñoäng, coù theå taùc ñoäng ñeán CPU thoâng qua chaân INTRPT cuûa UART. Moãi bit trong caùc bit D3, D2, D1, D0 ôû möùc cao seõ cho pheùp caùc traïng thaùi öùng vôùi bit ñoù ñöa ra yeâu caàu ngaét ñoái vôùi CPU. Bieåu dieãn thanh ghi IER ôû hình döôùi : 0 0 0 0 Modem Rline Txemty RXRDY 1:Cho pheùp thay ñoåi traïng thaùi cuûa modem gaây ngaét 1: cho pheùp ngaét khi ñeäm giöõ phaùt roãng. 1: cho pheùp gaây ngaét khi ñeäm thu ñaày. D7 D6 D5 D4 D3 D2 D1 D0 1: Cho pheùp caùc tín hieäu traïng thaùi ñöôøng daây thu ngaét. Thanh ghi nhaän daïng nguoàn yeâu caàu ngaét: (Interrupt Identification Register : IIR ): Thanh ghi nhaän daïng ngaét chæ duøng ñeå ñoïc, chöùa maõ öu tieân cao nhaát cuûa yeâu caàu ngaét ( taïi chaân INTRPT cuûa 8250A ) ñang chôø ñöôïc phuïc vuï. Do ñoù khi caàn xöû lyù caùc yeâu caàu ngaét theo kieåu thaêm doø, CPU chæ caàn ñoïc bit 0 cuûa thanh ghi naøy ñeå bieát laø coù yeâu caàu ngaét, vaø caàn xeùt caùc bit ( Bit 1, bit 2 ) ñeå xaùc ñònh nguoàn goác cuûa yeâu caàu ngaét. Thöù töï öu tieân ngaét töø thaáp ñeán cao theo thöù töï töø treân xuoáng döôùi theo baûng ôû döôùi : Bit Ghi chuù Bit 6:7 Bit 6 Bit 7 Cho traïng thaùi boä ñeäm vaøo tröôùc ra tröôùc. 0 0 Khoâng vaøo tröôùc ra tröôùc. 0 1 Cho pheùp vaøo tröôùc ra tröôùc nhöng khoâng duøng. 1 1 Cho pheùp vaøo tröôùc ra tröôùc . Bit 5 Cho pheùp vaøo tröôùc ra tröôùc 64 byte ( chæ 16750). Bit 4 Bit 3 0 1 Bit 1: 2 Bit 2 Bit 1 0 0 Ngaét traïng thaùi modem. 0 1 Ngaét khi ñeäm giöõ phaùt roãng. 1 0 Ñeäm thu ñaày. 1 1 Ngaét traïng thaùi ñöôøng truyeàn thu. Bit 0 0 Coù yeâu caàu ngaét . 1 Khoâng coù. Thanh ghi ñieàu khieån Modem: ( Modem control register : MCR ) : Thanh ghi ñieàu khieån modem laø thanh ghi ñoïc ghi. Thanh ghi coøn ñöôïc goïi laø thanh ghi ñieàu khieån caùc tín hieäu ra cuûa modem bôûi vì noù cho pheùp ta ñieàu khieån caùc tín hieäu taïi caùc chaân vaø cuûa maïch UART. Daïng thöùc cuûa noù ñöôïc bieåu ñieãn nhö sau: Bit Ghi chuù Bit 7 Reserved Bit 6 Reserved Bit 5 Cho pheùp ñieàu khieån töï ñoäng traøn (chæ 16750). Bit 4 Noái voøng cuïc boä 1: noái voøng 0: bình thöôøng Bit 3 OUT 2 Bit 2 OUT 1 Bit 1 RST( force reques to send) 1: ñöa =0. 0: ñöa =1. Bit 0 DTR (Force Data Terminal Ready). 1: ñöa DTR=1. 0: ñöa =0. Vôùi bit 0 ta coù theå ñieàu khieån tín hieäu taïi chaân cuûa 8250A ñaït möùc tích cöïc thaáp ñeå baùo cho UART saún saøng laøm vieäc. Vôùi bit 1 ôû möùc thaáp thì 8255A seõ baùo cho UART saún saøng phaùt kyù töï. Baèng bit 2, bit 1 cuûa thanh ghi MCR chuùng ta coù theå ñieàu khieån chaân vaø tích cöïc hay khoâng tích cöïc. Bit 4 cuûa thanh ghi MCR cho pheùp maïch 8250A laøm vieäc ôû cheá ñoä noái voøng cuïc boä ñeå kieåm tra chöùc naêng cuûa UART. Caùc chaân ñieàu khieån vaøo cuûa modem (, ,, ) khoâng ñöôïc noái ra ngoaøi maø ñöôïc noái beân trong maïch vôùi caùc chaân ñieàu khieån ra cuûa modem( , , , ). Thanh ghi traïng thaùi ñöôøng daây ( Line Status Register : LSR ) : Thanh ghi naøy laø thanh ghi chæ ñoïc, cho bieát traïng thaùi cuûa vieäc truyeàn tín hieäu treân ñöôøng daây nhö theá naøo. Daïng thöùc cuûa thanh ghi naøy bieåu dieãn nhö ôû baûng döôùi : Bit Ghi chuù Bit 7 Loãi trong quaù trình thu FIFO ( Error in Receiver FIFO ). Bit 6 Thanh ghi dòch phaùt roãng ( Empty Data Holding Register ). Bit 5 Thanh ghi giöõ phaùt roãng ( Empty Transmitter Holding Register ). Bit 4 Break Interrupt Bit 3 Loãi khung( Framing error). Bit 2 Loãi parity( parity error). Bit 1 Loãi do ñeø thu (Overrun error) Bit 0 Döõ lieäu saún saøng ( data Ready ). Khi bit 6 set leân (möùc 1 ) thì caû hai thanh ghi truyeàn phaùt ( Transmitter holding register ) vaø thanh ghi dòch (shift register ) ñeàu roãng . Trong khi ñoù khi bit 5 set leân thì chæ coù thanh ghi giöõ phaùt laø troáng ( transmitter holding register ). Vaäy ñaâu laø söï khaùc nhau giöõa chuùng. Khi bit 6 set leân thì thanh giöõ phaùt roãng, ñöôøng truyeàn khoâng tích cöïc. Coøn khi bit 5 set leân thì thanh ghi truyeàn phaùt roãng nhöng bieán ñoåi noái tieáp duøng thanh ghi dòch coù theå ñang laøm vieäc. Bit 4= 1, xaûy ra khi tín hieäu ôû ñaàu vaøo cuûa phaàn thu giöõ möùc logic 0 laâu hôn thôøi gian daønh cho 1 kyù töï, bit naøy bò xoaù khi CPU ñoïc thanh ghi LSR. Bit 3 : Bit 2=1, khi coù loãi parity, bit naøy ñöôïc xoaù khi CPU ñoïc thanh ghi LSR. Bit 1=1, khi thu khoâng ñuû nhanh ( loãi thu ñeø), bit naøy ñöôïc xoaù khi CPU ñoïc thanh ghi LSR. Bit 0 =1, khi ñaõ nhaän ñöôïc 1 kyù töï vaø ñeå noù trong thanh ghi ñeäm (RBR), bit naøy ñöôïc xoaù khi CPU ñoïc thanh ghi RBR. Thanh ghi traïng thaùi modem ( Modem Status Register : MSR) : Thanh ghi naøy coøn ñöôïc goïi laø thanh ghi traïng thaí vaøo töø trang thía RS-232C vì noù cho bieát traïng thaùi hieän thôøi cuûa caùc tín hieäu ñieàu khieån modem töø ñöôøng daây. CHÖÔNG V: Giao Tieáp Maùy Tính Vôùi Vi Xöû Lyù. I. Truyeàn nhaän qua coång noái tieáp : Vieäc truyeàn nhaän qua coång noái tieáp ñöôïc thöïc hieän bôûi UART. Nguyeân taéc cho chip UART hoaït ñoäng nhö sau: Ñeå truyeàn ñi moät kyù töï, ñaàu tieân kyù töï ñoù seõ ñöôïc ñöa vaøo thanh ghi ñôïi truyeàn ( Transmit Holding Register ), sau ñoù ñöôïc ñöa qua thanh ghi dòch cuûa boä phaùt ( transmit Shift Register ). Sau khi kyù töï tröôùc ñaõ truyeàn xong, töøng bit cuûa kyù töï ñöôcï truyeàn seõ dòch vaøo keânh döõ lieäu. Khi nhaän moät kyù töï, ñaàu tieân caùc bit cuûa noù laàn löôït ñöôïc naïp vaøo thanh ghi dòch cuûa boä thu ( Transmit Shift Register), sau ñoù chuùng ñöôïc ñöa vaøo thanh ghi döõ lieäu cuûa boä thu ( Receive Data Register ) sau khi ñaõ loaïi boû caùc bit start, stop, parity. Ñeå thöïc hieän vieäc truyeàn döõ lieäu qua coång noái tieáp ta phaûi thöïc hieän caùc böôùc sau: Choïn coång truyeàn Com 1, hay Com 2. Ñòa chæ cuûa Com 1 thöôøng laø 3F8H, coøn Com 2 laø 2E8H. Ñoái vôùi moät soá loaïi maùy tính thì ñòa chæ cuûa coång Com coù theå vaøo BIOS ñeå set leân, neân khi vieát chöông trình truyeàn caàn vaøo BIOS ñeå xem ñòa chæ coång Com cuï theå. Neáu ta choïn COM 1 laø 3F8 H, Com 2 laø 2F8 H thì ñòa chæ caùc thanh ghi khaùc laø: Thanh ghi Ñòa chæ Com 1 Ñòa chæ Com 2 Data register 3F8H 2F8H Interrupt enable register 3F9H 2F9H Interrupt identification register 3FAH 2FAH Line control register 3FBH 2FBH Modem control register 3FCH 2FCH Line status register 3FDH 2FDH Modem control register 3FEH 2FEH Ñaët toác ñoä baud Ñaët caáu hình truyeàn : data bit, stop bit, parity (em choïn 8 bit data, 1 bit stop, khoâng coù parity). Cho pheùp ngaét neáu söû duïng. Ñeå thöïc hieän vieäc truyeàn döõ lieäu tröôùc heát chuùng ta phaûi khôûi ñoäng coång COM, sau ñoù thöïc hieän vieäc truyeàn phaùt vôùi chöông trình truyeàn vaø phaùt trình baøy ôû döôùi ñaây döôïc vieát theo kieåu API: Chöông trình khôûi ñoäng coång COM: Choïn Com 2 vôùi ñia chæ 2F8H ñeå thöïc hieän vieäc truyeàn döõ lieäu. Caàn chuù yù ñeán Bit DLAB. (………………………………………………………………………….) const pathsl ='c:\my documents\delphi\'; com2=$2F8; Reg2F8=com2+0; Reg2F9=com2+1; Reg2FA=com2+2; Reg2FB=com2+3; Reg2FC=com2+4; Reg2FD=com2+5; (………………………………………………………………………….) procedure Tform2.Initcom; begin xuat(Reg2FB,$80);{DLAP=1} xuat(Reg2F8,$30);{baudrate=2400} xuat(Reg2F9,$00);{khong su dung ngat} xuat(Reg2FB,$03);{8 bit data, 1 bit stop, no parity} end; (………………………………………………………………………….) Nhaäp döõ lieäu vôùi haøm nhaäp vieát baèng pascal. (………………………………………………………………………….) function Tform2.nhap(addr:word):byte; var TEMP : byte; begin asm PUSH Ax PUSH DX MOV DX,addr IN AL,DX MOV TEMP,AL POP AX POP Dx end; (………………………………………………………………………….) Xuaát döõ lieäu vôùi haøm xuat: (………………………………………………………………………….) procedure Tform2.xuat(addr:word;data:byte); begin asm PUSH AX PUSH DX MOV DX,addr MOV AL,DATA OUT DX,AL POP AX POP DX end; end; (………………………………………………………………………….) Trong vieäc truyeàn döõ lieäu neáu söû duïng caùc tín hieäu RTS, CTS … thì chuùng ta caàn phaûi vieát chöông trình cho chuùng . Trong vieäc truyeàn tín hieäu cho ñeà taøi cuûa em coù söû duïng tín hieäu RTS, ñöôïc vieát nhö sau: (………………………………………………………………………….) procedure Tform2.setRTS; var a: byte; begin a:=nhap(Reg2FC); a:=a or $02; xuat(Reg2FC,a); end; procedure Tform2.RESETRTS; var a : byte; begin a:=nhap(Reg2FC); a:=a and $FD; xuat(Reg2FC,a); end; (………………………………………………………………………….) Coù hai phöông phaùp ñeå ñieåu khieån vieäc thu phaùt döõ lieäu qua UART: phöông phaùp hoûi voøng vaø phöông phaùp taïo ra moät trình ñieàu khieån taïo ngaét. Phöông phaùp hoûi voøng chôø döõ lieäu nhaän xong hoaëc phaùt xong, toác ñoä chaäm khoaûng 34.8 Kbps. Phaùt kyù töï: Vôùi phöông phaùp hoûi voøng, khi gôûi ñi 1 kyù töï ta phaûi kieåm tra xem thanh ghi ñôïi truyeàn coù roãng hay khoâng baèng caùch xem Bit 6 cuûa thanh ghi LSR ( Line Status Register ) coù baèng moät hay khoâng. Chöông trình vieát cuï theå baèng Delphi 5.0 nhö sau: (…………………………………………………………) repeat test3:=nhap(Reg2FD); application.ProcessMessages; until (test3 and $40)=$40; xuat(Reg2F8,t); (…………………………………………………………) Ñeå thu moät kyù töï : Ñeå bieát coù kyù töï vaøo hay chöa kieåm bit 0 cuûa thanh ghi LSR ( Line Status Register ). Neáu baèng ‘1’ thì coù moät kyù töï nhaän vaøo. Vôùi chöông trình cuï theå vieát nhö sau: (………………………………………………………………………….) repeat begin test6:=nhap(Reg2FD); test6:=test6 and $01; end; until (test6=$01); (………………………………………………………………………….) Tuy nhieân ta coù theå söû duïng nhuõng caùch khaùc ñeå thöïc hieän vieäc truyeàn döõ lieäu vôùi phöông phaùp ñôn giaûn hôn veà giaûi thuaät. Sau ñaây laø moät phöông phaùp coù theå söû duïng maø em tham khaûo ñöôïc trong giaùo trình Laäp trình gheùp noái maùy tính trong Windows cuûa taùc giaû Ngoâ Dieân Taäp Ñeå thöïc hieän vieäc môû coång Com ta chæ vieäc goõ moät leänh ñôn giaûn laø OpenCom(pchar(‘coøm:9600,N,8,1’)); Ñeå truyeàn döõ lieäu ñi: SendByte(); Ñeå nhaän döõ lieäu veà: Temp:=ReadByte; Xuaát tröïc tieáp ra caùc ñöôøng daãn DTR(); RTS(); … Deå thöïc hieän ñöôïc nhuõng leänh treân trong Delphi chuùng ta phaûi coù moät teäp tin taøi nguyeân hoã trôï coù teân laø port.dll do taùc giaû cung caáp. Sau ñoù ta phaûi soaïn moät unit (ñöôïc chæ daãn raát roõ trong giaùo trình) ñeå giuùp Delphi nhaän ra ñöôïc taøi nguyeân naøy. Hôi raéc roái moät tyù nhöng maø buø laïi ta seõ gaëp raát nhieàu thuaän lôïi trong laäp trình. Trong luaän vaên naøy, em söû duïng moät phöông phaùp khaùc ñoù laø duøng MSComm. Phöông phaùp naøy laäp trình raát ñôn giaûn vaø hoã trôï raát maïnh vaø ñöôïc nhieàu ngöôøi söû duïng. Trong Visual Basic MSComm ñaõ ñöôïc nhaø laäp trình cung caáp saün. Coøn trong Delphi muoán söû duïng thì ta phaûi” duøng keù” taøi nguyeân naøy cuûa VB baèng caùch copy teâp tin “mscom.ocs” vaøo trong system cuûa Window sau ñoù vaøo Component cuûa Delphi ñeå khai baùo. Veà phöông phaùp khai baùo vaø söû duïng seõ ñöôc trình baøy cuï theå ôû trong phaàn phuï luïc cuûa em. II. Caùc phöông phaùp keát noái : 1. Keát noái maùy tính vôùi moät Kit vi xöû lyù: Khi maùy tính giao tieáp vôùi moät kít vi xöû lyù thì ta chæ duøng RS-232 laø ñuû , vì noù cho pheùp chuyeån ñoåi töø +12V ñeán +5V phuø hôïp vôùi nguoàn cung caáp cho kit vi xöû lyù. Nhöng ñieåm haïn cheá cuûa phöông phaùp naøy laø khoaûng caùch truyeàn ngaén , toái ña chæ 15 m. Bieåu dieãn giao tieáp ôû hình döôùi : Kit vi xöû lyù RS-232 2. Keát noái maùy tính vôùi N (toái ña N=32) kít vi xöû lyù : Ñeå keát noái maùy tính vôùi nhieàu vi xöû lyù chuùng ta phaûi thöïc hieän caùc böôùc chuyeån ñoåi sau : Chuyeån ñoåi töø chuaån RS-232 sang RS-485 ñeå coù theå truyeàn tín hieäu treân khoaûng caùch lôùn khoaûng 1.2km. Chuyeån ñoåi töø RS-485 sang RS-485 sang TTL ñeå phuø hôïp vôùi aùp vaøo cuûa vi xöû lyù. Möùc ñieän aùp: RS-232 truyeàn theo kieåu khoâng caân baèng ( aùp leäch so vôùi ñaát ). RS-485 truyeàn theo kieåu caân baèng ( ñieän aùp sai leäch giöõa hai daây). RS-232 : -3V Ø -12V : möùc logic 1. +3VØ +12V :möùc logic 0. RS-485 : VA –Vb = -1.5V Ø-5V : möùc logic 1. VA –VB= +1.5VØ+5V : möùc logic 0. Hình veõ minh hoïa : Kít vi xöû lyø Kít vi xöû lyù RS232/RS485 RS-485 RS-485 CHÖÔNG VI : Chuaån RS-485 Giôùi thieäu: Khi heä thoáng caàn truyeàn moät khoái thoâng tin nhoû ôû khoaûng caùch xa, thoâng thöôøng ngöôøi ta choïn RS-485 Maïng söû duïng chuaån RS-485 raát ña daïng: ta coù theå giao tieáp giöõa PC vôùi nhau, hoaëc giöõa PC vôùi Vi Xöû Lyù , hoaëc baát kyø thieát bò naøo truyeàn thoâng noái tieáp baát ñoàng boä. Khi so saùnh vôùi Ethernet vaø nhöõng giao dieän truyeàn thoâng theo nhöõng chuaån khaùc thì giao dieän RS-485 ñôn giaûn vaø giaù thaønh thaáp hôn nhieàu. Theo nhaän ñònh cuûa em ( ñoái vôùi truyeàn khoái döõ lieäu nhoû ) thì chuaån RS-485 raát linh ñoäng. Ta coù theå choïn soá löôïng boä ñieàu khieån ( Master ), boä nhaän ( Slave ), chieàu daøi caùp, toác ñoä truyeàn, soá node caàn giao tieáp, vaø raát tieát kieäm naêng löôïng Moät soá ñaët ñieåm cuûa RS-485: Giaù thaønh thaáp: Caùc boä ñieàu khieån ( Driver ) vaø boä nhaän ( Receiver ) khoâng ñaét vaø chæ yeâu caàu cung caáp nguoàn ñôn +5V ñeå taïo ra möùc ñieän aùp vi sai toái thieåu 1.5V ôû ngoû ra vi sai. Khaû naêng veà maïng: RS-485 laø moät giao dieän ña ñieåm ( multi-drop ), noù coù theå coù nhieàu Driver vaø Receiver, soá Receiver coù theå leân ñeán 256 neáu ngoõ vaøo cuûa caùc Receiver coù trôû khaùng vaøo cao Khaû naêng keát noái: RS-485 coù theå truyeàn xa 1200m, toác ñoä leân ñeán 10Mbps. Nhöng 2 thoâng soá naøy khoâng xaûy ra cuøng luùc. Khi toác ñoä truyeàn taêng thì toác ñoä baud giaûm xuoáng. Ví duï: khi toác ñoä laø 90Kbps thì khoaûng caùch laø 1200m, 1Mbps thì khoaûng caùch laø 120m, coøn vôùi toác ñoä 10Mbps thì khoaûng caùch chæ coøn 15m. Giaûi thích moät soá ñaëc tính RS-485 : Caùc ñöôøng truyeàn caân baèng vaø khoâng caân baèng: Sôû dæ RS-485 coù theå truyeàn treân moät khoaûng caùch lôùn laø do chuùng söû duïng ñöôøng truyeàn caân baèng. Moãi moät tín hieäu seõ truyeàn treân moät caëp daây, vôùi möùc ñieän aùp treân moät daây laø aâm hoaëc ñieän aùp buø treân daây kia. Receiver seõ ñaùp öùng phaàn hieäu giöõa caùc möùc ñieän aùp, ñöôïc minh hoaï ôû hình döôùi: Hình: Ñöôøng truyeàn caân baèng Hình: Ñöôøng truyeàn khoâng caân baèng Moät thuaän lôïi lôùn cuûa RS-485 laø khaû naêng choáng nhieãu toát. Moät thuaät ngöõ khaùc cuûa ñöôøng truyeàn tín hieäu daïng naøy laø vi sai tín hieäu. TIA/EIA – 485 chæ ñònh hai ñöôøng vi sai laø A vaø B. Taïi boä ñieàu khieån ( Driver ) neáu VA > VB thì möùc logic ôû ñaàu vaøo laø cao, nguôïc laïi VA VB thì möùc logic ôû ñaàu ra laø cao vaø ngöôïc laïi Ñoái vôùi caùc Receiver ñaàu vaøo phaûi naèm trong taàm –7V ¸ + 12 V. Möùc aùp vi sai ñaàu vaøo toái ña - 6V £ VA – VB £ +6V Taïi sao duøng ñöôøng truyeàn caân baèng coù lôïi : Ñöôøng truyeàn caân baèng coù öu ñieåm bôûi hai ñöôøng tín hieäu mang doøng gaàn baèng nhau nhöng ngöôïc daáu. Ñieàu naøy giuùp giaûm nhieãu treân ñuôøng truyeàn bôûi haàu heát caùc ñieän aùp nhieãu ñieàu taêng hay giaûn ñieàu nhau treân caû hai ñöôøng truyeàn. Baát kì moät ñieän aùp nhieãu naøo taùc ñoäng leân moät daây ñieàu bò trieät tieâu bôûi ñieän aùp buø treân daây kia. Ñöôøng nhieãi coù theå laø caùc daây khaùc trong caùp hoaëc ôû beân ngoaøi. Moät boä nhaän caân baèng chæ nhaän tín hieäu caàn truyeàn, loaïi boû tín hieäu nhieãu hoaëc giaûm ñi raát nhieàu tín hieäu nhieãu. Ngöôïc laïi, trong giao tieáp khoâng caân baèng, boä nhaän phaùt möùc ñieän aùp giöõa daây tín hieäu vaø ñaát. Khi coù nhieãu chuùng seõ taùc ñoäng ñeán maïch, khi gaëp moäi tröôøng coù nhieãu lôùn chuùng seõ gaây sai leäch möùc logic ®maïch hoaït ñoäng sai. Moät öu ñieåm khaùc cuûa ñöôøng truyeàn caân baèng laø noù coù theå trieät tieâu ñöôïc phaàn ñieän aùp tieàm taøng giöõa boä phaùt vaø boä nhaän. Trong keát noái ôû khoaûng caùch lôùn, ñieän theá ôû caùc Driver vaø Reciver coù theå khaùc nhau nhieàu voân. Ôû moät ñöôøng truyeàn khoâng caân baèng, ñieän theá ñaát khaùc nhau coù theå laøm cho Receiver khoâng ñoïc ñöôïc ñaàu vaøo. Coøn ôû ñöôøng truyeàn caân baèng thì chuùng khoâng quan taâm ñeán ñieän theá ñaát vì noù chæ ñoïc phaàn ñieän theá hieäu giöõa hai daây truyeàn tín hieäu. Trong thöïc teá, caùc thaønh phaàn RS-485 chæ phuø hôïp vôùi söï cheânh leäch theá ñaát nhaát ñònh. Moät caùch ñeå trieät tieâu hoaëc giaûm bôùt vaán ñeà naøy laø coâ laäp maïng. Nguyeân taéc hoaït ñoäng cuûa RS-485 : Möùc aùp yeâu caàu: Giao tieáp RS – 485 ñieån hình söû duïng nguoàn cung caáp ñôn +5V nhöng möùc logic taïi ñaàu phaùt vaø ñaàu thu khoâng phaûi laø möùc TTL hay möùc CMOS, ñeå coù möùc ra thích hôïp thì VA – VB ³ 1.5V Ñieän aùp giöõa moãi ñaàu ra vaø ñaát khoâng xaùc ñònh baèng vieäc tröø maø mode ñieän aùp chung phaûi naèm trong taàm ±7V. Neáu nhö giao tieáp caân baèng moät caùch hoaøn haûo thì caùc ñaàu ra offset baèng moät nöûa vôùi nguoàn cung caáp. Baát cöù söï caân baèng naøo cuõng laøm taêng hay giaûm möùc offset. Hình beân döôùi chæ aùp ra A vaø B cuûa moät boä ñieàu khieån RS-485. Bieân ñoä ñaàu ra gaàn 3V thay ñoåi töø +1 ¸ +4V hoaëc –1V ¸ -4V so vôùi ñaát. Nguoàn cung caáp cho boä ñieàu khieån laø +5V Ngoû ra cuûa boä phaùt RS-485 Hình beân döôùi chæ möùc ñieän aùp vi sai giöõa daây A vaø B ôû ñaàu ra cuûa Driver. Bieân ñoä ñænh ñænh cuûa aùp ra laø 6V gaáp hai laàn bieân ñoä ñænh ñænh cuûa ñieän aùp treân moãi ñöôøng daây. Ngoû ra vi phaân cuûa boä phaùt RS-485 Neáu nhö moät ñaàu ra ñoùng môû tröôùc moät ñaàu ra khaùc thì ñieän aùp ñaàu ra vi sai ñoùng môû chaäm hôn vaø ñieàu naøy giôùi haïn toác ñoä truyeàn cuûa maïng. Thôøi gian leäch ( Skew ) laø khoaûng thôøi gian ñoùng môû cheânh leäch giöõa 2 ñaàu ra. Caùc Driver cuûa RS-485 ñöôïc thieát keá sao cho toái thieåu thôøi gian leäch. Taïi Receiver, ñieän aùp 2 ñaàu vaøo A vaø B chæ caàn 200mV. Neáu VA - VB ³ 0.2V thì ñaàu thu seõ ñoïc laø möùc logic 1, ngöôïc laïi laø möùc logic 0. neáu nhö ñieän aùp vi sainaøy < 0,2V thì möùc logic khoâng xaùc ñònh Söï khaùc nhau giöõa ñieän aùp Driver vaø Receiver laø giôùi haïn nhieãu cho pheùp 1,3V. ñieän aùp vi sai coù theå yeáu ñi hoaëc bò nhieãu kí sinh khoaûng 1,3 V thì ñaàu thu vaãn nhaän ñöôïc möùc logic ñuùng. Trong haàu heát caùc maïng, ñieän aùp ñaàu ra boä phaùt lôùn hôn 1,5V. Do ñoù giôùi haïn nhieãu lôùn hôn. Moät boä Driver caàn caáp nguoàn 3V cuõng coù theå coù aùp ra vi sai giöõa 2 ñaàu ra laø 1,5 V TIA/EIA – 485 ñònh nghóa : B > A ® möùc 1; A > B ® möùc 0 . Söû duïng ñònh nghóa naøy caùc chip giao tieáp RS-485 thì laøm ngöôïc laïi. Doøng yeâu caàu: Doøng toång trong RS-485 thay ñoåi theo trôû khaùng vaøo cuûa thaønh phaàn trong maïng goàm: caùc boä phaùt, caùc ñaàu thu, caùp vaø caùc thaønh phaàn ñaàu cuoái. Trôû khaùng ra cuûa boä phaùt thaáp vaø trôû khaùng cuûa caùp thaáp cho pheùp vieäc ñoùng môû ñöôïc nhanh hôn vaø baûo ñaûm boä thu seõ nhaän ñöôïc tín hieäu vôùi toác ñoä cao nhaát coù theå. Neáu trôû khaùng cuûa ñaàu thu cao thì noù seõ laøm giaûm doøng trong maïng vaø keùo daøi tuoåi thoï cuûa boä nguoàn. Vieäc söû duïng thaønh phaàn ñaàu cuoái seõ coù lôïi ñoái vôùi doøng trong maïng. Khi khoâng coù caùc thaønh phaàn ñaàu cuoái thì trôû khaùng vaøo cuûa caùc boä thu seõ aûnh höôûng lôùn ñoái vôùi ñieän trôû toång noái tieáp. Toång trôû khaùng vaøo thay ñoåi theo caùc boä thu vaø trôû khaùng vaøo cuûa chuùng. Moät boä phaùt RS-485 coù theå laùi ñeán 32 ñôn vò taûi. TIA/EIA – 485 xaùc ñònh moät ñôn vò taûi döôùi daïng doøng yeâu caàu. Moät boä thu töông ñöông moät ñôn vò taûi, maø taûi naøy khoâng keùo nhieáu hôn moät löôïng doøng xaùc ñòmh taïi ñaàu vaøo vaø ñieän aùp ñöôïc xaùc ñònh theo tieâu chuaån. Khi aùp taïi ñaàu thu laø 12V thì moät ñôn vò taûi – Boä thu seõ khoâng keùo nhieàu hôn 1mA. Ñeå ñaït ñöôïc yeâu caàu naøy thì moät boä thu phaûi coù moät ñieän trôû ñaàu vaøu ít nhaát laø 12 KW, maéc giöõa moãi ñaàu vi sai vôùi Vcc hay GND tuøy thuoäc vaøo chieàu doøng ñieän. Neáu theâm moät boä thu thì ñieän trôû töông laø 6000 W. Neáu coù 32 ñôn vò taûi thì R töông ñöông laø 375W Chuyeån ñoåi sang TTL: Song coâng ( Full-Duplex ): RS-485 ñöôïc thieát keá ñeå duøng cho heä thoáng nhieàu node ( multi-drop). Haàu heát maïng RS-485 laø baùn song coâng söû duïng nhieàu boä phaùt vaø boä thu, cuøng chia seõ moät ñöôøng truyeàn tín hieäu. Nhöng chuùng ta cuõng coù theå söû duïng RS-485 ôû daïng song coâng, ôû ñoù moãi höôùng seõ coù ñöôøng truyeàn tín hieäu rieâng cuûa noù. Vieäc chuyeån ñoåi maïng RS-232 sang RS-485 song coâng deã daøng thöïc hieän baèng phaàn meàm. Vôùi maïng loaïi naøy ta coù theå söû duïng SN75179B ôû hai ñaàu boä phaùt vaø boä thu. Maïng naøy goàm 1 boä phaùt duøng chuyeån ñoåi 5V TTL sang RS-485 vaø moät boä thu duøng chuyeån RS-485 sang 5V TTL Ñaây laø moät giaûi phaùp ñôn giaûn khi ta muoán taïo moät maïng song coâng, khoaûng caùch xa giöõa caùc vi ñieàu khieån. Caùc chip giao tieáp RS-485 nhoû hôn, ñôn giaûn vaø reû hôn trong vieäc chuyeån ñoåi sang RS-232 Hình 1.5: Keát noái song coâng nhieàu node Trong moät maïng goàm coù chuû vaø tôù, ôû ñoù node chuû duøng ñeå ñieàu khieån maïng vaø cho pheùp vieäc thu phaùt cuûa thaønh phaàn khaùc. Moät caëp daây duøng ñeå noái boä phaùt cuûa con chuû vôùi boä thu cuûa caùc con tôù, coøn moät caëp daây khaùc noái boä phaùt cuûa caùc con tôù vôùi boä thu cuûa con chuû Taát caû caùc con tôù phaûi ñöôïc thoâng tin töø con chuû ñeå bieát con naøo ñöôïc cho pheùp. Vieäc ñònh ñòa chæ cuûa con tôù ñöôïc xaùc ñònh baèng caëp daây ñoái laëp. Thuaän lôïi cuûa phöông phaùp naøy laø tieát kieäm thôøi gian cho caùc con tôù bôûi vì chuùng khoâng ñoïc thoâng tin traû lôøi cuûa caùc con tôù khaùc. Neáu taát caû caùc node cuøng chia seõ moät ñöôøng döõ lieäu thì caùc con tôù phaûi ñoïc taát caû moïi thoâng tin löu thoâng treân ñöôøng maïng ñeå laáy thoâng tin töø con chuû gôûi tôùi. Baùn song coâng: Raát nhieàu maïng duøng keát noái 485 laø baùn song coâng vôùi nhieáu boä phaùt vaø thu cuøng chia seõ moät ñöôøng tín hieäu. Khi moät maïng coù 3 hay nhieàu node thì taïi moät thôøi ñieåm chæ coù moät node ñöôïc thu hay phaùt. Vieäc söû duïng 2 ñöôøng truyeàn tín hieäu laø thuaän lôïi khi chæ coù 2 thieát bò ( moät chuû, moät tôù ) vì moãi node coù theå thu phaùt baát kì luùc naøo maø khoâng sôï coù söï xung ñoät. Nhöng neáu coù nhieàu hôn moät boä phaùt treân cuøng moät caëp daây thì khoâng coù söï ñaûm baûo raèng ñöôøng truyeàn tín hieäu laø “ roãng”(free) khi boä phaùt caàn truyeàn Treân caùc vi ñieàu khieån cho pheùp xaây döïng caùc bit port nhö laø ñaàu vaøo hay ñaàu ra, chuùng ta coù theå gôûi hay nhaän moät bit ñôn , taùi taïo laïi bit khi caàn thieát. Chuùng ta cuõng coù theå laøm ñieàu naøy ñeå söû duïng ít nhaát soá bit port coù theå hoaëc söû duïng baùn song coâng ñeå tieát kieäm daây Hình 1.6: Keát noái baùn song coâng Chip bao goàm moät boä phaùt duøng ñoåi möùc logic TTL sang RS-485 vaø moät boä thu duøng chuyeån RS-485 sang möùc TTL vaø ôû moãi chip ñeàu coù moät ñaàu vaøo cho pheùp. Khoâng gioáng nhö SN75179B chip naøy chæ coù moät caëp chaân RS-485 vaø chaân cho pheùp vaøo, duøng xaùc ñònh lieäu boä phaùt hay boä tu laø tích cöïc Khi ñaàu vaøo cho pheùp cuûa boä phaùt ôû möùc thaáp thì ngoõ ra cuûa boä phaùt ôû traïnh thaùi toång trôû cao. Khi ñaàu vaøo cho pheùp cuûa boä thu ôû möùc cao thì ñaàu ra cuûa boä thu ôû traïng thaùi toång trôû cao Keát noái maïng vaø phöông thöùc truyeàn: Ñaëc ñieåm cuûa maïng duøng chuaån RS-485 laø phaûi chung mass, möùc ñieän aùp chung: -7 ¸ +12v. Daïng keát noái toång quaùt: Hình beân döôùi moâ taû caùch keát noái toång quaùt, moãi node coù chip thu phaùt SN75176B ( töông töï Max485, LTC485, DS3695 ) Maïch coù ñieän trôû 120 W noái song song vôùi ngoõ vaøo, ra vi sai ( chaân 6-7 ), vaø hai dieän trôû 560 W keùo leân Vôùi caùch keát noái nhö vaäy thì ñeå truyeàn data töø boä ñieàu (Master) ñeán caùc thieát bò chaáp haønh ( Slave ) ta phaûi set chaân 2-3 leân möùc cao, töông töï khi caùc Slave gôûi Message veà Master, chaân 2-3 cuõng phaûi leân möùc cao. Coøn khi nhaän Message thì ta phaûi set chaân 2-3 xuoáng thaáp Hình 1.7: Daïng keát noái toång quaùt cuûa maïng duøng chuaån RS-485 Keát noái töï ñoäng : Vaán ñeà: khi thieát keá maïng duøng chuaån RS-485, do taát caû caùc node cuøng chia seõ moät ñöôøng data, nhöng taïi moät thôøi ñieåm chæ coù moät boä ñieàu khieån hoaït ñoäng. Töùc laø tröôùc khi node naøy phaùt thì node khaùc khoâng ñöôïc phaùt. Hình döôùi ñaây cho ta caùch keát noái töï ñoäng khoâng caàn phaûi set chaân 2-3 moãi khi phaùt. Hình 1.8: Keát noái töï ñoäng Vôùi maïch hình treân thì khi ta vieát chöông trình ñieàu khieån, ta khoâng caàn phaûi choát boä ñieàu khieån, vì duøng 75176B keát hôïp vôùi 555, seõ cho ta thôøi gian delay ñuû ñeå boä ñieàu naøy hoaït ñoäng ( Enable ) thì boä ñieàu khieån khaùc khoâng hoaït ñoäng ( Disable ). Giaûi thích cuï theå nguyeân lyù hoaït ñoäng cuûa maïch treân, seõ ñöôïc ñeà caäp trong phaàn thieát keá maïch. Vieäc cho pheùp boä ñieàu khieån ( Driver ): Moät vieäc quan troïng trong söû duïng maïng baùn song coâng laø vieäc ñieàu khieån cho pheùp caùc boä ñieàu khieån ( boä phaùt ). Khi moät boä phaùt ñang chuyeån thì noù vaãn coøn ñöôïc cho pheùp cho ñeán khi noù thöïc hieän xong vieäc chuyeån data. Sau ñoù noù khoâng ñöôïc cho pheùp tröôùc khi caùc node khaùc thöïc hieän vieäc phaùt. Hình 1.9: Tín hieäu cho pheùp cuûa boä phaùt vaø 1 byte data ñöôïc phaùt

Các file đính kèm theo tài liệu này:

  • doc1.II.doc
  • doc1.I.doc
  • doc2.doc
  • rarasm51.rar
  • rardelphi.rar
  • docIndex.doc
  • rarorcad.rar
  • docPreface.doc