Здравствуйте. Необходимо считывать архивные данные с прибора взлёт тсрв-024 по modbus. Одна архивная запись (кол-ва теплоты по трубопроводам, объёмы, массы...) занимает 172 байта. возможно ли получить такую запись с помощью источника MODBUS.R_FIFO_QUEUE с привязкой к Call.ChGroupReq? Если можно, то просьба объяснить поподробнее, если нет - то предложить другой способ.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Теоретически возможно. Надо точно знать формат запроса и ответа. Однако, насколько нам известно из практики пользователей, формат записей и в особенности формат соответствующих этим записям меток времени настолько специфичны, что дальнейшее их использование в проекте потребует очень громоздких преобразований. Практика показала, что полученный результат не оправдывает затрат.
Posted by i.Sineev (Участник № / Member № 4448) on :
Касательно специфики формата записей: Такие трудности имеют место только у приборов "Взлёта", или вообще при работе с архивами?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Организация и считывание архивов определяется устройством прибора и его протоколом обмена. У значительного большинства современных приборов, например, счетчиков электроэнергии, подобные проблемы отсутствуют или могут быть преодолены, как, например, у контроллеров фирмы Emerson.
Posted by i.Sineev (Участник № / Member № 4448) on :
Известны как формат запроса, так и формат ответа, также известно представление данных в ответе. Но: TM при использовании канала CALL.ChGroupReq с параметром 4 и привязкой к MODBUS.R_FIFO_QUEUE позволяет посылать запросы устройству максимальной длины 12 байт (1й-адрес, 2й- № ф-ции, 3-10-параметры, 11,12-КС).Нужно же отправить запрос длиной 14 байт (на 2 байта больше параметров). Вопрос №1: Каким способом это можно сделать? Идём далее: в ТМ параметры задаются с помощью 2х байтовых аргументов, но в запросе есть несколько однобайтных параметров, и вместо 01 и 01 приходится использовать значение 257 Вопрос №2: Можно ли обойти это?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Реализация Вашей пользовательской функции с помощью канала ChGroupReq, привязанного к к Modbus-переменной R_FIFO_Queue невозможна.
Можно реализовать эту функцию с помощью описанного в документации релиза 6.07 механизма "Обмен по произвольному протоколу по RS".
Однако при этом надо будет дополнительно пользовательской программой вычислять контрольную сумму (CRC) и вносить ее в соответствующие аргументы канала ChGroupReq, реализующего команду.
Проверку корректности ответа также надо будет осуществлять пользовательской программой.
Кроме того, надо учитывать, что все аргументы канала будут передаваться в формате Intel - младшим байтом вперед.
Posted by i.Sineev (Участник № / Member № 4448) on :
Практически удалось реализовать необходимый запрос.
quote: Однако при этом надо будет дополнительно пользовательской программой вычислять контрольную сумму (CRC) и вносить ее в соответствующие аргументы канала ChGroupReq, реализующего команду.
В справке сказано:
quote: ... эти аргументы не должны иметь привязки.
А привязывать к ним другие (выходные аргументы программ) можно?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :