Разработка ЧС4т

Раздел посвящен обсуждению вопросов разработки DLL-модулей подвижного состава
andreykod
Сообщения: 36
Зарегистрирован: 17 фев 2020, 11:21
Город: Москва
Настоящее имя: Андрей

Re: Разработка ЧС4т

Сообщение andreykod » 04 апр 2020, 09:19

maisvendoo, большое спасибо, нашел во втором справочнике и схему с контактами, и объяснение к сноскам. Еще нашел много различной информации по электровозам! Сколько я времени потратил на поиск в интернете...

Аватара пользователя
maisvendoo
Модератор
Сообщения: 224
Зарегистрирован: 13 авг 2019, 10:25
Город: Ростов-на-Дону
Настоящее имя: Дмитрий
VK: https://vk.com/maisvendoo
Контактная информация:

Re: Разработка ЧС4т

Сообщение maisvendoo » 04 апр 2020, 10:55

Есть сайт - twirpx.com, там много отсканированных книг, в том числе и по подвижному составу. Я тоже выложил там четыре довольно редких книги. Эти книги с этого сайта. Там книжки качаются за баллы, которые можно заработать выкладкой либо за деньги, но очень дешево - 500 рублей с головой хватит на полгода скачки (около 1600 баллов, книги в среднем 10-15 баллов). За скачанную однажы книгу баллы при повторном скачивании не снимаются.

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

andreykod
Сообщения: 36
Зарегистрирован: 17 фев 2020, 11:21
Город: Москва
Настоящее имя: Андрей

Re: Разработка ЧС4т

Сообщение andreykod » 06 апр 2020, 09:10

Должен сообщить некоторые вещи про разработку:
После реализации ПУМ читаемость схемы существенно снизилась, уже сначала она требовала полной перекомпоновки. После выхода беты и успешном тестировании, возможно будет все переделано, но схема нужна лишь для реалистичного функционирования, о чем уже много написано выше. У меня нет опыта в рисовании хорошо читаемых схем, но я старался. Сама схема готова на 90%, цепи управления готовы, ПУМ готов и подключен, 850 блок готов, не стал делать: рисовать схему освещения электровоза, рисовать цепи на ВУ вспомащин, все эти цепи будут реализованы программно (сломать тоже можно будет). Осталось сделать высоковольтное бытовое (213 провод). После переду к программированию, а тут уже нас ждет приятный сюрприз. Задачи по симулированию оборудования отлично параллелятся, работают автономно и взаимодействуют с другими через нашу схему, это предоставляет широкие возможности по оптимизации!

Аватара пользователя
PeRLouD
Сообщения: 54
Зарегистрирован: 06 фев 2020, 20:13
Город: Минск
Настоящее имя: Тимур
Контактная информация:

Re: Разработка ЧС4т

Сообщение PeRLouD » 06 апр 2020, 09:40

Отличные новости!

andreykod
Сообщения: 36
Зарегистрирован: 17 фев 2020, 11:21
Город: Москва
Настоящее имя: Андрей

Re: Разработка ЧС4т

Сообщение andreykod » 16 апр 2020, 15:13

Всех приветствую, за это время я сделал не очень много, но я решился на важный, трудоемкий и правильный шаг - полный рефакторинг моих набросков в код, читаемый, масштабируемый и максимально компенсирующий дыру в общей производительности при просчете схемы. Хоть данная система (со схемой во внешнем симуляторе-вьювере) уже не имеет никаких недостатков, если запускать ее на хотя бы на 4 поточном железе. Здесь мы плавно подошли к многопоточности, за счет нее можно очень хорошо оптимизировать код электровоза. Тут я хотел бы затронуть еще один вопрос: вопрос о грамотном применении объектно-ориентированного программирования в симуляции подвижного состава, но тут я не вижу смысла все распихивать по классам, вплоть до винтиков. Я решил, что у меня будет немного (4-5) классов, а разбивать оборудование я буду по их возможностям параллельного выполнения (зависимости от других компонентов), например: ГВ, весь его функционал - наблюдать за состоянием удерживающей и включающей катушки в схеме, включать на основе данных виртуальные выключатели, работать код может автономно от электровоза, если нам нам надо проверить состояние ГВ, то просто программно смотрим на виртуальную лампочку в нашей модели силовых цепей, а можно и сделать static переменную, или через сигнал-слоты. Далее следует ПС, который похож на ГВ своей автономностью, думаю, их можно объединить в один класс, а функции распараллелить. Другое дело агрегаты, с которыми пользователь может взаимодействовать, например: реверсор, несмотря на примитив ввиде проверки состояния ЭПВ, пользователь может его зафиксировать в определенном положении через гуи. Я посмотрел ВЛ60 на гитхабе, буду придерживаться похожей модели, разумеется не в ущерб удобству, простоте, читаемости. И наконец, я уже отснял гайд по внедрению эл. схем.

