Я имел ввиду, что оба контроллера одновременно выполняют одинаковую программу, а не ожидают друг друга кто из них не работает. По этому и говорю микросекунды не имеют значения, если с одним что-то случилось, то второй как работал так и продолжает работать ни куда не переключаясь.
В первом посте нет требования к модулям расширения и не задано количество точек ввода-вывода, я предполагал, что ресурсов контроллера хватает для решения задачи. Если есть и модули, то их дублирование убивает всю идею, если только объект автоматизации в принципе должен работать постоянно и его остановка вызовет катастрофические последствия.
Если сто микросекунд это еще и время реакции системы на внешнее воздействие, то никаких ПЛК, надо разрабатывать свое управляющее устройство на жесткой логике или если надо быстро, то на ПЛИС например фирмы Xilinx и не тратить время попусту. Для ПЛИС тоже есть системы программирования не хуже СоДеСиса и различные библиотеки для решения разных задач, например реализация внутри ее и микропроцессора и ПЗУ с управляющей программой и ОЗУ и различных интерфейсов.
Про ПЛИС можно смотреть, например, здесь http://www.fpga-cpld.ru/