-
Большое спасибо! Разбираюсь.
-
Добрый день! используем Master OPC universal modbus Подскажите пож-та!! принимаю последовательность - BF ED 58 60 13 66 0E 52 --ЧТО соответствует числу -0.917038!!! т.е если указать тип данных double -- должно само преобразовывать к читаемому виду!!! но на деле выдаёт совсем не то!!! что делать подскажите плз??
-
Правильное ли чередование байт вы задаете?
Для Double чисел обычно "Старшим двойным словом вперед".
-
а как поменять на уровне скрипта - допустим - прибор отвечает 52 0E 66 13 60 58 ED BF а нужно наоборот??
-
Какой функцией скрипта вы ведет опрос?
Приведите этот кусок кода.
-
local destmask={"byte","byte","byte","byte","byte","byte ","byte","byte",
"byte","byte","byte","byte","double:3:?????"}
local err,len;
local n=0;
err,dest,len=server.SendAndReceiveDataByMask(0,35, sendmask,send,destmask,200);
я должен принять 3 числа по 8 байт в формате double
-
Ну вот вам нужно в маске и указать чередование байт:
local destmask={"byte","byte","byte","byte","byte","byte ","byte","byte","byte","byte","byte","byte","doubl e:3:76543210"}
Возможно будет другое чередование - надо проверять, тогда чередование будет другое.
-
т.е я принимаю 12 байт всякого мусора ненужного и 3 числа в формате double по 8 байт каждое!! Так от прибора и приходит!!! как в маске перевернуть очерёдность байтов???
-
спасибо - пытался - не помогает! есть кусок рабочего кода конвертера 32бит в флоат!!! поможет ли переделка на 64 бита или OPC не поддерживает 64 бита!! делал так(например) - а=0x520E66136058EDBF после server.WriteCurrentTag(a,OPC_G_G) - выдаёт число - но только на 32 бита и усё - больше нельзя получается!!!!
-
Очередность байт?
Если у вас другая, пишите так например:
local destmask={"byte","byte","byte","byte","byte","byte ","byte","byte","byte","byte","byte","byte","doubl e:3:01234567"}
Ваши права
- Вы не можете создавать новые темы
- Вы не можете отвечать в темах
- Вы не можете прикреплять вложения
- Вы не можете редактировать свои сообщения
-
Правила форума