PDA

Просмотр полной версии : Modbus.lib MB_RD_HOLD_REGS Buffer



osipov86
13.01.2017, 02:54
Здравствуйте, уважаемые форумчане. Прошу вашей помощи. 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??? Направьте в нужное русло.

Евгений Багаев
13.01.2017, 14:16
И тут я совершенно не понимаю данный код и как из данных буфера получить значение float??? Направьте в нужное русло.

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