Автомашинист. Оживляем «автопилот» для электрички

Приветствую всех!
Думаю, каждый из нас хоть раз в жизни ездил на электричке. Многие наверняка даже не подозревали о том, что даже на древних таких машинах в нашей стране может существовать автоматическое управление. И вот ко мне в руки попал именно такой девайс, на поверку оказавшийся не просто блоком автоведения, а куда более интересным устройством.

fa_we9gz4ynnegioti1r63gybiy.jpeg

Итак, в сегодняшней статье речь пойдёт об одном весьма примечательном девайсе, устанавливаемом на наших поездах. Узнаем, как он работает, и попробуем его запустить. Традиционно будет много интересного.

О чём это я?


Всё началось, кажется, с метеостанции.

tjgckb9wx9emvmlpr6ha_ruxz8w.jpeg

Ещё в школьные годы я наткнулся на статью, где кто-то собрал метеостанцию на Arduino на базе дисплея от предмета нашего обзора. Тогда я и представить себе не мог, что такая штука окажется в моих руках, но всё равно пост прочитал с интересом и намотал на ус. Потом ко мне в руки попал дисплейный блок в сборе, который мне даже удалось запустить, о чём у меня был соответствующий пост. Но мой блок был не более чем кирпичом блоком индикации, что не давало мне покоя. Очень уж хотелось увидеть прибор в работе.

Но вот спустя время я встретил нескольких товарищей, также интересовавшимися данной темой, благодаря которым я смог познакомиться и с другими исполнениями данного устройства. Как оказалось, тот мой пост им весьма помог, мне даже было показано фото рабочего девайса. Но всё же мне хотелось увидеть в работе прибор с оригинальным софтом, так что его запуском мы и попробуем сегодня заняться. Получится ли это? Давайте разбираться.

Краткая история автоведения на наших поездах


Ну и перед началом поговорим о том, как вообще появилось автоматическое управление на железной дороге. Как нетрудно догадаться, автомашинист — это некое устройство, которое умеет управлять поездом с минимальным участием машиниста (что и было достигнуто у нас) или и вовсе без него.

Вообще, разработки в этой области, как это часто бывает, начались ещё давным-давно, в пятидесятые-шестидесятые годы. Как удалось найти, первая такая система появилась у нас в далёком 1957 году, впрочем, распространения она не получила. Подробной информации по ней найти особо не удалось. Чуть позже, уже в восьмидесятые и девяностые, такими устройствами обзавелись грузовые и пассажирские поезда.
И вот, в конце девяностых, появились микропроцессорные системы. Одна из них — часть сегодняшнего обзора.

А что там в метро?


ovn_bmdgllcb5qwjmxck98p03r0.jpeg

Позже наработки добрались и до метро. Нерабочие панели управления автоведением прожили в кабинах старых поездов вплоть до конца их работы.

svy01d4oipdhh2plgvg-vef0l-g.jpeg

А вот пульт 81–717 с таким же блоком. Сейчас вместо левой нижней панели (блока №4) в зависимости от города стоит либо стороннее оборудование (информатор, дисплей, экстренная связь с пассажиром), либо просто металлический лист-заглушка.
Позже про такие системы почти забыли, вновь заинтересовались ими лишь в наши дни. Сейчас наиболее известное место, где можно встретить автоведение — Московско-Петроградская линия питерского метро.

УСАВП и всё о ней


Как уже было сказано ранее, массово такие устройства начали распространяться в девяностые.

zpjfguy3nsnjjxwllr5zuyyiuxs.jpeg

Вот одна из первых версий такого блока автоведения, устанавливаемая на поезда ЭР2Т, ЭР2Р. Работала железка на процессоре 386EX, находившемся внутри кабинного блока.

paufs_ej-b0urxmf8isogxu3r8s.png

Разрабатывал эти блоки LCard по заказу компании «АВП-Технологии», интеграцией занимался «Желдорконсалтинг» и ОЦВ (отраслевой центр внедрения инноваций РЖД).

