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

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

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

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

О чём это я?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Но вот софт, судя по загрузочному экрану, так и остался под DOS.

А вот небольшое видео про работу этих блоков.

Аналогичные системы (УСАВПП, УСАВП/1, УСАВП/Г) ставят и на другие поезда.

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

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

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

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

image

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

image

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Оживляем М1

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

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

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

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

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

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

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

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

  • 0x01: 0
  • 0x02: 1
  • 0x03: 2
  • 0x04: 3
  • 0x05: 4
  • 0x06: 5
  • 0x07: 6
  • 0x08: 7
  • 0x09: 8
  • 0x0A: 9
  • 0x0B: F1
  • 0x0C: F2
  • 0x0D: ОГР
  • 0x0E: ДОП

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

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

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

#include <SoftwareSerial.h>

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();
}

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

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

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

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

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

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

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

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

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

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

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

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

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

ЭР2Т

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Клавиатура

Отдельного внимания заслуживает клавиатура — это обычная клава на 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. Но это уже тема для отдельных статей.

Такие дела.


Автор: Лев

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js