Chương 4 : LẬP TRÌNH HỆ THỐNG
4.2 Lưu đồ thuật toán hệ thống
4.2.1.6 Lưu đồ thuật toán trên Arduino
Hình 4.6 Lưu đồ thuật tốn trên Arduino
Arduino thực hiện hai chức năng chính đó là đọc dữ liệu từ cảm biến và gửi dữ liệu đọc được lên PLC Client. Hai chức năng đó là hai chương trình con trong lưu đồ thuật tốn (xem Hình 4.6) cụ thể từng quá trình (xem Hình 4.7) và (xem Hình 4.8).
Theo lưu đồ thuật toán, đầu tiên, khởi tạo các biến, mảng lưu trữ, phục vụ cho từ chức năng chính cụ thể ở đây là các chương trình con.
Arduino đọc dữ liệu từ cảm biến, sau khi có dữ liệu, q trình kiểm tra kích thước dữ liệu diễn ra, nếu kích thước phù hợp với kích thước vùng nhớ cấp sẵn thì quá trình gửi dữ liệu lên PLC Client được tiến hành cịn nếu kích thước quá lớn thì Arduino sẽ lấy lại dữ liệu cho đến khi kích thước phù hợp với vùng nhớ quy định.
Giám sát điện năng tiêu thụ toà nhà sử dụng truyền thông Modbus TCP/IP
Nếu khi phản hồi khơng thành cơng thì q trình lại quay trở lại khởi tạo các biến và tiếp tục quá trình cho đến khi có thể truy cập được dữ liệu.
Các Holding register là các vùng nhớ có địa chỉ được khởi tạo sẵn. Mục đích của các thanh ghi này là lưu trữ dữ liệu đích đọc từ cảm biến, sẵn sàng cho truyền thông Modbus TCP/IP.
Đối với việc gửi dữ liệu từ Arduino lên PLC Client ở từng trạm, nhóm sử dụng chuẩn truyền thơng Modbus TCP/IP. Đầu tiên, khởi tạo địa chỉ MAC và IP trên IDE để định địa chỉ cho Arduino. Khi khởi tạo thành công, hàm mb.config(MAC,IP) được thiết lập. Hàm này được xem như là địa chỉ giúp định danh các trạm với nhau từ đó khơng bị nhầm khi mở rộng nhiều trạm giám sát.
Khi khởi tạo được địa chỉ Modbus, Arduino sẽ tiếp tục xử lý chạy một request mb.task() (xem Hình 4.9). Hàm request này với mục đích là gửi tín hiệu yêu cầu cho phép truyền từ Arduino lên PLC với địa chỉ đã định sẵn và nhận ngược lại phản hồi chấp nhận từ PLC.
Sau khi chạy hàm Request thành cơng, q trình gửi đảm bảo, thì lúc đó các Pointer được gán dữ liệu khi đọc dữ liệu từ module cảm biến dòng sẽ move dữ liệu sang các Holding Register sẵn sàng dữ liệu cho phép gửi lên PLC.
Giám sát điện năng tiêu thụ tồ nhà sử dụng truyền thơng Modbus TCP/IP
Hình 4.8 Lưu đồ thuật tốn gửi dữ liệu lên PLC Client lên PLC Client
Hình 4.9 Lưu đồ thuật tốn hàm MB.task()
Hàm request có một chức năng rất quan trọng, mục đích của hàm này là tạo kết nối Modbus TCP/IP và duy trì kết nối khi kết nối được khởi tạo.
Từ lưu đồ thuật toán chạy hàm request (xem Hình 4.9). Ban đầu, chương trình bắt đầu thực hiện kiểm tra kết nối nếu đã kết nối truyền thông giữa Arduino với PLC Client là Modbus TCP/IP đã được khởi tạo thì kết nối vẫn được duy trì và quá trình gửi dữ liệu lên PLC Client sẵn sàng, cịn nếu chưa có khởi tạo kết nối thì chương trình sẽ chạy kết nối lần đầu bằng cách khởi tạo truyền thơng Modbus TCP/IP. Sau khi đã có kết nối lần đầu thì quá trình gữi dữ liệu sẽ được duy trì mà khơng cần phải chạy lại q trình kiểm tra kết nối.
Giám sát điện năng tiêu thụ tồ nhà sử dụng truyền thơng Modbus TCP/IP