_szjkzwtu2bedfnwtdjezqnatgk.png

Вот более новый блок. Именно его мы когда-то оживляли…

ne10tbnqxenz8t6leas2-ambv6c.png

А вот его блок управления (а если точнее, блок коммутации и сопряжения), так и не дошедший до меня. Внутри него располагается управляющий компьютер, а также платы дискретного ввода-вывода, взаимодействующие с цепями управления поезда.

ew09tvqbzokmpvcyfcf2rz9jwk0.jpeg

Одна из последних версий. Процессорная плата в ней перекочевала обратно в блок индикации (ЦПИ), внутри блока КС находятся только платы питания, ключей и их драйверы. Связано это с тем, что обслуживать находящийся в большом железном ящике комп было довольно проблематично. А требуется это часто — например, для смены расписания.

hq9dq1snmusqoehq3phdmscc6r8.jpeg

Примечательно и то, как вообще устроена эта штука. В наши дни такое покажется чем-то невероятным, но внутри этой штуки находится обычный промышленный комп на процессоре X86, на котором работает софт в виде обычной программы под MS-DOS, дёргающей цепи управления через обычный LPT-порт. К слову говоря, программа была написана на «Турбо Паскале».

ltndfthoqlixpsk-abqejkfftfk.jpeg

Ещё позже появились совсем новые блоки, уже с монитором вместо ВЛИ.

Но вот софт, судя по загрузочному экрану, так и остался под DOS.А вот небольшое видео про работу этих блоков.Аналогичные системы (УСАВПП, УСАВП/1, УСАВП/Г) ставят и на другие поезда.

Как работает САВПЭ


Поговорим о том, как работает этот блок. Сейчас речь пойдёт о новой его версии (с четырёхстрочным ВЛИ), просто потому что на него удалось найти больше всего информации. Конструктивно САВПЭ состоит из блока ЦПИ и блока КС. К блоку ЦПИ также подключается регистратор (он у меня тоже есть, но о нём поговорим как-нибудь в другой раз), клавиатура (по сути обычная PS/2 с кастомными скан-кодами, в более старой версии она подключалась к COM-порту) и салонный динамик.САВПЭ — не автоматическое управление, заменить машиниста железка не может. Принцип её работы заключается в поддержании оптимальной скорости, рассчитанной из профиля пути, ограничения и времени по графику, что должно облегчить ведение поезда машинистом. Также она получает данные о сигналах локомотивного светофора, позициях контроллера и крана машиниста, отключая автоматический режим при переводе ручки контроллера из нулевого положения, начале торможения краном или появлении запрещающего сигнала. САВПЭ не является прибором безопасности, то есть машинист может вообще её не включать. Далеко не все пользуются девайсом так, как было задумано: несмотря на все его фишки, не всегда обеспечивается экономия электроэнергии, а иногда железка может слишком рано затормозить или наоборот пропустить платформу. Поэтому чаще всего систему используют как подсказчика — она предупреждает машиниста о сложных местах, а также именно она объявляет станции в салоне. Думаю, многие из нас слышали этот характерный голос в старых электричках — так вот, это САВПЭ. Вместо звуковой карты компа или простого ЦАПа как в автобусном информаторе там применён цифровой сигнальный процессор, что вместе со сжатием данных позволило запихнуть все названия станций и сопутствующие объявления в единственную ПЗУшку.
Кому-то из вас, возможно, довелось слышать в электричке помимо станций и более странные объявления в духе «Внимание! Проба тормозов!». Их тоже проигрывает САВПЭ, а в салон они идут по недосмотру слесарей в депо: при правильном подключении салонный усилитель включается только при нужном объявлении.

Обзор оборудования


image

Перво-наперво идёт тот самый блок индикации, уже фигурировавший в одном из постов.

image

А вот и клавиатура от этой железки.

dxjbsesvibjgvlsj8yljycm_1zw.jpeg

Далее на очереди УСАВПП. Этот блок от моего любимого электровоза ЧС7.

psde1nuhjacvnyrklohsm91_q2g.jpeg

Обратная сторона. Разъёмов здесь уже больше: всё-таки внутри полно электроники.

gwathz6lzzrjff_tmmpcq4loh2s.jpeg

Сбоку кнопка Reset и разъём MDN-6P для подключения к компьютеру.

jjylk7z5mp00hqq7jdpp8oreamc.jpeg

Пульт от него.

hqde4j_0lgmbpgysc5-fknjazwk.jpeg

А вот блок от электрички. По виду он очень похож на предыдущий…

ЧСовский фэйл


Перейдём к блоку от ЧС7.

txndcidvp3mqvxf_mjvsl6gc7ow.jpeg

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

balpjwqx_yllgmlhbrooga3yxsq.jpeg

Внутри аж три платы: комп, дисплей и плата управления.

pimomve_u9v6zgt0r-jyniix8t0.jpeg

ПромПК отдельно. Виден DiskOnChip с ОС и софтом. Электровоз требует работы с большим числом дискретных выходов, поэтому тут используется ещё более запутанная система: из-под MS-DOS загружается RTOS-32, которая имеет в себе некоторые элементы WinAPI, а уже под неё работает управляющий софт.

dgcfmgflrkilkxmo-e5ivgl7pbk.jpeg

А вот он же с обратной стороны. Здесь используется модуль форм-фактора MicroPC. В отличие от PC/104, он несколько больше, а вместо штырьков здесь краевой разъём.

ga7twvk0aelo7zezjgqzoyfgdri.jpeg

Плата со снятым компом. Отчётливо видны ПЗУшка с записями и МК AT90S2313 для связи с блоком КС.

nc6bzhdnqon0-kf5wooc38hubhi.jpeg

Но запуск этой штуки оказался неудачным: без связи с блоком КС, которого у меня не было, девайс вис.

1sx7gjvlpcqdugdwkescavq_gmk.jpeg

Подключив монитор, можно даже увидеть загрузку ОС.

h5dscynrfdobonbb1f4ckbmjwli.jpeg

Продолжим эксперименты. На этот раз попробуем установить софт от электрички. Мне как владельцу промПК с самопальной платой для DiskOnChip повезло больше, чем товарищам из депо, вынужденных кидать файлы через терминал.

2cmurrxr9mvwa76nwqd_69l1j-u.jpeg

Достаём чип из платы, втыкаем его в переходник, запускаем на промПК Ghost и снимаем образ. Далее заливаем его на другой DOC и, убедившись, что всё работает, сносим ЧСовский софт и закидываем таковой от электрички.

ak3mvvzj45rwgphqjofftytt408.jpeg

Но после запуска меня ждало разочарование, блок выдал ошибку. Вернув всё на место, я отложил его до лучших времён.

Неожиданное знакомство


tg_jzxclcwym0wsqrpwctfzvrjy.png

Второе дыхание открылось тогда, когда в нашем чатике по продаже всякого хлама на глаза попался побитый жизнью четырёхстрочный люминесцентный индикатор (целый, но без кучи деталей на плате), который был немедленно опознан как дисплей от ЦПИ. Любопытство взяло верх, и я немедленно написал продавцу на предмет наличия у него других остатков от САВПЭ. Спустя пару недель общения с ним я стал обладателем нескольких плат от блока КС, нерабочего ЦПИ и ещё некоторых остатков от железнодорожной электроники. Впрочем, попытка подключения этих плат к блоку от ЧС7 не дала абсолютно никакого эффекта.

Оживляем М1


Далее мне достался софт от САВПЭ/М. Мои блок и клавиатура были от УСАВП/1 (он же САВПЭ-М1), но я понадеялся на то, что оно заработает и так.
Софт работает под DOS и состоит из двух файлов — BASE.DAT и LT-1.EXE. Первый из них — конфигурация низкого уровня (расписание, список станций и подобные настройки), второй — непосредственно программа.

bam53upnmjxlnyh4wivgcgf_bk4.jpeg

Также для работы требуются файлы SOUND.DAT и SOUNDCOM.DAT. Увы, от этого САВПЭ у меня нет ничего кроме блока индикации, поэтому услышать, как работает информатор, у нас не выйдет. Но эти файлы всё равно нужны, без них блок не заработает.

8zf4kg1uuuyrwudugh3wimm1yke.jpeg

Закидываем их в папку и запускаем снова. Увы, девайс всё равно не работает и на нажатие кнопок тоже не реагирует. В чём же дело?

hwgpsk7aemfdsdybwyytx2mnpk4.jpeg

-oy3b37rdjv-fqfutka7obhsmhu.jpeg

Оказывается, моя клавиатура от М1, а у М, от которого софт, она другая. Скан-коды её оказались вот такие:

  • 0×01: 0
  • 0×02: 1
  • 0×03: 2
  • 0×04: 3
  • 0×05: 4
  • 0×06: 5
  • 0×07: 6
  • 0×08: 7
  • 0×09: 8
  • 0×0A: 9
  • 0×0B: F1
  • 0×0C: F2
  • 0×0D: ОГР
  • 0×0E: ДОП


Коды для ещё двух клавиш остались неведомыми: в моей конфигурации их нажатие не вызывает никакой реакции.

xgadd8hnjtb8fqejpp3drv2srjg.jpeg

Для проверки я быстренько собрал на Arduino переходник с одной клавиатуры на другую.

#include 

uint8_t packet[8] = {0};
SoftwareSerial kbd(7,6);
void setup() {
  // put your setup code here, to run once:
  kbd.begin(4800);
  Serial.begin(4800);
}
uint8_t n = 0;
void loop() {
  
  // put your main code here, to run repeatedly:
  if (kbd.peek() == 0x3E) {
    kbd.readBytes(&packet[0], 8);
    uint8_t toSerial = (packet[4] - 0x30) * 10;
    toSerial += (packet[5] - 0x30);
    if(toSerial == 10) toSerial = 13;
    else if(toSerial == 13) toSerial = 16;
    else if(toSerial >= 0 && toSerial <= 9) toSerial++;
    else if(toSerial == 15) {
      toSerial = n;
      n++;
    }
    Serial.write(toSerial);
  }
  else kbd.read();
}


А вот и скетч для него.

ikjj8ba1lyevk_ulgemopn1lqzw.jpeg

После этого блок заработал.

duaofg4csflpffpkpsuc7aavrly.jpeg

Все меню отлично работают. После сохранения параметров создаются ещё два файла — TABVROGR.DATA (таблица временных ограничений) и PARAM.DAT (установленные в меню параметры).

Ещё немного фотографий

ЭР2Т


На очереди последний на сегодня блок. На него были возложены самые большие надежды. Ну что же, самое время узнать, оправдаются ли они.

r_vrvaxcwdvcf2iiemcp2jtfx9m.jpeg

Обратная сторона блока явно даёт нам понять, что по начинке он такой же, как и блок от ЧСа. Всё же неспроста там в названии говорится «Унифицированная».

r5ovwtxvmutmlu0zcxyrz-jwaqg.jpeg

А вот клавиатура. Она немного отличается по надписям на кнопках.

djovs-tgcn8wucm0mrq6hfwieoy.jpeg

Время подавать питание. Комп успешно стартует, а на экране появляется уже знакомое сообщение.

fn0qgthsq-nge6uhamyi94rifkg.jpeg

Жмякаем на клавиатуре F2, и оно пропадает. И железка таки оживает!

-rkggr1mf_vrsxau6vbaswiyv1a.jpeg

nqfy-vjwjx_d7c_h7p6hctb2ete.jpeg

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

idyksklgxob3c0mjpndlg8rpcbe.jpeg

Нажатием кнопки «ОГР» можно задать временные ограничения.

