Цитата Сообщение от Vitorgan Посмотреть сообщение
Отпишусь.
После полного вникания в работу modbus.lib и данного диспетчера, удалось опрашивать все нужные мне модули, их 8 шт. 8а, 8ас, 8дф, 16р - 2 шт.
Далее в течении 1 часа, были настроены циклы, таймауты, pollingStatistic.Middle был максимально приближен к PollingTime.

В данный момент полностью удовлетворены работой диспетчера, пока полностью выполняет возложенные на него функции, надеюсь все так и останется.
Спорягину Кирилл огромное спасибо за своевременную помощь, и вообще за сам Диспетчер)
За 3 часа работы ни одной ошибки.
Рад помочь...

Vitrogan, еще хотел обратить ваше внимание на вот этот пост. В части 2 особенно.
Важно при использовании модулей вывода.
Вы переделывали модуль МУ110-32Р на МУ110-16Р. Убедитесь, что вы заново формируете буфер в случае ошибки при первичном опросе и MaxAttempts>1. В противном случае изредка (когда проходит ошибка) на модуле вывода вы можете выставлять некий произвольный набор выходов, чего явно не ждете.
В модуле МУ110-32Р повторное формирование буфера реализовано с помощью возврата на шаг 1 при ошибке (см. код ниже).

Код:
		
IF tmpWriteError = 0 THEN
	Mdl.WriteStep := CompleteWriteStep;
ELSE
	fcModuleAddAttempt(MdlBase := Mdl.Base);
	IF Mdl.Base.CurrentAttempt > Mdl.Base.MaxAttempts THEN
		Mdl.WriteStep := CompleteWriteStep;
	ELSE
		Mdl.WriteStep := 1; (* необходимо заново сформировать буфер *)
	END_IF;
END_IF;
И два слова в защиту штатного конфигуратора.
У меня есть проект, где работает штатный конфигуратор и опрашивает 12 модулей. Опрос проходит весьма шустро.
В случае использования штатного конфигуратора при опросе модулей с большим объемом данных обмена (МВ110-8А, например) желательно использовать прием со string переменными (см. тут).
Хотя, конечно, когда разберешься с modbus.lib, уже проще работать со своим кодом.