dev modbus

This commit is contained in:
zonetest 2017-08-25 14:47:08 -04:00
parent 8a5f0fc92e
commit 69ca721ef7
4 changed files with 73 additions and 32 deletions

View File

@ -242,8 +242,13 @@ qint16 CModbusCCMgr::GetZT1TrainType()
{ {
Type = TRAIN_TYPE_MPM10; Type = TRAIN_TYPE_MPM10;
} }
else if(Reg == 0)
{
Type = TRAIN_TYPE_MAINTENANCE_VEHICLE;
}
else else
{ {
CEngLog::instance()->AddLogString(QString("MODBUS: Réception d'un type de train ZT1 invalide du SACL [%1]").arg(Reg));
Type = TRAIN_TYPE_UNKNOWN; Type = TRAIN_TYPE_UNKNOWN;
} }
} }
@ -254,9 +259,30 @@ qint16 CModbusCCMgr::GetZT2TrainType()
{ {
bool OK = false; bool OK = false;
qint16 Reg = mModbusRepo->GetSingleReg(MODBUS_CC_ZT2_TRAIN_TYPE_REG_ADD,&OK); qint16 Reg = mModbusRepo->GetSingleReg(MODBUS_CC_ZT2_TRAIN_TYPE_REG_ADD,&OK);
int Type = TRAIN_TYPE_UNKNOWN;
if(OK) if(OK)
{ {
return Reg; if(Reg == 63)
{
Type = TRAIN_TYPE_MR63;
}
else if(Reg == 73)
{
Type = TRAIN_TYPE_MR73;
}
else if(Reg == 10)
{
Type = TRAIN_TYPE_MPM10;
}
else if(Reg == 0)
{
Type = TRAIN_TYPE_MAINTENANCE_VEHICLE;
}
else
{
CEngLog::instance()->AddLogString(QString("MODBUS: Réception d'un type de train ZT2 invalide du SACL [%1]").arg(Reg));
Type = TRAIN_TYPE_UNKNOWN;
}
} }
return 0; return Type;
} }

View File

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

View File

@ -115,6 +115,7 @@ enum eTrainTypeID
TRAIN_TYPE_MPM10, TRAIN_TYPE_MPM10,
TRAIN_TYPE_MR63, TRAIN_TYPE_MR63,
TRAIN_TYPE_MR73, TRAIN_TYPE_MR73,
TRAIN_TYPE_MAINTENANCE_VEHICLE,
TRAIN_TYPE_MAX_ID TRAIN_TYPE_MAX_ID

View File

