Показано с 1 по 2 из 2

Тема: Modbus.lib MB_RD_HOLD_REGS Buffer

  1. #1

    По умолчанию Modbus.lib MB_RD_HOLD_REGS Buffer

    Здравствуйте, уважаемые форумчане. Прошу вашей помощи. 2 ПЛК - один ModbusSlave(через конфигуратор), второй modbus master (используется modbus.lib). Считываю переменную типа float через MB_RD_HOLD_REGS. Данные считываются, но я не могу понять как из буфера получаются данные? Т.е. в буфере данные:
    buffer[0]=190
    buffer[1]=150
    buffer[2]=66
    buffer[3]=138
    buffer[4]=150
    buffer[5]=66
    buffer[6]=138
    buffer[7]=143
    buffer[8]=48

    Используя такой код мы получаем само значение флоат в переменную d(при данном буфере равно = 29,39692):
    ptr_D:=ADR(d);
    ptr_D^:=buffer[1];
    ptr_D:=ptr_D+1;
    ptr_D^:=buffer[0];
    ptr_D:=ptr_D+1;
    ptr_D^:=buffer[3];
    ptr_D:=ptr_D+1;
    ptr_D^:=buffer[2];
    И тут я совершенно не понимаю данный код и как из данных буфера получить значение float??? Направьте в нужное русло.

  2. #2

    По умолчанию

    Цитата Сообщение от osipov86 Посмотреть сообщение
    И тут я совершенно не понимаю данный код и как из данных буфера получить значение float??? Направьте в нужное русло.
    В данном примере используются указатели и ручная сборка переменной типа real из считанных байтов буфера.
    Подробнее в этой теме: http://www.owen.ru/forum/showthread.php?t=17394
    Кроме того, можно найти много полезных тем на форуме по запросу "Указатели".

Похожие темы

  1. Ответов: 2
    Последнее сообщение: 17.03.2016, 08:47
  2. Как узнать базовый ModBus адрес устройства для ModBus ASCII?
    от Александр Подыман в разделе Сервисное ПО
    Ответов: 3
    Последнее сообщение: 03.03.2016, 12:49
  3. Ответов: 4
    Последнее сообщение: 18.09.2012, 22:16
  4. Ответов: 5
    Последнее сообщение: 14.10.2010, 14:42

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •