НПО Тепловизор. Теплосчетчики и расходомеры К вершинам эволюции теплосчетчика
     
Расширенный
Регистрация | Пароль?  
О компании Продукция Форум Вакансии
Пользователь    Пароль  
Главное меню
НовостиПродукцияФайлы/ДокументыСтатьиФорумОпросыФотогалереяО компанииРекламодателям
Потребители о нас
"В соответствии с договоренностью сообщаю Вам, что длительная эксплуатация расходомеров ВИС.Т Вашего производства, установленных в доменном производстве ОАО «Северсталь» подтвердила высокие метрологические и надежностные характеристики Ваших приборов."

Г.В.Трифанов, ОАО «Северсталь»
Наши партнёры
Свернуть/Развернуть ТЕПЛОСЧЕТЧИКИ • ВОДОСЧЕТЧИКИ • РАСХОДОМЕРЫ • ВИС.Т Свернуть/Развернуть
/  Список форумов
   /  Оборудование производства НПО "Тепловизор"
/  ВИС.Т MODBUS - Чтение нараст. итогов без "файловых" функций
«  Предыдущая тема    Следующая тема  »
Тема:  ВИС.Т MODBUS - Чтение нараст. итогов без "файловых" функций    

Ramil ВИС.Т MODBUS - Чтение нараст. итогов без "файловых" функций

Новенький


Добрый день,

Возникла сложность со считыванием архивного файла со стороннего оборудования по протоколу ModBus RTU (оборудование не поддерживает функцию
READ FILE RECORD)

Нам требуется отобразить накопленный итог по Гкал за все время (Отображается на дисплее в меню ГЛАВНОЕ)


Прошу Вас указать какой функцией и из какаих ячеек (регистров) можно считать данную информацию.

Данная информация описана на странице 8 инструкции, но она очень трудна для понимания.

В 654 ячейке функции 3, находится адрес первого бита (у меня 4096)..... но что делать дальше чтобы считать 14 Пункт.

Спасибо.
» 10.4.15 14:51 Профайл

CH Re:

Администратор


При невозможности воспользоваться "файловыми" функциями протокола модбас, можно использовать ту же функцию 4. При этом все архивы прибора доступны начиная с регистра с адресом 0x1000 (непосредственно с адреса 0x1000 доступен заголовок архива первой теплосистемы).

Параметры (спеификации) архивов, описанные на стр.8, не являются собственно данными архивов. Нужно ли их использовать для каких-то целей следует решать в зависимости от стоящей задачи.

Структура заголовка архива первой теплосистемы (48 модбас-регистров, читаемых функцией 4 начиная с адреса 0x1000) описана на странице 15+ руководства.

Алгоритм получения нарастающего итога объёма/массы/тепловой энергии выглядит так:
1. Чтение заголовка архива (или только непосредственно регистров, содержащих значение нарастающего итога нужного параметра на начало текущего часа).
2. Чтение значения того же параметра, накопленного с начала часа до текущего момента времени.
3. Приведение двух считанных значений к одной размерности и их сложение - текущее значение нарастающего итога получено.

--
Виктор В. Жданов
NegaSoft Co. FAE
НПО "Тепловизор", Главный инженер-программист
» 13.4.15 12:10 Профайл Посетить веб-сайт

Ramil Re:

Новенький


Добрый день, Виктор.

Исходя из инструкции Гкал лежат в 1050, 1051, 1052, 1053 регистрах (точность для тепловой энергии 1061) но это в HEX

если в DEC то 4176, 4177, 4178, 4179 (точность 4193) соответственно.

ФОРМУЛА перевода Y = X *10^(-ТОЧНОСТЬ),
но как получить Х из четырех ячеек???

Если не сложно приведите исчерпывающий пример считывания Гкал для первой теплоситсемы.
» 13.4.15 16:35 Профайл

CH Re:

Администратор


На самом деле, гкал лежат в регистрах с 0x1019 по 0x101C, поскольку описание структуры архивного заголовка в руководстве содержит байтовые смещения и размеры полей. Так удобнее при использовании файловых функций модбаса. Стандартные же модбас-функции чтения оперируют 16-битными регистрами, поэтому для получения адреса регистра следует байтовое смещение делить пополам.
Возможность что-либо делать с целочисленным значением, хранящимся в 4х последовательных регистрах, зависит от оборудования, которое их читает. В случае с полноценной ОС, например при чтении данных некой программой из под windows, эти последовательные регистры просто понимаются как 64-битное целое. Что касается вашего специфического оборудования, скорее настраиваемого, чем программируемого, с его возможностями вам следует разбираться самостоятельно.

Исчерпывающего прbмера я вам не приведу, особенно с учётом того, что мы используем только файловые функции для чтения архива. Если я скопирую фрагменты каких-то наших программ, это может ещё больше запутать ситуацию. Вот пример общего плана, для понимания.

// Для чтения значений регистров
__int16 reg[4];

// Читаем 4 последовательных 16-битных регистра с адреса 0x1019 (теловая энергия на начало текущего часа из заголовка архива первой теплосистемы)
ModbusReadInputRegs(reg, 0x1019, 4);

// Эти 4 последовательных регистра можно считать одним 64-битным целым значением тепловой энергии.
__int64 teplo_int = *((__int64*)reg);

// Читаем 2 полеждовательных регистира с адреса 0x0434 (тепловая энергия с начала текущего часа для первой теплосистемы)
ModbusReadInputRegs(reg, 0x0434, 2);

// Cкладываем для получения полного целого значения нарастающего итога тепловой энергии на текущий момент времени
teplo_int += *((__int32*)reg) / 1200;

// Тепло в виде числа с плавающей точкой с двойной точностью получаем из целого с учётом "точности" (qpoint, пример чтения не приведён, читается из того же заголовка архива или регистра 0x0405, для прибора без переключаемых диапазонов они совпадают)
double teplo_double = ((double)teplo_int / pow(10, qpoint));

--
Виктор В. Жданов
NegaSoft Co. FAE
НПО "Тепловизор", Главный инженер-программист
» 14.4.15 13:10 Профайл Посетить веб-сайт
Распечатать топик 
«  Предыдущая тема    Следующая тема  »


Поиск

Ключевые слова:    
[ Расширенный поиск ]

Права

Вы не можете начинать темы.
Вы не можете редактировать свои сообщения.
Вы не можете создавать опросы.
Вы не можете вкладывать файлы в сообщения.
Вы не можете отвечать на сообщения.
Вы не можете удалять свои сообщения.
Вы не можете голосовать.