Ну и мое ИМХО:
1. Надо оптимизировать программу? Не знаю - надо смотреть программу.
2. Обмен точно оптимизировать надо.
2.1 Во первых разнести модули на два RS. На один дискретные, на второй аналоговые (модули и ТРМ). Опрашивать и записывать дискретные модули ТОЛЬКО по маске.
2.2 Обмен сетевыми переменными штука хорошая. Но я когда-то отказался в пользу ModBus TCP. Опять же дискретные переменные гонять ТОЛЬКО собрав в байт или word.
3. Визуализация - тема отдельная. CODESYS HMI вертится в контроллере. А на компе просто отображается отрисовка. Так что ресурс лопает за обе щеки. Да и плюс сам Gateway - протокол с шифрованием и очень ресурсоемкий.
Так что лично я бы выбрал SCADA пакет внешний, и ModBus TCP.

Но и в этой конфигурации все должно работать.

НЕ забудьте в конце описание проекта выложить, если не сложно:
http://www.owen.ru/projects/