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;
}
else if(Reg == 0)
{
Type = TRAIN_TYPE_MAINTENANCE_VEHICLE;
}
else
{
CEngLog::instance()->AddLogString(QString("MODBUS: Réception d'un type de train ZT1 invalide du SACL [%1]").arg(Reg));
Type = TRAIN_TYPE_UNKNOWN;
}
}
@ -254,9 +259,30 @@ qint16 CModbusCCMgr::GetZT2TrainType()
{
bool OK = false;
qint16 Reg = mModbusRepo->GetSingleReg(MODBUS_CC_ZT2_TRAIN_TYPE_REG_ADD,&OK);
int Type = TRAIN_TYPE_UNKNOWN;
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"
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()
{
}

View File

@ -115,6 +115,7 @@ enum eTrainTypeID
TRAIN_TYPE_MPM10,
TRAIN_TYPE_MR63,
TRAIN_TYPE_MR73,
TRAIN_TYPE_MAINTENANCE_VEHICLE,
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);
mZT1State = ZT1_TRAIN_ON_APPROACH_CDV_STATE;
}
}
else if(mZTStationPtr->IsZT1ApproachCDVOccupied() && !mZTStationPtr->IsZT1CDVOccupied()) //Normal situation
{
DestroyZT1Log();
DestroyZT1Log();
mEventsRefTimer.start();
mNbPassages++;
mNbPassages++;
InsertZT1LogItem();
mZT1Log.mZT1Flags.mPGCalibrationON = (mIsPGCalibON == true);
mZT1State = ZT1_TRAIN_ON_APPROACH_CDV_STATE;
}
mZT1Log.mZT1Flags.mPGCalibrationON = (mIsPGCalibON == true);
mZT1State = ZT1_TRAIN_ON_APPROACH_CDV_STATE;
}
break;
}
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;
}
else if(mZTStationPtr->IsZT1CDVOccupied())
{
mZT1ActiveStatus = SB_ZT_ACTIVE_STATUS;
mZTPagePTr->SetZTStatus(mNbPassages,mNbTriggers,mZT1ActiveStatus,mZT2ActiveStatus);
mZTPagePTr->SetZT1ActivationState(true);
mZTPagePTr->ResetZT1Stats();
{
bool abort = false;
if(mModbusCCMgr != 0)
{
//update train info received from the CC Modbus interface
mTrainTypeDetected = (unsigned)mModbusCCMgr->GetZT1TrainType();
mZT1TrainComposition = mModbusCCMgr->GetZT1TrainComposition();
mZTPagePTr->SetZT1TrainData(mTrainTypeDetected,mZT1TrainComposition);
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");
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);
mTKGenerator->UpdateDetectionConfig(mZTDetectionConfig);
mZT1SMThread->start(QThread::NormalPriority);
mZTPagePTr->ResetZT1Stats();
if(mModbusCCMgr != 0)
{
//update train info received from the CC Modbus interface
mTrainTypeDetected = (unsigned)mModbusCCMgr->GetZT1TrainType();
mZT1TrainComposition = mModbusCCMgr->GetZT1TrainComposition();
mZTPagePTr->SetZT1TrainData(mTrainTypeDetected,mZT1TrainComposition);
}
mZT1PassageTimeLimitTimer.start();
//CZTLog::instance()->AddLogString("ZT1 activée",true);
InsertZT1LogItem();
mZT1WorkerThread->UpdateDetectionConfig(mZTDetectionConfig);
mTKGenerator->UpdateDetectionConfig(mZTDetectionConfig);
mZT1SMThread->start(QThread::NormalPriority);
mZT1PassageTimeLimitTimer.start();
//CZTLog::instance()->AddLogString("ZT1 activée",true);
CZTLog::instance()->ClearBufferString();
CZTLog::instance()->AddBufferString("ZT1 activée",true);
CZTLog::instance()->ClearBufferString();
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;
}