Контрольная станция предназначена для опроса состояний датчиков ведомых устройств и передачи им приказов от рокрейла или собственной клавиатуры.
На данный момент рассчитана на ведомых 30 устройств, то есть знает хранит 30 адресов, состояние их сенсоров, количество ошибок связи, и прочую актуальную информацию о каждом...
Соединяются по интерфейсу rs485 на скорости 38400, (ограничение для контролеров 8мгц).
При старте опрашивает все устройства из списка, а далее по кругу опрашиваются только те, кто присутствует и выставил флаг наличия датчиков.
Пауза между запросами 15 миллисекунд, и получается чем больше модулей, тем реже они опрашиваются. Ответ от ведомого сравнивается с прошлыми состояниями, и если какой то блок участок пути освободился/стал занят, посылается сигнал компьютеру.
Входящие команды собираются в стек и сдвигают собой очередь опроса...
Ведомое устройство, в связи со спецификой модульного макета, мультизадачное:
- Программно имеет 4 датчика занятости(физически от 1го до 4х, а если больше, то устройству надо давать еще один id)
- Умеет переводить стрелки сервоприводом.
- Имеет различные слаботочные/силовые через транзистор выходы...
- Управляет внутримодульной i2c сетью.
По i2c можно подключить экранчик для отладки, добавить платы расширения увеличивающие количество выходов для подключения светодиодов или сервоприводов...
Пока тестировал на столе с 7-ю ведомыми устройствами, а в реальности, собирал 3 модуля где рокреил успешно катал 2 лока по 4м блок-участкам с двумя стрелками.
Примерная схема:
DCC и отладочная Периферийная станция:
Зоопарк ведомых устройств: