Имеются 4 регистра с данными формата INT 0-3 запрос 0х3 данные получаю через CallReGr используя com-порт. Проблема в том что после нескольких циклов опроса все 4 аргумента ,используемые в канале Call, сбрасываются в ноль, потом все значения восстанавливаются.Ситуация постоянно повторяется. Такое происходит при использовании модбас-симулятора и при опросе самого прибора(термодат). 1.На что обратить внимание чтоб нормализовать обмен? 2.Можно ли получить данные со знаком (формате int),не проводя дополнительных преобразований , получаяемых данных?( пробовал менять тип данных в аргументах,но отрицательных чисел не получил).
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
1. Проблемы, скорее всего, на аппаратном уровне у COM-порта. Можно получить в протоколе профайлера диагностику обмена, если задать в *.cnf-файле ключ DEBUGON=70000200 Можно перехватить трафик COM-порта любым PortMon.
2. В Modbus нет определения знаковых чисел. Передается 16-битовый регистр. Дальше - вопрос интерпретации: - в программе можно обозначить соответствующий аргумент как INT (знаковое целое), - на экране надо задать тип данных аргумента INT и подобрать соответствущий формат отображения ("По умолчанию" или "Integer %hd").
Posted by sugar (Участник № / Member № 1198) on :
обмен смотрели проходит все нормально на каждый запрос приходит ответ(корректный).
Posted by dlesnikov (Участник № / Member № 4358) on :
Может аргументы в 0 сбрасывает другой канал или программа, привязанная к этим аргументам? Что привязано к аргументам канала Call? Случайно не реальное значение другого канала?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Вопрос от dlesnikov правомерен.
А в моменты, когда аргументы ChGroupReq сбрасываются в ноль, ответы тоже корректные, ненулевые? Сколько Modbus-контроллеров Вы опрашиваете? В профайлере с указанным ключом диагностики есть сообщения о запросах/ответах, ошибках?
Posted by sugar (Участник № / Member № 1198) on :
Спасибо разобрался.Аргуненты CALL поставил OUT(привязаны к каналам HEX)