PIC Vietnam

Go Back   PIC Vietnam > Truyền thông > Giao tiếp cổng COM và LPT

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

Giao tiếp cổng COM và LPT RS232, RS485 và LPT là những giao tiếp cơ bản và kinh điển khi mới học về vi điều khiển...

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 20-03-2013, 12:25 AM   #1
doantoansai
Nhập môn đệ tử
 
Tham gia ngày: Nov 2012
Bài gửi: 2
:
[Need Help] Modbus + RS485

Đồ án môn học hiện tại của em đang làm về mạng rs485 sử dụng giao thức modbus, master + slave là PIC hết. Em có tham khảo trong example của CCS nhưng càng đọc càng thấy bế tắc. Cơ bản nó có các hàm truyền nhận như này

Code:
 read_all_coils();
   read_all_inputs();
   read_all_holding();
   read_all_input_reg();
   write_coils();
   write_regs();
   write_coil();
   write_reg();
   read_all_coils();
   read_all_holding();
Em không rõ bản chất của những hàm này là như nào? Đọc tất cả đầu vào, đọc cuộn dây???

Cơ bản em chỉ cần master truyền dữ liệu xuống các slave, đọc các dữ liệu từ các slave. Bác nào đã từng kinh qua con modbus này vào giải đáp hộ em với ạ
Bình thường mọi người hay làm mạng RS485 bằng gì vậy? Ai đã từng làm rồi chia sẻ kinh nghiệm. Em xin trân thành cảm ơn và "hậu tạ" luôn.

Project em làm theo mẫu của ccs đính kèm dưới.
File Kèm Theo
File Type: rar Mod_bus.rar (129.2 KB, 221 lần tải)
doantoansai vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-03-2013, 03:50 PM   #2
Delfy_Coltech
Đệ tử 4 túi
 
Delfy_Coltech's Avatar
 
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Hanoi, Vietnam
Bài gửi: 78
:
Thumbs up Một vài chia sẻ...

Hi bạn,
Đoạn code bạn đưa lên chỉ là các hàm chức năng tự định nghĩa được gọi ra trong chương trình.
Cái đó nó không có ý nghĩa gì ở đây cả!
Mình có một vài lời khuyên để bạn có thể hoàn thành đồ án môn học của bạn một cách nhanh nhất và hiểu rõ bản chất của nó nhất!
Thứ nhất, bạn đã hiểu rõ về giao tiếp RS485 chưa? Khoảng cách truyền xa tín hiệu được bao nhiêu m? số agent kết nối vào mạng maximum là bao nhiêu con?
Thứ hai, mạch truyền thông cho giao thức này như thế nào? Post schematic của bạn lên đây.
--> Cách truyền dữ liệu có điểm gì khác so với dùng RS232?
Thứ ba, khi hiểu rõ 2 điều trên rồi thì ta mới bàn đến giao thức truyền dữ liệu. Modbus cũng chỉ là một giao thức thôi mà! Hiểu rõ nó rồi thì làm sẽ không khó!

Bạn trả lời giúp mình mấy câu hỏi trên nhé!

BRs,
Delfy.
__________________
Mechatronics Department
University of Engineering and Technology, VNUH.
Delfy_Coltech vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 27-03-2013, 05:34 PM   #3
doantoansai
Nhập môn đệ tử
 
Tham gia ngày: Nov 2012
Bài gửi: 2
:
Trích:
Nguyên văn bởi Delfy_Coltech View Post
Hi bạn,
Đoạn code bạn đưa lên chỉ là các hàm chức năng tự định nghĩa được gọi ra trong chương trình.
Cái đó nó không có ý nghĩa gì ở đây cả!
Mình có một vài lời khuyên để bạn có thể hoàn thành đồ án môn học của bạn một cách nhanh nhất và hiểu rõ bản chất của nó nhất!
Thứ nhất, bạn đã hiểu rõ về giao tiếp RS485 chưa? Khoảng cách truyền xa tín hiệu được bao nhiêu m? số agent kết nối vào mạng maximum là bao nhiêu con?
Thứ hai, mạch truyền thông cho giao thức này như thế nào? Post schematic của bạn lên đây.
--> Cách truyền dữ liệu có điểm gì khác so với dùng RS232?
Thứ ba, khi hiểu rõ 2 điều trên rồi thì ta mới bàn đến giao thức truyền dữ liệu. Modbus cũng chỉ là một giao thức thôi mà! Hiểu rõ nó rồi thì làm sẽ không khó!

Bạn trả lời giúp mình mấy câu hỏi trên nhé!

BRs,
Delfy.
Cảm ơn anh đã quan tâm, em có tìm hiểu về rs485 mức cơ bản và được biết như sau

1. RS485 là chuẩn truyền thông vật lý dựa vào sự chênh lệch điện áp giữa 2 dây tín hiệu để xác định mức 0 và 1, trường hợp sụt áp thì cả 2 dây đều bị sụt nên độ chính xác của tín hiệu không suy hao nhiều. Khoảng cách truyền có thể lên đến 1km, số agent tối đa của mạng là 128. Các slave sẽ được đánh địa chỉ, khi master truyền tín hiệu, các slave lắng nghe nếu đúng địa chỉ của mình thì mới thực hiện công việc tiếp theo, không phải địa chỉ của mình thì không làm gì cả. Sau khi nhận được gói tin thì slave phải hồi đáp lại Master trong 1 khoảng time nhất định, nếu không sẽ bị tính timeout.

2. Vì đồ án của em là đồ án môn học nên chỉ dừng ở khoảng 5-6 slave, sử dụng IC max485 nối vào chân RC6 RC7, 2 chân RE OE nối chung vào 1 pin để điều khiển việc truyền nhận.
RS485 là mạng đa điểm còn RS232 chỉ kết nối 2 thiết bị với nhau, khoảng cách truyền gần, phân biệt mức 0 1 bằng cách so sánh điện áp 2 dây tín hiệu với GND.

Giaos viên hướng dẫn gợi ý tìm hiểu về modbus, em có tìm trong example của CCS ( C:\Program Files\PICC\Examples ) đấu nối đúng như tệp đính kèm nhưng đang vướng mắc là: chúng ta cần thao tác với các cổng vào ra của PIC nhưng trong ví dụ nó không hề động đến các cổng này, vậy thì làm sao điều khiển thiết bị được.

Em cũng đã nghĩ đến phần tự xây dựng giao thức, cơ chế tương tự như modbus (tất nhiên là không hoàn thiện bằng), nhưng lần đầu tiên làm về mảng truyền thông nên bỡ ngỡ. Cảm ơn anh và mọi người đã quan tâm và giúp đỡ.
Mong hồi âm
doantoansai vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-04-2013, 12:59 AM   #4
Delfy_Coltech
Đệ tử 4 túi
 
Delfy_Coltech's Avatar
 
Tham gia ngày: Nov 2008
Nơi Cư Ngụ: Hanoi, Vietnam
Bài gửi: 78
:
Hi bạn,
Xin lỗi vì bận cv nên giờ mới hồi đáp cho bạn đươc!
Về RS485 bạn hiễu như thế là tạm ổn. Chú ý số Agent tối đa ko phải 128 đâu nhé!
Về giao thức truyền thông ta chưa bàn đến vội, bạn thiết kế và làm mạch phần cứng đi đã nhé! Rồi code cho giao tiếp 485 đơn giản sau đó code cho đồ án môn của ban!
__________________
Mechatronics Department
University of Engineering and Technology, VNUH.
Delfy_Coltech vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lờ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


Múi giờ GMT. Hiện tại là 11:19 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