PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT PIC,...)

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc Vi điều khiển

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 26-09-2006, 09:19 PM   #1
hoangngoc
Nhập môn đệ tử
 
hoangngoc's Avatar
 
Tham gia ngày: May 2006
Nơi Cư Ngụ: Đà Nẵng
Bài gửi: 10
:
Giao tiếp máy tính dùng RS485

Em chuẩn bị làm ĐATN về mạng công nghiệp, tuy nhiên em chưa rõ lắm về cách thức chuyển đổi chuẩn RS232->RS485. Em có tham khảo 1 mạch giao tiếp máy tính dùng RS485 như sau, mong các anh giải thích giúp em chức năng của các IC cũng như hoạt động của mạch. Em rất cảm ơn
Hình Kèm Theo
File Type: bmp 485.bmp (984.0 KB, 241 lần tải)
hoangngoc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-10-2007, 10:49 PM   #2
hampic
Đệ tử 1 túi
 
hampic's Avatar
 
Tham gia ngày: Sep 2007
Bài gửi: 14
:
Trích:
Nguyên văn bởi hpecom View Post
Mong anh chỉ bảo:
_ Nếu em muốn truyền một số thực từ máy tính xuống PIC qua RS232 thì có được không?
_ Nếu được mong anh cho em một ví dụ viết trên MS Comm của Visual Basic 6.0.
Cảm ơn anh!
Rất mong anh.
hpecom.
hehe, theo mình nghĩ thì truyền cái gì cũng được nhưng chú ý là rs232 mỗi lần truyền 1 byte cho nên, một số có giá trị lớn hơn 255 thì truyền coi chừng bị sai. Khi đó, bạn nên chuyển sang chuỗi và truyền rồi khi nhận thì ghép lại.
Viết bằng MS Comm trong VB thì dể mà, bạn muốn thử gửi 1 giá trị nào thì có thể tạo một editbox rồi lấy giá trị trong nó gán cho hàm Output. Nhận thì dùng cách bẩy sự kiện OnComm() với CommEvent = comEvReceive rồi nhận giá trị từ hàm Input.
Xem file đính kèm để hiểu rỏ hơn (có ví dụ).

Thân
File Kèm Theo
File Type: pdf Io_ch26.pdf (600.2 KB, 777 lần tải)
__________________
Góp tay đưa điều khiển tiến lên !
CNC - niềm mơ ước của tôi !
hampic vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-09-2006, 03:37 AM   #3
hoangminh1234
Đệ tử 1 túi
 
Tham gia ngày: Nov 2005
Bài gửi: 23
:
Trích:
Nguyên văn bởi NTVinh View Post
Code:
#include <16F877.h>
#device *=16
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=2000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)  // 

int8 i;
float temp[32];

#int_rda
void serial_isr() {
*(&temp[0]+i)=getc();
i++;if(i==128)i=0;
}
void main() {
i=0;
do {
//...
} while (TRUE);
}
Nguyen The Vinh.
minh ko hieu cho nay *(&temp[0]+i)=getc(); mong bạn chỉ kỹ hơn tí nhé
hoangminh1234 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 29-09-2006, 10:22 AM   #4
NTVinh
Đệ tử 2 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 32
:
Talking

Trích:
Nguyên văn bởi hoangminh1234 View Post
minh ko hieu cho nay *(&temp[0]+i)=getc(); mong bạn chỉ kỹ hơn tí nhé.
A: Để dễ hình dung, mình xin lấy một ví dụ mã giả như sau nhé. Cái mã giả này có nội dung là, bạn muốn nhận 32 số kiểu float về vi điều khiển (PIC6F877, AT89C51, DS89C420,...) từ một thiết bị đầu cuối nào đó thông qua cổng truyền thông RS232. Theo chuẩn RS232, và theo đặc điểm của các vi điều khiển đã liệt kê ở trên, ta thực hiên mã giả như sau.
- Khai báo một mảng 32 phần tử dạng float, bắt đầu từ địa chỉ 0x0010 trong ram.
float temp[32] _at_ 0x0010;
- Như vậy, tại địa chi 0x0010 sẽ đựng nôi dung của byte chứa bit dấu của số thực temp[0]..., tại địa chỉ 0x0014 đựng nội dung của byte chứa bit dấu của số thự temp[1]...
- Như vậy thì...ôi, thôi, viết dài quá!!! Bạn tự suy luận tiếp nhé.
Nguyễn Thế Vinh.

