Implement train type & info
This commit is contained in:
parent
fc470c04c0
commit
32a2e9bccd
@ -47,7 +47,7 @@
|
||||
//Register addressing
|
||||
//Outgoing
|
||||
#define MODBUS_ZT_DATA_BASE_REG 2000
|
||||
#define MODBUS_ZT_TABLE_DATA_SIZE 28 //Taille de la table = 28 registres
|
||||
#define MODBUS_ZT_TABLE_DATA_SIZE 28 //Taille de la table en écriture = 28 registres (2000 à 2027)
|
||||
|
||||
#define MODBUS_ZT1_ALARM_DATA_BASE_REG_ADD 2000
|
||||
#define MODBUS_ZT2_ALARM_DATA_BASE_REG_ADD 2017
|
||||
@ -91,11 +91,19 @@
|
||||
#define MODBUS_CC_INHIBIT_ZT2_FLAG_MASK 0x0008
|
||||
|
||||
#define MODBUS_CC_DATA_BASE_REG_ADD 2028
|
||||
#define MODBUS_CC_TABLE_DATA_SIZE 13 //Taille de la table = 28 registres
|
||||
#define MODBUS_CC_TABLE_DATA_SIZE 15 //Taille de la table en lecture = 15 registres (2028 à 2042)
|
||||
|
||||
|
||||
#define MODBUS_CC_WATCHDOG_BASE_REG_ADD 2028
|
||||
#define MODBUS_CC_AN_BASE_REG_ADD 2029
|
||||
#define MODBUS_CC_ZT1_TRAIN_TYPE_REG_ADD 2030
|
||||
#define MODBUS_CC_ZT2_TRAIN_TYPE_REG_ADD 2031
|
||||
#define MODBUS_CC_ZT1_TRAIN_ID_1_REG_ADD 2032
|
||||
#define MODBUS_CC_ZT1_TRAIN_ID_2_REG_ADD 2033
|
||||
#define MODBUS_CC_ZT1_TRAIN_ID_3_REG_ADD 2034
|
||||
#define MODBUS_CC_ZT2_TRAIN_ID_1_REG_ADD 2035
|
||||
#define MODBUS_CC_ZT2_TRAIN_ID_2_REG_ADD 2036
|
||||
#define MODBUS_CC_ZT2_TRAIN_ID_3_REG_ADD 2037
|
||||
#define MODBUS_CC_CLK_UPDATE_BASE_REG_ADD 2038
|
||||
#define MODUBS_CC_CLK_SEC_BASE_REG_ADD 2039
|
||||
#define MODUBS_CC_CLK_HR_MIN_BASE_REG_ADD 2040
|
||||
|
||||
@ -132,6 +132,8 @@ void CModbusCCMgr::RegistersDatabaseUpdated(quint16 StartAddress, quint16 Length
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
emit RepoHasChanged();
|
||||
}
|
||||
|
||||
@ -160,3 +162,87 @@ void CModbusCCMgr::ModbusZTWatchdogTimeout()
|
||||
mZTWatchdog = 1;
|
||||
}
|
||||
}
|
||||
|
||||
bool CModbusCCMgr::GetZT1InhibitionFlag()
|
||||
{
|
||||
bool OK = false;
|
||||
qint16 Reg = mModbusRepo->GetSingleReg(MODBUS_CC_AN_BASE_REG_ADD,&OK);
|
||||
|
||||
if(OK)
|
||||
{
|
||||
if((Reg & MODBUS_CC_INHIBIT_ZT1_FLAG_MASK) != 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CModbusCCMgr::GetZT2InhibitionFlag()
|
||||
{
|
||||
bool OK = false;
|
||||
qint16 Reg = mModbusRepo->GetSingleReg(MODBUS_CC_AN_BASE_REG_ADD,&OK);
|
||||
|
||||
if(OK)
|
||||
{
|
||||
if((Reg & MODBUS_CC_INHIBIT_ZT2_FLAG_MASK) != 0)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
QList<qint16> CModbusCCMgr::GetZT1TrainComposition()
|
||||
{
|
||||
bool OK = false;
|
||||
QList<qint16> Compo;
|
||||
Compo = mModbusRepo->GetRegs(MODBUS_CC_ZT1_TRAIN_ID_1_REG_ADD,3,&OK);
|
||||
|
||||
if(OK == false)
|
||||
{
|
||||
Compo << 0 << 0 << 0;
|
||||
}
|
||||
|
||||
return Compo;
|
||||
}
|
||||
|
||||
QList<qint16> CModbusCCMgr::GetZT2TrainComposition()
|
||||
{
|
||||
bool OK = false;
|
||||
QList<qint16> Compo;
|
||||
Compo = mModbusRepo->GetRegs(MODBUS_CC_ZT2_TRAIN_ID_1_REG_ADD,3,&OK);
|
||||
|
||||
if(OK == false)
|
||||
{
|
||||
Compo << 0 << 0 << 0;
|
||||
}
|
||||
|
||||
return Compo;
|
||||
}
|
||||
|
||||
|
||||
qint16 CModbusCCMgr::GetZT1TrainType()
|
||||
{
|
||||
bool OK = false;
|
||||
qint16 Reg = mModbusRepo->GetSingleReg(MODBUS_CC_ZT1_TRAIN_TYPE_REG_ADD,&OK);
|
||||
if(OK)
|
||||
{
|
||||
return Reg;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
qint16 CModbusCCMgr::GetZT2TrainType()
|
||||
{
|
||||
bool OK = false;
|
||||
qint16 Reg = mModbusRepo->GetSingleReg(MODBUS_CC_ZT2_TRAIN_TYPE_REG_ADD,&OK);
|
||||
if(OK)
|
||||
{
|
||||
return Reg;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -21,6 +21,16 @@ public:
|
||||
|
||||
virtual void RegistersDatabaseUpdated(quint16 StartAddress, quint16 Length);
|
||||
virtual void ModbusRequestException(quint8 ExceptionCode, quint8 FctCode);
|
||||
|
||||
|
||||
|
||||
//Helper functions
|
||||
QList<qint16> GetZT1TrainComposition();
|
||||
QList<qint16> GetZT2TrainComposition();
|
||||
bool GetZT1InhibitionFlag();
|
||||
bool GetZT2InhibitionFlag();
|
||||
qint16 GetZT1TrainType();
|
||||
qint16 GetZT2TrainType();
|
||||
|
||||
private:
|
||||
QTcpServer *mModbusServer;
|
||||
|
||||
@ -204,6 +204,7 @@ quint16 CModbusRepository::GetSingleReg(quint16 Address, bool *OK)
|
||||
return Data;
|
||||
}
|
||||
|
||||
|
||||
CHRDataMap::CHRDataMap(quint16 StartAddress, quint16 Length)
|
||||
{
|
||||
mStartAddress = StartAddress;
|
||||
@ -215,3 +216,5 @@ CHRDataMap::CHRDataMap(quint16 StartAddress, quint16 Length)
|
||||
mEndAddress = StartAddress + Length - 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@ -31,6 +31,7 @@ public:
|
||||
int WriteMultipleRegs(quint16 StartAddress, QList<qint16> Data);
|
||||
const QList<CHRDataMap> *GetRepo(){return &mHoldingRegisters;}
|
||||
|
||||
|
||||
private:
|
||||
QList<CHRDataMap> mHoldingRegisters;
|
||||
QReadWriteLock mMutex;
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
|
||||
#include "ZTData.h"
|
||||
|
||||
const char * CZTData::TrainTypeString[] = {"Inconnu","MR63/73", "MPM10"};
|
||||
const char * CZTData::TrainTypeString[] = {"Inconnu","MR63/73", "MPM10", "MR63", "MR73"};
|
||||
CZTData::CZTData()
|
||||
{
|
||||
}
|
||||
|
||||
@ -113,6 +113,8 @@ enum eTrainTypeID
|
||||
TRAIN_TYPE_UNKNOWN,
|
||||
TRAIN_TYPE_MR63_MR73,
|
||||
TRAIN_TYPE_MPM10,
|
||||
TRAIN_TYPE_MR63,
|
||||
TRAIN_TYPE_MR73,
|
||||
|
||||
|
||||
TRAIN_TYPE_MAX_ID
|
||||
|
||||
@ -210,6 +210,8 @@ private:
|
||||
bool mZT2Present; //Flag qui indique si la station possède une ZT2
|
||||
bool mAutoExportZT1CSV,mAutoExportZT2CSV; //Flags qui indiquent s'il faut créer des fichiers CSV pour chaque log. Configurable dans la page ingénierie.
|
||||
unsigned int mZT1PEQType; //Type de la dernière panne équipement lorsqu'il y en a une.
|
||||
QList<qint16> mZT1TrainComposition; //Composition du train franchissant ZT1 (obtenue par Modbus)
|
||||
QList<qint16> mZT2TrainComposition; //Composition du train franchissant ZT2 (obtenue par Modbus)
|
||||
|
||||
CZT1Log mZT1Log; //Les données du log ZT1 du passage courant (un seul train)
|
||||
CZT2Log mZT2Log;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user