CHƯƠNG 4: KẾT QUẢ MÔ PHỎNG
4.3. KẾT QUẢ MÔ PHỎNG KHI KẾT NỐI MÁY TÍNH NHÚNG VÀ MÁY TÍNH NGOÀI
4.3.6. Mô phỏng quá trình đọc thanh ghi analog (FC=4)
Slave: Cài đặt giá trị cho thanh ghi analog của slave như hình 4.35. Các giá trị từ thanh ghi 0 đến 8 là từ 0 đến 80 theo cấp số cộng 10
Hình 4.6: Cài đặt giá trị cho đầu vào số của slave
Master thực hiện quá trình đọc thanh ghi analog và cho kết quả như sau
DEBUG:root:Read Input register from 1 to 8
DEBUG:pymodbus.transaction:Running transaction 7 DEBUG:pymodbus.factory:Factory Response[4]
DEBUG:pymodbus.transaction:adding transaction 0 DEBUG:pymodbus.transaction:getting transaction 7 DEBUG:root:Receive Expected Response
DEBUG:root:Input Register 1 value is 10 DEBUG:root:Input Register 2 value is 20 DEBUG:root:Input Register 3 value is 30 DEBUG:root:Input Register 4 value is 40 DEBUG:root:Input Register 5 value is 50 DEBUG:root:Input Register 6 value is 60 DEBUG:root:Input Register 7 value is 70 DEBUG:root:Input Register 8 value is 80 DEBUG:root:Done command
DEBUG:root:****************************
Như vậy, với các lớp và thuật toán đã đưa ra thì máy tính đã cho 2 máy ảo hoạt động độc lập như Master và Slave thực tế, đồng thời cho kết quả đúng với tiêu chuẩn của mạng Modbus.
88
Đối với kết nối giữa máy tính nhúng và máy tính ngoài, kết quả có khác với mô phỏng bằng máy ảo. Sự khác nhau nằm ở vị trí cuộn dây được bật tắt bị ngược so với khi mô phỏng máy tính ảo. Ví dụ master muốn tác động cuộn 1 thì slaver ghi nhận tại cuộn 15. Sự sai khác nằm ở việc quy định thanh ghi 16 bit ở hai chương trình (chương trình RSIM và chương trình bằng python trong luận văn) nằm ở hai hướng ngược nhau. Bit đầu của chương trình này là bit cuối của chương trình kia.
Đối với thanh ghi (holding register và input register), 2 phương pháp cho kết quả giống nhau.
Trong thực tế cần phải kiểm tra lại vị trí của cuộn dây, thanh ghi để thống nhất với nhau trước khi lập trình ở lớp ứng dụng
89
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI Các điểm đã làm được
Luận văn đã đưa ra được thuật toán đúng giúp máy tính nhúng Linux có thể truyền nhận khung truyền Modbus, xử lý khung truyền đúng. Bên cạnh đó còn có thể nhận biết các lỗi. Luận văn đưa ra được cách xây dựng các lớp và thuật toán bằng ngôn ngữ python để thực hiện mô phỏng mạng truyền thông công nghiệp Modbus RTU Xây dựng khung truyền gởi đi và xử lý khung truyền một cách hiệu quả. Các mã chức năng được xác định đúng. Cách xếp dữ liệu vào kho được đưa ra giúp slave có thể kiểm soát dữ liệu vào ra một cách chính xác. Bằng các lớp và thuật toán đã nêu, người lập trình đã có thể thực hiện để viết ứng dụng riêng.
Các điểm hạn chế
Do hoàn thành trong thời gian ngắn nên luận văn vẫn chưa bao quát hết tất cả các mặt của Modbus RTU như chưa đưa ra được chẩn đoán lỗi khung truyền một cách đầy đủ. Bên cạnh đó, mã nguồn chưa tính đến các vấn đề tối ưu thời gian. Mã nguồn chỉ có chức năng truyền thông tin giữa các nút mạng theo chuẩn modbus. Ngoài ra không có chức năng xử lý khác như PID, mạng neuron… Việc thêm các chức năng khác sẽ được người phát triển trên các lớp Modbus này.
Hướng phát triển đề tài
Thêm vấn đề về tối ưu thời gian cho các ứng dụng thời gian thực. Bên cạnh đó cần kiếm chứng với các thiết bị sử dụng mạng truyền thông công nghiệp trong thực tế để đảm bảo tính đúng đắn của thuật toán và ngôn ngữ lập trình.
Ngoài ra luận văn còn có thể sử dụng các lớp đã nêu để phát triển thành Modbus Ascii hoặc thêm các lớp khác để thành Modbus TCPIP. Máy tính nhúng có cổng Ethernet có thể phục vụ cho Modbus TCPIP nhưng cần phải thay đổi hình thức truyền dữ liệu vì nền tảng truyền dữ liệu ở lớp vật lý được thực hiện nhờ RS232/RS485 chứ không dùng cổng Ethernet RJ45.
90
DANH MỤC ĐỀ TÀI THAM KHẢO
[1] MODICON Inc, “Modicon Modbus Protocol Reference Guide,”
Modbus.org, 1996. [Trực truyến]. Xem tại
modbus.org/docs/PI_MBUS_300.pdf. [Ngày truy cập: tháng 12, 2016].
[2] Modbus Organization, “MODBUS over serial line specification and implementation guide V1.02,” Modbus.org, 2006. [Trực tuyến]. Xem tại http://www.modbus.org/docs/Modbus_over_serial_line_V1_02.pdf. [ Ngày truy cập: tháng 11, 2016].
[3] Hoàng Minh Sơn, Mạng truyền thông công nghiệp, tái bản lần thứ 2. Nhà xuất bản khoa học và kĩ thuật, Hà Nội, 2006.
[4] Spehro Pefhany, “Modbus Protocol,” Interlog, 2006. [Trực tuyến]. Xem tạị www.interlog.com/~speff/usefulinfo/modbus_protocol.pdf. [ Ngày truy cập:
tháng 11, 2016].
[5] Jonas Berg, “MinimalModbus,” Github, 2015. [Trực truyến]. Xem tại https://github.com/pyhys/minimalmodbus. [Ngày truy cập: tháng 3, 2017]
[6] Galen Collins, “Pymodbus Documentation,” Readthedocs, 2017. [Trực tuyến]. Xem tại https://media.readthedocs.org/pdf/pymodbus/latest /pymodbus.pdf. [Ngày truy cập: tháng 3, 2017].
[7] Wikipedia, “Modbus,” Wikipedia, 2017. [Trực tuyến]. Xem tại
https://en.wikipedia.org/wiki/Modbus. [Ngày truy cập: tháng 3, 2017].