Так, считаем пример и офигеваем. Пусть у нас будет распределенный ПЛК на 1024 дискретных порта. Каждые 16 дискретных сигналов можно заменить на аналоговый ввод или вывод.
Для этого у нас есть шина и 64 платочки, каждая платочка контролирует 16 д. порта или 1 аналоговый.
Полный цикл обмена у нас 1024 бита. Сейчас не паримся, ввод или вывод. 1 мбит для реального времени 1 мс.
1 мс - считали. 2 мс - обсчитали. 1 мс - вывели. На самом деле ввод и вывод будет перекрываться. 4 мс время реакции на любую комбинацию 1024 сигнала!!! Энергетики рыдают от счастья!
Эффективность шины у нас 20% с учетом четверирования. Нам надо 5 мбит UART. В пределах пары соседних шкафов реально.
Мы не учли адреса и прочие протокольные вещи. По хорошему надо запас раза два, ну хотя бы полтора. 7.5 мбит RS-485 это уже не каждый MCU потянет.
Ограничимся 6 мбит. Это разумный предел многих MCU.
Вот так со скрипом все сходится. С натяжкой, но в качестве первого приближения годится.
Важно! У нас периферийные платочки - это китайская 8051 за $0.5. Т.е. там текстолит и разъемы наше фсе по цене.
Хост. STM32H7, iMX RT. Если FBD компилить сразу в асм, что, в принципе, реально, то будет примерно 2 мкс на "терм" (термин мира CPLD) при условии что таких термов 1024, что весьма неплохо. В принципе успеет. MCU можно параллелить. Входные данные параллельно, в каждом MCU свой набор термов, выходы объединяем. Можно сделать lockstep для MCU - сравнить, выдали ли они одинаковые команды за цикл.