ỨNG DỤNG ARDUINO ĐỌC GHI DỮ LIỆU MODBUS RTU RS232

Lời đầu tiên, Arduino Shop xin gởi đến các bạn một ngày làm việc tốt lành, đầy năng lượng. Hôm nay, Arduino Shop sẽ hướng dẫn các bạn thực hành ứng dụng arduino đọc ghi dữ liệu modbus rtu rs232. Đây là chuẩn dữ liệu không phải cũ nhưng được dùng rất nhiều trong thực tế hiện nay. Vậy việc ứng dụng Arduino với chuẩn giao tiếp modbus rtu rs232 này có những lợi ích nào? Cùng với Arduino Shop đi tìm hiểu nhé! Nào Let's Go.

Ngày đăng: 11-01-2017

9,624 lượt xem

1. Giới Thiệu truyền thông modbus RTU RS232

Modbus RTU là một chuẩn giao tiếp trong công nghiệp. Nó được sử dụng khá rộng rãi và phổ biến trong các thiết bị điện trong công nghiệp. Với mục đích tiết kiệm, đơn giản và thực thi công việc một cách nhanh nhất. Đối với modbus RTU được truyền thông qua cổng Rs232/ RS485 hoặc RS422. Đây là một chuẩn truyền thông bằng phần mềm, chứ không phải phần cứng, do đó, với phương pháp học tập mở như bây giờ, thì mọi người chúng ta điều có thể tự làm cho mình một cặp thiết bị có thể truyền nhận theo chuẩn modbus RTU này. Hơn nữa, RS232/ RS485 làm việc với chuẩn UART/ USART và Arduino có 1 cổng USB truyền thông UART, do vậy bạn hoàn toàn có thể sử dụng arduino để ứng dụng việc đọc ghi dữ liệu theo chuẩn modbus RTU RS232 hoặc RS485.

Việc ứng dụng arduino đọc ghi dữ liệu theo chuẩn modbus là khá mới. Tuy nhiên, có một thuận lợi là, hiện có khá nhiều website, nhiều video hướng dẫn làm. Và chịu ngồi suy nghỉ, làm các phép toán thử thì chúng ta cơ bản sẽ hiểu về nó thôi các bạn. Arduino Shop không phải là người rất rành rọt chuẩn này, nhưng cũng với mong muốn truyền đạt kiến thức với những gì mà arduino shop đang có, thì cũng mong các bạn tìm hiểu thêm nhé.

Vậy cách truyền dữ liệu của modbus như thế nào, chúng ta xem hình bên dưới nhé. Cái này giành cho những bạn thích tự viết thư viện cho mình. Còn với Arduino Shop khái niệm rất rõ: Hãy nên tận dụng những cái mình có và dựa trên sự nghiên cứu mình để thay đổi nó theo hướng tốt nhất. Tuyệt cú mèo nếu chúng ta có thư viện của nó đúng không nào???

Khung-truyen-du-lieu-modbus-RTU

Khung-truyen-du-lieu-modbus-RTU

Các thanh ghi tín hiệu:

Các thanh ghi được định dạng sẵn như bên dưới:

00001-09999  Digital Outputs, Một thiết bị master có thể đọc và ghi giá trị tới các thanh ghi này

10001-19999  Digital Inputs, Một thiết bị master có thể đọc và ghi giá trị tới các thanh ghi này

30001-39999  Analog Inputs, Một thiết bị master có thể đọc và ghi giá trị tới các thanh ghi này

40001-49999  Analog Outputs, Một thiết bị master có thể đọc và ghi giá trị tới các thanh ghi này

2. Chuẩn bị:

Để làm được ứng dụng đọc ghi dữ liệu theo chuẩn modbus RTU RS232, các bạn chuẩn bị một số linh kiện linh tinh sau:

- Phân mềm WINCC Plexible 2008 hoặc một phần mềm HMI EasyBuilder Pro. Có thể tải phần mềm này >> tại đây<<

- Bo Arduino Uno hoặc Arduino Mega 2560. Ở đây Shop lấy mega 2560

- Cáp USB RS232, các bạn có thể mua >>tại đây<<: Giá chỉ 60k thôi. Shop không có bán các bạn nha.

