1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Thiết kế ngoại vi và kỹ thuật ghép nối đề tài tìm hiểu về giao tiếp rtu

23 3 0

Đ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

Thông tin cơ bản

Tiêu đề Tìm hiểu về Giao tiếp RTU Modbus
Tác giả Đỗ Văn Đồng, Trần Như Huy, Nguyễn Đình Tới, Nguyễn Tiến Đạt
Người hướng dẫn Dương Quang Duy
Trường học Học viện Công nghệ Bưu chính Viễn thông
Chuyên ngành Mạng và truyền thông
Thể loại Báo cáo môn học
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 23
Dung lượng 1,41 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

- Modbus được coi là giao thức truyền thông hoạt động ở tầng "Application", cung cấp khả năng truyền thông Master/Slave giữa các thiết bị được kết nối thông qua các bus hoặc network.. Đị

Trang 1

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 và kỹ thuật ghép nối

NHÓM MÔN HỌC: 10

Chủ đề nghiên cứu: Tìm hiểu về giao tiếp Modbus - RTU

Giảng viên: Dương Quang Duy

Trang 2

MỤC LỤC I.Tổng quan giới thiệu chung về Modbus – RTU

Trang 3

I.Tổng quan giới thiệu chung về Modbus – RTU

1.1.Khái niệm

- Giao thức Modbus RTU là một giao thức mở, sử dụng đường truyền vật lý RS-232 hoặc RS485 và mô hình dạng Master-Slave Đây là một giao thức được sử dụng rộng rãi trong nhiều lĩnh vực như BMS (Building Management Systems), tự động hóa, công nghiệp, điện lực, Chắc hẳn sẽ có bạn tự hỏi, tại sao giao thức Modbus này lại thông dụng như thế, đi đến đâu, đụng vào thiết bị gì thì hầu như cũng có giao thức này Nó rất Ổn định - Đơn giản - dễ dùng

- Modbus được coi là giao thức truyền thông hoạt động ở tầng "Application", cung cấp khả năng truyền thông Master/Slave giữa các thiết bị được kết nối thông qua các bus hoặc network Trên mô hình OSI, Modbus được đặt ở lớp 7 Modbus được xác định là một giao thức hoạt động theo "hỏi/đáp" và sử dụng các "function codes" tương ứng để hỏi đáp

- Giao thức truyền thông ModBUS với những ưu điểm là khả năng tích hợp và mở rộng cao, tốc độ truyền ổn định và khoảng cách truyền đi rất xa (trung bình khoảng 1200 mét) Chính vì những ưu điểm này mà truyền thông modbus ngày nay đang được phát triển rộng rãi để thay thế các dạng truyền thống như analog (4-20mA , 0-10V,…) hoặc digital

Trang 4

Đặc biệt là khả năng tích hợp với môi trường internet của giao thức modbus tcp/ip Chỉ cần có kết nối internet, ta có thể quan sát tất cả mọi thứ trong 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,… cũng như điều khiển hoạt động của các thiết

sẽ gửi 1 gói tin để trả lời cho master

Trang 5

1.2.Lịch sử ra đời, vì sao?

-Modbus là một chuẩn truyền thông được ra đời vào năm 1979 bởi Công ty Modicon Lúc này, chuẩn modbus được làm ra với mục đích là để sử dụng với PLC của hãng

-Hiện nay, công ty Modicon thụộc sở hữu của hãng Chneider Electric

-Việc phát triển và cập nhật các giao thức modbus đều được quản lý bởi Modbus Organization

Trang 6

Modbus Organization là một hiệp hội của người dùng và 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 giữa RTU và TCP

Một tiêu đề 7 byte mới được gọi là MBAP Header (Modbus Application Header) được thêm vào đầu thư Tiêu đề này có dữ liệu sau:

Mã định danh (Transaction ID): 2 byte do Client đặt để nhận dạng từng yêu cầu duy nhất Các byte này được lặp lại bởi Server vì các phản hồi của nó có thể không được nhận theo thứ tự như các yêu cầu

Định dạng giao thức (Protocol ID): 2 byte do Client đặt, luôn luôn = 00 00

Độ dài (Length): 2 byte xác định số byte trong thông điệp cần theo dõi

