ZT2 Inhibit

Implementation de l'inhibition Modbus de la ZT2
This commit is contained in:
zonetest 2017-08-31 14:50:55 -04:00
parent 0efe9b3e8d
commit 36a735db06
4 changed files with 46 additions and 23 deletions

View File

@ -152,7 +152,7 @@ unsigned int CZT2StatsZone::Reset()
unsigned int CZT2StatsZone::SetTrainParameters(int TrainType, QList<qint16> TrainComposition)
{
if(mTrainType != (unsigned)TrainType)
// if(mTrainType != (unsigned)TrainType)
{
mTrainType = TrainType;
mTrainTypeText->setPlainText(QString("Type de train : %1").arg(CZTData::GetTrainTypeString(mTrainType)));

View File

@ -197,8 +197,8 @@ int CModbusBackend::AnalyzeModbusRequest(CModbusTransaction Transaction)
//Write register data
mModbusRepo->WriteHRData(StartAdress,NbRegisters,data);
// qDebug("Slave Rx Write Multiple Registers. Address: %d, Nb Reg: %d",StartAdress, NbRegisters);
// qDebug("Data: %s",data.toHex().data());
qDebug("Slave Rx Write Multiple Registers. Address: %d, Nb Reg: %d",StartAdress, NbRegisters);
qDebug("Data: %s",data.toHex().data());
data = Transaction.mPDU.mData.left(4); //The response corresponds to the Start Adress and Nb of Regs. Which is the first 4 bytes of the initial request.
SendModbusResponse(Transaction, data);

View File

@ -29,6 +29,8 @@ CModbusCCMgr::CModbusCCMgr(CModbusRepository *Repo, int ModbusPort, int DevID) :
mCCWatchdogState = 0;
mCCLinkState = false;
mLastDateTime = 0;
ResetCCRepository();
}
CModbusCCMgr::~CModbusCCMgr()

View File

@ -346,7 +346,7 @@ unsigned int CZTStateMachine::ZT1StateMachine(unsigned int Event, unsigned int S
if(mModbusCCMgr->GetZT1InhibitionFlag() == true) //Check if the CC wants us to analyze the passage
{
abort = true;
CZTLog::instance()->AddLogString("Passage de train inhibé par le SACL",true);
CZTLog::instance()->AddLogString("Passage de train ZT1 inhibé par le SACL",true);
mZT1State = ZT1_WAIT_FOR_SUBSEQUENT_LIBERATION; //Wait for the train to leave the ZT
if(mModbusCCMgr != 0)
{
@ -1106,31 +1106,52 @@ unsigned int CZTStateMachine::ZT2StateMachine(unsigned int Event, unsigned int S
{
mZT2State = ZT2_WAIT_FOR_CI_STATE;
}
else if(mZTStationPtr->IsZT2ApproachCDVOccupied())
else if(mZTStationPtr->IsZT2ApproachCDVOccupied()) //À certaines stations, la ZT2 doit être activée à l'occupation du CDV d'approche.
{
DestroyZT2Log();
mEventsRefTimer.start();
mZTPagePTr->SetZT2ActivationSTate(true);
mZT2ActiveStatus = SB_ZT_ACTIVE_STATUS;
mZTPagePTr->SetZTStatus(mNbPassages,mNbTriggers,mZT1ActiveStatus,mZT2ActiveStatus);
mZTPagePTr->ResetZT2Stats();
bool abort = false;
if(mModbusCCMgr != 0)
{
//update train info received from the CC Modbus interface
mZT2TrainType = (unsigned)mModbusCCMgr->GetZT2TrainType();
mZT2TrainComposition = mModbusCCMgr->GetZT2TrainComposition();
mZTPagePTr->SetZT2TrainData(mZT2TrainType,mZT2TrainComposition);
if(mModbusCCMgr->GetZT2InhibitionFlag() == true) //Check if the CC wants us to analyze the passage
{
abort = true;
CZTLog::instance()->AddLogString("Passage de train ZT2 inhibé par le SACL",true);
mZT2State = ZT2_WAIT_FOR_CDV_LIBERATION_STATE; //Wait for the train to leave the ZT
//update train info received from the CC Modbus interface
mZT2TrainType = (unsigned)mModbusCCMgr->GetZT2TrainType();
mZT2TrainComposition = mModbusCCMgr->GetZT2TrainComposition();
mZTPagePTr->SetZT2TrainData(mZT2TrainType,mZT2TrainComposition);
}
}
InsertZT2LogItem();
mZT2WorkerThread->UpdateDetectionConfig(mZTDetectionConfig);
mTKGenerator->UpdateDetectionConfig(mZTDetectionConfig);
mZT2SMThread->start(QThread::NormalPriority);
mZT2PassageTimeLimitTimer.start();
mZT2State = ZT2_ANALYZE_TRAIN_STATE;
CZTLog::instance()->ClearBufferString();
CZTLog::instance()->AddBufferString("ZT2 activée",true);
if(abort == false)
{
DestroyZT2Log();
mEventsRefTimer.start();
mZTPagePTr->SetZT2ActivationSTate(true);
mZT2ActiveStatus = SB_ZT_ACTIVE_STATUS;
mZTPagePTr->SetZTStatus(mNbPassages,mNbTriggers,mZT1ActiveStatus,mZT2ActiveStatus);
mZTPagePTr->ResetZT2Stats();
if(mModbusCCMgr != 0)
{
//update train info received from the CC Modbus interface
mZT2TrainType = (unsigned)mModbusCCMgr->GetZT2TrainType();
mZT2TrainComposition = mModbusCCMgr->GetZT2TrainComposition();
mZTPagePTr->SetZT2TrainData(mZT2TrainType,mZT2TrainComposition);
}
InsertZT2LogItem();
mZT2WorkerThread->UpdateDetectionConfig(mZTDetectionConfig);
mTKGenerator->UpdateDetectionConfig(mZTDetectionConfig);
mZT2SMThread->start(QThread::NormalPriority);
mZT2PassageTimeLimitTimer.start();
mZT2State = ZT2_ANALYZE_TRAIN_STATE;
CZTLog::instance()->ClearBufferString();
CZTLog::instance()->AddBufferString("ZT2 activée",true);
}
}
break;
}