- Một cách mạch Max232 để thực hiện giao tiếp với arduino qua UART.

==> Với các phần cứng rất đơn giản, chỉ hơn 200k là có thể thực hiện được chuẩn này. Chuẩn này được thực hành trên phần mềm, do vậy chúng ta không ngại gì về phần cứng như thế nào nhé. Phần mềm test Ok là phần cứng chơi thôi nha các bạn. Tiện lợi quá đúng không nào.

3. Cách nối dây:

Chúng ta thiết lập cách đấu dây như hình bên dưới nhe. Do thấy một hình trên mạng, khá giống với đề tài, nên Shop dùng luôn cho các bạn dễ nhìn

Ket-noi-Modbus-RTU-RS232-voi-Arduino

Ket-noi-Modbus-RTU-RS232-voi-Arduino

Với cách đấu nối này rất đơn giản đúng không nào? Tuyệt cú mèo khi mọi thứ đã có. Cảm ơn vì điều đó các bạn nhé.

4. Lập trình:

Để lập trình được ứng dụng đọc ghi dữ liệu theo chuẩn modbus RTU RS232, thì chúng ta cần phải lập trình cho cả phần mềm lập trìn HMI EasyBuilder Pro và trên cả Arduino. Ở đây, Shop chỉ giới thiệu đến mọi người cách ON/OFF LED từ phần mềm EasyBuilder Pro lên phần cứng arduino. Sẽ có 1 video gởi các bạn bên dưới. Ô nhớ chúng ta chọn để thực hiện dữ liệu từ 0x01 đến 0x07 nha các bạn. Tí nữa tới phần code Arduino, sẽ nói rõ nhé

4.1. Lập trình cho phần mềm EasyBuilder Pro. 

Các bạn cố gắng vẽ vởi và làm như hình bên dưới nha:

Easybuilder-pro-mosbus-rtu-arduino

Easybuilder-pro-mosbus-rtu-arduino

4.2. Lập trình cho Arduino

Để lập trình được cái này, chúng ta cần có thư viện. Liện hệ với Shop để nhận được thư viện các bạn nha. Với thư viện này, các bạn hoàn toàn thực hành nhiều dự án của mình.

#include <modbus.h>
#include <modbusDevice.h>
#include <modbusRegBank.h>
#include <modbusSlave.h>

/*
This example code shows a quick and dirty way to get an
arduino to talk to a modbus master device with a
device ID of 1 at 9600 baud.
*/

//Setup the brewtrollers register bank
//All of the data accumulated will be stored here
modbusDevice regBank;
//Create the modbus slave protocol handler
modbusSlave slave;

void setup()
{  

//Assign the modbus device ID. 
// Chọn thiết bị salve số 1
  regBank.setId(1);

// Thêm các thanh ghi output digital từ 00001 tới00007
  regBank.add(1);
  regBank.add(2);
  regBank.add(3);
  regBank.add(4);
  regBank.add(5);
  regBank.add(6);
  regBank.add(7);

// Khai báo chân output trên arduino
  pinMode(30,OUTPUT); digitalWrite(30,LOW);
  pinMode(31,OUTPUT); digitalWrite(31,LOW);
  pinMode(32,OUTPUT); digitalWrite(32,LOW);
  pinMode(33,OUTPUT); digitalWrite(33,LOW);
  pinMode(34,OUTPUT); digitalWrite(34,LOW);
  pinMode(35,OUTPUT); digitalWrite(35,LOW);
  pinMode(36,OUTPUT); digitalWrite(36,LOW);
 
/*
Assign the modbus device object to the protocol handler
This is where the protocol handler will look to read and write
register data.  Currently, a modbus slave protocol handler may
only have one device assigned to it.
*/
  slave._device = &regBank; 

// Initialize the serial port for coms at 9600 baud 
  slave.setBaud(9600);  
}

void loop()
{
  int x0=regBank.get(1);// nhận giá trị từ từ phần mềm ở thanh ghi số 1
  int x1=regBank.get(2);
  int x2=regBank.get(3);
  int x3=regBank.get(4);
  int x4=regBank.get(5);
  int x5=regBank.get(6);
  int x6=regBank.get(7);


  digitalWrite(30,x0);  
  digitalWrite(31,x1);
  digitalWrite(32,x2);
  digitalWrite(33,x3);
  digitalWrite(34,x4);
  digitalWrite(35,x5);
  digitalWrite(36,x6);
  slave.run(); 

}

4.3. Video

Và đây là video ứng dụng arduino đọc ghi dữ liệu theo chuẩn modbus  RTU trong công nghiệp các bạn nha. Cũng không quá khó để chúng ta tự áp dụng một project nhỏ vào công nghiệp, điều khiển Arduino cùng với PLC hoặc một thiết bị nào có đó chuẩn modbus RTU đúng không nào??? 

Ứng dụng đọc ghi dữ liệu theo chuẩn modbus RTU

 

5. Lời kết:

Đến đây, Arduino Shop cảm ơn các bạn đã quan tâm và giành thời gian đọc hết bài này. Mọi chi tiết các bạn có thể liên hệ theo thông tin bên dưới để được hỗ trợ tư vấn và giải đáp những gì mà các bạn chưa rõ nha.

Thanks,

GỌI NGAY - 0902 37 12 52 (Mr Quốc): Tư vấn KT

ĐỂ ĐƯỢC TƯ VẤN VÀ CUNG CẤP GIẢI PHÁP KỊP THỜI CHO BẠN

ARDUINO SHOP

Địa chỉ: Số 41 Gò Dưa, Phường Tam Bình, Quận Thủ Đức, TP. Hồ Chí Minh
Email: arduinoshophcm@gmail.com

Bình luận (33)

Gửi bình luận của bạn

Captcha
  • Nguyễn Trung Tuấn (26-06-2018) Trả lời
    Cho mình hỏi. Mình lập trình Arduino kết nối với HMI Weintek thông qua chuẩn modbus. Mình mô phỏng HMI trên máy tính ( mô phỏng online ) chương trình arduino đã được down xuống mạch thật và kết nối với máy tính thông qua cáp chuyển đổi USB-RS232. kết quả là chạy được ko vấn đề gì. nhưng khi mình down chương trình HMI xuống ( có khai báo lại cổng RS232 trên HMI là COM3 và đấu đúng như sơ đồ của nhà SX ) thì ko kết nối đc với arduino nữa. Cổng COM3 đã khai báo đúng và nối dây đúng đã test cổng này
    • Huynh Tấn Quốc (14-07-2018)
      Hi ANh, Anh có thể mang sp xuống em test cho anh nhé.
  • trần Bù (31-05-2017) Trả lời
    Gửi mình xin bộ thư viện MOSBUS RTU Xin cảm ơn !
    • Huỳnh Tấn Quốc (02-06-2017)
      Hi bạn, Thư viện này hiện bên mình hết chương trình tặng nha bạn. bên mình đang có khóa học đào tạo về modbus RTU, modbus TCP giao tiếp với plc, HMI, PC... bạn đăng kí học để có được 3 thư viện này miễn phí và ứng dụng được nha bạn. Hoặc bạn có thể mua 380k/ bộ thư viện này. Thanks
  • mrD (24-05-2017) Trả lời
    b cho mình hỏi vs làm sao để con led trê hmi khi mình nhấn nút thì nó sáng lên vậy ?mình thử theo địa chỉ của nút nhấn trên hmi nhung không được
    • Huỳnh Tấn Quốc (24-05-2017)
      Hi Anh, De hien thi duoc, can setup Muc 0 la mau do, muc 1 la mau xanh thi den se tu doi trang thai
  • Huỳnh Tấn Quốc (18-05-2017) Trả lời
    Xin chào mọi người, hiện arduino shop đang mở lớp đào tạo về lập trình modbus rtu và tcp cho arduino giao tiếp với các thiết bị máy tính, HMI, PLC. Mọi người có nhu cầu liên hệ qua sđt 0126 514 5755 hoặc 0902 37 12 52. Cảm ơn mọi người nhiều!
  • Hoàng (10-05-2017) Trả lời
    Mod ơi cho mình xin thư viện modbus này nhé. Cám ơn bạn.
    • Nguyễn Trung Thảo (17-05-2017)
      Ad ơi cho mình xin thư viện modbus với nhé!Cảm ơn bạn!
  • Xem thêm các bình luận khác
<