BOARD
Vì hệ thống dùng RS485 để liên kết các node mạng, do đĩ để cĩ thể thu thập dữ liệu chính xác từ các node địi hỏi phải quản lý đường truyền theo cách thức xác định sao cho bảo đảm chỉ cĩ một node được phát trên đường mạng tại một thời điểm. Để thực hiện điều này chương trình giữa node yêu cầu phát và node yêu cầu nhận phải cĩ sự phối hợp theo một giao thức (protocol) cĩ thể quản lý được đường truyền và giao thức được chọn sử dụng trong chương trình là giao thức Master/Slave do tính đơn giản, dễ thực hiện và hiệu quả. Máy tính đĩng vai trị là Master yêu cầu thu thập dữ liệu từ các Slave là các board Vi xử lý.
Vì hệ thống dùng RS485 để liên kết các node mạng, do đĩ để cĩ thể thu thập dữ liệu chính xác từ các node địi hỏi phải quản lý đường truyền theo cách thức xác định sao cho bảo đảm chỉ cĩ một node được phát trên đường mạng tại một thời điểm. Để thực hiện điều này chương trình giữa node yêu cầu phát và node yêu cầu nhận phải cĩ sự phối hợp theo một giao thức (protocol) cĩ thể quản lý được đường truyền và giao thức được chọn sử dụng trong chương trình là giao thức Master/Slave do tính đơn giản, dễ thực hiện và hiệu quả. Máy tính đĩng vai trị là Master yêu cầu thu thập dữ liệu từ các Slave là các board Vi xử lý.
Địa chỉ node Data (gồm 6 byte) Checksum
Địa chỉ của mỗi board sẽ là giá trị đọc về trên hai bit PC6 và PC7, sau khi reset, MCU sẽ đọc PORTC và lưu vào biến MYADD, giá trị của biến này được xem như là địa chỉ board, do chỉ sử dụng hai bit nên các địa chỉ mà board cĩ thể nhận được sẽ là %1100000($C0), %10000000($80), %01000000($40). Hai bit PC6 và PC7 khơng sử dụng ở cùng mức logic thấp vì cĩ thể xảy ra trường hợp địa chỉ board bằng $00 là giá trị mặc định lưu trong biến MYADD khi khởi động chương trình. MYADD sẽ giữ địa chỉ board khi chương trình chạy cho dù mức logic trên hai bit PC6 và PC7 thay đổi. MYADD sẽ nhận địa chỉ mới (nếu thay đổi trên PORTC) khi nút reset được nhấn.
Khi nhận được một byte từ bộ đệm, chương trình sẽ kiểm tra xem byte này cĩ bằng MYADD khơng, nếu bằng, tức byte truyền xuống là địa chỉ board, MCU sẽ chờ khoảng 1ms để bảo đảm đường truyền trống và phát vùng dữ liệu (trong một bộ đệm định trước – là 3 byte trong vùng RAM nội) lên PC. Nếu khơng phải là địa chỉ của mình, MCU sẽ khơng làm gì cả.
Địa chỉ của node sẽ được phát lên đầu tiên đĩng vai trị như ACK báo cho Master biết dữ liệu thuộc node nào, sau đĩ là đến các byte dữ liệu, các byte này sẽ được cộng vào biến Checksum trước khi được phát, khi phát hết dữ liệu, byte cuối cùng được phát đi là Checksum. Để tránh trùng địa chỉ và dữ liệu, tất cả các byte data và Checksum sẽ được chuyển sang dạng mã ASCII trước khi phát. Do số byte data là 3 byte (cố định) nên khi phát dưới dạng mã ASCII, số byte dữ liệu mà