bae0bd8sljlef7eq8xioqh5zv_e.jpeg

А F2 отвечает за дополнительные настройки.

yyd8qmkwxq4uq9iokcc1x5sqni4.jpeg

Сохраняем и выходим. На экране появляется оставшееся время по графику и расчётная скорость. Ниже текущее время, ограничение скорости, а также текущая скорость, строкой ниже — значок приостановки оповещения (»*»), расстояние до следующей платформы и координата. В самой нижней строке значок »9» — эквивалент светодиода ограничения скорости на старом блоке.

r8kvuw6p31kqvrmqnzqlmb7he_u.jpeg

Жмякаем кнопку «Пуск». САВПЭ начинает набирать позиции — в строке режима ведения появляется «М», что соответствует самой первой позиции контроллера. Поскольку платы коммутации не подключены, на дальнейшие позиции контроллер не переключается, так как железка думает, что поезд всё ещё стоит.

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

amemuctzhjhjd9qvbogzu40nofg.jpeg

fz0zn8abc7vhn8trthxy4setbos.jpeg

gc_silqwvz1ysoz3va75dge9tyq.jpeg

В отличие от более старой модели, кнопки «РЕГ» и «ТЕСТ» в обычном режиме не используются — их нужно жмякнуть при загрузке, чтобы попасть в режим самотестирования или регулировок.

Клавиатура


Отдельного внимания заслуживает клавиатура — это обычная клава на PS/2, но с питанием от 12 вольт и другими скан-кодами. Вот их список:

  • Пуск — 51E051h
  • F1 — DE0Dh
  • F2 — CEE0CEh
  • ОГР — B2E0B2h
  • ДОП — EEE0EEh
  • РЕГ — 2CE02Ch
  • Тест — 21E021h
  • 1 — FDE0FDh
  • 2 — ECE0ECh
  • 3 — F2E0F2h
  • 4 — EDE0EDh
  • 5 — E3E0E3h
  • 6 — E2E0E2h
  • 7 — DCE0DCh
  • 8 — D3E0D3h
  • 9 — D1E0D1h
  • 0 — E0E0E0h
  • < — EFE0EFh
  • > — E0E0E0h


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

Что же до клавиатуры ЧСа, то она, несмотря на несколько иные подписи клавиш, полностью совместима с этой.

Разъёмы


На прощание разберёмся с подключением этой штуки. На блоке ЦПИ находится пять разъёмов: КС, клавиатура, два последовательных порта и динамик. Первый из них — семиконтактный РС7ТВ, остальные — РС4ТВ.
По разъёму КС блок получает питания, через него же осуществляется связь между цепями управления поезда:

  1. 24 В
  2. Ничего
  3. TX (выход на ЦПИ, вход на КС)
  4. Ничего
  5. RX (вход на ЦПИ, выход на КС)
  6. Ничего
  7. Земля


Далее идёт клавитуарный разъём:

  1. 12 В
  2. Data
  3. Clock
  4. Земля


Салонный динамик:

  1. Аудиовыход
  2. Земля
  3. Ничего
  4. Ничего


И два последовательных порта, на этот раз это обычные RS-232:

  1. 12 В
  2. Земля
  3. RX
  4. TX

Вот как-то так


Итак, после практически года (только за день до публикации вспомнил, что прошлая статья про САВПЭ вышла год назад) мне таки удалось не только оживить старый блок, но и найти ещё несколько экземпляров в не менее хорошем состоянии. На самом деле с этим блоком можно придумать ещё много интересного: как вариант, можно попробовать таки заставить говорить блок М1, подключить УСАВП/Л к блоку КС или же попробовать оживить экземпляр от ЧС7. Но это уже тема для отдельных статей.

Такие дела.


Возможно, захочется почитать и это:

Новости, обзоры продуктов и конкурсы от команды Timeweb.Cloud — в нашем Telegram-канале


b5pjofdoxth14ro-rjsrn7sbmiy.png

Habrahabr.ru прочитано 2638 раз