Получите 32-битные данные с плавающей запятой среднего-младшего порядка от инвертора, используя libmodbus - PullRequest
0 голосов
/ 10 февраля 2020

Мой вопрос: мы могли бы получить правильное значение из программы Modbus Poll. 32-битная переменная с плавающей запятой 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...