Skip to content

Commit

Permalink
Merge pull request #28 from maisvendoo/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
maisvendoo authored Jan 14, 2020
2 parents ae985fd + 55cabd5 commit 54391af
Show file tree
Hide file tree
Showing 39 changed files with 2,353 additions and 33 deletions.
2 changes: 1 addition & 1 deletion RRS.pro
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ SUBDIRS += ./addons/vl60
SUBDIRS += ./addons/tep70
#SUBDIRS += ./addons/chs4t
SUBDIRS += ./addons/chs2t
#SUBDIRS += ./addons/ep20
SUBDIRS += ./addons/ep20

SUBDIRS += ./launcher
SUBDIRS += ./launcher2
Expand Down
64 changes: 64 additions & 0 deletions addons/ep20/ep20/include/ac-motor-compressor.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
#ifndef AC_MOTOR_COMPRESSOR_H
#define AC_MOTOR_COMPRESSOR_H

#include "device.h"

//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
class ACMotorCompressor : public Device
{
public:

ACMotorCompressor(QObject *parent = Q_NULLPTR);

~ACMotorCompressor();

void setExternalPressure(double press);

double getAirFlow() const;

void setU_power(double value);

private:

/// Внешнее противодавление
double p;

/// Расход возхуа
double Q;

/// "Подача" компрессора
double p0;

double Mmax;

double s_kr;

double Un;

double U_power;

double omega0;

double J;

double Mxx;

double Vnk;

enum
{
NUM_COEFFS = 6
};

std::array<double, NUM_COEFFS> K;

void preStep(state_vector_t &Y, double t);

void ode_system(const state_vector_t &Y, state_vector_t &dYdt, double t);

void load_config(CfgReader &cfg);
};

#endif // ACMOTORCOMPRESSOR_H
63 changes: 63 additions & 0 deletions addons/ep20/ep20/include/auxiliary-converter.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
#ifndef AUXILIARY_CONVERTER_H
#define AUXILIARY_CONVERTER_H

#include "device.h"

/// Класс Преобразователя Собственных Нужд
class AuxiliaryConverter : public Device
{

public:

/// Конструктор
AuxiliaryConverter(QObject *parent = Q_NULLPTR);

/// Деструктор
~AuxiliaryConverter();

/// Установить напряжение преобразователя собственных нужд
void setU4(double U4);

/// Получить напряжение
double getU1();

/// Получить частоту
double getF();

/// получить напряжение (380 В)
double getU2();

private:

/// Напряжение преобразователя собственных нужд
double U4;

/// Частота
double Fref;

/// Напряжение
double Uref;

/// Коэффициент напряжения
double Koef;

/// Напряжение на выход
double U1;

/// Частота на выход
double F;

/// Напряжение 380 на выход
double U2;

/// Предварительный шаг
void preStep(state_vector_t &Y, double t);

/// Вычисление напряжения
void ode_system(const state_vector_t &Y, state_vector_t &dYdt, double t);

/// Загрузка конфига
void load_config(CfgReader &cfg);
};

#endif // AUXILIARYCONVERTER_H
22 changes: 22 additions & 0 deletions addons/ep20/ep20/include/ep20-brake-mech.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#ifndef EP20_BRAKE_MECH_H
#define EP20_BRAKE_MECH_H

#include "brake-mech.h"

//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
class EP20BrakeMech : public BrakeMech
{
public:

EP20BrakeMech(QObject *parent = Q_NULLPTR);

~EP20BrakeMech();

private:

void load_config(CfgReader &cfg);
};

#endif // EP20_BRAKE_MECH_H
16 changes: 16 additions & 0 deletions addons/ep20/ep20/include/ep20-signals.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
#ifndef EP20_SIGNALS_H
#define EP20_SIGNALS_H

enum
{
KONTROLLER = 0,
RUK_KRM130 = 1,
RUK_KVT224 = 2,

STRELKA_pTM = 10,
STRELKA_pGR = 11,
STRELKA_pTC = 12,
STRELKA_pUR = 13
};

#endif // EP20_SIGNALS_H
78 changes: 78 additions & 0 deletions addons/ep20/ep20/include/ep20.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,12 @@
#include "pant-description.h"
#include "current-kind-switch.h"
#include "protective-device.h"
#include "traction-transformer.h"
#include "traction-converter.h"
#include "auxiliary-converter.h"
#include "ac-motor-compressor.h"
#include "ep20-signals.h"
#include "ep20-brake-mech.h"