thay đổi nội dung bởi: falleaf, 30-09-2006 lúc 01:51 PM.
NTVinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-06-2008, 05:55 AM   #5
thuyvu
Nhập môn đệ tử
 
thuyvu's Avatar
 
Tham gia ngày: Oct 2007
Bài gửi: 7
:
Send a message via Yahoo to thuyvu
Trích:
Nguyên văn bởi NTVinh View Post
A: Để dễ hình dung, mình xin lấy một ví dụ mã giả như sau nhé. Cái mã giả này có nội dung là, bạn muốn nhận 32 số kiểu float về vi điều khiển (PIC6F877, AT89C51, DS89C420,...) từ một thiết bị đầu cuối nào đó thông qua cổng truyền thông RS232. Theo chuẩn RS232, và theo đặc điểm của các vi điều khiển đã liệt kê ở trên, ta thực hiên mã giả như sau.
- Khai báo một mảng 32 phần tử dạng float, bắt đầu từ địa chỉ 0x0010 trong ram.
float temp[32] _at_ 0x0010;
- Như vậy, tại địa chi 0x0010 sẽ đựng nôi dung của byte chứa bit dấu của số thực temp[0]..., tại địa chỉ 0x0014 đựng nội dung của byte chứa bit dấu của số thự temp[1]...
- Như vậy thì...ôi, thôi, viết dài quá!!! Bạn tự suy luận tiếp nhé.
Nguyễn Thế Vinh.
Bạn nào có mạch chuyển đổi RS485 sang RS232 thì gửi cho mình xin vơi:xuanvudk2@gmail.com
thuyvu vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2006, 10:04 AM   #6
NTVinh
Đệ tử 2 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 32
:
Vấn đề kỳ tới, mời các bạn cùng tham gia: "Tạo một lớp liên kết dữ liệu (Datalink layer) trên cơ sở lớp vật lý (Physical layer) là chuẩn truyền thông công nghiệp RS485?"
Nguyen The Vinh.

thay đổi nội dung bởi: NTVinh, 11-05-2006 lúc 10:54 AM.
NTVinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2006, 10:45 AM   #7
NTVinh
Đệ tử 2 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 32
:
Vài nét về mô hình OSI.

ISO (International Standardization Organization) có trụ sở tại Giơnevơ, Thụy sĩ. Năm 1977, ISO được giao trách nhiệm thiết kế một chuẩn truyền thông dựa trên lý thuyết về kiến trúc các hệ thống mở, qua đó thiết kế các mạng máy tính. Mô hình này có tên là OSI (Open System Interconnect).
Mô hình OSI tổ chức các giao thức truyền thông thành bảy lớp. Mỗi lớp giải quyết một phần hẹp của việc truyền thông.

7)Application layer
6)Presentation layer
5)Session layer
4)Transport layer
3)Network layer
2)Data link layer
1)Physical layer

Trong phạm trù của mạng truyền thông công nghiệp nhất là với bus trường thì Physical layer, Data link layer được xây dựng và đã được chuẩn hóa ví dụ Profibus-DP, DA. Các lớp khác không được xây dựng hoặc nếu có thì là chỉ là sự bổ xung nho nhỏ, ví dụ Application layer.

Nguyen The Vinh.

thay đổi nội dung bởi: NTVinh, 11-05-2006 lúc 10:57 AM.
NTVinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2006, 11:16 AM   #8
NTVinh
Đệ tử 2 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 32
:
Giới thiệu các lớp trong mô hình OSI

Lớp 1 : lớp vật lý (physical layer)
Qui định về các tính chất vật lý của hệ thống, chú ý rằng OSI không bắt buộc hay nói cách khác không qui định phải dùng một lớp vật lý cụ thể nào. Tầng vật lý liên quan đến nhiệm vụ truyền dòng bit qua đường truyền vật lý, truy nhập đường truyền vật lý nhờ các phương tiện cơ, điện...
Lớp này định nghĩa vào đặc tính chính của mạng vật lý, bao gồm:
1. Cấu trúc vật lý của mạng.
2. Các định chuẩn cơ học và điện.
3. Mã hoá và định thời gian việc truyền bit.

