-
Опрос ТРМ 138 по Modbus
Здравствуйте!
На нашем предприятии есть портал, в который собирается по Modbus параметры со многих приборов и контроллеров. Сам портал реализован через библиотеку Jamod на java. У меня нет полномочий менять менять код портала, поэтому что-то изменить в самой системе сбора очень проблематично. А суть проблемы вот в чем. Все устройства по-умолчанию опрашиваются функцией чтения "3", именно на ТРМ138 проставлена функция "4" и никак ее в приборе не поменяешь. Изменять логику всего портала сложно (почти невозможно и долго), а изменить в приборе нельзя (самый логичный вариант, но нигде описания не нашел). Какие есть еще варианты, кроме как написать свою программу, которая будет все преобразовывать к нормальному виду?)
-
Поставить промежуточное устройство, что тоже самое.
-
Сделай подсеть для приборов "ОВЕН". В качестве Master подсети используй ПЛК100 или МСД200.
-
а что авторы портала говорят, так то jamod с открытыми исходниками, дописать ветку которая будет читать другого типа регистры вобще то не проблема
-
В jamod есть подобный функционал, но так как портал должен работать универсально для всех, вряд ли разработчиков удастся убедить менять для пары приборов вносить какие-то изменения. Хотя в выходные их никого не было, думаю сегодня еще с ними посовещаться
-
универсальность это как раз работа с приборами используя любую функцию модбас, а не тошько одну, там изменения то по добавленному флагу менять в одном месте имя класса,остальной код без изменений
-
Обещали поковырять, не знаю сколько займет времени, но такой вариант наиболее благоприятный
-
виноват, в двух местах надо менять имя класса, а по времени это десять минут, вставить связку if...else
-
Его писали разработчики, которые не представляли, что такое Modbus и не понял с изменением класса, так как сам работал только с NModbus, там вроде никаких классов менять не надо, просто использовать разные функции опроса с выставленными параметрами, ну думаю не факт, так как не работал jamod. Если бы у меня был доступ к исходникам - я уже сам переделал
-
там функции описаны классами, для holding ReadMultipleRegistersRequest, для регистров ввода нужно ReadInputRegistersRequest, оба они расширяют ModbusRequest,
так же и с респонсами, когда ответка придет, поэтому код один и тот же только названия разные, обычным if...else можно опрашивать разные области памяти, проверяя на условие какой прибор опрашивается