@ -303,17 +303,16 @@ unsigned int CZTStateMachine::ZT1StateMachine(unsigned int Event, unsigned int S
mZT1Log.mZT1Flags.mPGCalibrationON = (mIsPGCalibON == true); mZT1Log.mZT1Flags.mPGCalibrationON = (mIsPGCalibON == true);
mZT1State = ZT1_TRAIN_ON_APPROACH_CDV_STATE; mZT1State = ZT1_TRAIN_ON_APPROACH_CDV_STATE;
} }
} }
else if(mZTStationPtr->IsZT1ApproachCDVOccupied() && !mZTStationPtr->IsZT1CDVOccupied()) //Normal situation else if(mZTStationPtr->IsZT1ApproachCDVOccupied() && !mZTStationPtr->IsZT1CDVOccupied()) //Normal situation
{ {
DestroyZT1Log(); DestroyZT1Log();
mEventsRefTimer.start(); mEventsRefTimer.start();
mNbPassages++; mNbPassages++;
InsertZT1LogItem(); InsertZT1LogItem();
mZT1Log.mZT1Flags.mPGCalibrationON = (mIsPGCalibON == true); mZT1Log.mZT1Flags.mPGCalibrationON = (mIsPGCalibON == true);
mZT1State = ZT1_TRAIN_ON_APPROACH_CDV_STATE; mZT1State = ZT1_TRAIN_ON_APPROACH_CDV_STATE;
} }
break; break;
} }
case ZT1_WAIT_FOR_SUBSEQUENT_LIBERATION: //Subsequent CDV should never be occupied before ZT CDV. case ZT1_WAIT_FOR_SUBSEQUENT_LIBERATION: //Subsequent CDV should never be occupied before ZT CDV.
@ -340,38 +339,53 @@ unsigned int CZTStateMachine::ZT1StateMachine(unsigned int Event, unsigned int S
mZT1State = ZT1_WAIT_FOR_TRAIN_STATE; mZT1State = ZT1_WAIT_FOR_TRAIN_STATE;
} }
else if(mZTStationPtr->IsZT1CDVOccupied()) else if(mZTStationPtr->IsZT1CDVOccupied())
{ {
mZT1ActiveStatus = SB_ZT_ACTIVE_STATUS; bool abort = false;
mZTPagePTr->SetZTStatus(mNbPassages,mNbTriggers,mZT1ActiveStatus,mZT2ActiveStatus);
mZTPagePTr->SetZT1ActivationState(true);
mZTPagePTr->ResetZT1Stats();
if(mModbusCCMgr != 0) if(mModbusCCMgr != 0)
{ {
//update train info received from the CC Modbus interface if(mModbusCCMgr->GetZT1InhibitionFlag() == true) //Check if the CC wants us to analyze the passage
mTrainTypeDetected = (unsigned)mModbusCCMgr->GetZT1TrainType(); {
mZT1TrainComposition = mModbusCCMgr->GetZT1TrainComposition(); abort = true;
mZTPagePTr->SetZT1TrainData(mTrainTypeDetected,mZT1TrainComposition); CZTLog::instance()->AddLogString("Passage de train inhibé par le SACL");
mZT1State = ZT1_WAIT_FOR_SUBSEQUENT_LIBERATION; //Wait for the train to leave the ZT
}
} }
InsertZT1LogItem(); if(abort == false)
{
mZT1ActiveStatus = SB_ZT_ACTIVE_STATUS;
mZTPagePTr->SetZTStatus(mNbPassages,mNbTriggers,mZT1ActiveStatus,mZT2ActiveStatus);
mZTPagePTr->SetZT1ActivationState(true);
mZT1WorkerThread->UpdateDetectionConfig(mZTDetectionConfig); mZTPagePTr->ResetZT1Stats();
mTKGenerator->UpdateDetectionConfig(mZTDetectionConfig); if(mModbusCCMgr != 0)
mZT1SMThread->start(QThread::NormalPriority); {
//update train info received from the CC Modbus interface
mTrainTypeDetected = (unsigned)mModbusCCMgr->GetZT1TrainType();
mZT1TrainComposition = mModbusCCMgr->GetZT1TrainComposition();
mZTPagePTr->SetZT1TrainData(mTrainTypeDetected,mZT1TrainComposition);
}
mZT1PassageTimeLimitTimer.start(); InsertZT1LogItem();
//CZTLog::instance()->AddLogString("ZT1 activée",true);
mZT1WorkerThread->UpdateDetectionConfig(mZTDetectionConfig);
mTKGenerator->UpdateDetectionConfig(mZTDetectionConfig);
mZT1SMThread->start(QThread::NormalPriority);
mZT1PassageTimeLimitTimer.start();
//CZTLog::instance()->AddLogString("ZT1 activée",true);
CZTLog::instance()->ClearBufferString(); CZTLog::instance()->ClearBufferString();
CZTLog::instance()->AddBufferString("ZT1 activée",true); CZTLog::instance()->AddBufferString("ZT1 activée",true);
if(mIsPGCalibON)
{
emit PGCalibrationStatus(mCalibrationPassagesCount+1,mPGNbTotalPassages);
}
mZT1State = ZT1_ANALYZE_TRAIN_STATE;
}
if(mIsPGCalibON)
{
emit PGCalibrationStatus(mCalibrationPassagesCount+1,mPGNbTotalPassages);
}
mZT1State = ZT1_ANALYZE_TRAIN_STATE;
} }
break; break;
} }