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

Avatar
  • обновлен
  • Завершен

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

Как Вы оцениваете обслуживание, которое получили?

Оценка удовлетворенности от Ваган 8 лет назад

Добавьте комментарий о качестве обслуживания (необязательно):

Прикрепленные ответы
Avatar
СИМП Лайт (тех поддержка)
  • Ответ

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

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


там 4 байта,

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


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



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



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


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






Avatar
Ваган

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

Avatar
СИМП Лайт (тех поддержка)
  • На рассмотрении

добрый день.


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

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


Avatar
Ваган

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

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

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

Avatar
СИМП Лайт (тех поддержка)
  • Ответ

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

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


там 4 байта,

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


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



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



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


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






Avatar
Станислав

Нет, там 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 степени).

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

Avatar
Дмитрий Шульгин

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

Lectus, insat opc, matrikon ?

Avatar
Станислав
Цитата от Дмитрий Шульгин

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

Lectus, insat opc, matrikon ?

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

Avatar
Дмитрий Шульгин

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

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


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


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




Avatar
Станислав
Цитата от Дмитрий Шульгин

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

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


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


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




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