/*!
* \class
Expand All @@ -37,6 +43,8 @@ class EP20 : public Vehicle
/// Деструктор
~EP20();

void initBrakeDevices(double p0, double pTM, double pFL);

private:

// /// Выбор кабины
Expand All @@ -54,6 +62,36 @@ class EP20 : public Vehicle
/// Аппарат защиты (БВ)
ProtectiveDevice *fastSwitch;

/// Тяговый трансформатор
TractionTransformer *tractionTrans;

/// Нумератор тяговых преобразователей
enum
{
NUM_TRAC_CONV = 3
};

/// Массив тяговых преобразователей
std::array<TractionConverter *, NUM_TRAC_CONV> trac_conv;

enum
{
NUM_AUX_CONV = 4
};

/// Преобразователь собственных нужд
std::array<AuxiliaryConverter *, NUM_AUX_CONV> auxConv;

/// Резервуар
Reservoir *main_reservoir;

/// Запасный резервуар (ЗР)
Reservoir *spareReservoir;

/// Мотор компрессор
std::array<ACMotorCompressor *, 2> motorCompAC;
// ACMotorCompressor *motorCompAC;

/// Входные значения
mpcs_input_t mpcsInput;

Expand All @@ -63,12 +101,45 @@ class EP20 : public Vehicle
/// Массив токоприемников
std::array<Pantograph *, NUM_PANTOGRAPHS> pantograph;

/// Зарядное давление
double charge_press;

/// Поездной кран машиниста (КрМ)
BrakeCrane *krm;

/// Кран вспомогательного тормоза (КВТ)
LocoCrane *kvt;

/// Переключательный клапан (ЗПК)
SwitchingValve *zpk;

/// Воздухораспределитель (ВР)
AirDistributor *airDistr;

/// Электро-воздухораспределитель (ЭВР)
ElectroAirDistributor *electroAirDistr;

enum
{
NUM_TROLLEYS = 3,
FWD_TROLLEY = 0,
MDL_TROLLEY = 1,
BWD_TROLLEY = 2
};

std::array<EP20BrakeMech *, NUM_TROLLEYS> brake_mech;
std::array<PneumoReley *, NUM_TROLLEYS> rd304;
std::array<PneumoSplitter *, 2> pSplit;

/// Инициализация
void initialization();

/// Инициализация высоковольтной схемы
void initHighVoltageScheme();

/// Инициализация тормозного крана
void initBrakeControls(QString modules_dir);

/// Инициализация МПСУ
void initMPCS();

Expand All @@ -81,11 +152,18 @@ class EP20 : public Vehicle
/// Шаг моделирования высоковольтной схемы
void stepHighVoltageScheme(double t, double dt);

/// Шаг моделирования тормозного крана
void stepBrakeControls(double t, double dt);

/// Загрузка данных из конфигурационных файлов
void loadConfig(QString cfg_path);

/// Обработчик клавиш
void keyProcess();

void load_brakes_config(QString path);

void stepSignals();
};

#endif // EP20_H
Expand Down
46 changes: 46 additions & 0 deletions addons/ep20/ep20/include/mpcs-data.h
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,50 @@
//------------------------------------------------------------------------------
struct mpcs_input_t
{
/// Род тока
int current_kind;

/// Поднятые ТП
std::array<bool, NUM_PANTOGRAPHS> pant_up;

/// Опущеные ТП
std::array<bool, NUM_PANTOGRAPHS> pant_down;

/// Отключен ли БВ
bool isOff_fs;

/// ПРТ
int current_kind_switch_state;

/// Входное напряжение на ГВ
double Uin_ms;

/// Отключен ли ГВ
bool isOff_ms;

/// Входное напряжение на БВ
double Uin_fs;

std::array<double, 4> aux_const_U;

// принимать данные давление в ГР
/// Входное давление с главного резервуара
double PressMR;

mpcs_input_t()
{
current_kind = 0;
std::fill(pant_up.begin(), pant_up.end(), false);
std::fill(pant_down.begin(), pant_down.end(), false);

isOff_fs = false;
current_kind_switch_state = 0;
Uin_ms = 0;

isOff_ms = false;
Uin_fs = 0;

std::fill(aux_const_U.begin(), aux_const_U.end(), 0);
}
};

Expand All @@ -28,11 +61,24 @@ struct mpcs_input_t
//------------------------------------------------------------------------------
struct mpcs_output_t
{
/// Состояние ТП
std::array<bool, NUM_PANTOGRAPHS> pant_state;

/// Включение ГВ
bool turn_on_ms = false;

/// Включение БВ
bool turn_on_fs = false;

/// Тумблеры управления мотор-компрессорами
std::array<bool, 2> toggleSwitchMK;

double MKstate;

mpcs_output_t()
{
std::fill(pant_state.begin(), pant_state.end(), false);
std::fill(toggleSwitchMK.begin(), toggleSwitchMK.end(), false);
}
};

Expand Down
Loading

0 comments on commit 54391af

Please sign in to comment.