Библиотека libmodbus предоставляет множество примеров кода, демонстрирующих, как использовать библиотеку для связи Modbus. Ниже приведен простой пример библиотеки libmodbus для чтения значений регистров временного хранения с ведомого устройства Modbus:
#include <stdio.h>
#include <stdlib.h>
#include <modbus.h>
int main(void) {
modbus_t *ctx;
uint16_t tab_reg[32];
int rc;
int i;
ctx = modbus_new_rtu("/dev/ttyUSB0", 115200, 'N', 8, 1);
if (ctx == NULL) {
fprintf(stderr, "Unable to create the libmodbus context\n");
return -1;
}
modbus_set_debug(ctx, TRUE);
modbus_set_slave(ctx, 1);
if (modbus_connect(ctx) == -1) {
fprintf(stderr, "Connection failed: %s\n", modbus_strerror(errno));
modbus_free(ctx);
return -1;
}
rc = modbus_read_registers(ctx, 0, 10, tab_reg);
if (rc == -1) {
fprintf(stderr, "%s\n", modbus_strerror(errno));
return -1;
}
for (i=0; i < rc; i++) {
printf("reg[%d]=%d (0x%X)\n", i, tab_reg[i], tab_reg[i]);
}
modbus_close(ctx);
modbus_free(ctx);
return 0;
}
В этом примере кода используется библиотека libmodbus для создания ведущего устройства Modbus в режиме RTU, подключенного к последовательному порту (/dev/ttyUSB0). Затем он пытается прочитать 10 последовательных значений регистра из регистра временного хранения, начиная с адреса 0 ведомого устройства (адрес 1). Наконец, он выводит прочитанное значение на консоль. Обратите внимание, что это всего лишь простой пример, и вы можете изменить и расширить его в соответствии со своими потребностями. Прежде чем компилировать и запускать этот пример, убедитесь, что библиотека libmodbus правильно установлена и включена в ваш проект. Кроме того, измените последовательный порт и другие связанные параметры в соответствии с реальной ситуацией.