Это не система связи в терминах коммуникационных протоколов. Это транзакционая шина данных, с элементами коммуникации а ля протоколы.
Считаем времянки для 500 кбит/сек. 2 мкс на бит.
-- маркер начала - 2 бита
-- адрес регистра (11 битов) и CRC-5 - 16 бит, 24 после Hamming (12,8)
-- данные - 16 бит, , 24 после Hamming (12,8)
-- биты квитирования - 2
Транзакция на чтение аналогично.
С точки зрения master имеем 1024 регистра на запись и 1024 регистра на чтение (11 бит, адресация как в I2C). Во время транзакции slavе подтверждает прием адреса окончательно подтверждает прием команды (два бита для ответа - двойное подтверждение, на случай пропуска одиночного бита).
Итого 52 бита на транзакцию. 10к транзакций в секунду. Смотрим на скорости pps Ethernet и понимаем, что в реальных условиях наши 500кбит побьют 10Мбит Ethernet - там не будет такой красивой схемы подтверждения. И да, у нас многоточка на одну витую пару и Hamming (12,8)
https://kb.juniper.net/InfoCenter/index?page=content&id=kb14737
Если говорить о PLC (в терминах http://caxapa.ru/1001410/ ), то для PLC с 32 IO сигналами (будем считать, что каждый IO сигнал описывается 16 битами) мы имеем темп транзакций (опрос или вывод значения) 312 транзакции в секунду, 3.2 мс на транзакцию. Итого теоретически 6.4 мс на реакцию - опросили и тут же выдали команду.
В реальности будет еще служебная инфа - настройка IO и прочее, так что пусть будет 200 транзакций в секунду - стальное зарезервируем.
Я решил изначальную задачу о распределенном PLC с реакцией 10 мс.
Slave получается предельно простой. Нужен аппаратный контроллер протокола (а сложность здесь совсем не такая, как аппаратный IP стек, например) и далее любой интерфейс к MCU.
Заметим, у нас сам собой решается вопрос синхронизации местера и slave с точностью до длительности двух бит. Вообще без усилий программизма.
51 живее всех живых? А у SiLabs и шина параллельная есть :)