Не могу опросить регистр тепловычислителя ТВ7

Avatar
  • обновлен
  • На рассмотрении

Здраствуйте. Не могу опросить регистр тепловычислителя ТВ7 - параметр имеет длину 8 байт, порядок LE 2143. В свойствах канала какой тип данных выбрать? В описании протокола ТВ7 написано, что параметр например объем итоговый имеет адрес 7563 и занимает 4 регистра. Техподдержка термотроника пока отморозилась. 

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

День добрый.

Скорей всего не 4 регистра а 4 байта. Если так то тип или DWord или Float32

Avatar
Максим

Так мне ответили с термотроника. И сейчас я понял, что немного неправильно описал проблему. Я как раз и выбирал тип - Dword, порядок LE 2143. адрес опрашивается, но сами данные не правилно считываются (например я опрашиваю адрес - итоговый расход первого трубопровода  - на ТВ7 - это число 12345 примерно - а в канал опрашивается - 3456896432). Порядок чередования байт менял, перепробовал все комбинации, так и не смог считать правильное показание регистра. Температура, давление и тп выбираю тип-float32, порядок LE 2143 - тут вопросов нет, показания корректные.

Avatar
Цитата от Максим

Так мне ответили с термотроника. И сейчас я понял, что немного неправильно описал проблему. Я как раз и выбирал тип - Dword, порядок LE 2143. адрес опрашивается, но сами данные не правилно считываются (например я опрашиваю адрес - итоговый расход первого трубопровода  - на ТВ7 - это число 12345 примерно - а в канал опрашивается - 3456896432). Порядок чередования байт менял, перепробовал все комбинации, так и не смог считать правильное показание регистра. Температура, давление и тп выбираю тип-float32, порядок LE 2143 - тут вопросов нет, показания корректные.

День добрый.

Поддержки именно 8 байтовых чисел в драйвере нет. Тут как вариант считывать два DWORD и затем в скрипте их склеивать. Но есть сомнения что получится вывести нормально такое число без потери точности.

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

День добрый.

Поддержки именно 8 байтовых чисел в драйвере нет. Тут как вариант считывать два DWORD и затем в скрипте их склеивать. Но есть сомнения что получится вывести нормально такое число без потери точности.

Здраствуйте, если вас не затруднит - можете привести пример скрипта для склейки?

Avatar
Цитата от Максим

Здраствуйте, если вас не затруднит - можете привести пример скрипта для склейки?

Для начала попробуйте вычитать значение в два DWORD. 

Avatar
Максим

Я правильно понял: 

- Есть параметр в приборе (итоговый рахсод в ТВ7 например), так как параметр имеет тип double, то он занимает 4 последовательно расположенных регистра по 16 бит каждый, соответтсвенно 16 бит*4=8байт и занимает регистры 7563, 7564, 7565, 7566.

- скада должна опросить одним физ.каналом регистры 7563 и 7564 (Dword), а вторым физ.каналом регистры 7565 и 7566 (Dword).

- далее в виртуальном канале посредством скрипта складывается значение двух физ.каналов и результат сложения уже используется .

Avatar
Максим

Вот выдержка из описания протокола ТВ7

Image 1909

Avatar
Цитата от Максим

Я правильно понял: 

- Есть параметр в приборе (итоговый рахсод в ТВ7 например), так как параметр имеет тип double, то он занимает 4 последовательно расположенных регистра по 16 бит каждый, соответтсвенно 16 бит*4=8байт и занимает регистры 7563, 7564, 7565, 7566.

- скада должна опросить одним физ.каналом регистры 7563 и 7564 (Dword), а вторым физ.каналом регистры 7565 и 7566 (Dword).

- далее в виртуальном канале посредством скрипта складывается значение двух физ.каналов и результат сложения уже используется .

В общих чертах - да. Только в скрипте не простое сложение двух значений, а побитно надо будет их "склеить"

Avatar
Цитата от Максим

Вот выдержка из описания протокола ТВ7

Image 1909

С целым числом фокус со склейкой прошел бы, с Double боюсь что может не получится.