Особенности оптимизации новых шаблонов wb-mqtt-serial

Добрый день!
Есть некоторые устройства, шаблоны которых я составил самостоятельно (их нет в списке поддерживаемых устройств). Шаблоны работают, но хотелось бы правильно их оптимизировать.

Можете подсказать по параметрам 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”.

Нет, порядок в шаблоне никак не повлияет на работу планировщика.

А вот тут привлеку разработчика, не могу сразу ответить.

1 лайк

Это “максимальное количество для каждого пропуска в массиве размером max_read_registers”.

max_read_registers зависит от типа прибора. Для наших счётчиков обычно прописано 60, для остальных наших устройств - 0. Если ничего не указывать, и в шаблоне ничего нет, будет 1.
max_reg_hole, max_bit_hole по умолчанию 0.

2 лайка

Кстати, не могу не похвалить за удобную новую структуру. Молодцы, вложенности здорово недоставало!

Слепил рыбу для овнового 7-сегментного показометра, настраивается всё на лету и гораздо удобнее, чем в родном конфигуряторе под уындоус.

А вот такой китайский показометр никогда не использовался?
https://aliexpress.ru/item/1005002341683748.html

А “овновские” - вот эти?

Неа. Я ж госконтору автоматизирую. Так-то своих бы давно наделал… там работы на неделю.

Существенно круче. Во-первых, крепятся прямо в дырдочку от сигнальной лампы, во-вторых - море наворотов, от сниффера modbus (!) до пяти диапазонов величин для переключения мигания, цвета, битовой картинки итд. Небестолковая штучка. Набрал мешок, ставлю.
Одно плохо - шину “проектировал” тот же кретин, что делал и предыдущие серии их периферии: ноль rs485 наружу не выведен. Я дорабатываю, припаиваю его к минусу питания, нафиг там гальваноразвязка не нужна.

Добрый день!

Да, описание параметров читал, но не все моменты понял, поэтому пишу тут. Было бы неплохо добавить значения по-умолчанию в инструкцию.

Вот тут не совсем понял, чем 0 отличается от 1 в max_read_registers? Параметр отвечает за размер массива регистров для разового чтения? Значения 0 и 1 означают 1?

0 - без ограничений, но фактически это не больше 125.

1 лайк

Теперь понял, спасибо!

Эта тема была автоматически закрыта через 7 дней после последнего ответа. В ней больше нельзя отвечать.