Lớp 2 : lớp liên kết dữ liệu (data link layer)
Cung cấp phương tiện để truyền thông tin qua liên kết vật lý bảo đảm độ tin cậy. Lớp này qui định về sự đồng bộ hóa, đặc tính của khung dữ liệu, đánh số khung, kiểm tra lỗi, kiểm tra luồng dữ liệu trong quá trình liên lạc.
Lớp nối kết dữ liệu thực hiện các công việc sau:
1. Định địa chỉ các thiết bị trong mạng.
2. Kiểm tra và có thể chỉnh sửa các lỗi truyền thông.
3. Điều khiển truy nhập bus.
...
Các lớp khác không được trình bày ở đây vì mức độ quan trọng của nó trong phạm trù này, cũng như tránh việc gây ra nhiễu người đọc.
Nguyen The Vinh.
NTVinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2006, 11:40 AM   #9
NTVinh
Đệ tử 2 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 32
:
Angry Một ví dụ về xây dựng lớp vật lý

Các bạn xem hình sau. Hình vẽ một trạm thiết bị tham gia trong mạng truyền thông Profibus/RS485, cách ly. Ơ lạ nhỉ, sao không gửi được nhỉ?
Nguyen The Vinh.

thay đổi nội dung bởi: NTVinh, 11-05-2006 lúc 12:24 PM.
NTVinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2006, 12:26 PM   #10
ntc
Đệ tử 8 túi
 
ntc's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: HCM city
Bài gửi: 264
:
Send a message via Yahoo to ntc
Em chưa hiểu rõ lắm về ý định của các bài viết, cũng như các vấn đề có liên quan khác. Anh nói rõ hơn nhé.

Anh đang viết về việc xây dựng một hệ thống mở OSI ?? Hay chỉ xây dựng lớp liên kết dữ liệu dựa trên lớp vật lí RS485??

Nếu như vậy thì nó sẽ bao gồm các vấn đề gì nhẩy? Xây dựng cơ chế định địa chỉ, xây dựng cơ chế sửa lỗi, ..., theo các cách như Profibus-DP, DA đã làm ?

Tại sao mình không sử dụng chuẩn Profibus-DP, DA?

Nếu như vậy thì vấn đề này có mối liên quan như thế nào đến hệ thống mở OSI. Nếu anh chỉ đặt vấn đề xây dựng lớp liên kết dữ liệu, thì các giao tiếp chỉ mang tính nội bộ, chứ chưa giao tiếp được với hệ thống OSI, vì nó cần đến các lớp cao hơn. Vấn đề về OSI đặt ra ở đây có tác dụng gì nhẩy. Và tại sao phải tuân theo OSI trong trường hợp này?

Chưa hiểu rõ lắm. Anh giải thích thêm nhé.

Vấn đề này em cũng đang tìm hiểu thôi, theo em biết thì hệ thống OSI tuân theo chuẩn ISO được ứng dụng trong việc trao đổi dữ liệu cho hệ thống máy tính, ngoài ra nó là cơ sở cho các dịch vụ viễn thông (N-ISDN, B-ISDN, ...).

Hì, cái này được đó. Chắc sẽ còn hỏi nhiều.
__________________


thay đổi nội dung bởi: ntc, 11-05-2006 lúc 12:31 PM.
ntc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 11-05-2006, 12:28 PM   #11
ntc
Đệ tử 8 túi
 
ntc's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: HCM city
Bài gửi: 264
:
Send a message via Yahoo to ntc
Trích:
Các bạn xem hình sau. Hình vẽ một trạm thiết bị tham gia trong mạng truyền thông Profibus/RS485, cách ly. Ơ lạ nhỉ, sao không gửi được nhỉ?
Anh bấm cái nút "Đổi sang khung lớn", bên đó có cái phần tải file từ máy đó.
__________________

ntc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-06-2008, 10:26 AM   #12
Hard
Đệ tử 2 túi
 
Tham gia ngày: May 2006
Nơi Cư Ngụ: Huế
Bài gửi: 26
:
Send a message via Yahoo to Hard
Hi,
Các bác cho tui hỏi cách nhảy đến Địa chỉ = (địa chỉ hiện tại + 2000) trong CCS bằng cách nào. Tui tìm trong Help mà không thấy cách nào để lấy địa chỉ con trỏ chương trình cả. Rất mong các bác chỉ giáo vụ này vì tui cũng chưa tiếp xúc với CCS nhiều.
Thân ái.
Hard vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-05-2006, 09:48 AM   #13
NTVinh
Đệ tử 2 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 32
:
Thảo luận

Hôm nay, mình cũng chưa có ý định viết tiếp vấn đề đã nêu. Mà, muốn dừng lại để cùng trao đổi với ntc cái đã. OSI, bản thân nó là một mô hình qui chiếu cho việc phát triển các hệ thống. OSI nó không phải là một chuẩn truyền thông! Nó cũng chẳng qui định rằng hệ thống của bạn phải dùng lớp vật lý này kia, nó cũng chẳng bắt hệ thống của bạn phải xây dựng lớp liên kết dữ liệu như thế nào cả. Như vậy??? Không có lý do nào bảo rằng một hệ thống A, xây dựng truyền thông dựa trên mô hình OSI, lại có thể giao tiếp được với một hệ thống B cũng xây dựng truyền thông dựa theo mô hình qui chiếu. Tóm lại, OSI chỉ có nhiệm vụ làm cơ sở để đối chiếu hệ truyền thông đã có, cũng như làm cơ sở cho việc xây dựng một hệ thống mới.
Nguyen The Vinh.
NTVinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-05-2006, 11:14 AM   #14
ntc
Đệ tử 8 túi
 
ntc's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: HCM city
Bài gửi: 264
:
Send a message via Yahoo to ntc
Như vậy bản chất của OSI chỉ là một mô hình để đối chiếu thôi. Uh nhỉ. Khi phát triển một hệ thống mới, cũng như nghiên cứu các hệ thống trong thực tế, OSI được dùng làm cở sở để phân tích hệ thống, đúng không anh.

Khi xây dựng một hệ thống, ta sẽ dựa trên OSI để phân tích, rằng có những vấn đề gì cần quan tâm, có những mô hình nào cần xây dựng, có những công việc nào cần làm, dựa theo yêu cầu của từng lớp cụ thể, ví dụ như lựa chọn lớp vật lí phù hợp với hệ thống, chọn cơ chế mã hóa, cơ chế định địa chỉ, cơ chế sửa lỗi, cơ chế truy xuất đối với lớp vật lí và lớp liên kết dữ liệu, các lớp tiếp theo có thể liên quan đến các vấn đề như chọn cơ chế tạo tuyến, cơ chế đóng gói dữ liệu, vân vân và vân vân... Mỗi hệ thống trong thực tế sẽ có nhiều sự lựa chọn và cách xây dựng khác nhau, do đó không thể đảm bảo rằng hệ thống này có thể giao tiếp với hệ thống khác khi cùng xây dựng trên mô hình OSI.

Khi phân tích một hệ thống, các thao tác cũng tương tự: phân tích cấu trúc lớp vật lí, phân tích các cơ chế có liên quan dựa trên hệ tham chiếu OSI 7 lớp như vậy.

Em có thể hiểu được sơ lược các vấn đề anh Vinh muốn đề cập rồi. .

Mục đích các bài viết sẽ là xây dựng một mạng truyền thông ứng dụng trong công nghiệp với lớp vật lí được lựa chọn là RS485. Các công việc cần tiến hành sẽ là:

- Phân tích cấu trúc lớp vật lí RS485 để làm cơ sở cho việc xây dựng mạng truyền thông, đồng thời xác định một số cơ chế thích hợp về mã hóa và tốc độ truyền bit phù hợp cho lớp vật lí RS485 (các vấn đề liên quan đến lớp 1).

