Показать сообщение отдельно
Старый 19.10.2017, 19:40   #40
shalex
Местный
 
Регистрация: 08.07.2015
Адрес: МО
Сообщений: 2,858
Сказал(а) 'не согласен(а)'!: 0
Сказали 'не согласен'! 3 раз(а) в 2 сообщениях
Сказал(а) спасибо: 4,650
Поблагодарили 3,274 раз(а) в 1,172 сообщениях
Репутация: репутация неоспорима (3285)
По умолчанию

Дмитрий, если не против, то могу прямо здесь накидывать мысли по теме...

Скрытый текст


Что-то мне подсказывает, линейная логика вроде "нажал на кнопку и все сразу выполнилось" для автоуправления просто не подходит

На мой взгляд, подход может быть таким:
- есть система (описанная схемой и объектами схемы: локомотивы, стрелки, блоки, датчики ОС, интерфейсы, шины и т.д.)
- у каждого описанного объекта есть некий статус (например, локомотив: направление движения, скорость, статусы функций). Статусы используются для анализа и для визуализации.
- система управляется и управляет "событиями" и только ими
- события можно разделить на входящие и наоборот, выходящие
- входящие события: сработки датчиков ОС, нажатия пользователем кнопок/вращение "крутилки"/тумблеры на пультах, и т.д.
- выходящие события: команды локам, стрелкам, другим декодерам и т.д.
- по сути программа автоуправления - это "черный" ящик, который получает "входящие" события, очень быстро их обрабатывает (принимает правильное решение) и выдает "выходящие", управляющие события в шины (DCC, Xnet, Loconet, USB и т.д.).
- "внутрях" черного ящика это выглядит как скоростной анализ (циклы исключить по макс., например, пожертвовав памятью в счет макс. "ссылочности" объектов друг на друга) ) и принятие решение по совокупности критериев: входной команды, текущих статусов объектов и их взаимосвязей.



Например..
- сработал датчик 1.
- датчик 1 ссылается на блок А, событие "вход", для маршрута Х (или маска на маршрут) (>>нет ссылки датчика вообще не на что - игнорим событие)
- далее, блок А ссылается на то, что его занял лок М62, который идет маршрутом Х (>> нет ссылки, что блок кем то занят - ошибка и выкл рельсов; блок в статус "Глюк")
- переходим к локу М62. если он действительно идет маршрутом Х, то все совпало и пока все идет нормально - решение: снизить скорость лока М62, сменить статус блока А (>> если не совпало - ошибка "обнаружен поезд-призрак"; выкл питания рельс; блок в статус "Глюк")


С другой стороны, есть старый добрый релейный подход для автодвижения. Возможно его запрограммировать будет легче, но тут я не могу помочь, т.к. просто не знаю принципов. И непонятно как ее визуализировать для человека, чтобы было понятен смысл происходящего.


Последний раз редактировалось shalex; 19.10.2017 в 21:25.
shalex вне форума   Вверх
Пользователь сказал cпасибо: