Страница 1 из 3

Как работает S88? Arduino-OpenDCC-RocRail

Добавлено: Пн окт 19, 2015 9:36 am
Василий
Коллеги, можно попросить пояснить как работает S88?

Я правильно понимаю, что алгоритм работы таков:

PS/Load - сигнал отправляемый читающим устройством (КС) модулям и указывающий на начало чтения.
Следующие за ним clock сигналы - указатели на то, что нужно передать через DATA, следующий бит регистра.

А теперь вопросы по существу:
Если модулей с датчиками много, как определяется конец данных от одного модуля и начало данных другого? Только настройкой в КС? А как первый модуль в цепочке узнает что нужно опять слать свои данные?

Что должно происходить по сигналу Reset? Просто очистка битов данных в модулях?

Ну и последнее. У станции OpenDCC какие частоты для PS и clock? Я намерял примерно 650 PS и 6500 clock в секунду. Это похоже на правду? И почему количество отличается ровно в 10 раз, а не в 8 как логично было бы ожидать?

Заранее спасибо за ответы :)

PS: Это я Ардуино прикручиваю как S88 модуль.

Re: Как работает S88

Добавлено: Пн окт 19, 2015 2:29 pm
antobel
Лоад - загружает состояние всех датчиков в сдвиговый регистр.
ресет - сбрасывает входные защёлки-триггеры датчиков, т.е.
после лоада проходит ресет - и до следующего лоада срабатывание датчиков фиксируется.
число тактов в цикле опроса = N*8+1(или+2) (для синхронизации лоада и ресета) соответствует ОПРАШИВАЕМОМУ массиву датчиков (т.е. определяется в КС числом опрашиваемых байт.)

Re: Как работает S88

Добавлено: Пн окт 19, 2015 3:23 pm
Василий
Спасибо, я таки понял как это работает :) Хотя мне и тяжело было сообразить объяснения с точки зрения железной реализации :)

На всякий прилеплю картинку с таймингами, может кому-то еще понадобится.
s88.gif
s88.gif (6.89 КБ) 5397 просмотров

Re: Как работает S88? Arduino-OpenDCC-RocRail

Добавлено: Чт окт 22, 2015 11:16 pm
Василий
А продолжу-ка я эту тему здесь. Думал где поспрашивать, но сам не знаю откуда проблемы, поэтому буду тут. Заодно и выложу всякие наработки по ардуине.

Столкнулся с проблемой, для того, что бы получить устойчивое срабатывание датчика подключенного по S88 в RocRail+OpenDCC скорость прохождения магнита мимо Холла или геркона должна быть небольшой. Я бы конечно списал все на кривость моей реализации модуля S88 на ардуино, если бы точно такое же поведение не наблюдалось и с модулями BLO (Холл и геркон). С модулем от BLO скорость прохождения магнита которую он еще ловит, чуть выше, но совсем ненамного.

Посему вопрос, есть ли какой-то параметр у станции или у рокрейла, который отвечает за время, в течение которого наличие единички от датчика с модуля S88, будет "засчитано" как срабатывание? Или в надежде на аппаратный антидребезг, станция/рокрейл сразу учитывают как сработку, первую пришедшую единичку?

Re: Как работает S88? Arduino-OpenDCC-RocRail

Добавлено: Пт окт 23, 2015 7:37 am
LABA
Вася, это проблема самой программы. Она почему-то игнорирует короткие сработки от датчиков. Несмотря на то, что сервер от станции получал данные о сработке датчиков, он их не обрабатывал.

Re: Как работает S88? Arduino-OpenDCC-RocRail

Добавлено: Пт окт 23, 2015 9:17 am
Василий
То есть это проблема Рокрейла? Жесть какая.... И как эту штуку обойти?

Re: Как работает S88? Arduino-OpenDCC-RocRail

Добавлено: Пт окт 23, 2015 10:50 am
LABA
Да, это проблема программы. Растягивать длину импульса аппаратно, в самом модуле обратной связи.

Re: Как работает S88? Arduino-OpenDCC-RocRail

Добавлено: Пт окт 23, 2015 10:56 am
LABA
Ради интереса попробуй подключить к Траинконтроллеру. Более, чем уверен, что там все будет работать нормально.

Re: Как работает S88? Arduino-OpenDCC-RocRail

Добавлено: Пт окт 23, 2015 11:47 am
Василий
Спасибо!

Попробую и то и другое. О результатах доложу

Re: Как работает S88? Arduino-OpenDCC-RocRail

Добавлено: Сб окт 24, 2015 1:49 pm
Василий
Алексей, ты был прав. С трейнконтроллером гораздо более короткие срабатывания фиксируются.