Implement train type & info

This commit is contained in:
zonetest 2017-08-23 14:41:35 -04:00
parent fc470c04c0
commit 32a2e9bccd
8 changed files with 115 additions and 3 deletions

View File

@ -47,7 +47,7 @@
//Register addressing //Register addressing
//Outgoing //Outgoing
#define MODBUS_ZT_DATA_BASE_REG 2000 #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_ZT1_ALARM_DATA_BASE_REG_ADD 2000
#define MODBUS_ZT2_ALARM_DATA_BASE_REG_ADD 2017 #define MODBUS_ZT2_ALARM_DATA_BASE_REG_ADD 2017
@ -91,11 +91,19 @@
#define MODBUS_CC_INHIBIT_ZT2_FLAG_MASK 0x0008 #define MODBUS_CC_INHIBIT_ZT2_FLAG_MASK 0x0008
#define MODBUS_CC_DATA_BASE_REG_ADD 2028 #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_WATCHDOG_BASE_REG_ADD 2028
#define MODBUS_CC_AN_BASE_REG_ADD 2029 #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 MODBUS_CC_CLK_UPDATE_BASE_REG_ADD 2038
#define MODUBS_CC_CLK_SEC_BASE_REG_ADD 2039 #define MODUBS_CC_CLK_SEC_BASE_REG_ADD 2039
#define MODUBS_CC_CLK_HR_MIN_BASE_REG_ADD 2040 #define MODUBS_CC_CLK_HR_MIN_BASE_REG_ADD 2040

View File

@ -132,6 +132,8 @@ void CModbusCCMgr::RegistersDatabaseUpdated(quint16 StartAddress, quint16 Length
} }
emit RepoHasChanged(); emit RepoHasChanged();
} }
@ -160,3 +162,87 @@ void CModbusCCMgr::ModbusZTWatchdogTimeout()
mZTWatchdog = 1; 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;
}

View File

@ -21,6 +21,16 @@ public:
virtual void RegistersDatabaseUpdated(quint16 StartAddress, quint16 Length); virtual void RegistersDatabaseUpdated(quint16 StartAddress, quint16 Length);
virtual void ModbusRequestException(quint8 ExceptionCode, quint8 FctCode); virtual void ModbusRequestException(quint8 ExceptionCode, quint8 FctCode);
//Helper functions
QList<qint16> GetZT1TrainComposition();
QList<qint16> GetZT2TrainComposition();
bool GetZT1InhibitionFlag();
bool GetZT2InhibitionFlag();
qint16 GetZT1TrainType();
qint16 GetZT2TrainType();
private: private:
QTcpServer *mModbusServer; QTcpServer *mModbusServer;

View File

@ -204,6 +204,7 @@ quint16 CModbusRepository::GetSingleReg(quint16 Address, bool *OK)
return Data; return Data;
} }
CHRDataMap::CHRDataMap(quint16 StartAddress, quint16 Length) CHRDataMap::CHRDataMap(quint16 StartAddress, quint16 Length)
{ {
mStartAddress = StartAddress; mStartAddress = StartAddress;
@ -215,3 +216,5 @@ CHRDataMap::CHRDataMap(quint16 StartAddress, quint16 Length)
mEndAddress = StartAddress + Length - 1; mEndAddress = StartAddress + Length - 1;
} }

View File

@ -31,6 +31,7 @@ public:
int WriteMultipleRegs(quint16 StartAddress, QList<qint16> Data); int WriteMultipleRegs(quint16 StartAddress, QList<qint16> Data);
const QList<CHRDataMap> *GetRepo(){return &mHoldingRegisters;} const QList<CHRDataMap> *GetRepo(){return &mHoldingRegisters;}
private: private:
QList<CHRDataMap> mHoldingRegisters; QList<CHRDataMap> mHoldingRegisters;
QReadWriteLock mMutex; QReadWriteLock mMutex;

View File

@ -28,7 +28,7 @@
#include "ZTData.h" #include "ZTData.h"
const char * CZTData::TrainTypeString[] = {"Inconnu","MR63/73", "MPM10"}; const char * CZTData::TrainTypeString[] = {"Inconnu","MR63/73", "MPM10", "MR63", "MR73"};
CZTData::CZTData() CZTData::CZTData()
{ {
} }

View File

@ -113,6 +113,8 @@ enum eTrainTypeID
TRAIN_TYPE_UNKNOWN, TRAIN_TYPE_UNKNOWN,
TRAIN_TYPE_MR63_MR73, TRAIN_TYPE_MR63_MR73,
TRAIN_TYPE_MPM10, TRAIN_TYPE_MPM10,
TRAIN_TYPE_MR63,
TRAIN_TYPE_MR73,
TRAIN_TYPE_MAX_ID TRAIN_TYPE_MAX_ID

View File

@ -210,6 +210,8 @@ private:
bool mZT2Present; //Flag qui indique si la station possède une ZT2 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. 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. 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) CZT1Log mZT1Log; //Les données du log ZT1 du passage courant (un seul train)
CZT2Log mZT2Log; CZT2Log mZT2Log;