Почему при использовании libmodbus для получения данных подчиненного устройства всегда возникает ошибка CRC?

Я использую libmodbus 3.0.6 для получения данных от датчиков RS485 ,, но он всегда возвращает "ERROR CRC accept 110!= CRC вычислено 9C93"!

here is my code:

modbus_t *modbus_ctx = modbus_new_rtu("/dev/ttymxc3", 9600, 'N', 8, 1);
modbus_set_slave(modbus_ctx ,0x01);
modbus_connect(modbus_ctx );
modbus_set_response_timeout(modbus_ctx, &timeout);
modbus_rtu_set_serial_mode(modbus_ctx,MODBUS_RTU_RS485);   // here also return -1 , modbus_strerror(errno) : Invalid argument
while(isRun){
    u_int16_t dest[3];
    memset(dest, 0, sizeof(3));

    modbus_flush(modbus_ctx);
    modbus_read_registers(modbus_ctx, 0x01, 3, dest);     // here always return -1,modbus_strerror(errno):Invalid CRC
    sleep(1);
}

0 ответов

Другие вопросы по тегам