Добрый день!
Есть некоторые устройства, шаблоны которых я составил самостоятельно (их нет в списке поддерживаемых устройств). Шаблоны работают, но хотелось бы правильно их оптимизировать.
Можете подсказать по параметрам max_read_registers, max_reg_hole, max_bit_hole?
Какие значения по-умолчанию будут, если не указывать эти поля?
Что будет, если указать слишком большой max_read_registers?
Нужно ли выстраивать в шаблоне регистры в последовательном порядке, для активации массового чтения?
Параметры max_reg_hole и max_bit_hole указывают суммарное количество пустых регистров для массива размером max_read_registers или максимальное количество для каждого пропуска в массиве размером max_read_registers?
Добрый день.
Все-все параметры описаны на гитхабе:
// максимальное количество считываемых "пустых" регистров.
// Драйвер в целях оптимизации может считывать регистры
// "пачкой". При этом, если какие-либо регистры не
// были включены в конфигурацию, но в целях ускорения
// опроса (чтобы не разрывать "пачку") их всё-таки
// можно считывать, можно указать значение max_hole_size
// больше 0. В данный момент поддерживается только
// устройствами Modbus.
"max_reg_hole": 10,
// то же самое, что max_reg_hole, но для однобитовых
// регистров (coils и discrete inputs в Modbus). В данный
// момент поддерживается только устройствами Modbus.
"max_bit_hole": 80,
// максимальное количество регистров в одной пакетной операции
// чтения. В данный момент поддерживается только устройствами
// Modbus.
"max_read_registers": 10,
// Минимальный интервал опроса регистров данного устройства в миллисекундах
"poll_interval": 10,
// Максимальное время ответа устройства в миллисекундах.
// Если не установлено, то принимается равным 500 мс.
// Если значение этого параметра, установленное для порта, больше указанного здесь, используется значение порта.
// Этот параметр задан в шаблонах описания устройств, переопределять его можно только в случае некорректной работы с устройством.
"response_timeout_ms": 100,
max_read_registers по умолчанию - 10
max_reg_hole - 0
max_bit_hole - 0
Тут, по названию, если в шаблоне есть два соседних регистра ва меду ними “дыра” - можно считать их вместе. Но если устройство к такому отнесется нормально (или регистр есть), может просто вернуть ошибку “illegal range”.
Нет, порядок в шаблоне никак не повлияет на работу планировщика.
А вот тут привлеку разработчика, не могу сразу ответить.
Это “максимальное количество для каждого пропуска в массиве размером max_read_registers”.
max_read_registers зависит от типа прибора. Для наших счётчиков обычно прописано 60, для остальных наших устройств - 0. Если ничего не указывать, и в шаблоне ничего нет, будет 1. max_reg_hole, max_bit_hole по умолчанию 0.
Неа. Я ж госконтору автоматизирую. Так-то своих бы давно наделал… там работы на неделю.
Существенно круче. Во-первых, крепятся прямо в дырдочку от сигнальной лампы, во-вторых - море наворотов, от сниффера modbus (!) до пяти диапазонов величин для переключения мигания, цвета, битовой картинки итд. Небестолковая штучка. Набрал мешок, ставлю.
Одно плохо - шину “проектировал” тот же кретин, что делал и предыдущие серии их периферии: ноль rs485 наружу не выведен. Я дорабатываю, припаиваю его к минусу питания, нафиг там гальваноразвязка не нужна.
Да, описание параметров читал, но не все моменты понял, поэтому пишу тут. Было бы неплохо добавить значения по-умолчанию в инструкцию.
Вот тут не совсем понял, чем 0 отличается от 1 в max_read_registers? Параметр отвечает за размер массива регистров для разового чтения? Значения 0 и 1 означают 1?