BÁO CÁO PROJECT KĨ THUẬT LẬP TRÌNH_ Đề tài: Viết thư viện cho giao thức MODBUS

22 3 0
BÁO CÁO PROJECT KĨ THUẬT LẬP TRÌNH_ Đề tài:  Viết thư viện cho giao thức MODBUS

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BÁO CÁO PROJECT KĨ THUẬT LẬP TRÌNH Đề tài: Viết thư viện cho giao thức MODBUS MỤC LỤC Phần A . Đề bài Phần B . Nội dung I. Tổng quan về MODBUS II. Modbus RTU III. Lập trình 1. Hmtchar, Hmplatf 2. MbusProtocolErrors 3. MbusMasterFunctions 4. MbusSerialClientBase 5. MbusRtuMasterProtocol IV. Demo Phần A : Đề bài Đề bài : Đề 1.Viết thư viện làm việc với modbus. Chương trình demo cho phép truyền nhận thông tin qua cổng serial theo các chế độ khác nhau. Chương trình demo sẽ gồm 2 chương trình: A và B. Chương trình A gửi dữ liệu (một chuỗi hoặc giá trị gì đó từ dòng lệnh) sang chương trình B. Chương trình B gửi dữ liệu (một chuỗi hoặc giá trị gì đó từ dòng lệnh) trả lại chương trình A. Ghi log dữ liệu truyền đi và nhận được vào 1 file văn bản nhị phân, kèm thời gian gửinhận.

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI BÁO CÁO PROJECT KĨ THUẬT LẬP TRÌNH Đề tài: Viết thư viện cho giao thức MODBUS GVHD: Thầy Nguyễn Việt Tùng Nhóm : Dương Thế Tài 20174179 Nguyễn Tuấn Dũng 20173772 Nguyễn Văn Tuấn 20174333 Nguyễn Tuấn Cường 20173711 Nguyễn Tiến Thành 20174225 MỤC LỤC Phần A Đề Phần B Nội dung I Tổng quan MODBUS II Modbus RTU III Lập trình Hmtchar, Hmplatf MbusProtocolErrors MbusMasterFunctions MbusSerialClientBase MbusRtuMasterProtocol IV Demo V Kết Luận Phần A : Đề Đề : Đề 1.Viết thư viện làm việc với modbus Chương trình demo cho phép truyền nhận thông tin qua cổng serial theo chế độ khác Chương trình demo gồm chương trình: A B Chương trình A gửi liệu (một chuỗi giá trị từ dịng lệnh) sang chương trình B Chương trình B gửi liệu (một chuỗi giá trị từ dịng lệnh) trả lại chương trình A Ghi log liệu truyền nhận vào file văn / nhị phân, kèm thời gian gửi/nhận Phần B : Nội dung I Tổng quan Modbus MODBUS Modicon (hiện thuộc Schneider Electric) phát triển năm 1979, phương tiện truyền thông với nhiều thiết bị thơng qua cặp dây xoắn đơn Ban đầu, hoạt động RS232, sau sử dụng cho RS485 để đạt tốc độ cao hơn, khoảng cách dài hơn, mạng đa điểm (multidrop) MODBUS nhanh chóng trở thành tiêu chuẩn thơng dụng ngành tự động hóa, Modicon cho mắt cơng chúng protocol miễn phí MODBUS hệ thống “chủ - tớ”, “chủ” kết nối với hay nhiều “tớ” “Chủ” thường PLC, PC, DCS, hay RTU “Tớ” MODBUS RTU thường thiết bị trường, tất kết nối với mạng cấu hình multi-drop Khi chủ MODBUS RTU muốn có thông tin từ thiết bị, chủ gửi thông điệp liệu cần, tóm tắt dị lỗi tới địa thiết bị Khung truyền chung Modbus : Hiện nay, có 03 chuẩn modbus sử dụng phổ biến cơng nghiệp - tự động hóa là: Modbus RTU, Modbus ASCII, Modbus TCP :  Modbus ASCII:  Mọi thơng điệp mã hóa hexadeci-mal, sử dụng đặc tính ASCII bit Đối với byte thơng tin, cần có byte truyền thơng, gấp đơi so với MODBUS RTU hay MODBUS/TCP. Tuy nhiên, MODBUS ASC II chậm số loại protocol, lại thích hợp modem điện thoại hay kết nối sử dụng sóng radio ASC II sử dụng tính phân định thông điệp Điều quan trọng đề cập đến modem chậm, điện thoại di động, kết nối ồn hay phương tiện truyền thơng khó tính khác  Modbus RTU: Dữ liệu mã hóa theo hệ nhị phân, cần byte truyền thông cho byte liệu Đây thiết bị lí tưởng RS 232 hay mạng RS485 đa điểm, tốc độ từ 1200 đến 115 baud Tốc độ phổ biến 9600 đến 19200 baud MODBUS RTU protocol công nghiệp sử dụng rộng rãi    Modbus TCP:  MODBUS/TCP đơn giản MODBUS qua Ethernet Thay sử dụng thiết bị cho việc kết nối với thiết bị tớ, địa IP sử dụng Với MODBUS/TCP, liệu MODBUS tóm lược đơn giản gói TCP/IP Do đó, mạng Ethernet hỗ trợ MODBUS/ IP hỗ trợ MODBUS/TCP Modbus gateway thiết bị cho phép chuyển đổi qua lại giao thức RTU TCP Thơng thường thiết bị có 01 cổng serial ( RS232/RS485) 01 cổng Ethernet II Modbus RTU Giao thức Modbus RTU giao thức mở, sử dụng đường truyền vật lý RS-232 RS485 mơ hình dạng Master-Slave Đây giao thức sử dụng rộng rãi nhiều lĩnh vực BMS (Building Management Systems), tự động hóa, cơng nghiệp, điện lực, Modbus coi giao thức truyền thông hoạt động tầng "Application", cung cấp khả truyền thông Master/Slave thiết bị kết nối thông qua bus network • Address : địa nhận liệu (đối với Slave) liệu nhận từ địa (đối với Master). Địa quy định từ - 254 • Function: quy định từ Master, xác định yêu cầu công việc cho thiết bị Slave • Data : dữ liệu trao đổi giữa Master và Slave • Đọc liệu:   • Master:  2 byte địa liệu - byte độ dài liệu             • Slave: 2 byte địa liệu - byte độ dài liệu - n byte liệu đọc • Ghi liệu:    • Master: 2 byte địa liệu  - byte độ dài liệu - n byte liệu cần ghi      • Slave: 2 byte địa liệu - byte độ dài liệu   • Byte CRC 16 bit: 2 byte kiểm tra lỗi hàm truyền III Lập trình Sơ đồ bên thể mối quan hệ cấu trúc Modbus với Từ lớp sở MbusMasterFunctions có chứa hàm chức truyền nhận liệu , sau lớp kế thừa bên cho giao thức truyền thông nối tiếp Ngồi , chương trình cịn có thư viện hmtchar hmplatf, MbusProtocolErrors để định nghĩa lỗi xảy trình truyền nhận giao thức kiểu kí tự hàm thư viện tảng có sẵn mơi trường Visual Studio 2019 Hmtchar , Hmplatf + Hệ điều hành * Windows applications #if (defined(_WIN32_WCE) || defined(_WIN32)) && ! defined( CYGWIN ) # if !defined( WIN32 ) # define WIN32 # endif # define _HMPLATF_DETECTED #endif  Qua dòng lệnh định nghĩa trên, ta thấy hệ điều hành sử dụng để chạy chương trình truyền thơng tin qua modbus Win32 + Kiểu kí tự #ifndef _HMTCHAR_H_INCLUDED #define _HMTCHAR_H_INCLUDED // HM platform detection // #include "hmplatf.h" // Platform header // #if defined( WIN32 ) # include #endif // UNICODE support (MS VC++, Win CE) // #if defined (_UNICODE) # ifndef _TCHAR_DEFINED typedef wchar_t TCHAR; # define T(x) L ## x # define _T(x) T(x) # define _TCHAR_DEFINED # endif #else # ifndef _TCHAR_DEFINED typedef char TCHAR; # define T(x) x # define _T(x) T(x) # define _TCHAR_DEFINED # endif #endif #endif /* ifdef _H_INCLUDED */  Những dòng lệnh định nghĩa kiểu kí tự cho chương trình Chương trình sử dụng thư viện “ tchar.h ”, với mục đích giúp kiểu kí tự rộng “ char ” “ wchar ” Tùy thuộc vào đối tượng sử dụng mà số trường hợp chương trình dử dụng “ char ” hay “ wchar ” MbusProtocolErrors + Đây thư viện định nghĩa lỗi kết nối thành công giao thức Modbus #define FTALK_SUCCESS hàm thông báo hoạt động thành công mã trả cho thấy lỗi #define FTALK_ILLEGAL_ARGUMENT_ERROR đối số khơng hợp lệ ,thơng báo có lỗi lập trình tham số truyền cho hàm trả mã lỗi không hợp lệ phạm vi #define FTALK_ILLEGAL_STATE_ERROR lỗi trạng thái không hợp lệ Được dùng để thông báo hàm gọi trạng thái sai, hàm gọi mà giao thức không mở thành công #define FTALK_NO_DATA_TABLE_ERROR dùng định nghĩa hàm bảng liệu cấu hình slave bắt đầu mà không cần thêm bảng liệu #define FTALK_ILLEGAL_SLAVE_ADDRESS slave không hợp lệ cho giao thức nối tiếp #define FTALK_IO_ERROR_CLASS 64 lớp lỗi I/O lỗi lớp báo hiệu cố kết hợp với I/O #define FTALK_IO_ERROR 65 lỗi I/O #define FTALK_OPEN_ERR 66 hàm định nghĩa xuất lỗi mở cổng ổ cắm trường hợp cổng nối tiếp cổng nối tiếp không tồn hệ thống #define FTALK_PORT_ALREADY_OPEN 67 cổng nối tiếp mở cổng nối tiếp xác định cho thao tác mở mở ứng dụng khác #define FTALK_SOCKET_LIB_ERROR 70 lỗi thư viện ổ cắm #define FTALK_LINE_BUSY_ERROR 76 đường nối tiếp bận đường nối tiếp nhận ký tự nhiễu dù trạng thái không nhận liệu #define FTALK_BUS_PROTOCOL_ERROR_CLASS 128 lỗi giao tiếp lỗi lớp cho thấy lỗi giao tiếp modbus /lớp lỗi giao thức fieldbus ,những tín hiệu có lỗi liên quan đến giao thức fieldbus thường xảy /lớp lớp lỗi chung thất bại gián đoạn chức truyền liệu cung cấp nhận khung không hợp lệ phản hồi ngoại lệ #define FTALK_CHECKSUM_ERROR 129 kiểm tra lỗi tín hiệu cho thâý tổng kiểm tra khung nhận không hợp lệ liên kết liệu thường gây lỗi #define FTALK_INVALID_FRAME_ERROR 130 / lỗi khung khơng hợp lệ tín hiệu mà khung nhận không tương ứng theo cấu trúc nội dung với đặc điểm kỹ thuật khơng khớp với khung truy vấn gửi trước #define FTALK_INVALID_REPLY_ERROR 131 lỗi khung không hợp lệ * / tín hiệu mà khung nhận khơng tương ứng theo cấu trúc /nội dung với đặc điểm kỹ thuật khơng khớp với truy vấn gửi trước #define FTALK_INVALID_REPLY_ERROR 131 lỗi trả lời không hợp lệ * Signals that a received reply does not correspond/ tín hiệu mà phản hồi nhận không tương ứng để làm rõ #define FTALK_REPLY_TIMEOUT_ERROR 132 hết thời gian phản hồi tín hiệu hết thời gian truyền liệu , điều xảy thiết bị slave khơng trả lời kịp thời hồn tồn khơng trả lời #define FTALK_SEND_TIMEOUT_ERROR 133 hết thời gian gửi #define FTALK_INVALID_MBAP_ID 134 Invalid MPAB indentifer /ấn định MPAB không hợp lệ giao thức mã định giao dịch thư trả lời khơng xác thiết bị slave phải trả định danh nhận từ master #define FTALK_MBUS_EXCEPTION_RESPONSE 135 phản hồi ngoại lệ modbus #define FTALK_MBUS_ILLEGAL_FUNCTION_RESPONSE 161 phản ứng ngoại lệ chức không hợp lệ #define FTALK_MBUS_ILLEGAL_ADDRESS_RESPONSE 162 Illegal Data Address exception response/phản hồi ngoại lệ liệu địa không hợp lệ #define FTALK_MBUS_ILLEGAL_VALUE_RESPONSE 163 phản ứng ngoại lệ giá trị liệu không hợp lệ #define FTALK_MBUS_SLAVE_FAILURE_RESPONSE 164 / phản ứng phản hồi thiết bị slave thất bại phản hồi ngoại lệ gửi thiết bị nô lệ #define FTALK_MBUS_GW_PATH_UNAVAIL_RESPONSE 170 gateway path phản hồi không hợp lệ #define FTALK_MBUS_GW_TARGET_FAIL_RESPONSE 171 Gateway Target Device Failed exception response / thiết bị gateway đích khơng đáp ứng ngoại lệ MbusMasterFunctions Thư viện chứa hàm chức hàm truyền nhận liệu , cấu hình khung giao tiếp , thời gian , … nằm giao thức Modbus -1bit_access • FC 01 Read Coils • FC 02 Read Discrete Inputs -16bit_access • FC 03 Read Holding Registers • FC 04 Read Input Registers - Đây hàm giao thức modbus Hình ảnh miêu tả giá trị hàm : -Dưới cách giao thức gửi request nhận response -Cịn hàm phát lỗi , hàm respone trả code lỗi -Sau ta tìm hiểu hàm để hiểu rõ cách Modbus làm việc : + FC 03/ Read Holding Registers : - Đọc giá trị ghi liền kề nhớ slave - Max số ghi 125 - Thanh ghi (số 1) đánh số -Trên ví dụ hàm function 03 , đọc liệu ghi liền kề modbus , có request response với câu lệnh , mã Dựa vào sơ đồ thuật toán , hiểu modbus hay master đưa request hệ thống sever kiểm tra cú pháp , giá trị , tham số câu lệnh xem có phù hợp khơng , từ đưa phản hồi phù hợp với thông tin vừa kiểm tra Và qua hàm respone trả ta biết xem cú pháp chưa sai biết sai đâu Phần code: Khai báo biến: totalCounter , successCounter,timeOut, pollDelay, MbusSerialClientBase + Lớp sở cho truyền tin nối tiếp dựa kế thừa hàm chức lớp MbusFunctions Thư viện có hai dạng modbus RTU ASCII khung truyền bên Thư viện cấu kiệt kê bit , bytes , hàm có liên quan đến giao thức nối tiếp Phần code : MbusRtuMasterProtocol Thư viện định nghĩa chi tiết cụ thể cho Modbus RTU ,để ta làm việc chuyên biệt với kiểu nối tiếp RTU Lớp thừa kế tất tính chất lớp Phần code : IV Demo Sau code hàm chương trình ta đến phần chạy chương trình kiểm nghiệm giao thức Modbus Dưới ví dụ để kiểm tra thư viện viết : -Đầu tiên ta cấu hình cho slave ảo : + FC 02 Read Discrete Inputs, ghi file text + FC 03 :Read Holding Registers dạng Hex ghi file text + FC 03 :ReadHoldingRegisters dạng Binary ghi file text ... FTALK_BUS_PROTOCOL_ERROR_CLASS 128 lỗi giao tiếp lỗi lớp cho thấy lỗi giao tiếp modbus /lớp lỗi giao thức fieldbus ,những tín hiệu có lỗi liên quan đến giao thức fieldbus thư? ??ng xảy /lớp lớp lỗi chung... MODBUS/ TCP, liệu MODBUS tóm lược đơn giản gói TCP/IP Do đó, mạng Ethernet hỗ trợ MODBUS/ IP hỗ trợ MODBUS/ TCP Modbus gateway thiết bị cho phép chuyển đổi qua lại giao thức? ?RTU TCP Thơng thư? ??ng thiết... RS232/RS485) 01 cổng Ethernet II Modbus RTU Giao thức Modbus RTU giao thức mở, sử dụng đường truyền vật lý RS-232 RS485 mơ hình dạng Master-Slave Đây giao thức sử dụng rộng rãi nhiều lĩnh vực

Ngày đăng: 21/03/2023, 09:12

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan