Giỏ hàng
Danh mục sản phẩm

Lập Trình Mobus RTU ESP32 ,ESP32-S2, STM32

Đăng bởi Trần Văn Bùi ngày bình luận

Lập Trình Mobus ESP32 ,ESP32-S2 
Hôm nay mình giới thiệu các bạn lập trình modbus ESP32 
Về cơ bản chuẩn modbus tiêu chuẩn để kết nối các thiết bị như PLC 
Modbus có RS232,Mobus RS485 ,Modbus UART 
Mỗi loại có ưu điểm nhược điểm riêng .
Khung truyền Modbus

01 READ COIL STATUS

02 READ INPUT STATUS
03 READ HOLDING REGISTERS
04 READ INPUT REGISTERS
05 WRITE SINGLE COIL
06 WRITE SINGLE REGISTER
15 WRITE MULTIPLE COILS
16 WRITE MULTIPLE REGISTERS

địa chỉ :0000-9999 một thiết bị master có thể đọc và ghi địa chỉ này

địa chỉ :1000-19999 digital Input

địa chỉ :3000-39999 analog  Input

địa chỉ :4000-49999 analog  output

Thư viện sử dụng trong bài viết 

Các bạn tải tại đây:

https://github.com/smarmengol/Modbus-Master-Slave-for-Arduino

Chú ý thư viện này sử dụng tất cả thanh ghi gộp 

Bạn dùng coil Mất 10 thanh ghi 16 bit tương đương 160 địa chỉ coil

Các hàm khác bạn dùng từ ô số 10 trở đí 

Code chương trình 

#include <ModbusRtu.h>

// assign the Arduino pin that must be connected to RE-DE RS485 transceiver
#define TXEN  4 

// data array for modbus network sharing
#define LEN 20
#define LEN1 10
uint16_t au16data[LEN] ;
uint16_t au18data[LEN1] ;
int i=0;

/**
 *  Modbus object declaration
 *  u8id : node id = 0 for master, = 1..247 for slave
 *  port : serial port
 *  u8txenpin : 0 for RS-232 and USB-FTDI 
 *               or any pin number > 1 for RS-485
 */
Modbus slave(1,0,1); // this is slave @1 and RS-485
long int cnt=0;
long int pos=0;
void setup() {
 // Serial2.begin(9600);
 Serial.begin(9600);
//slave.begin(Serial1,9600);
 //slave.begin(Serial1,9600,0);
 slave.start();
 
 
}

void loop() {
  
   cnt++;
  if(cnt>65535) cnt=0;
  for(i=0;i<20;i++)
  { 
    au16data[i]=cnt;
   
   }
   pos++;slave.poll(au16data,LEN );
switch(pos)
{
  case 1000: break;
  case 3000:  break; 
  case 5000:pos=0;break;
  }
  
 
   
}

Modbus slave(1,0,1); // this is slave @1 and RS-485 

Tương đương ID=1;PORT UART 0 ,Cho phép chế độ RS485

Trong thư viện các bạn sửa 1 chút Do ESP32 Có 3 UART 

B1:

Các bạn đến ổ chứa thư viện tìm đến file trên đường dẫn

Tiếp tục chỉnh sửa dùng note++

Các bạn chỉnh sửa như sau 

Kết nối với modbus hoặc HMI công nghiệp

Cảm ơn các bạn ghé thăm shop

 

 

Cũ hơn