Định dạng đơn vị (UnitlD): 1 byte được đặt bởi Client và được Server lặp lại để xác định một Slave từ xa được kết nối trên đường truyền nối tiếp hoặc trên các bus khác

Yêu cầu tương đương với ví dụ về Modbus RTU này:

11 03 006B 0003 7687

Trong đó:

 11: Địa chỉ SlaveID (17 = 11 hex)

 03: Function code (đọc thanh ghi giữ đầu ra tương tự (Analog Output Holding Registers))

 006B: địa chỉ dữ liệu của thanh ghi đầu tiên được yêu cầu (40108-40001 = 107 = 6B hex)

 0003: tổng số thanh ghi được yêu cầu (đọc 3 thanh 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 sẽ là:

0001 0000 0006 11 03 006B 0003

Trang 7

 0003: tổng số thanh ghi được yêu cầu (đọc 3 thanh ghi 40108 đến 40110)

-Sự khác biệt giữa ASCII và RTU

Ví dụ: cùng phản hồi yêu cầu hiển thị các byte dữ liệu của Registers 40108 đến 40110 từ địa chỉ 17 của Slave

11 03 00 6B 00 03

Yêu cầu từ Modbus ASCII hoàn chỉnh được thực hiện bằng cách thêm các ký tự phân định thông điệp trước Dấu hai chấm được thêm vào đầu thông điệp, LRC, ký tự xuống dòng và nguồn cấp dữ liệu dòng được thêm vào cuối thông điệp như sau:

: 1 1 0 3 0 0 6 B 0 0 0 3 7 E CR LF

Mỗi ký tự bây giờ được coi là một ký tự ASCII và được thay thế bằng giá trị hex của nó để đưa

ra thông điệp cuối cùng

3A 3131 3033 3030 3642 3030 3033 3745 0D 0A

Kích thước yêu cầu Modbus ASCII này là 17 byte (170 bit)

Thông điệp Modbus RTU tương đương sẽ là:

11 03 00 6B 00 03 76 87

Kích thước yêu cầu Modbus RTU này là 8 byte (80 bit)

- Các loại truyền thông Modbus dùng trong công nghiệp:

Truyền thông modbus bao gồm 3 loại modbus là Modbus rtu, modbus tcp/ip và modbus ascii Trong đó được dùng nhiều nhất là loại modbus rtu và modbus tcp/ip Với loại Modbus RTU, người ta sẽ dùng cỏng kết nối là cổng dạng serial RS232 hoặc RS485 Còn đối với modbus TCP/IP, cổng giao tiếp là cổng RJ-45

1.4.Ưu, nhược điểm

Trang 8

-Ưu điểm:

+ Các tín hiệu truyền trên 2 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 một lượng lớn Modul mở rộng PLC

+ Giảm không gian lắp đặt do bộ chuyển đổi có thiết kế mỏng nhỏ gọn so với Modul mở rộng của PLC

+ Độ ổn định và ít nhiễu so với tín hiệu analog 4-20mA

+ Các Modul độc lập nhau nên quản lý dể dàng

+ Có thể dùng chung các hãng khác nhau có chuẩn Modbus RTU

Trang 9

Giao thức ModBUS RS232:

Là một cổng giao tiếp được dùng đầu tiên khi người ta cho ra đời truyền thông modbus Nên

có thể xem nó như là một…khai quốc công thần đối với modbus

Chuẩn giao thức này hoạt động dựa trên cổng serial mắc nối tiếp với nhau

Tuy nhiên, cổng giao tiếp này lại có nhược điểm là chỉ có thể giao tiếp 1 thiết bị 1 lần Và thực tế là khi truyền thông modbus, ta cần phải giao tiếp nhiều thiết bị cùng 1 lúc với nhau

Trang 10

Cổng giao tiếp modbus rs232Ngoài ra, nhược điểm của rs232 là khả năng truyền thông trong khoảng cách tối đa là 50 feet (khoảng 15m) trở lại

Vì lý do đó mà cổng giao tiếp modbus rs485 ra đời để khắc phục nhược điểm trên

Một số đặc điểm của chuẩn RS232 như sau:

Được sử dụng với các kết nối point-to-point, tức là chỉ kết nối được một thiết bị

Master với một thiết bị Slave

Sử dụng 3 dây để TX, RX, GND để trao đổi dữ liệu và hoạt động dựa trên điện áp chênh lệch giữa TX, RX với GND

Chuẩn vật lý RS232C thường sử dụng loại 9 chân như hình dưới, tuy nhiên về cơ bản các bạn chỉ cần sử dụng chân 2 (RXD), chân 3 (TXD) và chân 5 (GND)

Trang 11

Mức logic 0 điện áp dao động giữa +3V đến+12V, logic 1 thì điện áp dao động giữa 3V đến -12V.Điện áp nằm trong khoảng -3V đến +3V là phạm vi không được xác đinh

-Chiều dài tối đa của dây dẫn truyền là 15m

Tốc độ truyền dữ liệu thường từ 9600 đến 115200 bps, tuy nhiên tốc độ càng cao thì chiều dài dây cần ngắn lại

Có một số module chuyển đổi giữa chuẩn TTL và chuẩn RS232 giúp cho vi điều khiển có thể giao tiếp với các thiết bị sử dụng chuẩn RS232, ví dụ như module dưới sử dụng IC MAX3232 của hãng Texas Instruments

Trang 12

Giao thức ModBUS RS485:

Để khắc phục những nhược điểm của RS232, người ta đã cho ra đời chuẩn giao thức RS485

Ưu điểm của nó là khả năng truyền thông với tốc độ cao hơn, khả năng chống nhiễu cao hơn

và khoảng cách xa hơn ( tối đa 1200m)

Ngoài ra thì ưu điểm lớn nhất của RS485 là khả năng kết nối được 32 thiết bị cùng 1 lúc Điều này cực kỳ có ích khi ta muốn kết nối nhiều thiết bị với nhau Thực tế thì số lượng thiết bị có thể nhiều hơn nhiều Bởi vì hiện nay có một số hãng có thể tích hợp 4-8 thiết bị vào 1 bộ như

bộ chuyển đổi 4 tín hiệu analog Z-4AI và bộ chuyển đổi 8 tín hiệu analog Z-8AI của hãng Seneca đến từ Italy

Vì thế nên nếu tính ra, ta có thể truyền thông giao tiếp 256 thiết bị với nhau mà chỉ cần dùng đến 2 dây dẫn

Ví dụ như trong nhà máy, ta muốn giám sát cùng lúc các thiết bị như 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 cả đều sẽ được giám sát và điều khiển; chỉ cần các thiết bị này có hỗ trợ chuẩn truyền thông modbus

RS485 là một đường truyền tương tự như RS232 Tuy nhiên, do có một số đặc tính nổi trội hơn RS232 nên giao thức Modbus RTU chủ yếu sử dụng đường truyền RS485 Nó có một số đặc điểm sau:

Được sử dụng với các mạng đa điểm, kết nối được nhiều thiết bị Master và nhiều thiết

Trang 13

Mức logic 1 tương ứng với điện áp chênh lệch giữa 2 dây Uab = Ua -Ub > +200mV Còn mức logic 0 thì điện áp Uab < -200mV Điện áp nằm trong khoảng -200mV < Uab < +200mV là phạm vi không được xác định

Chiều dài tối đa của dây dẫn truyền là 1200m, tốc độ truyền dữ liệu thường từ 9600 đến 115200 bps Tốc độ càng cao thì chiều dài dây càng phải ngắn lại

Có điện trở đầu cuối RT được đặt ở hai đầu của đường truyền, giá trị điện trở đầu cuối phù hợp với giá trị trở kháng đặc tính của đường dây sẽ giảm thiểu nhiễu xảy ra do

có sự phản xạ xuất hiện trên đường truyền

Trang 14

Điện áp chênh lệch của 2 thiết bị giao tiếp với với nhau chỉ được chênh lệch trong khoảng từ -7V đến +12V Vậy nên GND của các thiết bị nên được kết nối với nhau trên cùng một đường truyền để đảm bảo tín hiệu được ổn định

Trên thị trường có một số module hỗ trợ để vi điều khiển có thể kết nối được các thiết bị sử dụng chuẩn RS485 sử dụng IC thông dụng như MAX485, SN65HVD485E…

2.2.Thiết lập

Trang 15

- Modbus RTU hoạt động dựa trên nguyên tắc Master – Slave tức là một bên nhận (Master) và

một bên truyền tín hiệu (Slave) thông qua địa chỉ thanh ghi Phương thức truyền của Modbus RTU bằng đường truyền vật lý RS232 hoặc Modbus RTU RS485, Modbus TCP/IP thì truyền trên địa chỉ IT thông qua Internet

- Bộ chuyển đổi Z-8AI nhận 8 tín hiệu analog dạng 4-20mA hoặc 0-10V chuyển sang Modbus RTU 2 dây trên nên tảng RS485 thông qua hệ Hexadecimal

Mỗi thiết bị trong mạng modbus sẽ được cung cấp một địa chỉ duy nhất Trong mạng modbus chỉ có 1 node được gán là Master (ta gọi là Master, các node còn lại gọi là Node) mới có thể khởi tạo lệnh Trong frame truyền có chứa địa chỉ của thiết bị slave (1 đến 247), chỉ thiết bị

có ID tương ứng mới đáp ứng, mặc dù các thiết bị khác có thể nhận được nó (một ngoại lệ là các lệnh có thể phát được cụ thể được gửi đến nút 0, được thực hiện nhưng không được xác nhận) Tất cả các lệnh Modbus chứa thông tin tổng kiểm tra (check sum CRC) để cho phép người nhận phát hiện lỗi truyền Master sẽ đọc và ghi các dữ liệu vào thanh ghi của thiết bị slave

Cách đấu nối như sau:

A- (Master) <——> A- (Slave)

Trang 16

B+ (Master) <——> B+ (Slave) GND (Master) <——-> GND (Slave)

Dây GND cần nối trong 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ị hoặc tín hiệu thu được bị sai Điện thế chênh lệch giữa GND hai bên tối đa là 7V Nếu thiết bị cần đọc là một đồng hồ điện (ví dụ Select MFM383A) thì mạch arduino của chúng ta sẽ làm master để truy xuất vào đọc thanh ghi của nó Các thông số baud rate, data bit, bit stop, parity chúng ta phải cài đặt đồng

bộ giữa mastter và slave Thông thường với các slave là đồng hồ điện, đồng hồ nước, cảm biến chúng ta sẽ xem chúng ở màn hình cài đặt hay ở manual, datasheet của thiết bị Ở phần code arduino chúng ta sẽ chỉnh sửa các thông tin đó cho giống trên thiết bị hoặc với các thiết

bị có LCD đa số chúng ta đều set được các thông số đó cho salve Nếu cần đọc các thanh ghi chứa dữ liệu của slave chúng ta sẽ dùng các function code 01, 02, 03, 04

 FC01: đọc trạng thái coil, một coil là một giá trị output Số coil numbers kéo dài từ

0 00001 đến 0 65536 ,

 FC02: đọc trạng thái input, số discrete input kéo dài từ 1 00001 đến 1 65536,

 FC04: đọc các input register, số input register trải dài từ 3 00001 đến 3 65536,

 FC03: đọc các holding register, số holding register trải dài từ 4 00001 đến 4 65536 Khi xem manual ta thường chú ý tới địa chỉ thanh ghi nào chứa dữ liệu gì

2.3.Cấu trúc dữ liệu

- Byte địa chỉ: xác định thiết bị mang địa chỉ được nhận dữ liệu (đối với Slave) hoặc dữ liệu nhận được từ địa chỉ nào (đối với Master) Địa chỉ này được quy định từ 0 - 254

- Byte mã hàm: được quy định từ Master, xác định yêu cầu dữ liệu từ thiết bị Slave

- Byte dữ liệu: xác định dữ liệu trao đổi giữa Master và Slave

- Đọc dữ liệu:

 Master: 2 byte địa chỉ dữ liệu - 2 byte độ dài dữ liệu

 Slave: 2 byte địa chỉ dữ liệu - 2 byte độ dài dữ liệu - n byte dữ liệu đọc được

- Ghi dữ liệu:

Trang 17

 Master: 2 byte địa chỉ dữ liệu - 2 byte độ dài dữ liệu - n byte dữ liệu cần ghi

 Slave: 2 byte địa chỉ dữ liệu - 2 byte độ dài dữ liệu

- Byte CRC: 2 byte kiểm tra lỗi của hàm truyền cách tính giá trị của Byte CRC 16 Bit

2.4.Thủ tục và bóc tách dữ liệu

Các thiết bị modbus giao tiếp bằng Master/slave tương đương mô hình client/server cho internet Trong đó chỉ một thiết bị có thể khởi tạo các giao dịch được gọi là truy vấn query Các thiết bị phản hồi bằng cách cung cấp dữ liệu được yêu cầu cho thiết bị master hoặc bằng cách thực hiện hành động được yêu cầu trong truy vấn Thiết bị slave là bất kỳ thiết bị ngoại vi nào như mọi chuyển đổi I/O van biến tần hoặc các thiết bị đo lường khác xử lý thông tin và gử thông tin phản hồi của nó đến thiết bị master bằng modbus Master có thể nói

chuyện với từng slave riêng lẻ hoặc phát cùng lúc với tất cả các slave Các slave phản hồi lại cho tất cả các tin nhắn truy vấn được gửi đến chúng một cách riêng lẻ Các slave không tự khởi tạo thông điệp và chỉ trả lời các truy vấn dược phát ra từ master

Truy vấn của master bao gồm địa chỉ slave, mã chức năng với lệnh đọc hoặc ghi dữ liệu cùng slave cùng với lệnh ghi, nếu lệnh ghi được khởi tạo bởi master và trường kiểm tra lỗi Trường kiểm tra lỗi là một giá trị master hoặc slave tạo ra khi bắt đầu quá trình gửi yêu cầu đi hoặc phản hồi và sau đó được kiểm tra thì nhận được thông báo để xác định nội dung là chính xác

Trang 18

Phản hồi của slave bao gồm các trường các nhận nó đã nhận được yêu cầu Dữ liệu sẽ được trả lại mà dữ liệu kiểm tra lỗi nếu không có lỗi xảy ra phản hồi của slave chứa dữ liệu theo yêu cầu Nếu lỗi xảy ra trong thông điệp truy vấn được nhận bởi slave hoặc slave không thể thực hiện hành động mà nó được yêu cầu slave sẽ trả về thông báo lỗi dưới dạng phản hồi của

nó Trường kiểm tra lỗi trong thông điệp của slave cho phép master xác nhận rằng nội dung của thông tin là hợp lệ

Modbus RTU

Trang 19

Nguyên lý hoạt động:

- Adruino uno đọc dữ liệu của module cảm biến đất qua chân A0, đọc giá trị

cảm biến hồng ngoại qua chân số 4

- Hiển thị thị giá trị lên LCD bằng module I2C qua chân A4(I2C SDA) và A5

(I2C SCL)

- Kết nối với module RS485 qua 4 chân RO -> RX; RE -> 2; DE -> 3; DI ->TX;

đầu còn lại của module kết nối với chân A, B tương ứng của USB RS485 để

truyền dữ liệu hiển thị lên máy tính qua phần mềm Modbus slave

Trang 20

Code:

#include <ModbusMaster.h> //thư viện modbus

#include <Wire.h> // thư viện i2c để hiển thị LCD

#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C lcd(0x27,16,2); // địa chỉ i2c lcd là 0x27

#define DE 3 // chân DE được nối với chân số 3 arduino

#define RE 2 // chân RE được nối với chân số 2 arduino

ModbusMaster node;

Trang 21

// Trong giao tiếp RS485, RE (Receiver Enable) và DE (Driver Enable) là các tín hiệu điều khiển được sử dụng để kiểm soát truyền và nhận dữ liệu

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

// Tín hiệu DE: Khi tín hiệu DE được đưa lên mức Logic HIGH, nó sẽ kích hoạt bộ truyền dữ liệu (driver)

và cho phép máy gửi dữ liệu ra đường truyền Khi tín hiệu DE được đưa xuống mức Logic LOW, bộ truyền

dữ liệu sẽ bị tắt và không thể gửi dữ liệu ra đường truyền

lcd.setCursor(0,1); // Vị trí dòng 1 ô đầu tiên

lcd.print("Giao tiep Modbus");

pinMode(4,INPUT);// Chân cảm biến hồng ngoại được nối với chân số 4 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

Ngày đăng: 18/04/2023, 22:57

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w