0
Завершен

Переменные типа Long+Float

Ваган 4 года назад обновлен Дмитрий Шульгин 4 года назад 12

Есть ли возможность считывание переменных типа long+float из теплосчетчика ВЗЛЕТ?

Ответ

Ответ

обозначение long+float это придумка взлётовцев

не бывает смешанных типов


там 4 байта,

скорее всего это просто float32


выбираете у нас float32



и начинаете перебирать Порядок байт



Поменяли, сохранили, протестировали


На одном из них должны пойти реальные данные






Также хотелось бы считывать архив Взлетов.

На рассмотрении

добрый день.


1. пришлите документацию на взлёт (или ссылку), посмотрим что там написано

2. по OPC HDA работы запланированы в ближ.время.


Адреса регистров модбас ТСРВ-026М (vzljot.ru/files/docs/Uchet_tepl_energ/tsr026/ModBus_tsrv026.pdf)

Например, регистры 349337 и далее

И подружиться с теплосчетчиками теплокома, с ними вообще не получилось.

Ответ

обозначение long+float это придумка взлётовцев

не бывает смешанных типов


там 4 байта,

скорее всего это просто float32


выбираете у нас float32



и начинаете перебирать Порядок байт



Поменяли, сохранили, протестировали


На одном из них должны пойти реальные данные






Нет, там 4 слова 16-битных. Читаем по ModBus как регистры Word. Результат вычисляется по формуле:

P=(W3+(W2<<16))^+dword_to_real(W1+(W0<<16)).

где W0,W1,W2,W3 регистры с адресами 49337,49338,49339,49340 соответственно (для переменной Long+float с адресом 49337).

Символ ^ означает косвенную адресацию (по этому адресу в памяти лежит DWORD, но мы берем его как REAL).

Символ << означает сдвиг влево на 16 бит (значение переносим в старшее слово или умножаем на 2 в 16 степени).

Вот такие они извращенцы!!!

Какой нибудь другой OPC клиент может эти данные вычитывать ?

Lectus, insat opc, matrikon ?

Не пробовал. Этот алгоритм на CDS3.5 использовал. Можно посмотреть на сайте Инсата, может ОПС есть под взлеты.

OPC для взлёта есть, но тогда будет связка

СКАДА<>OPC<>взлёт


а я пытаюсь понять есть ли решение когда скада опрашивает взлёт без опс сервера по классическому MODBUS


Если получится настроить LECTUS или INSAT,что бы они в этом странном формате опрашивали взлёт через протокол MODBUS, то тогда и мы это сможем сделать




Я его по ModBus контроллером опрашиваю, только потом математику надо применять. Можно сначала два младших регистра считать как INT32, два старших как FLOAT32. INT32 перевести во FLOAT32, а потом сложить их. А результат будет уже наверное FLOAT64.

В инсате есть возможность скрипты написать для обработки, но не разбирался.

в нашу систему тоже можно получить в скрипты данные в ворде с регистров,

математикой обернуть и виртуальный тег записать. но все это будет экспериментом.


почему не хотите использовать ОПС сервер логика от производителя ? он по идее должен уже в чистовом виде данные выдавать

Сервис поддержки клиентов работает на платформе UserEcho