0
Завершен

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

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

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

Ответ

Ответ

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

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


там 4 байта,

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


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



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



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


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






ХОРОШО, МНЕ ПОНРАВИЛОСЬ
Оценка удовлетворенности от Ваган 3 года назад

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

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

добрый день.


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