Показать сообщение отдельно
Старый 28.04.2021, 06:22   #1
romanetz
Новичок
 
Регистрация: Sep 2020
Сообщения: 18
Благодарил(а): 0 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию Замедление при работе с неправильным modbus tcp slave (решено)

При распределении переменных mbtcp slave по запросам SMLogix назначил в один запрос на запись (код функции 0x16) 124 переменных за раз. libmodbus с такой постановкой вопроса не согласен, ссылаясь на спецификацию протокола - там 123. На запрос записи 124 регистров тестовый сервер из состава libmodus пишет в лог ошибку и разрывает tcp соединение. Соответственно, эта процедура повторяется очень часто, что вызывает загрузку ПЛК процессом mbs до 65% и торможение визуализации.
Пока вылечил увеличением максимального количества регистров в пакете при записи до 125 и modbus_max_adu_length
выдержка из modbus.h в libmodbus
/* Modbus_Application_Protocol_V1_1b.pdf (chapter 6 section 3 page 15)
* Quantity of Registers to read (2 bytes): 1 to 125 (0x7D)
* (chapter 6 section 12 page 31)
* Quantity of Registers to write (2 bytes) 1 to 123 (0x7B)
* (chapter 6 section 17 page 38)
* Quantity of Registers to write in R/W registers (2 bytes) 1 to 121 (0x79)
*/
romanetz вне форума   Ответить с цитированием