Аватара пользователя
maisvendoo
Модератор
Сообщения: 224
Зарегистрирован: 13 авг 2019, 10:25
Город: Ростов-на-Дону
Настоящее имя: Дмитрий
VK: https://vk.com/maisvendoo
Контактная информация:

Re: Разработка ЧС4т

Сообщение maisvendoo » 16 апр 2020, 20:46

andreykod писал(а):
16 апр 2020, 15:13
я не вижу смысла все распихивать по классам, вплоть до винтиков.
Тем не менее, есть базовый класс Device, который экспортируется из библиотеки device.dll. Он позволяет существенно облегчить жизнь при создании любой единицы оборудования

Любое оборудование описывается алгебраическими и дифференциальными уравнениями. Тот же тяговый двигатель. Наследование от класса Device сразу привносит в разрабатываемую единицу оборудования метод Рунге-Кутты 4-го порядка для решения дифуров. Достаточно грамотно записать эти дифуры в форме Коши и определить в методе ode_system(). В методах preStep() и postStep() можно решать алгебраические уравнения, соответственно до и после выполнения шага решения дифференциальных. Всё это автоматически решается динамическим движком игры, достаточно просто переопределить эти методы в классе единицы оборудование.

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

В коде ВЛ60, ЧС2т и ТЭП70 можно увидеть, как всё вышесказанное применяется на практике. Код всех локомотивов в официальном репозитории в каталоге addons.
Возврата к деспотии Ситхов не будет!

andreykod
Сообщения: 36
Зарегистрирован: 17 фев 2020, 11:21
Город: Москва
Настоящее имя: Андрей

Re: Разработка ЧС4т

Сообщение andreykod » 20 окт 2020, 10:52

В последнее время от проекта было мало новостей. Летом я не работал над электровозом. Все пока еще на стадии начальной разработки. Схема готова! Приложу я ее: https://drive.google.com/file/d/1c1dpe4 ... sp=sharing Столкнулся с небольшими трудностями связанными с отсутствием контроля версий. Сам же в своих файлах заблудился. :D Потихоньку перевожу мои наброски с таймерами в математическую систему симулятора. Работаю на базе ЧС2т новой версии. В данный момент я работаю с исходниками ЧС2т и ВЛ60 последней версии из ветки release. Win10 MinGW 7.3.0 64x QT 5.13.2, dll скомпилированные из исходного кода репозитория не работают. В режиме отладки, точки установленные в конструкторе и методах главного класса не обрабатывались, симулятор завершал работу сразу же. Скорее всего причина в том, что я указывал в libs -L$$(RRS_ROOT)/bin -lCfgReader вместо компиляции из кода репозитория. Существует ли возможность как-то отладить подключение dll?
Дополнения последнего коммита 94e258e работоспособны?

Аватара пользователя
maisvendoo
Модератор
Сообщения: 224
Зарегистрирован: 13 авг 2019, 10:25
Город: Ростов-на-Дону
Настоящее имя: Дмитрий
VK: https://vk.com/maisvendoo
Контактная информация:

Re: Разработка ЧС4т

Сообщение maisvendoo » 20 окт 2020, 16:29