- Xây dựng một số cơ chế trong lớp 2 cho mạng, các công việc sẽ bao gồm: xây dựng cơ chế định địa chỉ các thiết bị trong mạng, xây dựng cơ chế sửa lỗi và kiểm tra lỗi truyền thông cho mạng, xây dựng cở chế điều khiển truy nhập BUS.

Còn thiếu chỗ nào nữa không anh??

Em sẽ tìm hiểu về RS485 để tham gia luồng này với anh. Mình làm tới nơi tới chốn dzụ này luôn nhá.

__________________

ntc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-05-2006, 10:50 AM   #15
NTVinh
Đệ tử 2 túi
 
Tham gia ngày: Apr 2006
Bài gửi: 32
:
Xây dựng lớp vật lý trên cơ sở chuẩn RS485

Bài viết này tiếp nối cho vấn đề mà tôi đang đề cập, xây dựng một mạng truyền thông công nghiệp, những bài viết trước tôi đã nói về một số các mào đầu: các ví dụ nhỏ cụ thể là các subroutine cũng như giải thuật về việc truyền data định dạng số thực trên cơ sở vi điều khiển PIC (tất nhiên rồi, PIC được lựa chọn vì bài viết này đang nằm trên http://www.picvietnam.com), một số điều vắn tắt về mô hình tham chiếu OSI. Hôm nay, chúng ta sẽ đề cập đến lớp vật lý trên cơ sở chuẩn RS485 một cách chi tiết hơn, tất nhiên, trong bài viết nho nhỏ này thì cũng thật khó để truyền tải được nhiều lắm những vấn đề.
- RS485 là chuẩn truyền thông do EIA đưa ra, có khả năng truyền thông đa điểm trên bus chung duy nhât.
- Cấu hình mạng thông dụng nhất là sử dụng 2 dây dẫn cho việc truyền thông data, trong trường hợp này thì, hệ thống chỉ làm việc trong chế độ truyền thông bán song công (half-duplex). Có thể nói thêm về cấu hình này là, đây là cấu hình mà cho phép ta xây dựng lớp Datalink mềm dẻo hơn (so với cấu hình sử dụng 4 dây dẫn, đề cập ngay sau đây). Một cấu hình mạng khác là sử dụng 4 dây dẫn cho việc truyền thông data, trong trường hợp này thì, hệ thống làm việc trong chế độ truyền thông song công (full-duplex).
- Số lượng thành viên tham gia trong mạng, có thể nói rằng đây chỉ là một con số mang tính thời sự, lên tới 128 thành viên.
- Các qui định về mặt điện học, hay nói cách khác là các thông số quan trọng về mặt điện học của RS485 (có lẽ tôi cũng chỉ muốn đề cập đến nó hơn là các qui định về mặt cơ học..., điều này các bạn có thể tham khảo thêm: ví dụ về giắc nối, vỏ bọc chống nhiều cho cáp truyền thông, loại cáp là cặp dây xoắn...): RS485 sử dụng tín hiệu áp chênh lệch đối xứng trên đôi dây dẫn. Các trở đầu cuối cần được cài vào tại đầu cuối của mạng, điều này sẽ tránh được (triệt tiêu được) các sóng phản hồi trên đường dây dẫn. (Các bạn có thể hiểu rõ hơn về vấn đề sóng tới, sóng phản hồi cũng như tác hại của nó trong lý thuyết đường dây dài). Có lẽ, đấy là các thông số quan trọng trực tiếp liên quan đến việc xây dựng mạng RS485 trên quan điểm của người thiết kế.
Tôi xin giới thiệu một số IC truyền thông RS485 tiêu biểu: 75176, IL485 (con này thì tuyệt cú mèo).
Nguyen The Vinh.

thay đổi nội dung bởi: NTVinh, 17-05-2006 lúc 02:22 PM.
NTVinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ðiều Chỉnh
Xếp Bài

Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
Căn bản về xử lý ảnh? falleaf Xử lý ảnh 26 21-08-2016 01:14 AM
bài tập thực hành căn bản orcad tanhot Thực hành 24 05-07-2011 09:26 AM
Tự động hóa nguyên công chế tạo tinhthanthep PIC - Thiết kế và Ứng dụng 1 17-01-2006 09:42 AM


Múi giờ GMT. Hiện tại là 04:27 PM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam