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
//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

View File

@ -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;
}

View File

@ -22,6 +22,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;
int mModbusPort;

View File

@ -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;
}

View File

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

View File

@ -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()
{
}

View File

@ -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

View File

@ -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;