Хорошая идея. Я так понимаю, задача не в меню, а в оптимизации обмена данными по Модбасу. У меня была похожая задача: система, центром которой является коммуникационный контроллер, он же мастер, который должен максимально быстро забирать данные со слейвов и записывать им поступающие для них данные. В итоге сделано так: мастер просматривает таблицу имеющихся в системе переменных (у меня только Holding Registers) и выбирает из таблицы первую переменную которая помечена как не обработанная, затем ищет все необработанные переменные которые можно поместить с первой в один запрос (порядок переменных в таблице при этом значения не имеет, всеравно все найдет), формирует максимально возможный запрос и посылает. Когда все переменные в таблице обработаны пометки сбрасываются и все сначала. Если поступили новые данные для записи, то переменная помечается как необработанная сразу. Сделана поддержка функции 23 чтобы можно было читать и писать регистры одним запросом и адреса регистров выбраны так чтобы не мешать работать с ними групповыми запросами. Цикл обмена данными получился менее 100 мс.