Получение 32-битных данных с плавающей запятой от инвертора с использованием libmodbus
Мой вопрос в том, что мы могли бы получить правильную ценность из программы Modbus Poll. 32 Bit Float Little Endian подкачка байтов. Я думаю, это FLOAT CDAB для libmodbus.
Когда я запускаю этот код с помощью libmodbus, он дает другой результат, не могли бы вы помочь?
#include <stdio.h>
#include <string.h>
#include <errno.h>
#include "/home/burak/modbus/include/modbus/modbus.h"
int main(void) {
modbus_t *mb;
int g = 32;
uint16_t tab_reg[g];
mb = modbus_new_tcp("212.50.49.37", 513);
modbus_connect(mb);
modbus_read_registers(mb, 6288, 1, tab_reg);
printf("1- %u %u\n", tab_reg[0], tab_reg[1]);
printf("2- %u %u\n", tab_reg[2], tab_reg[3]);
printf("--------------\n");
printf("%X %X\n", tab_reg[0], tab_reg[1]);
float xx = modbus_get_float_badc(tab_reg);
printf("val = %f\n", xx);
xx = modbus_get_float_abcd(tab_reg);
printf("val = %f\n", xx);
xx = modbus_get_float_dcba(tab_reg);
printf("val = %f\n", xx);
xx = modbus_get_float_cdab(tab_reg);
printf("val = %f\n", xx);
xx = modbus_get_float_dcba(tab_reg);
printf("vallll = %f\n", xx);
modbus_close(mb);
modbus_free(mb);
}