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