Most complete Modbus library for Arduino. A library that allows your Arduino board to communicate via Modbus protocol, acting as a master, slave or both. Supports network transport (Modbus TCP) and Serial line/RS-485 (Modbus RTU). Supports Modbus TCP Security for ESP8266/ESP32.
Other
534
stars
190
forks
source link
Как получить более 40 байт данных за один запрос? #368
Как получить более 40 байт данных за один запрос?
Пробовал через такой пример на сервере:
mb.addCoil(COIL_BASE, COIL_VAL(false), LEN); // Add Coils.
mb.onGetCoil(COIL_BASE, cbRead, LEN); // Add single callback for multiple Coils. It will be called for each of these coils value get
и обработчик:
uint16_t cbRead(TRegister* reg, uint16_t val) {
// Checking value of register address which callback is called on.
// See Modbus.h for TRegister and TAddress definition
if(reg->address.address < COIL_BASE)
return 0;
uint8_t offset = reg->address.address - COIL_BASE;
if(offset >= LEN)
return 0;
return COIL_VAL(digitalRead(pinList[offset]));
}
Но в этом случае данные возвращаются в виде битов 1 или 0.
Как сделать правильный запрос с клиента и как правильно описать его на сервере? Спасибо!
Если честно, не понял суть вопроса. Coil и должен возвращаться в виде один Coil -- 1 бит. За один запрос можно передать максимум 1 фрейм 255 байт - заголовок.
Как получить более 40 байт данных за один запрос? Пробовал через такой пример на сервере: mb.addCoil(COIL_BASE, COIL_VAL(false), LEN); // Add Coils. mb.onGetCoil(COIL_BASE, cbRead, LEN); // Add single callback for multiple Coils. It will be called for each of these coils value get и обработчик:
uint16_t cbRead(TRegister* reg, uint16_t val) { // Checking value of register address which callback is called on. // See Modbus.h for TRegister and TAddress definition if(reg->address.address < COIL_BASE) return 0; uint8_t offset = reg->address.address - COIL_BASE; if(offset >= LEN) return 0; return COIL_VAL(digitalRead(pinList[offset])); }
Но в этом случае данные возвращаются в виде битов 1 или 0. Как сделать правильный запрос с клиента и как правильно описать его на сервере? Спасибо!