Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 23 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
23
Dung lượng
2,64 MB
Nội dung
HỌC VIỆN CƠNG NGHỆ BƯU CHÍNH VIỄN THƠNG BÁO CÁO MÔN HỌC: Thiết kế ngoại vi kỹ thuật ghép nối NHĨM MƠN HỌC: 10 Chủ đề nghiên cứu: Tìm hiểu giao tiếp Modbus - RTU Giảng viên: Dương Quang Duy MỤC LỤC I.Tổng quan giới thiệu chung Modbus – RTU 1.1.Khái niệm 1.2.Lịch sử đời, sao? 1.3.So sánh với chuẩn giao tiếp khác 1.4.Ưu,Nhược điểm 1.5.Ứng dụng II.Mơ hình 2.1.Mơ hình ghép nối 2.2.Thiết lập 2.3.Cấu trúc liệu 2.4.Thủ tục 2.5.Bóc tách liệu III.Ví dụ IV.Một số nguồn tham khảo I.Tổng quan giới thiệu chung Modbus – RTU 1.1.Khái niệm - 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, Chắc hẳn có bạn tự hỏi, giao thức Modbus lại thông dụng thế, đến đâu, đụng vào thiết bị có giao thức Nó Ổn định - Đơn giản - dễ dùng - 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 Trên mô hình OSI, Modbus đặt lớp Modbus xác định giao thức hoạt động theo "hỏi/đáp" sử dụng "function codes" tương ứng để hỏi đáp - Giao thức truyền thông ModBUS với ưu điểm khả tích hợp mở rộng cao, tốc độ truyền ổn định khoảng cách truyền xa (trung bình khoảng 1200 mét) Chính ưu điểm mà truyền thông modbus ngày phát triển rộng rãi để thay dạng truyền thống analog (4-20mA , 0-10V,…) digital Đặc biệt khả tích hợp với mơi trường internet giao thức modbus tcp/ip Chỉ cần có kết nối internet, ta quan sát tất thứ nhà máy từ cảm biến nhiệt độ pt100, cảm biến đo mức chất lỏng, cảm biến áp suất,… điều khiển hoạt động thiết bị Và tất nhiên, thứ hoạt động, cần thiết bị có hỗ trợ giao thức modbus modbus loại giao thức truyền liệu dùng để giao tiếp thiết bị với Modbus bao gồm thiết bị master thiết bị slave Trong master có 1, cịn slave lên đến 252 thiết bị nối tiếp với Slave thiết bị dùng nhà máy cảm biến nhiệt độ, cảm biến áp suất, cảm biến đo mức nước, … Khi Master cần thông tin slave phát tín hiệu đến slave Các slave gửi gói tin để trả lời cho master 1.2.Lịch sử đời, sao? -Modbus chuẩn truyền thơng đời vào năm 1979 Công ty Modicon Lúc này, chuẩn modbus làm với mục đích để sử dụng với PLC hãng -Hiện nay, công ty Modicon thụộc sở hữu hãng Chneider Electric -Việc phát triển cập nhật giao thức modbus quản lý Modbus Organization Modbus Organization hiệp hội người dùng nhà cung cấp thiết bị có sử dụng chuẩn Modbus 1.3.So sánh với chuẩn giao tiếp khác -Sự khác biệt RTU TCP Một tiêu đề byte gọi MBAP Header (Modbus Application Header) thêm vào đầu thư Tiêu đề có liệu sau: Mã định danh (Transaction ID): byte Client đặt để nhận dạng yêu cầu Các byte lặp lại Server phản hồi không nhận theo thứ tự yêu cầu Định dạng giao thức (Protocol ID): byte Client đặt, luôn = 00 00 Độ dài (Length): byte xác định số byte thông điệp cần theo dõi Định dạng đơn vị (UnitlD): byte đặt Client Server lặp lại để xác định Slave từ xa kết nối đường truyền nối tiếp bus khác Yêu cầu tương đương với ví dụ Modbus RTU này: 11 03 006B 0003 7687 Trong đó: 11: Địa SlaveID (17 = 11 hex) 03: Function code (đọc ghi giữ đầu tương tự (Analog Output Holding Registers)) 006B: địa liệu ghi yêu cầu (40108-40001 = 107 = 6B hex) 0003: tổng số ghi yêu cầu (đọc ghi 40108 đến 40110) 7687: CRC (kiểm tra dự phòng theo chu kỳ) để kiểm tra lỗi Modbus TCP tương đương là: 0001 0000 0006 11 03 006B 0003 Trong đó: 0001: mã định danh 0000: định dạng giao thức 0006: độ dài tin nhắn (6 byte) 11: định dạng đơn vị (17 = 11 hex) 03: Function code (đọc ghi giữ đầu tương tự (Analog Output Holding Registers)) 006B: địa liệu ghi yêu cầu (40108-40001 = 107 = 6B hex) 0003: tổng số ghi yêu cầu (đọc ghi 40108 đến 40110) -Sự khác biệt ASCII RTU Ví dụ: phản hồi yêu cầu hiển thị byte liệu Registers 40108 đến 40110 từ địa 17 Slave 11 03 00 6B 00 03 Yêu cầu từ Modbus ASCII hoàn chỉnh thực cách thêm ký tự phân định thông điệp trước Dấu hai chấm thêm vào đầu thơng điệp, LRC, ký tự xuống dịng nguồn cấp liệu dòng thêm vào cuối thông điệp sau: : 1 0 B 0 E CR LF Mỗi ký tự coi ký tự ASCII thay giá trị hex để đưa thơng điệp cuối 3A 3131 3033 3030 3642 3030 3033 3745 0D 0A Kích thước yêu cầu Modbus ASCII 17 byte (170 bit) Thông điệp Modbus RTU tương đương là: 11 03 00 6B 00 03 76 87 Kích thước yêu cầu Modbus RTU byte (80 bit) - Các loại truyền thông Modbus dùng công nghiệp: Truyền thông modbus bao gồm loại modbus Modbus rtu, modbus tcp/ip modbus ascii Trong dùng nhiều loại modbus rtu modbus tcp/ip Với loại Modbus RTU, người ta dùng cỏng kết nối cổng dạng serial RS232 RS485 Còn modbus TCP/IP, cổng giao tiếp cổng RJ-45 1.4.Ưu, nhược điểm -Ưu điểm: + Các tín hiệu truyền dây tín hiệu RS485 với khoảng cách truyền xa 1200m + Giảm tối thiểu dây kết nối vào PLC + Tiết kiệm lượng lớn Modul mở rộng PLC + Giảm không gian lắp đặt chuyển đổi có thiết kế mỏng nhỏ gọn so với Modul mở rộng PLC + Độ ổn định nhiễu so với tín hiệu analog 4-20mA + Các Modul độc lập nên quản lý dể dàng + Có thể dùng chung hãng khác có chuẩn Modbus RTU -Nhược điểm: +Tín hiệu khơng nhanh việc dùng trực tiếp analog Digital +Chỉ phù hợp cho điều khiển có thời gian đáp ứng 1s trở xuống +Cần PLC hay Scada có cấu hình mạnh đủ để đọc tất ghi dùng nhiều chuyển đổi Modbus RTU 1.5.Ứng dụng II.Mơ hình 2.1.Mơ hình ghép nối Đối với dạng truyền thông modbus rtu, ta có cách giao tiếp giao thức modbus rtu rs232 modbus rtu rs485 Đầu tiên, modbus phát triển để dùng cổng giao tiếp RS232 Nhưng vài nhược điểm cổng giao tiếp nên cổng giao tiếp RS485 phát triển để khắc phục nhược điểm phát triển thêm Giao thức ModBUS RS232: Là cổng giao tiếp dùng người ta cho đời truyền thông modbus Nên xem một…khai quốc công thần modbus Chuẩn giao thức hoạt động dựa cổng serial mắc nối tiếp với Tuy nhiên, cổng giao tiếp lại có nhược điểm giao tiếp thiết bị lần Và thực tế truyền thông modbus, ta cần phải giao tiếp nhiều thiết bị lúc với Cổng giao tiếp modbus rs232Ngoài ra, nhược điểm rs232 khả truyền thông khoảng cách tối đa 50 feet (khoảng 15m) trở lại Vì lý mà cổng giao tiếp modbus rs485 đời để khắc phục nhược điểm Một số đặc điểm chuẩn RS232 sau: Được sử dụng với kết nối point-to-point, tức kết nối thiết bị Master với thiết bị Slave Sử dụng dây để TX, RX, GND để trao đổi liệu hoạt động dựa điện áp chênh lệch TX, RX với GND Chuẩn vật lý RS232C thường sử dụng loại chân hình dưới, nhiên bạn cần sử dụng chân (RXD), chân (TXD) chân (GND) 10 Mức logic điện áp dao động +3V đến+12V, logic điện áp dao động 3V đến -12V.Điện áp nằm khoảng -3V đến +3V phạm vi không xác đinh Chiều dài tối đa dây dẫn truyền 15m Tốc độ truyền liệu thường từ 9600 đến 115200 bps, nhiên tốc độ cao chiều dài dây cần ngắn lại Có số module chuyển đổi chuẩn TTL chuẩn RS232 giúp cho vi điều khiển giao tiếp với thiết bị sử dụng chuẩn RS232, ví dụ module sử dụng IC MAX3232 hãng Texas Instruments 11 Giao thức ModBUS RS485: Để khắc phục nhược điểm RS232, người ta cho đời chuẩn giao thức RS485 Ưu điểm khả truyền thông với tốc độ cao hơn, khả chống nhiễu cao khoảng cách xa ( tối đa 1200m) Ngồi ưu điểm lớn RS485 khả kết nối 32 thiết bị lúc Điều có ích ta muốn kết nối nhiều thiết bị với Thực tế số lượng thiết bị nhiều nhiều Bởi có số hãng tích hợp 4-8 thiết bị vào chuyển đổi tín hiệu analog Z-4AI chuyển đổi tín hiệu analog Z-8AI hãng Seneca đến từ Italy Vì nên tính ra, ta truyền thơng giao tiếp 256 thiết bị với mà cần dùng đến dây dẫn Ví dụ nhà máy, ta muốn giám sát lúc thiết bị cảm biến nhiệt độ; cảm biến áp suất, cảm biến đo mức nước, đồng hồ đo lưu lượng nước,… Tất giám sát điều khiển; cần thiết bị có hỗ trợ chuẩn truyền thơng modbus RS485 đường truyền tương tự RS232 Tuy nhiên, có số đặc tính trội RS232 nên giao thức Modbus RTU chủ yếu sử dụng đường truyền RS485 Nó có số đặc điểm sau: Được sử dụng với mạng đa điểm, kết nối nhiều thiết bị Master nhiều thiết bị Slave Có chế độ truyền: chế độ truyền half-duplex cặp dây đối xứng A-B; chế độ truyền full-duplex cần cặp dây A-B, X-Y Giao thức Modbus sử dụng chế độ truyền half-duplex, cho phép thiết bị mạng truyền liệu thời điểm Các dây tín hiệu xoắn lại với nên có nhiễu tác động xảy đồng thời dây Đồng thời sử dụng hệ thống truyền dẫn cân nên điện áp dây ngược mức logic xác định dựa điện áp chênh lệch cặp dây (ví dụ A B) nên khả chống nhiễu tốt 12 Mức logic tương ứng với điện áp chênh lệch dây Uab = Ua -Ub > +200mV Cịn mức logic điện áp Uab < -200mV Điện áp nằm khoảng -200mV < Uab < +200mV phạm vi không xác định Chiều dài tối đa dây dẫn truyền 1200m, tốc độ truyền liệu thường từ 9600 đến 115200 bps Tốc độ cao chiều dài dây phải ngắn lại Có điện trở đầu cuối RT đặt hai đầu đường truyền, giá trị điện trở đầu cuối phù hợp với giá trị trở kháng đặc tính đường dây giảm thiểu nhiễu xảy có phản xạ xuất đường truyền 13 Điện áp chênh lệch thiết bị giao tiếp với với chênh lệch khoảng từ -7V đến +12V Vậy nên GND thiết bị nên kết nối với đường truyền để đảm bảo tín hiệu ổn định Trên thị trường có số module hỗ trợ để vi điều khiển kết nối thiết bị sử dụng chuẩn RS485 sử dụng IC thông dụng MAX485, SN65HVD485E… 2.2.Thiết lập 14 - Modbus RTU hoạt động dựa nguyên tắc Master – Slave tức bên nhận (Master) bên truyền tín hiệu (Slave) thông qua địa ghi Phương thức truyền Modbus RTU đường truyền vật lý RS232 Modbus RTU RS485, Modbus TCP/IP truyền địa IT thông qua Internet - Bộ chuyển đổi Z-8AI nhận tín hiệu analog dạng 4-20mA 0-10V chuyển sang Modbus RTU dây nên tảng RS485 thông qua hệ Hexadecimal Mỗi thiết bị mạng modbus cung cấp địa Trong mạng modbus có node gán Master (ta gọi Master, node lại gọi Node) khởi tạo lệnh Trong frame truyền có chứa địa thiết bị slave (1 đến 247), thiết bị có ID tương ứng đáp ứng, thiết bị khác nhận (một ngoại lệ lệnh phát cụ thể gửi đến nút 0, thực không xác nhận) Tất lệnh Modbus chứa thông tin tổng kiểm tra (check sum CRC) phép người nhận phát lỗi truyền Master đọc ghi liệu vào ghi thiết bị slave Cách đấu nối sau: A- (Master) A- (Slave) 15 B+ (Master) B+ (Slave) GND (Master) GND (Slave) Dây GND cần nối trường hợp khu vực đấu nối vùng nhiều sấm sét, máy móc hoạt động dịng lớn, nhiễu phức tạp…để tránh bị phá hỏng thiết bị tín hiệu thu bị sai Điện chênh lệch GND hai bên tối đa 7V Nếu thiết bị cần đọc đồng hồ điện (ví dụ Select MFM383A) mạch arduino làm master để truy xuất vào đọc ghi Các thơng số baud rate, data bit, bit stop, parity phải cài đặt đồng mastter slave Thông thường với slave đồng hồ điện, đồng hồ nước, cảm biến xem chúng hình cài đặt hay manual, datasheet thiết bị Ở phần code arduino chỉnh sửa thông tin cho giống thiết bị với thiết bị có LCD đa số set thơng số cho salve Nếu cần đọc ghi chứa liệu slave dùng function code 01, 02, 03, 04 FC01: đọc trạng thái coil, coil giá trị output Số coil numbers kéo dài từ 00001 đến 65536 , FC02: đọc trạng thái input, số discrete input kéo dài từ 00001 đến 65536, FC04: đọc input register, số input register trải dài từ 00001 đến 65536, FC03: đọc holding register, số holding register trải dài từ 00001 đến 65536 Khi xem manual ta thường ý tới địa ghi chứa liệu 2.3.Cấu trúc liệu - Byte địa chỉ: xác định thiết bị mang địa nhận liệu (đối với Slave) liệu nhận từ địa (đối với Master) Địa quy định từ - 254 - Byte mã hàm: quy định từ Master, xác định yêu cầu liệu từ thiết bị Slave - Byte liệu: xác định liệu trao đổi Master Slave - Đọc liệu: Master: byte địa liệu - byte độ dài liệu Slave: byte địa liệu - byte độ dài liệu - n byte liệu đọc - Ghi liệu: 16 Master: byte địa liệu - byte độ dài liệu - n byte liệu cần ghi Slave: byte địa liệu - byte độ dài liệu - Byte CRC: byte kiểm tra lỗi hàm truyền cách tính giá trị Byte CRC 16 Bit 2.4.Thủ tục bóc tách liệu Các thiết bị modbus giao tiếp Master/slave tương đương mô hình client/server cho internet Trong thiết bị khởi tạo giao dịch gọi truy vấn query Các thiết bị phản hồi cách cung cấp liệu yêu cầu cho thiết bị master cách thực hành động yêu cầu truy vấn Thiết bị slave thiết bị ngoại vi chuyển đổi I/O van biến tần thiết bị đo lường khác xử lý thông tin gử thông tin phản hồi đến thiết bị master modbus Master nói chuyện với slave riêng lẻ phát lúc với tất slave Các slave phản hồi lại cho tất tin nhắn truy vấn gửi đến chúng cách riêng lẻ Các slave không tự khởi tạo thông điệp trả lời truy vấn dược phát từ master Truy vấn master bao gồm địa slave, mã chức với lệnh đọc ghi liệu slave với lệnh ghi, lệnh ghi khởi tạo master trường kiểm tra lỗi Trường kiểm tra lỗi giá trị master slave tạo bắt đầu trình gửi yêu cầu phản hồi sau kiểm tra nhận thơng báo để xác định nội dung xác 17 Phản hồi slave bao gồm trường nhận nhận yêu cầu Dữ liệu trả lại mà liệu kiểm tra lỗi khơng có lỗi xảy phản hồi slave chứa liệu theo yêu cầu Nếu lỗi xảy thông điệp truy vấn nhận slave slave khơng thể thực hành động mà u cầu slave trả thông báo lỗi dạng phản hồi Trường kiểm tra lỗi thơng điệp slave cho phép master xác nhận nội dung thơng tin hợp lệ III.Ví dụ *Đề tài: Truyền liệu cảm biến qua máy tính theo chuẩn modbus RTU sử dụng đường truyền RS485 18 Sơ đồ khối: Màn hình LCD I2C USB RS485 Dữ liệu liệu Cảm biến biến độ ẩm đất ẩm biến đấtt RS485 Arduinorduinodbus Modbusdbus RTU TU Dữ liệu liệu Cảm biến biến hồng ngodbusại Nguyên lý hoạt động: - Code: Dữ liệu độ ẩm đất cảm biến hồng ngoại gửi đến Arduino modun rs485 qua cổng USB to USB485 lên hình máy tính Trong dây nối mơ mạch thực hình ví dụ #include //thư viện modbus #include // thư viện i2c để hiển thị LCD #include LiquidCrystal_I2C lcd(0x27,16,2); // địa i2c lcd 0x27 #define DE // chân DE nối với chân số arduino #define RE // chân RE nối với chân số arduino ModbusMaster node; void preTransmission() { digitalWrite(RE, 1); //Đưa chân RE lên mức cao digitalWrite(DE, 1); // Đưa chân DE lên mức cao } void postTransmission() { digitalWrite(RE, 0); digitalWrite(DE, 0); 19 } void setup() { lcd.init(); lcd.backlight();// bật tắt hình LCD lcd.print("Arduino VN"); delay(3000); lcd.clear(); lcd.print(""); lcd.setCursor(0,1); lcd.print("Giao tiep Modbus"); delay(3000); lcd.clear(); pinMode(RE, OUTPUT); pinMode(DE, OUTPUT); pinMode(4,INPUT);// Chân cảm biến hồng ngoại nối với chân số arduino digitalWrite(RE, 0);//Đưa chân RE xuống mức thấp digitalWrite(DE, 0);//Đưa chân DE xuống mức thấp Serial.begin(115200); //tốc độ baud 115200 node.begin(1, Serial); //Slave có ID node.preTransmission(preTransmission); node.postTransmission(postTransmission); } void loop() { float value = analogRead(A0);// Gán giá trị cb độ ẩm đất cho biến value node.writeSingleRegister(0x40000,value); // lưu giá trị cảm biến vào ghi có địa 0x40000 lcd.setCursor(0,0); lcd.print("GTCBD :"); lcd.print(value); int gtcb= digitalRead(4); // đọc giá trị cảm biến hồng ngoại lưu vào biến gtcb 20