На данный момент сканер поддерживает версию симулятора 54.006
Итак немного предыстории.
Началось все примерно в 2016 году, встретились два интересных человека. Alex_B и RUSHPIL. Эти два человека интересовались железнодорожными стимуляторами, на чем и сошлись на форуме ZDSimulatior.com. Захотели они сделать симулятор гораздо интереснее и повысить его реалистичность, собрав тренажер машиниста. Но вот беда игра ZDSimulator не имела штатных средств вывода информации и к игре не получалось подключить внешние устройства. Такие как сигнальные лампы, скоростемеры, стрелочные приборы и манометры. Для этого было решено написать программу, работающую по принципу программ для хака игр (трейнеров) которые могут менять в игре разные параметры.
Эта программа должна была получать данные из игры и отправлять их в тренажер. Каждый пошёл по своему пути RUSHPIL писал свою программу сканера на языке VB. Alex_B. Писал на языке C# и C++. В результате у каждого получилась своя версия программы.
Мы с вами рассмотрим подробнее программу ZDSimSkaner которую написал Alex_B.
Программа сканера позволяет получать из памяти игры значения большинства параметров выбранного в данный момент локомотива, а также записывать их в игру. Программа видит HID совместимые джойстики и в ней можно настроить джойстик для управления симулятором.
Можно получить значения скорости текущей и скорости следующего ограничения, значения напряжения контактной сети и напряжения ТЭД, тока ТЭД, значение позиций, напряжения АКБ, давления ТМ, УР, ТЦ, ГР, значение времени из игры. Также можно получить значения всех сигнальных ламп из симулятора, в том числе лампа бдительности и показания локомотивного светофора.
В симулятор можно писать значения состояния всех переключателей, кнопок, кранов машиниста и контроллера скорости. Программа использует для связи с пультом машиниста тренажера последовательный порт стандартный COM или виртуальный USB/COM. В качестве контроллера управляющего тренажером удобно использовать плату Arduino Mega 2560 хотя можно сделать и на нескольких платах Arduino UNO или отдельном микроконтроллере без использования Arduino в своих первых пультах Alex_B так и делал. Но для многих это сложно потому будем делать на Arduino. Плата подключается по USB к PC и получает из программы сканера данные, которые та получает из запущенной игры.
Ниже приведен список параметров, которые можно получать из симулятора и выводить на различные индикаторы с порядковыми номерами в массиве данных указанными в квадратных скобках.
Буфер приема данных из игры ZDSimulator:
[0,1] – (int) допустимая скорость
[2,3] – (int) текущая скорость для шагового двигателя.
[4] – (byte) АЛС от 0 до 5 (0-выкл,1-бел,2-кр,3-кж,4-ж,5-з)
[5] – (byte) лампа бдительности. bdit
[6,7] – (int) текущая скорость для индикаторов
[8,9] – (int) ток ЭПТ
[10] – (byte) час
[11] – (byte) минута
[12] – (byte) секунда
[13,14] – (int) напряжение КС
[15,16] – reserved
[17,18] – (int) напряжение ТД
[19,20] – (int) ток1 ТД
[21,22] – (int) ток2 ТД
[23,24] – (int) ток3
[25,26] – (int) ток4
[27,28] – (int) РК позиция
[29,30] – (int) манометр давление НМ
[31,32] – (int) манометр давление ТМ
[33,34] – (int) манометр давление УР
[35,36] – (int) манометр давление ТЦ
//лампы
[37] – (byte) Наполнение ТЦ. tc
[38] – (byte) эпт о.
[39] – (byte) эпт п.
[40] – (byte) эпт т.
[41] – (byte) ручка контроллера сериесное (последовательное соединение обмоток ТЭД) RK_C.
[42] – (byte) ручка контроллера сериес-параллельное (последовательно-параллельное соединение обмоток ТЭД) RK_CP.
[43] – (byte) ручка контроллера параллельное (параллельное соединение обмоток ТЭД) RK_P.
[44] – (byte) утечка ТМ (418 датчик обрыва ТМ). utechka_tm
[45] – (byte) секция №1 ТД (ТД/ЛК и Т). C1_td
[46] – (byte) ВВК откр./двери. vv_open1
[47] – (byte) вспомогательный компрессор/заряд батареи. vspom_comp_zb
[48] – (byte) компрессор comp_mk.
[49] – (byte) вентилятор. vent
[50] – (byte) РП/850/ГВ. rp_850_gv
[51] – (byte) земля/БВ. zemla1_bv
[52] – (byte) ручка контроллера 0 поз. RK_0_1.
[53] – (byte) ручка контроллера промежуточная позиция. RK_prom_1.
[54] – (byte) песок/РБ на секциях. pesok
[55] – (byte) насос/ФР. nasos_fr
[56] – (byte) ручка контроллера ходовая позиция. hod
[59,60] – (int) задержка шагов двигателя
[61,62,63,64] – признак окончания буфера, всегда постоянный – 0xA0, 0xB0, 0xC0, 0xD0
//----------------------------------------------------------------------------------
Теперь о самой программе сканер подробней.
Ссылка на программу сканера.
https://disk.yandex.ru/d/ntAHIeQ4Co5F7w
Настройки:
Окно настроек.
Шум джойстика: регулировка погрешности переменных резисторов.
Делители / или множители * шаговых приборов для развертки шкалы.
Режим:
- Только прием, вывод данных на лампы и пр.
- Только передача, с джойстика в игру.
- И то и другое.
Настройка и метки осей, наподобие McabMapper,
Сброс точек оси сбрасывает только текущую ось
Выбор настройки того или иного локомотива, Controls назначается и работает постоянно, и общий для всех.
Сброс тек – сбрасывает текущий локомотив.
Сбросить все – сбрасывает все локомотивы.
Сбросить все – сбрасывает все локомотивы, оси и удаляет файл конфигурации в профиле пользователя.
При двойном нажатии на какую-либо настройку в предыдущем окне, открывается окно 3:
Здесь можно выбрать точки осей слева или кнопки справа.
Здесь можно выбрать звук для любого действия
Но сначала нужно поставить галочку «звуки в режиме передачи»
Схемы подключений.
Индикация лампы.
Прошивки.
https://disk.yandex.ru/d/_kk0fxgoPQYGxA
Скорость текущая, ограничение скорости, время симулятора и позиции контроллера.
Прошивки.
https://disk.yandex.ru/d/_VTNbP9zb9_2pQ
Манометры давление НМ, ТМ, УР, ТЦ вывод на шаговые двигатели X27-168.
Прошивки.
https://disk.yandex.ru/d/i9rnnF2yzE_yWw