This is topic Modbus RTU суммарный расход в четырех регистрах in forum TRACE MODE 7 профессиональная версия / TRACE MODE 7 professional version at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/59/t/000064.html

Posted by Дмитрий А (Участник № / Member № 9731) on :
 
Приветствую! Нужно забрать с расходомера суммарный расход, который содержится в 4 регистрах, у двоих человек за весь день перебора разных настроек не получается это сделать, максимум что получилось число из 2 регистров, но нам надо 4. Пробовали все перестановки (308, 309), меняли прототипы и типы (246, 377, 378) - ничего не помогает, есть некие числа вообще не похожие на то что в устройстве, тестировали через виртуальное устройство ПО Modbus Slave, порт настроен верно, регистры отдельно получаем, значение из 4 регистров - НЕТ! Нам нужно описание как настроить, или хотя бы какие параметры точно нужны, а какие лишние, примеры связи и т.п. Идет ПНР, время важно! Надеемся что тех. поддержка проявит свою квалификацию и клиентоориентированность.
 
Posted by Nico (Участник № / Member № 5342) on :
 
- 4 регистра это double float
- Call.chgr у которого аргументы double и
Длина по аргументам [311]=1,
связанный с источником
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Здравствуйте!
Нужно забрать с расходомера суммарный расход, который содержится в 4 регистрах... Нам нужно описание как настроить

Релиз 7.1.0.3.
Во встроенной Справочной Системе в описании настройки подключения ModBus-устройства все описано.

Справка вызывается по нажатию F1. При том, если открыт некоторый раздел, то Справка открывается на описании данного раздела.
Например, Вы и Ваши два коллеги открываете в Среде Разработки Источники - Протоколы Net/RS - uModbus на редактирование и нажимаете F1.

Или из Оглавления
Справочная Система - Источники/Приемники - Группа "Протоколы Net/RS" - Обмен по MODBUS

К каналу Call с типом вызова ChGroupReq и аргументами с типом данных "lreal".
Так же в настройках (редактирование) источника Источники - Протоколы Net/RS - uModbus - Modbus_* установить флажок "Длина по аргументам (311)"

Длина по аргументам [311] – если этот флаг установлен, то при привязке такого источника-приемника MODBUS к каналу CALL.ChGroupReq количество запрашиваемых байт (N) равно сумме длин всех аргументов (в байтах), исключая аргументы BOOL и STRING. Число запрашиваемых регистров – это N, округленное до ближайшего большего четного числа и деленное пополам;

Только в такой конфигурации возможна работа со значениями DOUBLE (64 бита, LREAL) (по 8 байт в аргумент).


[ 23.09.2024, 10:49: Сообщение отредактировал / Message edited by АдАстра. Техподдержка ]
 
Posted by Дмитрий А (Участник № / Member № 9731) on :
 
Запутанно все как-то. у меня сделано так,
напишите где ошибка:
В источнике
305 = R2InReq(4) т.к. используются Input регистры
246 = ANALOG-64
311 - включено
377 = lreal
378 = 1

Канал
Call
86 = привязал из источника
123, 261 = ChGroupReq(8)
аргумент lreal - а что привязывать ???
 
Posted by Nico (Участник № / Member № 5342) on :
 
- убедиться что в аргументе( не привязанным ни к чему ) правильное значение
- потом делаем канал(F64) и к нему привязываем аргумент или к аргументу привязываем канала(атрибут 2 IN)
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
В источнике
305 = R2InReq(4) т.к. используются Input регистры
Номер функции выбирается с учетом карты сигналов устройства. Если в описании к Расходомеру указано, что данный регистр можно читать 4-ой функцией, то верно.
246 = ANALOG-64
Можно так оставить, но можно выставить CHGR
311 - включено
Верно.
377 = lreal
Если в 246 не CHGR, то не трогать.
378 = 1
Если в 246 не CHGR, то не трогать.

Канал
Call

86 = привязал из источника
Верно
123, 261 = ChGroupReq(8)
123 = ChGroupReq Верно.
аргумент lreal - а что привязывать ???
Nico предлагает правильное решение - сначала убедиться что Вы получаете то что надо и в правильном виде (может придется заниматься поворотом байт). А уже после либо расширять количество аргументов в Call.ChGroupReq (если таких параметров несколько и они последовательны) или привязываться к аргументам канала Call.ChGroupReq со стороны других каналов, куда необходимо передать данные.

После создания источника, привязки его к каналу Call с аргументом, можно сохранить проект, скомпилировать и запустить. Далее откройте Панель МРВ, в левом окне найдите Ваш канал Call.ChGroupReq, выделите его, в правом окне найдите 124 атрибут и дважды кликните (он раскроется) и проверьте значение в аргументе. Оно должно совпадать с числом в расходомере.
 
Posted by Дмитрий А (Участник № / Member № 9731) on :
 
Мне кажется какая-то стена непонимания. Отдельные регистры получаю замечательно, все все совпадает, но как слепить , сцепить, связать это чтобы получилось ОДНО число ну никак не пойму!
В устройстве 1 рег = 776, 2 рег = 0, 3 рег = 0, 4 рег = 16422, вместе эти числа на устройстве образуют ОДНО число = 11 (это суммарный расход), любыми программами работы с модбас я легко получаю это число 11, указав что число состоит из 4 регистров. КАК это сделать в TraceMode 7 так и не понял. Запускаю runtime вижу там и числа по отдельности и у канала Call в атрибуте 124, все верно, но получить ОДНО число из 4-х как?
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
Мне кажется какая-то стена непонимания.
Если Вы все сделали строго рекомендациям, то получили бы результат.

Запускаю runtime вижу там и числа по отдельности и у канала Call в атрибуте 124, все верно, но получить ОДНО число из 4-х как?
Если Вы сделали у канала CAll.ChGroupReq аргумент типа lreal, то в реальном времени, если раскрыть 124 атрибут, будет Ваше число 11.

Если там не 11, то необходимо повернуть порядок чтения байт. Это настраивается в настройках подключения к устройству uModbus.
 
Posted by Дмитрий А (Участник № / Member № 9731) on :
 
Может есть у кого маленький пример в виде проекта как получить 64-битное число?, а то если по одному параметру в день через форум разбирать так я и до нового года не сделаю
 
Posted by Дмитрий А (Участник № / Member № 9731) on :
 
У CAll.ChGroupReq должен быть один атрибут типа lreal и больше никаких атрибутов, так? атрибут этот надо привязывать к чему либо?
 
Posted by Дмитрий А (Участник № / Member № 9731) on :
 
Получилось забрать число 11
 
Posted by АдАстра. Техподдержка (Участник № / Member № 4) on :
 
У CAll.ChGroupReq должен быть один атрибут типа lreal и больше никаких атрибутов, так?
Если необходимо считать один параметр, то один аргумент, если несколько, то столько сколько необходимо.
Привязка источника ModBus к каналу Call описана в Справочной Системе.

Получилось забрать число 11
Прекрасная новость.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2