Да, новостей, существенных пока нет. Пока, в виду тотальной занятости притормозил пилить движок игры. Ближайшие новости будут ближе к новому году.
andreykod писал(а):
20 окт 2020, 10:52
Существует ли возможность как-то отладить подключение dll?
Инструкция тут не работает? Но здесь, конечно, описан процесс разработки DLL при использовании официального релизного билда. DLL подвижной единицы при этом собирается как отладочная.
andreykod писал(а):
20 окт 2020, 10:52
Дополнения последнего коммита 94e258e работоспособны?
По поводу стабильной версии исходников - она помечена тэгом v1.0.6 и расположена тут https://github.com/maisvendoo/RRS/tree/v1.0.6. От неё необходимо делать форк, если есть потребность в изменении исходного текста движка игры.

Что касается крайних коммитов - они пока не в релизном состоянии. Промежуточный. Базовая версия на которую стоит ориентироваться - 1.0.6
Возврата к деспотии Ситхов не будет!

andreykod
Сообщения: 36
Зарегистрирован: 17 фев 2020, 11:21
Город: Москва
Настоящее имя: Андрей

Re: Разработка ЧС4т

Сообщение andreykod » 20 окт 2020, 17:18

maisvendoo писал(а):
20 окт 2020, 16:29
Инструкция тут не работает? Но здесь, конечно, описан процесс разработки DLL при использовании официального релизного билда. DLL подвижной единицы при этом собирается как отладочная.
Изображение
Вот так. Сразу останавливается.
Изображение
Настройки такие
Изображение
Конф проекта изменена
Сам проект для примера вытащен из репозитория, моих изменений нет.
Пустышка dll а-ля simple-loco, компилируется и запускается.

Аватара пользователя
maisvendoo
Модератор
Сообщения: 224
Зарегистрирован: 13 авг 2019, 10:25
Город: Ростов-на-Дону
Настоящее имя: Дмитрий
VK: https://vk.com/maisvendoo
Контактная информация:

Re: Разработка ЧС4т

Сообщение maisvendoo » 20 окт 2020, 17:46

По последнему скриншоту - необходимо подключить заголовки из комплекта симулятора, указав

Код: Выделить всё

INCLUDEPATH += $$(RRS_ROOT)/sdk/include
и тогда весь перечень, ссылающийся на ветку исходных текстов, указанный у вас в *.pro будет не нужен.

Второе, на скринах вижу, что пытаетесь ставить точки останова на конфигурации "выпуск". Для DLL лучше использовать конфигурацию "Отладка".

В настройках некий разброд - с одной стороны, указано что DLL локомотива компонуется с библиотеками из официального билда, с другой идет ссылка на заголовки из дерева исходников. Соответственно, может и заработать всё это, но если заголовки соответсвуют сигнатурам методов в библиотеках. А может и не заработать.

Поэтому, за образец лучше взять шаблон *.pro из документации

Код: Выделить всё

# Шаблон проекта - динамическая библиотека (DLL)
TEMPLATE = lib
# Задаем те библиотеки QT, которые нам пригодятся
QT -= gui
QT += xml
 
# Имя итогового файла DLL и путь, куда он должен быть помещен после
# сборки
TARGET = simple-loco
DESTDIR = $$(RRS_ROOT)/modules/$$join(TARGET,,,)
 
# Библиотеки симулятора, с которыми компонуется DLL локомотива
LIBS += -L$$(RRS_ROOT)/bin -lCfgReader
LIBS += -L$$(RRS_ROOT)/bin -lphysics
LIBS += -L$$(RRS_ROOT)/bin -lvehicle
LIBS += -L$$(RRS_ROOT)/bin -ldevice
LIBS += -L$$(RRS_ROOT)/bin -lfilesystem
 
# Путь к необходимым заголовочным файлам
INCLUDEPATH += ./include
INCLUDEPATH += $$(RRS_ROOT)/sdk/include
 
# Указываем файлы, включаемые в проект
HEADERS += $$files(./include/*.h)
SOURCES += $$files(./src/*.cpp)
и запускать отлаживаемую DLL в конфигурации "отладка"
Возврата к деспотии Ситхов не будет!

Ответить

Вернуться в «Программирование модулей подвижного состава и оборудования (C++ API)»